保障系統安全的密鑰解決方案
獨立型系統正瀕于滅絕,這一趨勢使得開發人員在安全性問題上面臨越來越大的壓力。這個問題涉及手機、具有Wi-Fi功能的數碼相框等幾乎所有電子產品。使用防火墻或加密幾個數據文件是遠遠不夠的,系統安全性就像最脆弱的鏈路一樣需要受到保護。
本文引用地址:http://www.104case.com/article/197674.htm
基本的安全性概念
信息能夠以明文、認證或加密方式進行傳輸(圖1)。認證是指那些可讀懂的文字信息,但它也經常用來指沒有簽名或加密信息。經鑒定的信息是經過數字簽名的信息。修改信息將使簽名失效,藉此可以判斷信息是否被篡改。這時信息仍是可以訪問的,這點與加密信息不同,加密信息在解密之前是無法辨認的。
圖1:通信鏈路突出了不同類型的數據交換,包括從認證的數據交換到加密的數據交換。
數字簽名通常是使用被稱為消息的相關信息來加密附屬于這個信息的標簽,也稱為消息摘要或簡稱摘要。如果簽名是在信息被修改后創建的,那么兩個標簽將不再匹配。發現修改通常并不能提供誰修改、怎樣修改或修改了什么的信息。數字簽名可以使用加密,但更多的是使用哈希函數。哈希函數和加密之間的區別在于哈希函數是單向操作,而加密通常是雙向過程,因為原始明文可以用正確的密鑰和算法重新構建。
一般來說,哈希函數比加密快,它們用于從口令存儲到通信握手的廣泛應用領域。例如,Linux將用戶名和口令存儲在“passwd”文件中。這是一個明文文件,但訪問這個文件只能得到用戶名和經過哈希算法處理過的口令。
可以使用這個信息對用戶進行認證,方法是使用口令產生一個新的哈希值,然后將結果與passwd文件中的內容進行比較。當然,泄露passwd文件將形成安全漏洞。實際上大多數Linux實現將哈希過的口令保存在影子文件中,passwd文件只是減去哈希口令后的鏡像文件。
加密通常會使用一個或兩個密鑰。單個密鑰用在對稱加密算法中,即加密和解密使用相同的密鑰。對稱加密速度一般要比非對稱或兩個密鑰的系統快。非對稱系統中加密用一個密鑰,解密用另一個相關密鑰。在這種雙密鑰案例中,其中一個密鑰不能用另一個密鑰重建。
大多數公開密鑰系統采用兩個密鑰(一個公鑰,一個私鑰)進行雙向數據交換,這意味著一個密鑰的主人加密的信息可以被另一個密鑰的主人解密。單向系統允許一個密鑰用于加密,另一個密鑰用于解密。而在雙向系統中,同一密鑰不能用于加密同時又用于解密加密過的數據。如果兩個密鑰都保密,那么在信息交換時這兩個密鑰可以用來識別主人。
RSA公鑰算法是MIT的Ron Rivest、Adi Shamir和Leonard Adleman在1978年提出的。這種算法基于兩個大的素數以及分解大素數非常耗時的事實,從而使得強力攻擊非常困難。在公鑰環境中,通常有一個密鑰可提供給感興趣方。同樣,每一方通常都有自己的密鑰(后面的密鑰交換中會用到多個密鑰)。
目前流行的一些哈希算法包括MD4、MD5、SHA-1和SHA-256。普通加密系統包括DES(數據加密標準)、RSA和AES(高級加密標準)。DES加密密鑰長度為56位,對于目前處理器性能而言強力攻擊并不容易。在DES發布的20世紀70年代這種算法還是相當安全的。三倍DES(3DES)同樣使用DES算法和密鑰,但彌補了DES的缺點。3DES使用三個密鑰,數據要被加密三次。
AES密鑰可以是128位、192位或256位長。目前AES已經成為微控制器上的標準配置。AES在ZigBee等無線標準中被廣泛采用,能用于全盤加密和大量其它應用。
還有一種方法叫橢圓曲線加密(ECC)法,它能使用很小的密鑰達到與使用大型密鑰的其它技術相同的安全性。這種高效算法可以用硬件輕松實現。安全軟件通常支持一種或一種以上的加密和哈希算法,同時許多通信標準允許使用不同的算法和密鑰長度。這些參數一般在初始握手期間選擇。
安全要從最基本的做起
安全需要從最基本的做起。如果任何一層不安全,那么它上面的所有層都將變得不安全。這也是安全深度之所以重要的原因。同樣,劃分可以隔離問題,但前提條件是劃分機制沒有被攻破。破壞性攻擊經常是通過尋找安全機制中的漏洞進行的,這正是蠕蟲和病毒利用操作系統、應用軟件或系統配置中的缺陷攻擊系統的做法。
對大多數計算機系統來說,物理安全和啟動過程是起點。保證系統安全的方法之一是使用Trusted Computing Group公司(TCG)的可信平臺模塊(TPM)啟動系統。TPM包含個人電腦中常見的安全微控制器和存儲器(圖2)。防篡改硬件可以從物理上保護器件,破壞性地打開器件將導致存儲的安全密鑰丟失。TPM會在系統啟動時自檢,然后完成系統剩余部分的啟動,包括處理用戶輸入的PIN碼、認證通常存儲在另一個器件中并經數字簽名或加密的啟動程序。
圖2:可信平臺模塊(TPM)被設計用于提供安全啟動環境。
一般情況下,TPM會將安全控制權轉交給主機,但也可以用于與安全有關的其它操作。TPM還包含一個唯一的RSA私鑰用于TPM的識別。TPM允許系統對信息進行數字簽名,從而實現其它系統對它自身的認證。
此外,TPM可以用來對機器上的器件進行遠程認證或識別,方法是獲得硬件和軟件的數字特征,然后簽名這些信息。簽名過的信息隨后即可發往第三方。這種方法一般可以用來確保使用的是特定版本的音樂播放程序。
為了解決基本遠程認證缺少匿名的問題,TCG開發出了一種稍有不同的方法,叫做直接匿名認證(DAA)。DAA執行類似的過程,但結果只驗證目標硬件或軟件的狀態,它不識別TPM模塊本身。
TPM也能提供安全密鑰存儲以及執行加密和數字簽名工作。密鑰不需要存儲在TPM上,因為加密版本可以存儲在其它系統存儲器中。TPM可以利用這個信息提取和解密密鑰以供使用。
TPM功能可以被集成進微控制器,而不僅是個人電腦,從而打開了更為廣泛的消費設備市場。許多TPM功能可以使用帶I2C/SMBus接口的安全串行存儲器進行訪問。這些存儲器通常是TPM中常見的功能類子集,但具有更低的功耗要求和更簡單的接口。
評論