最近在開發過程當中,接觸到信息的完整性問題,其實我犯了一個比較低級的錯誤,那就是即便用戶隱私信息進行了保密操做,保護了用戶數據及相關資源安全,但依然是無法避免數據的篡改,因此通用的作法是對數據進行簽名和校驗(好比MD5和數字簽名等,公司用的是ECC
簽名)。
接着這個話題,我深刻了解一下信息安全,本文一共有兩個篇章,篇章一主要是圍繞CIA
原則來說解怎樣有效的防護DDos
或CSRF
攻擊等,以及在數據傳輸過程當中,加解密算法的原理。
經常使用的密碼學能夠劃分兩種:html
起源於古代戰爭中,爲了防止書信被截獲後重要信息泄漏,人們開始對書信進行加密。算法
1.內容:安全
通訊雙方使用同一個祕鑰,使用加密算法配合祕鑰來加密,解密時使用加密過程的徹底逆過程配合祕鑰來解密。
簡單來講就是: 對文字進行規則替換來加密,對密文進行逆向的規則化替換來解密。網絡
咱們經常使用經典的加密算法有:編碼
DES(56位祕鑰,祕鑰過短而被廢棄)
AES(126位,192位,256位祕鑰,如今最流行)
複製代碼
2.做用:加密
加密通訊,防止信息在不安全網絡截獲後,信息被人讀取或篡改。spa
3.破解思路:3d
4.反破解: 一種優秀的對稱加密算法標準是,讓破解者找不到比窮舉法更有效的手段,而且窮舉法的破解時間足夠長code
5.缺點: 密鑰泄漏: 不能在不安全的網絡上傳輸密鑰,一旦密鑰泄漏則加密通訊失敗。cdn
6.Base64 將二進制數據轉換成64個字符組成的編碼算法
廣義:全部的計算機數據都是二進制數據 狹義:非文本數據即爲二級制數據
將原數據每6位對應成 Base64
索引表中的一個字符編排成一個字符串(每一個字符8位)
將二進制數據擴充了存儲和傳輸途徑(例如能夠把數據保存到文本文件,能夠經過聊天對話框或者短信的形式發送二進制數據,能夠在URL中加入簡單的二進制數據)
普通的字符串通過Base64
編碼的結果,被肉眼變得不可讀,所以能夠在必定的條件下放偷窺。
由於自身的原理(6位 變 8位),所以每次Base64編碼以後,數據會增大1/3,因此會影響傳輸和存儲。
比特幣使用的編碼方式,去掉Base64
的數字0
,字母大寫I
,以及"+"和"/"符號,用於比特幣地址表示
在URL的字符串中,對一些不用於特殊的保留字符,使用百分號%
爲前綴單獨編碼,以免解析錯誤等問題
2.做用: 使用非對稱加密通訊,能夠在不可信網絡上將雙方的公鑰傳給對方,而後在發消息前分別對消息使用對方公鑰來加密和使用私鑰來簽名,作到不可信網絡上可靠祕鑰傳播及加密通訊。
3.經典算法: RSA(可用於加密和簽名),DSA(僅用於簽名,但速度更快)
4.優缺點:
5.破解思路:
和對稱加密不一樣在於,非對稱加密的公鑰容易得到,所以製造原文和密文沒有那麼難的事
因此,非對稱加密的關鍵只在於,如何找到一個正確的私鑰,能夠解密全部通過公鑰加密的密文。找到這樣的私鑰即爲成功破解。
經過公鑰推斷出私鑰一般是一種思路(例如 RSA),但每每最佳法是窮舉法
只是和對稱加密破解的區別在於,對稱加密破解是不斷嘗試本身的新祕鑰是否能夠將本身拿到的原文和密文進行加密和解密
非對稱加密的破解本質是不斷拿本身私鑰和公鑰是否能夠互解
6.反破解:
和對稱加密同樣,非對稱加密算法優秀的標準在於,讓破解者找不到比窮舉法更有效的破解手段。