對稱加密和非對稱加密
對稱加密
通信雙方使用同一個密鑰,不同算法工作。數(shù)據(jù)發(fā)送方使用密鑰和加密算法對數(shù)據(jù)進行加密,數(shù)據(jù)接收方使用密鑰和解密算法對密文進行解密,還原數(shù)據(jù)。
基本模型如下圖所示。

對稱加密模型
- 常見對稱加密算法DES、AES。
- 加密算法缺點:密鑰需要數(shù)據(jù)發(fā)送方通過不可信網(wǎng)絡(luò)傳輸給數(shù)據(jù)接受方,密鑰存在泄漏風(fēng)險。
非對稱加密
通信雙方使用不同的密鑰,相同的算法工作。數(shù)據(jù)發(fā)送方持有公鑰,數(shù)據(jù)接收方持有私鑰。公鑰由數(shù)據(jù)接收方通過網(wǎng)絡(luò)發(fā)送給數(shù)據(jù)發(fā)送方。數(shù)據(jù)發(fā)送方通過加密算法和公鑰對數(shù)據(jù)進行加密,數(shù)據(jù)接收方通過加密算法和私鑰對密文進行解密,還原數(shù)據(jù)。
基本模型如下圖所示。

非對稱加密模型
- 常見非對稱加密算法 RSA、DSA。
- 非對稱加密算法私鑰由數(shù)據(jù)接收方持有,不會在網(wǎng)絡(luò)上傳遞,保證了密鑰的安全。
- 非對稱加密算法通常比對稱加密算法計算復(fù)雜,性能消耗高。
- 非對稱加密算法可用于數(shù)字簽名。
數(shù)字簽名
數(shù)字簽名是安卓 APK 校驗安裝包是否被篡改、損壞的有效手段。數(shù)字簽名采用了非對稱加密 + Hash 兩種技術(shù)。具體原理參見下圖,主要是以下幾步。
- 對原始數(shù)據(jù)進行 hash,得到數(shù)據(jù)摘要。
- 通過私鑰和加密算法對數(shù)據(jù)摘要進行加密得到加密后的數(shù)據(jù)摘要。
- 將加密后的數(shù)據(jù)摘要附加在原始數(shù)據(jù)后,組合成簽名后的數(shù)據(jù),并發(fā)送個對方。
- 對方收到簽名后的數(shù)據(jù)后,將原始數(shù)據(jù)和簽名的摘要分開。同樣通過 hash 原始數(shù)據(jù)得到一份數(shù)據(jù)摘要。
- 對加密后的數(shù)據(jù)摘要通過公鑰解密,得到待驗證的數(shù)據(jù)摘要。
-
對比兩份數(shù)據(jù)摘要,只要完全一致則表明原始數(shù)據(jù)未被篡改或損壞。
數(shù)字簽名模型
