密码学

Password

在密码学中,有一个五元组:{明文、密文、密钥、加密算法、解密算法},对应的加密方案称为密码体制(或密码)

明文:是作为加密输入的原始信息

密文:是明文经加密变换后的结果,即消息被加密处理后的形式

密钥:是参与密码变换的参数,一切可能的密钥构成的有限集称为密钥空间



对称加密算法

加密和解密使用同一个密钥,主要算法包括:DES、3DES、RC2、RC4

对称密钥算法

例如:

对称加密

非对称加密算法

两个密钥同时产生:一把密钥(公钥)是公开的,任何人都可以得到。另一把密钥(私钥)只有密钥的拥有者知道

用其中一把密钥(公钥或者是私钥)加密的信息,只能用另一把打开,主要算法包括:RSA算法,ECC(椭圆曲线)算法

由已知的公钥几乎不可能推导出私钥,其实可以推出,按现在的计算机技术水平,要破解目前采用的1024位RSA密钥,需要上千年的计算时间,所以基本等于推不出来

非对称密钥算法1 非对称密钥算法2

例如:

非对称加密 非对称加密2

两种加密算法的区别与特点

  • 对称加密 的加密和解密效率都要高于 非对称加密

    因此一般的做法是将报文用对称加密算法进行加密,然后将对称加密的密钥用非对称加密的公钥进行加密,发送出去,接收方使用私钥解密得到对称加密的密钥之后对报文进行解密


  • 对称加密 密钥分发困难,容易泄露,非对称加密 要安全许多

    对称加密 的密钥在传递过程中一旦泄露,报文的安全性将不复存在

    非对称加密 采用密钥对的形式,公钥用于加密,私钥用于解密,公钥公开发布,私钥个人保存,安全许多


  • 非对称加密 双方在进行通信时,需要两对密钥对,各自生成自己的密钥对之后将公钥发送给对方,实现加密通讯


  • 非对称加密 公钥用于加密,私钥用于解密,公私钥能互换吗?

    从数学原理上说,私钥也可用于加密,公钥也可用于解密

    公钥加密只有私钥能解开,私钥加密只有公钥能解开

    但若是私钥当作公钥使用,用于加密并且传播出去,由于私钥本身可以推出公钥,可以使用推出来的公钥进行解密,因此一般公钥和私钥不会互换功能

    实际系统中,公钥指数e都很小,一般固定为3或者65537,而公钥的另外一个参数模N与私钥是共享的,所以公私钥不能互换。
    至于为什么这样,我的理解是为了加快公钥运算速度,也就是验签速度

    其实不是任选一个作公钥的 非对称加密还有一个特点就是 从私钥计算公钥很简单 从公钥计算私钥很困难 这也是保证公钥加密算法安全的一个因素


  • 非对称加密 理论上公钥和私钥可以互相推导出

    公钥推出私钥非常困难

    私钥推出公钥比较容易

    一般的 RSA (一种非对称加密算法实现形式)實現中,公钥的生成选择的 Modular Multiplicative Inverse 都會是一个较小的数值,目的是降低 Hamming Weight,也就是体现在你看到的公钥比私钥短很多这上面。这就导致了,如果有人拿到了私钥,就可以较为轻松的计算出一个有效的公钥。

    所以永远不要把私钥公开出去。

    公钥一般固定65537(16进制10001),运算快也就是加密速度快(非对称加密,公钥只用作加密,不用作解密的);私钥则取得比较大。可以互换的,互换后副作用是:加密变慢、解密复杂度降低


  • 非对称加密 私钥用于签名,公钥用于认证(验签)

    所谓签名就是用私钥进行加密,认证就是公钥用于解密

    当私钥进行加密时,此时作用不是加密原始数据,而是证明该数据确实来自私钥的拥有者,没有被伪造或是篡改。由于只能用你的公钥进行解密,并且只有本人拥有私钥,所以私钥进行加密时可以代表自己的身份

    当公钥进行解密时,就是用于验证对方是不是使用私钥的人,如果不是,用公钥是无法解开的,如果是,用公钥即可解开,对其身份得以认证




参考

RSA算法原理(一)—————–

RSA算法原理(二)—————–