公钥密码:
在对称密码中,通讯双方始终要结局一个问题就是密钥的传输问题,大部分情况下会使用不安全的信道建立密钥传输,消息传递所使用的信息链路是不安全的。通信双方拥有相同的密钥则能力相同,缺少不可抵赖性。
在公钥密码算法中,加密者用来加密的密钥是没有必要用来保密的,重点在于接收者只有使用解密密钥才能解密。密码k被分为两部分,公开的kpub和保密的kpr,由于公钥密码难以解决的数学难题,因此公钥密码的算法效率比对称密码的算法效率低很多(100-1000)倍。
公钥密码常见算法:
整数因式分解:RSA
离散对数:DH,DSA,Elgamal
椭圆曲线:ECDH,ECDSA
因此通常公钥密码会用于对少量数据的加密上,如:对对称密钥的加密和数字签名。
- RSA算法
RSA应用广泛,但在实际中却常用于数据小片段的加密,尤其用于密钥传输;数字签名,比如Internet上的数字证书。RSA做为非对称算法基础,逐渐被ECC取代,但大部分你的数字证书依然使用RSA加密,所有非对称方案的一个显著特征是,它们都有一个计算公钥和私钥的握手阶段,密钥生成依赖于公钥方案。 - 基于离散对数(DLP)的密码学应用:Diffie-Hellman密钥交换
Diffie-Hellman密钥交换方案提供了实际中和商业问题的解决方案,即它允许双方通过不安全的信道进行交流,得到一个共同密钥。许多公开和商业的密码协议中都实现了这种基本的密钥协议技术,比如安全外壳(SSH),传输层安全(TLS)和Internet协议安全(IPSec)。 - ECC椭圆曲线加密系统
基于椭圆曲线理论,用三次方程来表示。
椭圆曲线:y2=x3+2x+2mod17,它构成了阶为#E=19的循环群。 - SM2
SM2算法也是基于椭圆曲线算法的,SM2算法使用的方程是:y2=x3+ax+b。
国际上ECC用于代替RSA。SM2算法在国内的应用中用于替代RSA和ECC的加密算法
摘要算法:
Hash函数通常又称为单向散列函数,理论上是不可逆的。Hash函数通常用于构建数据的指纹,当数据发生变化时,指纹也会发生变换。Hash函数在设计时有如下规则:
对任意大小的消息x使用Hash函数,函数h在计算上必须是高效的。即时对几百MB左右的大消息进行处理,计算过程也必须足够快。哈希函数的输出长度必须是固定的,并且与输出函数无关。为了计算指纹,必须对所有输入位高度敏感,这意味着,如果x发生了很小的改变,指纹必须看上去非常不同。同时Hash函数的设计至少需要抗第一原像性,甚至有些Hash函数还需要做到抗第二原像性。
Hash函数理论上是不可逆的,但并非就是安全的。例如有名的Hash函数MD5,2004年中国密码学家王小云教授等首次公布了提出一种寻找MD5碰撞的新方法。目前利用普通的计算机几分钟内就可以找到MD5碰撞。因此MD5逐渐被更安全的SHA-256替代,在中国则使用国密SM3代替。
版权声明:本文为qq_39871572原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。