写在前面
加密算法
非对称加密算法 RSA
ssh术语
- 明文:没有加密的信息
- 加密算法:加密算法本身都是公开的
- 密钥:加密的过程当中需要用到的参数
- 密文:加密后的信息
- 解密需要解密密钥进行解密
- 加密解密的密钥可能不同
- 对称密钥加密:加密解密的密钥相同
- 非对称密钥加密
如何确认密钥值 密钥分发
公开密钥加密 是一种非对称的密钥加密
- 每一个人都有一个公开密钥和私有密钥
- 公开密钥公之于众
- 接受者使用私有密钥进行解密
- 发送者使用接受者的公开密钥加密
破解加密
- 唯密文攻击 : 暴力破解,统计分析
- 已知明文攻击
- 选择明文攻击
传统加密方法
- 替代密码: 凯撒密码:一个字母代替另一个字母。将一个字母使用字母表的后k个替代。暴力破解太容易。
- 单字母替代密码:可以随意替代。26的阶乘的空间
- 加密密钥:多字母替代。多个单码替代密码。不同位置的字母使用不同的单码替代。
- 换位密码:重新排列明文当中的字母。
- 置换法:分组,变换位置。
- 列置换加密。
现代加密技术
- 不是针对字母而是二进制位进行操作
- 分为:对称和非对称密钥加密
- 对称:流密码,分组密码
异或运算
DES 数据加密标准
- 初始IP置换 打乱顺序
- AES高级加密标准
公钥密码学:
- 密钥分发问题
- 非对称密钥
- 公钥,私钥
- 给定公钥不能计算出私钥
非对称密钥算法:RSA 算法
这个算法是三个人共同创建的以三个人的名字的首字母命名。
非对称加密(公钥加密):指加密和解密使用不同密钥的加密算法,也称为公私钥加密。假设两个用户要加密交换数据,双方交换公钥,使用时一方用对方的公钥加密,另一方即可用自己的私钥解密。
1.A要向B发送信息,A和B都要产生一对用于加密
2.A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。
3.A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。
4.A将这个消息发给B(已经用B的公钥加密消息)。
5.B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥。
模运算。将报文看成bit模式,每个比特模式表示成唯一的整数 对整数加密。生成公钥私钥对。
性质:公钥私钥是相对的,外界可以使用公钥加密,我用私钥解密,我使用私钥加密,外界使用公钥解密。
- 安全依据:大素数相乘计算简单,但是将该乘积分解很难。大素数分解和素性检测。
- 计算量太大。
- 实际采用公钥建立安全连接,然后建立第二个密钥进行对称加密。
- 会话密钥 kS
非对称加密体系不要求通信双方事先传递密钥或有任何约定就能完成保密通信,并且密钥管理方便,可实现防止假冒和抵赖,因此,更适合网络通信中的保密通信要求。
身份认证
- 端到端实体确认对方真实身份。
- 一次性随机数:一个周期只使用一次的数R
- 中间人攻击
报文完整性
- 确认报文来自发送方。
- 确认报文在传输过程当中没有被篡改。
- 时间顺序上的篡改
- 预防抵赖。发送方和接收方的否认。
密码散列函数
- 算列算法公开。速度够快 ,任意长度的报文产生多对一的映射。对于任意报文无法预知其散列值。
- 不同的报文不能够产生相同的散列值。
- 单向性。
- 抗弱碰撞性。
- 抗强碰撞性。
- MD5函数:不足够安全
- SHA-1算法。
- 报文摘要。可以作为源报文的数字指纹。
报文认证
- 简单方案:发送扩展报文— 报文加上报文摘要。
- 报文认证嘛MAC: 加上认证密钥。
数字签名
- 否认,伪造,冒充,篡改
- 安全电子交易的核心技术:数字签名
- 可验证性,不可伪造,不可抵赖
- 非对称的加密。使用私钥对签名加密。
- 发送方发送报文本身和私钥加密的报文作为扩展报文发送。接收方可以持有发送方用私钥加密之后的密文,如果使用公钥解开了说明:
- 如果解开的报文和实际的报文相同说明没有被修改。
- 说明报文的确是发送方发的
- 说明发送方签名的报文就是这个报文
- 因为只有是发送方发送的我才能解开可以避免对方抵赖。
签名报文摘要。
- 前面的方法传输的内容是两倍。需要改进。
- 只签名报文摘要。
- 对称密钥:两个实体在网上如何建立共享秘密密钥?
- 密钥分发中心 KDC 服务器
ssh
SSH 为 Secure Shell 的缩写.为安全外壳协议。
SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。
使用SSH服务,需要安装相应的服务器和客户端。客户端和服务器的关系:如果,A机器想被B机器远程控制,那么,A机器需要安装SSH服务器,B机器需要安装SSH客户端。
客户端发出请求,如果是第一次与服务器建立连接,服务器端会向客户端发送一个rsa key 。
客户端接收到服务器端发送过来的rsa key后,就会采用与服务器端协商好的加密算法,生成会话密钥(此会话密钥用于加密客户端与服务器端之间的会话),并用rsa key加密会话密钥,并发送给服务器端。
服务器端就用对应的私钥解密已加密的会话密钥,然后用此会话密钥加密确认信息,发送给客户端。客户端用会话密钥解密加密的确认信息,到此,密钥交换成功和服务器认证成功。
接下来就是客户端的认证,客户端认证有两种方法:
基于口令认证:客户端发送用会话密钥加密的远程登入的用户名与密码,服务器接收到,用会话密钥解密,并验证用户名与密码的正确性。
基于密钥认证:口令认证容易受“中间人”攻击,而密钥认证安全性较好,用户名与密码不用在网上传输,被人破解。客户端生成一对密钥,此密钥只用于客户端的认证,然后将公钥内容上传到服务器端~/.ssh/authorized_hosts文件中。客户端发出密钥认证请求,服务器端就会用客户端的公钥加密一段数据,发送给客户端,客户端用对应的私钥解密,然后将数据与会话密钥进行散列运算,生成摘要,发送给服务器端,服务器端就会用原始数据和会话密钥,生成摘要,并对比两个摘要是否一致,若一致,则客户端认证成功