原則:
1、不允許在網絡上傳遞明文的用戶隱私信息
2、在本地不允許明文的保存用戶隱私信息
起初應用於軍事領域,然後凱撒大帝,後面密碼本加密
a-c,b-e,c-zz 持續到了上世紀50年代
RSA(三個人名)
- 加密算法公開
- 公鑰加密,私鑰解密
- 公鑰解密嗎,私鑰加密
key:其實就是一個數字,只能通過公示分解破解 (破解的話需要50年左右)
AF
哈希(散列)函數
MD5
SHA1
SHA256
對稱加密算法
DES
3DES
AES(高級密碼標準,美國國家安全局使用的) iOS操作系統內部使用的 破解需要幾千萬年
散列函數特點
- 算法公開
- 對相同的數據加密,得到的結果是一樣的
- 對不同的數據加密,得到的結果是定長的,32位字符(a-z 0-9)
- 信息摘要,信息“指紋”,是用來做識別的
- 不能反算
用途
- 密碼,服務器其實也不知道用戶的真實密碼
- 搜索
- 版權
破解
- 目前破解的散列只有MD5,SHA1也在邊緣
- 散列碰撞,不同的數據,使用MD5之後能夠得到相同的散列結果無數種
- 張小云
MD5的基礎安全
1、加“鹽”-- 早期解決方案, 足夠長/複雜的字符串
缺點:鹽是固定的,寫死在程序裏面的
2、HMAC -- 近幾年在國內開始增多
給定一個密鑰!對明文進行加密,並且做了“兩次散列”。32位字符
密鑰一般從服務器獲取
服務器
a、賬號、密鑰、加密後的密碼
b、(加密之後的密碼+“201701112205”).MD5 時間限制
HMAC客戶端登錄思路
a、用戶輸入賬號、密碼
b、本地查找密鑰:如果沒有密鑰,向服務器獲取(賬號對應的密鑰)
本地:
賬號:NSUserDefault
密碼:鑰匙串訪問keyChain
參數:
1、密碼明文
2、forService服務:就是APP的唯一標識,一般使用BoundID或加密後的BoundID
3、賬號
1、蘋果的“原生態圈”,從iOS7.0.3版本,開放給開發者
2、鑰匙串加密方式就是AES加密,可以將保存的密碼以明文的方式反算給你
3、蘋果原生的接口都是C語言,但有三方庫,很方便