讀阮一峰數(shù)字簽名總結(jié)梳理:
B:生成公鑰B、私鑰B
A:持有公鑰B
CA(certificate authority):生成公鑰CA、私鑰CA
A與B之間信息傳遞
A寫信給B
A:contentA + publickeyB = 秘文A
B:秘文A + privateKeyB= contentA
只要B的privateKeyB不泄漏,這封信就是安全的,即使落在別人手里,也無法解密
數(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,此時A收到C的信息后,只能證明contentC未被修改,但并不能證明contentC是否是B所發(fā)。所以A需要想辦法證明自己持有的公鑰是B的,所以需要CA為公鑰B做認(rèn)證
B回信給A
CA(證書中心)為公鑰做認(rèn)證
CA: publickKeyB+其他相關(guān)信息+CA 私鑰 = 數(shù)字證書(Digital Certificate)
B持有:數(shù)字證書
A持有:CA公鑰
B:contentB + Hash + privateKey = signatureB
數(shù)字證書 、signatureB 以及 contentB 一起發(fā)送給A
A:數(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:非對稱加密,生成公私鑰
AES:對稱加密,生成AES密鑰
客戶端:用AES對content進行加密,RSA公鑰對AES密鑰進行加密
服務(wù)端:RSA私鑰進行解密得到AES密鑰,從而得到content
摘要算法:可以將任意長度的文本轉(zhuǎn)化為固定長度的文本
摘要算法具有以下重要特性:
- 只要源內(nèi)容不同,計算得到的結(jié)果,必然不同。
- 無法通過摘要算法可逆拿到源內(nèi)容
典型的摘要算法有大名鼎鼎的MD5和SHA。摘要算法主要用于比對信息源是否一致,因為只要源內(nèi)容發(fā)生變化,得到的摘要必然不同;而且通常結(jié)果要比源短很多,所以稱為“摘要信息”。