现在公开密钥系统 设计的理论基础是假设某个特定已知的数学问题是很难解决的。 RSA 算法是由它的三位发明者(MIT)的名字的第一个字母组合而成。它首次出现 于1978 RSA密钥形成方法:通过一个公共模数(通常该数较大)的数字形成公开密钥,乘 积为该模数的两个质数形成私人密钥。 RSA的安全性依据:寻找一个大数相对容易,但要找到乘积为该大数的两个因数却 很困难。当该数字比较大时,要穷尽搜索所有的组合是不可能的。 RSA 算法的步骤如下: 取两个素数p和q(保密) 计算n=pq(公开),φ(n)=(p-1)(q-1)(保密) 的乘积对φ(n)求余数得1(保密) RSA算法举例 1.选p=47,q=71, 则n=4771=3337, 70=3220 则d=1019,即(791019)对3220的余数为1 5.假设明文m=688,则密文c=688的79 次方对3337 求余数=1570 6.解密的过程是明文m=1570的1019 次方对3337 求余数=668 数字摘要也称数字指纹,数字摘要是明文通过哈希算法计算得到哈希数值。哈希算法是 不可逆的数学算法,每一个哈希值都与一个输入一一对应。 数字签名的作用 不可否认数字摘要i=HASH(信息报文i) HASH 算法是公开的,但算法精度上是有区别的,即产生数字摘要的长度。长度太短, 容易重复,失去防伪意义;太长,对算法要求高,产生时间长,开销大。只要保证数字摘要 重复的概率无限小,这时的长度就是合适的。 电子商务安全技术图1 RSA密码体制的数字签名图1 比较明文副本和解密的明文是否一致,如一致,则接受,表明签名有效,否则,拒绝接收。 这是一种基于可逆的公开密钥加密系统的数字签名机制,其优点就是对于任何消息接收方都可以检查签名。 存在的问题-用于消息处理和通讯的成本过高。因为加密解密不得不对整个消息进行处理,并且发送的数据量至少是原始信息的两倍。 发送方将发送消息通过Hash函数生成数字摘要; 接收方得到消息,对消息明文Hash函数运算,得到实际的数字摘要; 对比两个摘要,如果相同,表示数字签名有效,否则无效。