Android签名概要总结——对称加密/非对称加密、数字签名、公钥证书、ca认证机构、安卓app签名
##.對稱加密:
?? ?通信的雙方使用相同的秘鑰,來進行加密和解密。運算效率高,但這種通信方式不安全,因為缺少安全便捷的途徑將秘鑰傳遞給對方,一旦秘鑰泄漏,信息將毫無安全性。
##.非對稱加密:
? ? 非對稱加密算法中,加密和解密使用的秘鑰不同,當使用其中一個秘鑰進行加密時,只有用另一個秘鑰才能正常解密,二者要配對使用。公鑰可以公開發布,而私鑰只有自己知道。雙方通信時,都將自己的公鑰發給對方,對方用公鑰加密消息發給自己,這樣只有自己才擁有私鑰來解密。例如:A、B雙方通信中,A可以隨意將A的公鑰發給B,不必擔心泄漏公鑰。B向A發信息時,使用A的公鑰加密,這樣只有A才能用A的私鑰來解密。
? ? 非對稱加密通信安全,但運算效率低。一般是將對稱加密/非對稱加密二者結合,開頭使用非對稱加密來傳輸對稱加密的秘鑰,然后使用對稱加密來傳輸后繼的大量數據。
##.數字簽名
? ? 一個人用筆在紙質文件上簽名,其筆跡簽名可用來驗證簽署人的身份。
?? ?數字簽名,是用來驗證信息發布者身份的。
?? ?里面用到了非對稱加密的原理。信息發布者對一段數據用私鑰加密,加密后的結果就是數字簽名,發布者將原數據和簽名一起發布。如果信息接收方用配套的公鑰能正確解密簽名,而且解密后的結果與原數據一樣,這就說明簽名是原數據用私鑰加密得來的,而只有信息發布者才擁有私鑰,因為發布信息的人不是冒牌的。
##.公鑰證書
? ? 以上若信息接收者使用正確的公鑰去驗證簽名,一切將如常進行。
? ? 但如果信息接收者用到公鑰本身就是冒牌者用的假公鑰,那將無法進行正確的驗證。這樣冒牌者就可以用自己配套的冒牌私鑰做簽名,信息接受者用冒牌公鑰去驗證,因為冒牌公鑰、冒牌私鑰是配對的,驗證可以正常通過,冒牌者就可以持續地冒名頂替發布信息給信息接受者。
? ? 因此,確保拿到的公鑰是正確的,這很重要。例如,確保自己拿到了銀行網站的正確公鑰、或者某個手機APP的正確公鑰。
? ? CA認證機構就是干這個事的,它們作為有信譽的擔保人,確保自己發布的各個第三方網站公鑰是正確的。這些公鑰存儲在CA機構發布的公鑰證書上。公鑰證書的主要內容,其實就是 第三方網站公鑰數據 + CA機構用自己的私鑰對這個公鑰進行的簽名。正常渠道安裝的瀏覽器,都會預存主要CA認證機構的公鑰,因此可以有效驗證這些公鑰證書是否從CA機構獲取的。如果是從CA機構獲取的,那么公鑰證書中第三方網站公鑰的正確性,由CA機構來背書,公鑰證書就相當于CA機構為這個公鑰發的“身份證”。
##.自簽名機制
? ? 公鑰證書不是由權威機構簽發,而是第一次使用公鑰證書時,做記錄,記住公鑰證書與對應實體的匹配關系,默認這是對應實體的合法公鑰證書。下次再遇到相同實體的不同公鑰證書,會認為是非法公鑰證書。
##.Android App簽名和驗證
? ? 在Android中安裝和驗證APP使用的就是“自簽名機制”。首次安裝app時,從app安裝包中獲取到公鑰證書,將公鑰與對應app的applicationId相綁定,認為這是合法的公鑰。后繼安裝相同applicationId的app時,若公鑰不同會拒絕安裝,若用“合法公鑰”驗證不通過,也會拒絕安裝。
? ? App安裝包上傳應用商店時,應用商店也會用上傳的公鑰證書來驗證安裝包來源是否合法。
? ? 由于首次安裝的APP身份是否合法很重要,所以最好確保首次安裝應用的合法渠道,例如從權威應用市場下載,這些應用市場會為APP的來源做身份背書。
##.簡述Android安裝包的校驗信息、驗證過程
1.MANIFEST.MF:會對安裝包內所有文件的特征數據做算法處理,處理結果存儲在最終安裝包的MANIFEST.MF中。一旦文件有改動,算法得出的結果也會有變化,在安裝apk包時,會重新根據所有文件做算法計算,若得出的結果與MANIFEST.MF不同,說明安裝包被修改過,安裝會通不過。
2.CERT.SF:用開發者的合法私鑰對MANIFEST.MF做的簽名。在apk包安裝時,會用開發者公鑰來解密簽名,將解密結果與MANIFEST.MF做對比,若相同,則通過,否則不通過。
? ? 也許冒牌者可以修改安裝包信息,并重新生成對應的MANIFEST.MF,但冒牌者沒有開發者的合法私鑰。所以,若MANIFEST.MF被修改,用合法公鑰對CERT.SF解密出的結果與MANIFEST.MF肯定會不同。
3.CERT.RSA:該文件中保存了公鑰、所采用的加密算法等信息。
參考剪藏:
?? ?數字簽名 -- 知乎
?? ?一文弄懂關于證書的一切,ssl協議,android包簽名機制。_嘿嘿嘿的博客-CSDN博客
總結
以上是生活随笔為你收集整理的Android签名概要总结——对称加密/非对称加密、数字签名、公钥证书、ca认证机构、安卓app签名的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot2.x整合Redis
- 下一篇: 鲍威尔共轭方向法c语言程序,鲍威尔共轭方