公钥密码体制
一个系统中,n个用户之间要进行保密通信,为了确保安全性,两两用户之间的密钥不能一样。这种方式下,需要系统提供C2 n=n×(n-1)/2把共享密钥。这样密钥的数量就大幅增加了,随之而来的产生、存储、分配、管理密钥的成本也大幅增加。而使用公钥密码体制可以大大减少密钥的数量,降低密钥的管理难度。
在公钥密码体制中,加密和解密采用两把不同的钥匙,分别为公钥和私钥。公钥可以公开,而私钥需要严格保密。这种密码系统需要使用单向陷门函数来构造。
单向函数y=f(x)满足下面两个条件:
(1)已知x,要计算y很容易;
(2)已知y,要计算出x很难。
常见的单向函数有SM3、SHA-1、MD5。单向函数的加密效率高,但加密后不能还原。
单向陷门函数y=f(x)满足下面三个条件:
(1)函数f具有陷门。比如,陆逊受困于诸葛亮的八阵图,他只有在诸葛亮老丈人带着走了生门才捡回一命。这里的生门就是陷门。
(2)已知x,要计算y很容易;
(3)已知y,如果不知道陷门,要计算出x很难;如果知道陷门,则计算出x很容易。
目前暂时还不能证明单向函数一定存在,所以应用中只要求实用即可。目前单向性足够的函数有:
(1)因子分解问题:计算素数乘积容易(p×q→n),而计算因子分解困难(n→p×q)。
(2)离散对数问题:计算素数幂乘容易(xy →z),而计算对数困难(logxz→y)。
加密秘钥和解密秘钥不相同的算法,称为非对称加密算法,这种方式又称为公钥密码体制,解决了对称秘钥算法的秘钥分配与发送的问题。在非对称加密算法中,私钥用于解密和签名,公钥用于加密和认证。
公钥密码体制的特点如下:
- 明文M通过加密算法E和加密秘钥Ke变成密文C的方法,用公式表示如下:
- 密文C通过解密算法D和解密秘钥Kd还原为明文M的方法,用公式表示如下:
-
计算上不能由Ke求出Kd。
-
加密算法E和解密算法D都是高效的。