620)this.style.width=620;" border=0>
圖1 ISO/ICE 7816-8中有關(guān)加密功能的命令:MANAGE SECURITY ENVIRONMENT利日PERFORM ECURITY OPERATION的基本原理
這兩條命令的功能見表1~表9,圖1則說明了它們運行的基本原理。
620)this.style.width=620;" border=0>
表1 遵照ISO/IEC 7816-8的MANAGE SECURITY ENVIRONMENT的功能
[nextpage]
由于PERFORM SECURITY OPERATION命令以很多不同的方式應用,我們在下面將按照不同的選項來分別敘述 其功能,而不對它們做過細的描述。PERFORM SECURITY OPERATION的COMPUTE CRYPTOGRAPHIC CHECKSUM(計 算加密代碼和)選項是用來求加密的校驗和(CCS)的,它通常被稱為MAC(報文鑒別碼)。所用之填補以及 密鑰或由操作系統(tǒng)隱含給出或可經(jīng)MANAGE SECURITY-ENVIRONMENT命令提供。與此命令相對應的選項為 VERIFY CRYP-TOGRAPHIC CHECKSUM,它計算傳輸數(shù)據(jù)的加密代碼和并和也在命令中傳送的基準值相比較。這項操作的結(jié)果 是符合/不符合,并回給終端。
620)this.style.width=620;" border=0>
表2 遵照ISO/IEC 78168的PERFORM SECURITY OPERATION的選項COMPUTE CRYPTOGRAPHlC CHECKSUM的功能
620)this.style.width=620;" border=0>
表3 遵照ISO/IEC 7816-8的PERFORM SECURITY OPERATION的選項VERIFY CRYPTOGRAPHIC CHECKSUM的功能
兩個選項ENCIPHER和DECIPHER對數(shù)據(jù)提供了純粹的加密和解密,ENCIHER選項用來對命令中傳送的數(shù)據(jù)加密 。根據(jù)操作系統(tǒng)提供的選項,可先行傳送MANAGE SECURITYENVIRONMENT命令,以選擇所用加密算法。類似地 ,也必須用傳送的參數(shù)在發(fā)布命令之前先行設置要當加密算法的模式。對于字組加密算法,尚可在ECB與CBC 模式間選擇。由于傳送給卡的數(shù)組的長度沒有必要精確地為加密算法字組大小的整倍數(shù),故必須由一個補充 參數(shù)規(guī)定填補方法,同樣重要的是智能卡中算法用于加密數(shù)據(jù)的密鑰的存儲地址。
620)this.style.width=620;" border=0>
表4 遵照ISO/IEC 7816-8的PERFORM SECURITY OPERATION的選項ENCIPHER的功能[nextpage]
620)this.style.width=620;" border=0>
表5 遵照ISO/IEC 7816-8的PERFORM SEOURITY OPERATION的選項DECIPHER的功能
ENCIPHER的逆操作是DECIPHER,用此功能可使傳送的數(shù)據(jù)以和ENCIPHER中所用的相同模式被解密。當然智 能卡必須知道相應的密鑰,算法模式和填補模式,這些信息必須用一條MANAGE SECURITY ENVIRONMENT命令傳送給卡的操作系統(tǒng)。
由于把公開密鑰算法引人到智能卡的應用中,這就需要有適當?shù)拿顏硎褂眠@一新的有效功能。智能卡特 別適合于簽名的應用,因為簽名的算法的秘密密鑰可以安全地存在存儲器中,而它不能被讀到。ISO/IEC 7816-8標準說明了命令的四種選項可用于數(shù)字簽名。
PERFORM SECURITY OPERATION命令的HASH(散列)選項可用于計算散列值,命令或是傳送要散列的數(shù)據(jù), 或是傳送在智能卡之外已算出的散列值以及需用于最后一步計算的數(shù)據(jù)。在后一種情況,對最后字組的散列 計算是在卡中執(zhí)行的,這種方法的好處是散列值可以在卡外能顯然較快形成,但最后一步仍在卡內(nèi)進行。從 純粹加密的觀點看來,這僅僅提供了少量額外的安全性,但可稍微限制操縱散列值的可能性,被廣泛用在實 際中。
由于散列的數(shù)據(jù)量通常大于一條命令中所允許的數(shù)據(jù)字段的最大長度,比⒋SH選項中使用了“7級” (Level-7)鏈接,意即數(shù)組可在應用級上邏輯地鏈接在一起。最終的散列數(shù)組中含有一個標記以通知命令 散列操作至此字組結(jié)束。
這一命令選項還有著它自己的選項,計算出的散列值可以或是在對命令的響應中立即傳送給終端,或是存 儲在卡中供后繼的命令使用。像在前面的命令中所述的那樣,所用的填補和密鑰需用一條在先的MANAGE SECURITY ENVIRONMENT命令予以規(guī)定。
620)this.style.width=620;" border=0>
表6 遵照ISO/IEC 7816-8的PERFORM SECURTY OPERATION的HASH選項的功能[nextpage]
COMPUTE DIGITAL SIGNATURE選項可用來簽署數(shù)據(jù),要簽署的數(shù)據(jù)串通常都已經(jīng)被壓縮成散列值,必須傳送 給智能卡。除非前一條是PERFORM SECURITY OPERATION命令的HASH選項,其結(jié)果已經(jīng)存在于卡中。COMPUTE DIGITAL SIGNATURE選項也允許把要簽署的數(shù)據(jù)直接傳送給卡。在簽名產(chǎn)生之前先把它們散列。對大量的數(shù) 據(jù),可隨HASH選項采取“7級”散列。
620)this.style.width=620;" border=0>
表7 遵照ISO/IEC 7816-8的PERFORM SECURITY OPERATION的COMPUTE DIGITAL SIGNATURE選項的功能
若散列值之長度并不對應于公開密鑰算法的輸人數(shù)據(jù)長度,則必須予以填補。對此選項亦由MANAGE SECURITY ENVIRONMENT命令中的參數(shù)規(guī)定,它也用來確定所用之密鑰。
驗證COMPUTE DIGITAL SIGNATURE選項的功能由VERIFY DIGITAL SICNATURE選項提供。原理上,任何一臺足 夠快的數(shù)字計算機都可用來驗證簽名,因為所需密鑰是公開的。然而,在許多情況下公開密鑰的有效性必須 首先用一個另外的數(shù)字簽名予以驗證。這確實和安全性有關(guān),而且不應在不安全的計算機上進行。對數(shù)字簽 名的驗證,其相關(guān)的公開密鑰必須或是已為智能卡隱含地知道,或是經(jīng)命令選項VERIFY CERTIFICATE(驗證 憑證)明顯地使卡獲得。要驗證的數(shù)據(jù)可以直接傳送給VERIFY DIGITAL SIGNATURE或以相關(guān)的散列值的形式 傳給,所有其他參數(shù)則和COMPUTE DIGITAL SICNATURE選項是一樣的。
620)this.style.width=620;" border=0>
[nextpage]
在開放系統(tǒng)中,驗證數(shù)字簽名的公開密鑰通常用憑證當局的秘密密鑰予以簽署。公開密鑰的可靠性在使用 前必須被驗證,因為這是惟一的方法以確信密鑰不是偽造的。這項驗證必須在安全的環(huán)境中進行,例如在智 能卡中,否則有可能遭受到控制。ⅦⅢⅣ CERTIπCATE(驗證憑證)命令選項專門提供對簽署了的公開密鑰 的驗證。一旦公開密鑰被驗證為真實可信的,就可以或是把它永久存在智能卡中,或是緊接著用一條VERIFY DIGITAL SIGNATURE命令來使用它。
620)this.style.width=620;" border=0>
如果智能卡的操作系統(tǒng)支持產(chǎn)生非對稱加密算法密鑰對的產(chǎn)生,則此過程可用ISO/IEC7816-8的命令 GENERATE PUBLIC KEY PAIR(產(chǎn)生公開密鑰對)來啟動,其具體功能見表10。密鑰產(chǎn)生需用之所有參數(shù),必 須先用MANAGE SECURITY ENVIRONMEN命令設置妥當。
圖2表明了以上所述的命令如何可以用來產(chǎn)生一個數(shù)字簽名和驗證。