RSA公钥密码学(数字签名&加密)

浅谈RSA公钥密码学(数字签名技术&加密,包含严格数学证明)  by FORWARD

[数论—现代密码学—非对称密码体制]

①RSA加密算法 ②RSA数字签名算法 ③公共信道上的RSA数字签名算法(加密+签名)

Encrypt()加密运算  PublicKey公钥

Decrypt()解密运算  SecretKey私钥

Sign()签名运算 

明文/消息M  密文C  签名S

(1)RSA加密算法

(i)算法实现

-选择两个互异大素数p,q

-计算:n=pq  φ(n) =(p-1)(q-1)

-随机选择e∈N+,满足gcd(e,φ(n))=1

-找到d∈N+,使得ed≡1(mod φ(n))

记公钥PK={e,n}    私钥SK={d} 

-加密算法(对明文M加密)

C=Enc(M)=M^e(mod n)

-解密算法(对密文C解密还原)

M=Dec(C)=C^d(mod n)

(ii)算法数学证明(解密的唯一性)

证:

C^d(mod n)=(M^e(mod n))^d (mod n)=[(M^e (mod n))(M^e (mod n))*......*(M^e (mod n))] (mod n)=M^ed (mod n)

∵ed≡1 mod(φ(n))

∴ed=kφ(n)+1

By Euler Theorem:M^φ(n)≡1 (mod n)

∴M^(φ(n)+1)≡M (mod n)

∴M^(kφ(n)+1)≡M (mod n)

∴M^(kφ(n)+1)=M (mod n)

∵M<n

∴C^d (mod n)=M

证毕

(2)RSA数字签名算法

(i)算法实现(与加密算法相似)

-选择两个互异大素数p,q

-计算:n=pq  φ(n) =(p-1)(q-1)

-随机选择e∈N+,满足gcd(e,φ(n))=1

-找到d∈N+,使得ed≡1(mod φ(n))

记公钥PK={e,n}    私钥SK={d} 

-签名算法(对消息M签名):

S=Sig(M)=M^d (mod n)

-验证算法(对签名S的验证):

M`=S^e (mod n)

若M`=M,则签名S属实/不可抵赖

(ii)算法数学证明(验证的唯一性)

证:

M`=S^e (mod n)=(M^d (mod n))^e (mod n)=[(M^d (mod n))(M^d (mod n)*.....*(M^d (mod n))] (mod n)=M^de (mod n)

∵de≡1 mod(φ(n))

∴de=kφ(n)+1

By Euler Theorem:M^φ(n)≡1 (mod n)

∴M^(φ(n)+1)≡M (mod n)

∴M^(kφ(n)+1)≡M (mod n)

∴M^(kφ(n)+1)=M (mod n)

∵M<n

∴M`=S^e (mod n)=M

证毕

③在公共信道下的数字签名算法实现(签名+加密)

记发送者A, 接收者B ,消息M,密文C

记A的公钥PK1,私钥SK1

记B的公钥PK2,私钥SK2

算法实现:

-选择两个互异大素数p1,q1

-计算:n1=p1q1  φ(n) =(p1-1)(q1-1)

-随机选择e1∈N+,满足gcd(e1,φ(n1))=1

-找到d1∈N+,使得e1d1≡1(mod φ(n1))

记A的公钥PK1={e1,n1},私钥SK1={d1} 

-选择两个互异大素数p2,q2

-计算:n2=p2q2  φ(n2) =(p2-1)(q2-1)

-随机选择e2∈N+,满足gcd(e2,φ(n2))=1

-找到d2∈N+,使得e2d2≡1(mod φ(n2))

记B的公钥PK2={e2,n2},私钥SK2={d2} 

签名算法(对M签名):

S=Sig(M)=M^d1 (mod n1)

包装算法(对S包装):

C=Enc(S)=S^e2 (mod n2)

拆包算法(对C拆包):

S=Dec(C)=C^d2 (mod n2)

验证算法(对S验证)

M`=S^e1 (mod n1)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 所有货币都需要一些方法来控制供应,并强制执行各种安全属性以防止作弊。在法定货币方面,像中央银行这样的组织控制货币供...
    Nutbox_Lab阅读 3,180评论 1 3
  • 转:https://blog.csdn.net/m0_37458552/article/details/80250...
    right_33cb阅读 10,394评论 0 0
  • RSA RSA算法是目前应用最广泛的公钥密码体制之一。RSA算法的安全性是给予大整数因子分解的困难性。RSA名字是...
    Carrism阅读 8,626评论 1 0
  • 数字签名    ——消息到底是谁写的 数字签名的应用实例 安全信息公告  一些信息安全方面的组织会在其网站上发布一...
    Invincibled阅读 1,532评论 0 2
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 6,113评论 0 4