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