古語有云“君不密則失臣,臣不密則失身,機事不密則害成.是以君子慎密而不出也”,將信息進行加密和解密的必要性是顯而易見的。它貫穿于整個人類的歷史。
在現代密碼學誕生以前,就已經有很多的加密方法了。例如,最古老的斯巴達加密棒,廣泛應用于公元前7世紀的古希臘。16世紀意大利數學家卡爾達諾發明的柵格密碼,基于單表代換的凱撒密碼、豬圈密碼,基于多表代換的維吉尼亞密碼,二戰中德軍廣泛使用的恩格瑪加密機….但最終都找到了有效的破解算法。
現代密碼學的誕生標志是1977年1月由美國國家標準局公布的數據加密標準(Data Encryption Standard,DES)。 在經過20多年之后,為適應現代的安全要求,2000年美國國家和標準技術協會篩選和評測出了被稱為AES(Advanced Encryption Standard)的加密算法作為新的加密標準。目前,AES已被廣泛使用,且未發現致命缺陷。到目前為止,AES是一個安全的加密算法。
然而,在加密算法之外,面臨一個問題,那就是:秘鑰的分發。就是說,解密方如何獲得加密方的秘鑰呢? 從而出現了:對稱加密和非對稱加密。
對稱加密指的就是加密和解密使用同一個秘鑰,所以叫做對稱加密。對稱加密只有一個秘鑰,作為私鑰。 常見的對稱加密算法:DES,AES,3EDS等等。
非對稱加密指的是:加密和解密使用不同的秘鑰,一把作為公開的公鑰,另一把作為私鑰。公鑰加密的信息,只有私鑰才能解密。 常見的非對稱加密算法:RSA,ECC
對稱加密算法相比非對稱加密算法來說,加解密的效率要高得多。但是缺陷在于對于秘鑰的管理上,以及在非安全信道中通訊時,密鑰交換的安全性不能保障。所以在實際的網絡環境中,會將兩者混合使用
例如針對C/S模型, 1. 服務端計算出一對秘鑰pub/PRi。將私鑰保密,將公鑰公開。 2. 客戶端請求服務端時,拿到服務端的公鑰pub。 3. 客戶端通過AES計算出一個對稱加密的秘鑰X。 然后使用pub將X進行加密。 4. 客戶端將加密后的密文發送給服務端。服務端通過pri解密獲得X。 5. 服務端告知客戶端已成功獲得X。 6. 然后兩邊的通訊內容就使用對稱加密,使用X作為秘鑰來解密。
RSA是一種非對稱加密。它的整個基礎就建立在一個世界性的數學難題上。兩個大質數的積的質因子分解。具體是為什么呢?
后面再補
新聞熱點
疑難解答