Android信息安全篇(一)-加解密

   最近在開發過程當中,接觸到信息的完整性問題,其實我犯了一個比較低級的錯誤,那就是即便用戶隱私信息進行了保密操做,保護了用戶數據及相關資源安全,但依然是無法避免數據的篡改,因此通用的作法是對數據進行簽名和校驗(好比MD5和數字簽名等,公司用的是ECC簽名)。

  接着這個話題,我深刻了解一下信息安全,本文一共有兩個篇章,篇章一主要是圍繞CIA原則來說解怎樣有效的防護DDosCSRF攻擊等,以及在數據傳輸過程當中,加解密算法的原理。

  經常使用的密碼學能夠劃分兩種:html

一.古典密碼學

  起源於古代戰爭中,爲了防止書信被截獲後重要信息泄漏,人們開始對書信進行加密。算法

a.移位式加密

  • 密碼棒,使用布條纏繞的方式對書信進行加密。
  • 加密算法: 纏繞後書寫
  • 祕鑰:木棒的尺寸

b.替換式加密

  • 字符串去頭去尾,字母位置偏移,替換文字。
  • 加密算法: 替換文字
  • 祕鑰: 替換碼錶

c.對稱加密

1.內容:安全

  通訊雙方使用同一個祕鑰,使用加密算法配合祕鑰來加密,解密時使用加密過程的徹底逆過程配合祕鑰來解密。

  簡單來講就是: 對文字進行規則替換來加密,對密文進行逆向的規則化替換來解密。網絡

咱們經常使用經典的加密算法有:編碼

DES(56位祕鑰,祕鑰過短而被廢棄)
 AES(126位,192位,256位祕鑰,如今最流行)
複製代碼

2.做用:加密

  加密通訊,防止信息在不安全網絡截獲後,信息被人讀取或篡改。spa

3.破解思路:3d

  • 拿到一組或多組原文-密文對
  • 設法找到一個密鑰,這些密鑰能夠將這些原文-密文對中的原文加密爲密文,以及將密文解密原文組合,即爲成功破解

4.反破解:   一種優秀的對稱加密算法標準是,讓破解者找不到比窮舉法更有效的手段,而且窮舉法的破解時間足夠長code

5.缺點:   密鑰泄漏: 不能在不安全的網絡上傳輸密鑰,一旦密鑰泄漏則加密通訊失敗。cdn

6.Base64   將二進制數據轉換成64個字符組成的編碼算法

什麼是二進制數據?

  廣義:全部的計算機數據都是二進制數據   狹義:非文本數據即爲二級制數據

算法

  將原數據每6位對應成 Base64 索引表中的一個字符編排成一個字符串(每一個字符8位)

Base64的用途
  • 將二進制數據擴充了存儲和傳輸途徑(例如能夠把數據保存到文本文件,能夠經過聊天對話框或者短信的形式發送二進制數據,能夠在URL中加入簡單的二進制數據)

  • 普通的字符串通過Base64編碼的結果,被肉眼變得不可讀,所以能夠在必定的條件下放偷窺。

Base64的缺點

  由於自身的原理(6位 變 8位),所以每次Base64編碼以後,數據會增大1/3,因此會影響傳輸和存儲。

變種:Base58

   比特幣使用的編碼方式,去掉Base64的數字0,字母大寫I,以及"+"和"/"符號,用於比特幣地址表示

URL 使⽤的百分號編碼

   在URL的字符串中,對一些不用於特殊的保留字符,使用百分號%爲前綴單獨編碼,以免解析錯誤等問題

二.現代密碼學

  • 能夠加密任何二進制數據
  • 非對稱加密有了更加普遍的用途: 數字簽名

非對稱加密

1.原理:   使用公鑰對數據進行加密獲得的密文;
  使用私鑰對數據進行解密獲得源數據

2.做用:   使用非對稱加密通訊,能夠在不可信網絡上將雙方的公鑰傳給對方,而後在發消息前分別對消息使用對方公鑰來加密和使用私鑰來簽名,作到不可信網絡上可靠祕鑰傳播及加密通訊。

3.經典算法:   RSA(可用於加密和簽名),DSA(僅用於簽名,但速度更快)

4.優缺點:

  • 優勢: 能夠在不安全的網絡上傳輸祕鑰。
  • 缺點: 計算複雜,所以會比對稱加密差不少。

5.破解思路:

  • 和對稱加密不一樣在於,非對稱加密的公鑰容易得到,所以製造原文和密文沒有那麼難的事

  • 因此,非對稱加密的關鍵只在於,如何找到一個正確的私鑰,能夠解密全部通過公鑰加密的密文。找到這樣的私鑰即爲成功破解。

  • 經過公鑰推斷出私鑰一般是一種思路(例如 RSA),但每每最佳法是窮舉法

  • 只是和對稱加密破解的區別在於,對稱加密破解是不斷嘗試本身的新祕鑰是否能夠將本身拿到的原文和密文進行加密和解密

  • 非對稱加密的破解本質是不斷拿本身私鑰和公鑰是否能夠互解

6.反破解:

  和對稱加密同樣,非對稱加密算法優秀的標準在於,讓破解者找不到比窮舉法更有效的破解手段。

參考資料

相關文章
相關標籤/搜索