1. 程式人生 > >Android資料加密介紹

Android資料加密介紹

Android資料加密介紹

資訊保安

  • 機密性:為了防止資訊被竊聽
  • 完整性:為了防止資訊被篡改
  • 認證:為了防止攻擊者偽裝成真正的傳送者
  • 不可否認性:為了防止傳送者事後否認自己沒有做過

加密方式

java中使用了多種加密方式。常見的加密方式有兩種:

  • 對稱加密:

    加密和解密使用同一個金鑰:所有的資料,變成byte陣列之後,每個數 + 1
    演算法:DES、DES3、AES、RC5、Blowfish等
    分組密碼,即以分組為單位進行處理的密碼演算法
    初始化向量IV:與分組長度一致,加解密一致
    存在金鑰配送問題

  • 非對稱加密

    加密用公鑰,解密用私鑰
    主要基於數學上困難的問題來保證機密性
    演算法:RSA、DSA、ElGamal、Rabin等
    公鑰密碼處理速度遠遠低於對稱密碼

  • 混合密碼

    對稱密碼和公鑰密碼相結合
    用對稱密碼來加密訊息
    用公鑰密碼來加密對稱密碼的金鑰
    對稱密碼的金鑰是臨時生成的會話金鑰

  • 單向雜湊函式

    MD4、MD5、SHA-1、SHA-256、SHA-384、SHA-512、SHA-3等等

  • 訊息認證碼

    GUID :UUID,不允許重複的場景,使用UUID

    訊息認證碼(message authentication code)是一種確認完整性並進行認證的技術,簡稱為 MAC
    輸入包括訊息和共享金鑰,輸出固定長度的資料,稱為MAC值
    比單向雜湊函式多了一個共享金鑰
    普遍的實現演算法:HMAC

  • 證書一般包含:主體公鑰值、主體識別符號資訊、證書有效期、頒發者識別符號資訊、頒發者的數字簽名.證書標準:X.509

通過私鑰去權威機構認證,產生一個證書和公鑰。私鑰產生證書,公鑰驗證證書。
但是如果是用私鑰對訊息進行簽名,效率很低,所以一般,私鑰是對訊息的雜湊值進行簽名。

java加密API規範和參考架構

http://www.cis.upenn.edu/~bcpierce/courses/629/jdkdocs/guide/security/CryptoSpec.html
http://docs.oracle.com/javase/1.5.0/docs/guide/security/CryptoSpec.html
#AppA Appendix A:附錄A