前言:
去年学过一段时间的现代密码学,最近在配置github, Linux主机之间建立信任关系的时候都用到了其中一些知识,所以刚好整理一下,想直接看操作方式的可直接拉到下面
密码学基本知识
一 现代密码学基本知识
现代密码学的分类:
对称密码体制(传统密码体制)
非对称密码体制(公钥密码体制)现在密码学的基本原则:
实际上的安全(虽然没有在理论上严格证明出来,但经过许多人许多年的攻击并没有找到有效的攻击方法)
柯克霍夫原则(密码系统的安全性不应该取决于不易改变的算法,而应该取决于可随时改变的密钥)
二 对称密码体制的缺陷
密钥分配问题
通信双方要进行保密通信,需要通过秘密的安全通道传送或协商加密密钥,而这种安全通道在实际中很难实现密钥管理问题
在有N个用户的通信网络中,每个用户要想和其他N-1个用户进行通信,必须使用N-1个密钥,而系统中总的密钥数量将达到n(n-1)/2。当n 比较大时,这样大的密钥量,在生产和保存,传递,销毁等各个环节将变得复杂,易存在安全隐患。数字签名问题
对称密码体制中通信双方拥有同样的密钥,所以接收方可以伪造签名,发送方也可以否认发送过某消息,难于解决陌生人之间的身份认证和交易不可否认的问题
三 公钥密码体制加解密原型
发送方A查找接收方B的公钥
A用公钥加密算法以B的公钥作为加密密钥对明文进行加密
A通过不安全信道将密文发送给B
B收到密文后使用自己的私钥对密文解密还原成明文
四 RSA加密算法及签名算法分析(因为linux ssh 登陆用的是ssh 所以单独分析一下)
转自 http://www.zhihu.com/question/25912483/answer/31653639,具体细节请移步大神的数学讲解。
RSA公钥加密体制包含如下