讀阮一峰數(shù)字簽名總結(jié)梳理:
B:生成公鑰B囱皿、私鑰B
A:持有公鑰B
CA(certificate authority):生成公鑰CA、私鑰CA
A與B之間信息傳遞
A寫(xiě)信給B
A:contentA + publickeyB = 秘文A
B:秘文A + privateKeyB= contentA
只要B的privateKeyB不泄漏燎窘,這封信就是安全的充岛,即使落在別人手里酷誓,也無(wú)法解密
數(shù)字簽名
B回信給A (該情況只能證明contentB未被修改造锅,并不能證明contenB是B所發(fā))
B:contentB + Hash = digestB
digestB +privateKeyB = signatureB
signatureB 和contentB 一起發(fā)送給A
A:signatureB + publicKeyB = digestB
contentB + Hash = digest
digest == digestB ? contentB未被修改 : contentB被修改
注意:但是這種情況下如果有人冒充B,冒充者C將A持有的公鑰B替換為公鑰C输涕,此時(shí)A收到C的信息后音婶,只能證明contentC未被修改,但并不能證明contentC是否是B所發(fā)莱坎。所以A需要想辦法證明自己持有的公鑰是B的衣式,所以需要CA為公鑰B做認(rèn)證
B回信給A
CA(證書(shū)中心)為公鑰做認(rèn)證
CA: publickKeyB+其他相關(guān)信息+CA 私鑰 = 數(shù)字證書(shū)(Digital Certificate)
B持有:數(shù)字證書(shū)
A持有:CA公鑰
B:contentB + Hash + privateKey = signatureB
數(shù)字證書(shū) 、signatureB 以及 contentB 一起發(fā)送給A
A:數(shù)字證書(shū) + CA公鑰 = publicKeyB(證明是B的公鑰)
signatureB + publickeyB = digestB
contentB + Hash = digest
digest == digestB 檐什?contentB未被修改 : contentB被修改
參考鏈接
http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html
RSA加密+AES加密
RSA:非對(duì)稱加密碴卧,生成公私鑰
AES:對(duì)稱加密,生成AES密鑰
客戶端:用AES對(duì)content進(jìn)行加密乃正,RSA公鑰對(duì)AES密鑰進(jìn)行加密
服務(wù)端:RSA私鑰進(jìn)行解密得到AES密鑰住册,從而得到content
摘要算法:可以將任意長(zhǎng)度的文本轉(zhuǎn)化為固定長(zhǎng)度的文本
摘要算法具有以下重要特性:
- 只要源內(nèi)容不同,計(jì)算得到的結(jié)果瓮具,必然不同荧飞。
- 無(wú)法通過(guò)摘要算法可逆拿到源內(nèi)容
典型的摘要算法有大名鼎鼎的MD5
和SHA
凡人。摘要算法主要用于比對(duì)信息源是否一致,因?yàn)橹灰磧?nèi)容發(fā)生變化叹阔,得到的摘要必然不同挠轴;而且通常結(jié)果要比源短很多,所以稱為“摘要信息”耳幢。