最近在慕课网学习加密方向的技术,以下是Base64位学习的笔记
一、密码常用术语
明文:待加密信息
密文:经过加密后的明文
加密:明文转为密文的过程
加密算法:明文转为密文的转换算法
加密密钥:通过加密算法进行加密操作用的密钥
解密:将密文转为明文的过程
解密算法:密文转为明文的算法
解密密钥:通过解密算法进行解密操作用的密钥
密码分析:截获密文者试图通过分析截获的密文从而推断出原来的明文或密钥的过程
主动攻击:攻击者非法入侵密码系统,采用伪造、修改、删除等手段向系统注入假消息进行欺骗。(对密文具有破坏作用)
被动攻击:对一个保密系统采取截获密文并对其进行分析和攻击。(对密文没有破坏作用);
密码体制:由明文空间、密文空间、密钥空间、加密算法和解密算法五部分构成;
密码协议:也称安全协议,指以密码学为基础的消息交换的通信协议,目的是在网络环境中提供安全的服务;
密码系统:指用于加密、解密系统;
柯克霍夫原则:数据的安全基于密钥而不是算法的保密。即系统的安全取决于密钥,对密钥保密,对算法公开。——————现代密码学设计的基本原则;
二、密码分类
1. 按时间分类
古典密码:以字符为基本的加密单元;
现代密码:以信息块为基本的加密单元;
2. 保密内容分类
受限制算法:算法的保密性基于保持算法的秘密,用于军事领域,为古典密码;
基于密钥算法:算法的保密性基于密钥的保密,为现代密码;
3. 密码体制分类
对称密码:单钥密码或私钥密码,指加密密钥与解密密钥相同;
非对称密码:双钥密码或公钥密码,指加密密钥与解密密钥不同,密钥分公钥、私钥;
对称密码算法:单钥密码算法或私钥密码算法,指应用于对称密码的加密、解密算法;
非对称密码算法:双钥密码算法或公钥密码算法,指对应于非对称密码的加密、解密算法;
4. 明文处理方法分类
分组密码:指加密时将明文分成固定长度的组,用同一密钥和算法对每一块进行加密,输出也是固定长度的密文。多用于网络加密;
流密码:也称序列密码。指加密时每次加密一位或者一个字节明文;
三、散列函数
1. 作用:散列函数用来验证数据的完整性
2. 特点:长度不受限制、哈希值容易计算、散列运算过程不可逆
3. 散列函数相关的算法:消息摘要算法MD5等,SHA---安全散列算法,MAC---消息认证码算法
4. 数字签名:主要是对以数字的形式存储的消息进行的处理
四、OSI安全体系
1. OSI(Open System Interconnection)
网络通信:(物理层、数据链路层)、网络层、传输层、(会话层、表示层、应用层)
安全机制:加密体制、数字签名机制、访问控制机制、数据完整性机制、认证机制、业务流填充机制、路由控制机制、公证机制
安全服务:认证(鉴别)、访问控制服务、数据保密性服务、数据完整性服务、扛否认性服务
2. TCP/IP安全体系
网络通信:网络接口层、网络层、传输层、应用层
安全体系结构;网络接口层安全、网络层安全、传输层安全、应用层安全
安全服务:扛否认性服务、数据完整性服务、数据保密性服务、访问控制服务、认证(鉴别)服务
安全机制:公证机制、数据完整性机制、(业务流填充机制,加密机制)、(访问控制机制,路由控制机制)、(数字签名机制,认证机制)
五、Java安全组成
1. JCA:提供基本的加密框架,消息摘要,数字签名
2. JCE:提供加密的算法,消息摘要,密钥管理,DES,AES,RSA
3. JSSE:提供基于SSL的加密功能,主要用于网络传输的过程中
4. JAAS:用户的身份验证的功能,权限,安全
六、相关的包、类
1. java.security:消息摘要算法
2. java.crypto:安全消息摘要,消息认证(鉴别)码
3. java.net.ssl:安全套接字
七、第三方的扩展
1. Bouncy Castle:两种支持方式:配置和说明;
2. Commons Codes:Apache、Base64、二进制、十六进制、字符集编码、Url编码/解码
八、应用场景
e-mail、密钥、数字证书