Android資料加密介紹
阿新 • • 發佈:2018-12-10
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