Java加密與解密的藝術-讀書筆記1-2章

作者-樑棟
第1章:企業應用安全
不管是哪一種IM工具,都在不遺餘力地告誡用戶聊天信息可能被盜取。
大批量、高負荷的數據交互時如何確定對方就是你所依賴的合作伙伴呢?
並不能保證手機平臺就能比PC平臺有着更高的安全性!
企業內部能訪問數據庫的員工能輕而易舉地盜取用戶的用戶名和口令。
“計算機安全”的定義爲:爲數據處理系統建立和採取的技術和管理的安全保護,保護計算機硬件、軟件數據不因偶然和惡意的原因而遭到破壞、更改和泄露。
安全技術目標包含保密性(confidentiality)、完整性(integreity)、可用性(availability)、可靠性(reliability)和抗否認性(Non-Repudiation)
SSL是網景(Netscape)公司設計的主要用於web的安全傳輸協議,由IETF將其標準化,進而產生了TLS,TLS是SSL的繼任者。SSL3.0與TLS1.0差別不大,兩種規範大致相同。WAP論壇(http://www.wapforum.org/)在TLS的基礎上進行了簡化,制定了WTLS協議(wireless transport layer security,無線傳輸層安全).
從HTTPS全稱不難看出它是基於SSL/TLS的HTTP協議,或者說是HTTPS=SSL/TLS+HTTP

密碼學在加密算法上大體分爲單向加密算法、對稱加密算法、非對稱加密算法3大類。
MD5、SHA是單向加密算法的代表。DES算是對稱加密算法的代表。RSA算法是非對稱加密算法的代表。相對於對稱加密算法而言,非對稱加密算法在安全級別上等級更高,但非對稱加密算法在時間效率上遠不如對稱加密算法。

密碼學與Java EE
MessageDigest類,可以構建MD5、SHA兩種加密算法;MAC類可以構建HMAC加密算法;Cipher類可以構建多種加密算法,如DES、AES、Blowfish對稱加密算法,以及RSA、DSA、DH等多種非對稱加密算法;Signature可以用於數字簽名與簽名驗證;Certificate用於操作證書。

爲你的企業應用加把鎖-訪問控制:以用戶組爲單位劃分某組用戶可以訪問某些資源(Linux操作系統是這種劃分方式的典型代表);數據加密:各種通過網絡傳播的光盤文件(ISO文件)同時附有摘要信息作爲驗證;證書認證:通過數字證書對數據做處理後,網絡交互時間會相應延遲,這主要是非對稱加密算法的時間效應。


第2章 企業應用安全的銀彈-密碼學
“人類使用密碼的歷史幾乎和使用文字的歷史一樣長”
“密碼學是關於如何在敵人存在的環境中通信”
密碼學的發展歷程大致分爲3個階段,即手工加密階段、機械加密階段和計算機加密階段。
手工加密階段-軍事通信密碼:陰符和陰書。陰符可算是密碼學中的替代法,陰書算是密碼學中的移位法。將一份完整地軍事文書一分爲三,分3人傳遞。
羊皮紙沿着卷軸繞行方向做了切割,切割後的羊皮紙上的信息雜亂無章,信息得以加密。
由軍事部門指定一首沒有重複字的五言律詩(40字)作爲解密祕鑰。
機械加密階段-齊默爾曼電報被破譯,促使美國放棄中立而直接參戰。“情報史上最偉大的密碼破譯事件”。
轉輪密碼機Enigma,波蘭數學家馬裏安.雷耶夫斯基初步破解了Enigma;英國數學家阿蘭.圖靈徹底終結了最高難度的Enigma。
所謂“風語者”就是使用納瓦霍語言的通信兵。
《獵殺U-571》德軍密碼機的截獲,使美軍迅速破解了德軍密碼,扭轉了大西洋戰事。
計算機加密階段-利用計算機可以設計出更爲複雜的加密算法,避免了徒手設計時容易造成的錯誤。在1949年前,密碼學是一門藝術,在1949-1975年,密碼學成爲科學;1976年後,密碼學有了新的方向-公鑰密碼學;1977年後,密碼學廣泛應用於各種場所。
RSA源於整數因子分解問題,DSA源於離散對數問題。利用量子計算機,僅用30即可完成傳統計算機要花上100億年才能完成的大數因子分解問題,從而使破解RSA加密的信息成爲可能。
密碼學:主要是研究保密通信和信息保密的科學,包括信息保密傳輸和信息加密存儲等。
數據的安全基於密鑰而不是算法的保密,換句話說,系統的安全性基於密鑰,對密鑰保密,對算法公開。
密碼學分類-按時間劃分-古典密碼學以字符爲基本加密單元;現代密碼學以信息塊爲基本加密單元。
按保密內容的算法劃分-基於密鑰算法:這樣做算法的公開不但有利於算法安全性的驗證,算法的漏洞得以及時修正,還避免了算法的設計者在算法上留下後門。
按密碼體制劃分-對稱密碼體制:加密密鑰與解密密鑰相同。非對稱密碼體制:加密密鑰與解密密鑰不同,密鑰分爲公鑰與私鑰。公鑰對外公開,私鑰對外保密。
按明文的處理方法劃分-分組密碼;流密碼-又稱序列密碼,指加密時每次加密一位或一個字節的明文。

古典密碼-古典加密算法最常用、最核心的兩種加密技術是移位和替換。
移位密碼-將“1234567890”變成“3216549870”
替代密碼-將“Encryption Algorithm”替換成“Fodszqujpo bmhpsjuin”(每個字母用下一個字母替代)
同音替代密碼-與單表替代系統類似,唯一的不同是(單個字母明文)可以替換成(密文的幾個字符之一)
非對稱密碼體制-甲方(發送方)用私鑰加密數據向乙方發送數據,乙方(接收方)接收到數據後用公鑰解密數據。
乙方(接收方)用公鑰加密數據向甲方發送數據,甲方(接收方)接收到數據後用私鑰解密數據。
用高效率的對稱加密算法對信息進行加密解密處理;用非對稱祕鑰加密對稱密碼系統所使用的密鑰。通過這種複合方式增進效率。

散列函數
散列函數的主要作用不是完成數據加密與解密的工作,它是用來驗證數據完整性的重要技術。
散列函數的運算過程是不可逆的,這個特性稱爲函數的單向性。
對於一個已知的消息及散列值,要找到另一個消息使其獲得相同的散列值是不可能的,這個特性稱爲抗弱碰撞性。這被用來防止僞造。
散列函數的常用算法有MD(消息摘要算法),SHA(安全散列算法)及MAC(消息認證算法)。
私鑰用於簽名,公鑰用於驗證;簽名操作只能由私鑰完成,驗證操作只能由公鑰完成;公鑰與私鑰成對出現,用公鑰加密的數據只能由私鑰解密,用私鑰加密的數據只能由公鑰解密。
甲方使用私鑰對消息做簽名處理,然後將消息加密後連同數字簽名發送給乙方。乙方使用已獲得的公鑰對接收到的加密消息做解密處理,然後是用公鑰及數字簽名對原始消息做驗證處理。
任何一個已獲得公鑰的竊聽者都可以截獲乙方發送的消息,替換成自己的消息發送給甲方,而甲方無法辨別消息來源是否是乙方。也就是說,上述的認證方式是單向的,屬於單向認證。以網銀交易爲例,一般的網銀交易使用的都是單向認證方式,無法驗證使用者的身份;而要求較高的網銀交易則都是雙向認證方式,交易雙方身份都可以得到驗證。
數字證書-X.509證書最爲常見。我們俗稱的數字證書,通常指的是X.509公鑰證書。
PGP根本不需要HTTPS,也不需要CA,僅需要一個可信賴的密鑰託管服務器(基於LDAP的服務器)。
對比X.509與PGP,有以下區別:
1-X.509依賴於CA的信任鏈,即羣簽名;PGP不依賴CA,依賴於可信賴的環簽名。
2-X.509主要應用於可信任的、安全的網絡環境中,如電子商務平臺等;PGP可應用於不安全的網絡環境中,如電子郵件等。
密碼算法的破解
2004年8月,山東大學王小云教授宣告她和她的團隊已經破解了MD5、HAVAL-128、MD4和RIPEMD四大國際著名算法。
2008年,荷蘭埃因霍芬技術大學科學家成功地把兩個可執行文件進行了MD5碰撞,使得這兩個運行結果不同的程序計算出同一個MD5值。2008年12月一組科研人員通過MD5碰撞成功生成了僞造SSL證書。
建議企業最好在SSL/TLS加密技術上選擇更爲安全的AES-GCM方式。
密碼學主要包含兩大分支:密碼編碼學和密碼分析學。密碼編碼學針對於密碼如何隱藏,密碼分析學針對於密碼如何破譯。編碼學與分析學互相影響,共同促進密碼學的發展。 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章