Android 安全加密:非對稱加密

發表於2016-09-14

以上學習所有內容,對稱加密、非對稱加密、訊息摘要、數字簽名等知識都是為了理解數字證照工作原理而作為一個預備知識。數字證照是密碼學裡的終極武器,是人類幾千年歷史總結的智慧的結晶,只有在明白了數字證照工作原理後,才能理解Https 協議的安全通訊機制。最終才能在SSL 開發過程中得心應手。

另外,對稱加密和訊息摘要這兩個知識點是可以單獨拿來使用的。

知識點串聯:

數字證照使用到了以上學習的所有知識

  • 對稱加密與非對稱加密結合使用實現了祕鑰交換,之後通訊雙方使用該祕鑰進行對稱加密通訊。
  • 訊息摘要與非對稱加密實現了數字簽名,根證照機構對目標證照進行簽名,在校驗的時候,根證照用公鑰對其進行校驗。若校驗成功,則說明該證照是受信任的。
  • Keytool 工具可以建立證照,之後交給根證照機構認證後直接使用自簽名證照,還可以輸出證照的RFC格式資訊等。
  • 數字簽名技術實現了身份認證與資料完整性保證。
  • 加密技術保證了資料的保密性,訊息摘要演算法保證了資料的完整性,對稱加密的高效保證了資料處理的可靠性,數字簽名技術保證了操作的不可否認性。

通過以上內容的學習,我們要能掌握以下知識點:

  • 基礎知識:bit 位、位元組、字元、字元編碼、進位制轉換、io
  • 知道怎樣在實際開發裡怎樣使用對稱加密解決問題
  • 知道對稱加密、非對稱加密、訊息摘要、數字簽名、數字證照是為了解決什麼問題而出現的
  • 瞭解SSL 通訊流程
  • 實際開發裡怎樣請求Https 的介面

1. 介紹

與對稱加密演算法不同,非對稱加密演算法需要兩個金鑰:公鑰(publickey)和私鑰(privatekey)。公鑰與私鑰是一對,如果用公鑰對資料進行加密,只有用對應的私鑰才能解密;如果用私鑰對資料進行加密,那麼只有用對應的公鑰才能解密。因為加密和解密使用的是兩個不同的金鑰,所以這種演算法叫作非對稱加密演算法。

簡單理解為:加密和解密是不同的鑰匙

20160910133438466

2. 常見演算法

RSA、Elgamal、揹包演算法、Rabin、D-H、ECC(橢圓曲線加密演算法)等,其中支付寶使用的就是RSA演算法

3. RSA 演算法原理

質因數、尤拉函式、模反元素
原理很複雜,只需要知道內部是基於分解質因數和取模操作即可

4. 使用步驟

5. 注意點

6. 分批操作

7. 非對稱加密用途

身份認證

一條加密資訊若能用A 的公鑰能解開,則該資訊一定是用A 的私鑰加密的,該能確定該使用者是A。

20160910134305813

陌生人通訊

A 和B 兩個人互不認識,A 把自己的公鑰發給B,B 也把自己的公鑰發給A,則雙方可以通過對方的公鑰加密資訊通訊。C 雖然也能得到A、B 的公鑰,但是他解不開密文。

20160910134435438

祕鑰交換

A 先得到B 的公鑰,然後A 生成一個隨機祕鑰,例如13245768,之後A 用B 的公鑰加密該祕鑰,得到加密後的祕鑰,例如dxs#fd@dk,之後將該密文發給B,B 用自己的私鑰解密得到123456,之後雙方使用13245768 作為對稱加密的祕鑰通訊。C 就算截獲加密後的祕鑰dxs#fd@dk,自己也解不開,這樣A、B 二人能通過對稱加密進行通訊。

20160910134559638

8. 總結

非對稱加密一般不會單獨拿來使用,他並不是為了取代對稱加密而出現的,非對稱加密速度比對稱加密慢很多,極端情況下會慢1000 倍,所以一般不會用來加密大量資料,通常我們經常會將對稱加密和非對稱加密兩種技術聯合起來使用,例如用非對稱加密來給稱加密裡的祕鑰進行加密(即祕鑰交換)。

相關文章