usbkey概述(算法及中間件)_第1頁(yè)
usbkey概述(算法及中間件)_第2頁(yè)
usbkey概述(算法及中間件)_第3頁(yè)
usbkey概述(算法及中間件)_第4頁(yè)
usbkey概述(算法及中間件)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、我在USB Key行業(yè)待了有5年之久。先后接觸包括軟件、硬件、COS、中間件以及測(cè)試、甚至各項(xiàng)資質(zhì)的獲取等等工作,為了將這些個(gè)人經(jīng)驗(yàn)更好的與大家分享,我會(huì)陸續(xù)的撰寫(xiě)一些該方面的技術(shù)文章。我將之命名為usbkey概述。其中,我將分享USB Key的里里外外,設(shè)計(jì)、分析,測(cè)試等等一些粗略的經(jīng)驗(yàn)。如果您對(duì)之有興趣,歡迎與我溝通討論。一、概述USB Key(以下簡(jiǎn)稱UKey)是一種以USB為接口標(biāo)準(zhǔn)的硬件設(shè)備。該設(shè)備內(nèi)置可信計(jì)算模塊(或芯片,簡(jiǎn)稱TCM),具備密碼運(yùn)算功能,有一定容量的私密存儲(chǔ)空間,可以保證存儲(chǔ)在該區(qū)域的數(shù)據(jù)不被讀出。UKey內(nèi)置對(duì)稱和非對(duì)稱算法,這些算法

2、及其運(yùn)算功能是UKey的核心功能。由于具備對(duì)稱和非對(duì)稱算法,所以UKey具備了數(shù)據(jù)加解密的功能。在CA的支持下,UKey還具有網(wǎng)絡(luò)身份認(rèn)證的功能。CA是Certificate Authority的簡(jiǎn)稱,它是一類組織機(jī)構(gòu)。CA的功能用于頒發(fā)和管理證書(shū)。這里所指的證書(shū),并非我們通常意義上的證明個(gè)人所獲技能學(xué)歷的哪些證書(shū),這里的證書(shū)更像是用來(lái)證明某人的真實(shí)身份。真實(shí)身份的意思是某人與某證書(shū)存在綁定關(guān)系,在法律上,這個(gè)綁定關(guān)系具備法律效率。為了賦予CA以及CA所頒發(fā)的證書(shū)能在現(xiàn)實(shí)生活中有效通行,中國(guó)乃至大部分世界上的國(guó)家和地區(qū),都先后出臺(tái)了一些法律,對(duì)CA及其頒發(fā)的證書(shū)賦予法律效率。在中國(guó),

3、類似的法律為中華人民共和國(guó)電子簽名法(中華人民共和國(guó)電子簽名法已由中華人民共和國(guó)第十屆全國(guó)人民代表大會(huì)常務(wù)委員會(huì)第十一次會(huì)議于2004年8月28日通過(guò),自2005年4月1日起施行)。所以當(dāng)我們?cè)诰W(wǎng)絡(luò)上使用UKey進(jìn)行網(wǎng)絡(luò)身份認(rèn)證的時(shí)候,你所執(zhí)行的操作是具備法律效率的。我們通常使用UKey的情形,一般是在進(jìn)行網(wǎng)絡(luò)支付,好像UKey就是為了支付而使用的,而實(shí)際情形是你使用UKey里面的個(gè)人證書(shū)在網(wǎng)絡(luò)上完成了一個(gè)數(shù)字簽名,并且您通過(guò)網(wǎng)絡(luò)將該數(shù)字簽名的數(shù)據(jù)發(fā)送到銀行的服務(wù)器,一旦銀行對(duì)你的數(shù)字簽名驗(yàn)證通過(guò)了,銀行就將你賬戶中的指定的金額轉(zhuǎn)賬到指定的某賬戶中去。這個(gè)操作是具備法律效率的。而且,每一次的數(shù)

4、字簽名的原文中應(yīng)該包含有你該次轉(zhuǎn)賬所指定的金額和賬戶信息。UKey還有一個(gè)很重要的功能,就是數(shù)據(jù)的加、解密。而實(shí)際上,身份認(rèn)證、數(shù)字簽名等等貌似高深的術(shù)語(yǔ)的背后,其實(shí)際的行為也是UKey針對(duì)某個(gè)數(shù)據(jù)的加密或者解密操作。這不是一般的加解密,它不是像我們過(guò)去在小說(shuō)上所看到的填字游戲、或者字母的按照某種規(guī)律的置換。這里的加解密,具備了高等的數(shù)論基礎(chǔ)。一方面,加解密的算法完全可以公開(kāi),另一方面,加解密在現(xiàn)有的條件下又不可破解。UKey在使用的時(shí)候,我們需要在電腦上安裝一些軟件,有些企業(yè)將這些軟件稱之為“中間件”。我們也可以簡(jiǎn)單的稱之為上層接口軟件。有時(shí)候中間件的描述讓人混亂,但實(shí)際上,確實(shí)安裝了一些“

5、中間件”。中間件,顧名思義,就像一個(gè)橋梁一樣,連接了上層應(yīng)用軟件和下層核心部件,它的位置在中間,但在中間的也不是都叫做中間件,所以能叫做中間件的,必然也必須遵循某種標(biāo)準(zhǔn)。就像我們現(xiàn)在造橋,現(xiàn)代設(shè)計(jì)橋的時(shí)候,為了修建的方便,設(shè)計(jì)師會(huì)把橋分成一段一段的,它們首尾相連,具備統(tǒng)一的接口標(biāo)準(zhǔn)。這樣,我們可以在混凝土預(yù)制廠將這些分段先澆筑完成,然后統(tǒng)一運(yùn)送到造橋的現(xiàn)場(chǎng)進(jìn)行吊裝施工。我們的中間件就類似于這些分段,不管在哪個(gè)混凝土預(yù)制廠進(jìn)行澆筑,它都必須具備統(tǒng)一的接口,這樣,不管是造哪里的橋梁它都能一次性裝配成功。目前中間件所遵循的標(biāo)準(zhǔn),分為國(guó)內(nèi)標(biāo)準(zhǔn)和國(guó)外標(biāo)準(zhǔn)。只要是實(shí)現(xiàn)了這些標(biāo)準(zhǔn)的中間件,上層軟件通過(guò)簡(jiǎn)單的

6、配置或者無(wú)需配置就能一次調(diào)用成功。目前國(guó)外的標(biāo)準(zhǔn)為RSA公司的PKCS#11(PKCS:The Public-Key Cryptography Standards )接口標(biāo)準(zhǔn)以及微軟公司的CSP(CSP:Cryptography Service Provider)接口標(biāo)準(zhǔn)。相對(duì)于PKCS標(biāo)準(zhǔn),CSP標(biāo)準(zhǔn)的網(wǎng)上資料更少,而實(shí)際上,在國(guó)內(nèi),CSP幾乎是網(wǎng)上銀行唯一的標(biāo)準(zhǔn)。因?yàn)槲覀兌际褂玫氖荳indows操作系統(tǒng)嘛!所以,你懂的。國(guó)內(nèi)的接口一般由國(guó)家密碼管理局進(jìn)行制定。這里略述了。關(guān)于中間件的設(shè)計(jì)我會(huì)在后面的“中間件設(shè)計(jì)”一節(jié)中詳細(xì)講述。在

7、UKey誕生之前,我們使用什么來(lái)做身份認(rèn)證和加解密操作呢?答案是智能卡。USB的接口標(biāo)準(zhǔn)誕生于1994年,而智能卡的誕生早于它二、三十年。智能卡在使用的時(shí)候,需要借助一個(gè)讀卡器的設(shè)備。因此在Windows早期的版本中,它制定了一些智能卡設(shè)備的驅(qū)動(dòng)接口標(biāo)準(zhǔn),稱之為SmartCard標(biāo)準(zhǔn),業(yè)界通常寫(xiě)作PC/SC,含義是PC上的智能卡標(biāo)準(zhǔn)。時(shí)至今日,智能卡設(shè)備還依然是Windows進(jìn)行域登錄的外部身份認(rèn)證的唯一支持設(shè)備。除非你修改Windows的登錄模塊,否則你想在域登錄中使用外部的身份認(rèn)證,你就得插入一個(gè)智能卡設(shè)備。智能卡的設(shè)備驅(qū)動(dòng)的接口標(biāo)準(zhǔn)在幾年前已經(jīng)進(jìn)行了升級(jí),目前比較流行的是CCID接口標(biāo)準(zhǔn)

8、(CCID:Chip/Smart Card Interface Devices )。智能卡的實(shí)現(xiàn)包含了物理的,電氣的,接口的等等諸多標(biāo)準(zhǔn),不包括非接觸的智能卡部分,這些標(biāo)準(zhǔn)可以統(tǒng)稱為ISO7816標(biāo)準(zhǔn)。在UKey設(shè)計(jì)的時(shí)候,我不清楚是什么原因,也許是歷史造成的,也許是技術(shù)的一脈相承所造成的,在設(shè)計(jì)UKey的硬件讀寫(xiě)接口的時(shí)候,我們(或者絕大部分制造廠家)都無(wú)一例外的使用了ISO7816的標(biāo)準(zhǔn),具體說(shuō)來(lái),是使用了ISO7816-4的接口標(biāo)準(zhǔn),當(dāng)然,為了適應(yīng)UKey的特點(diǎn),在實(shí)際研發(fā)的時(shí)候,會(huì)對(duì)ISO7816-4的標(biāo)準(zhǔn)進(jìn)行適當(dāng)?shù)臄U(kuò)充。這部分內(nèi)容我會(huì)在后面的C

9、OS設(shè)計(jì)一節(jié)中詳細(xì)講述。1、密碼及算法算法是UKey產(chǎn)品的核心,也是進(jìn)行身份認(rèn)證、數(shù)據(jù)加、解密的核心。在UKey中會(huì)涉及到是算法分成三類:摘要算法、對(duì)稱算法和非對(duì)稱算法。其中,摘要算法不存在密碼(也稱密鑰)。對(duì)稱和非對(duì)稱算法需要密碼的參與。摘要算法又稱為哈希算法(HASH)。摘要算法的功能,就是將一長(zhǎng)串?dāng)?shù)據(jù)(無(wú)論多長(zhǎng))變換成一個(gè)固定長(zhǎng)度的數(shù)據(jù)串。對(duì)于某一個(gè)特定的摘要算法,它具有的特點(diǎn)是,給定一個(gè)原始數(shù)據(jù)串A,它總能計(jì)算出一個(gè)固定長(zhǎng)度的數(shù)據(jù)串B。也就是說(shuō)如果算法固定,由A總能計(jì)算出B。而給定B,確不能由此計(jì)算得出A。A是一個(gè)不固定長(zhǎng)度的數(shù)據(jù)串,而B(niǎo)卻是固定長(zhǎng)度的。說(shuō)到這里,我們不得不產(chǎn)生一個(gè)疑惑

10、:由于B的長(zhǎng)度固定,那么B的排列組合一定是有限次的,但A由于不確定長(zhǎng)度,那么A是個(gè)無(wú)限的集合,B是個(gè)有限集合。既然通過(guò)摘要算法,某一個(gè)A一定能得到一個(gè)確定的B,而B(niǎo)是有限的,那么就存在一個(gè)可能,就是存在兩個(gè)或兩個(gè)以上(甚至是無(wú)窮多的)的原始數(shù)據(jù)串A1,A2,.An,它們通過(guò)固定的摘要算法f,能都計(jì)算得出同一個(gè)數(shù)據(jù)串B。這是毫無(wú)疑問(wèn)的。我們將此時(shí)A1,A2,.An它們之間的關(guān)系稱之為碰撞。雖然摘要算法的碰撞是存在的,但卻并不影響我們接下來(lái)的運(yùn)算。通常我們使用的摘要算法有:MD5、SHA1、SHA256、SHA512等。MD5是我們所熟悉的摘要算法,通過(guò)MD5,我們可以將一個(gè)不固定長(zhǎng)度的數(shù)據(jù)串加工

11、成一個(gè)只有16個(gè)字節(jié)長(zhǎng)度的固定數(shù)據(jù)串。此外,國(guó)家密碼管理局還研制了國(guó)產(chǎn)摘要算法SM3。SM3通常和國(guó)產(chǎn)橢圓曲線算法SM2一起使用,SM3計(jì)算出來(lái)的Hash串的長(zhǎng)度為20個(gè)字節(jié)。關(guān)于SM3的算法細(xì)節(jié)請(qǐng)參考國(guó)家密碼管理局網(wǎng)站公布的算法文檔。其他的摘要算法都可以從網(wǎng)絡(luò)上或者相關(guān)教材中得到詳細(xì)的介紹。對(duì)稱算法是指加密過(guò)程和解密過(guò)程所使用的密碼是同一個(gè)密碼。對(duì)稱算法也是加解密算法史上重要的里程碑。在過(guò)去的敵特電影中,我們通常會(huì)看到一個(gè)叫做密碼本的東西。密碼本就相當(dāng)于對(duì)稱密鑰。掌握了密碼本,就掌握了對(duì)方的秘密,因?yàn)樵诎l(fā)送密文前,要用密碼本上的文字置換原始文字(原文)變成密文。拿到密文之后,也要用同一個(gè)密碼

12、本來(lái)解開(kāi)密文從而得到原文。所以獲取密碼本是破解密文最關(guān)鍵的一環(huán)。同時(shí)也暴露除了對(duì)稱算法的一個(gè)缺點(diǎn),就是要讓加解密的雙方都知道同一個(gè)密鑰。這就涉及到密鑰的傳遞。這是一個(gè)相當(dāng)不安全的因素。在戰(zhàn)爭(zhēng)年代,為了安全的傳遞對(duì)稱密碼(密碼本),可能會(huì)付出巨大的代價(jià),甚至是生命。對(duì)于要普及對(duì)稱算法來(lái)說(shuō),還有一個(gè)巨大的問(wèn)題,就是密碼的管理。設(shè)想我們每個(gè)人都需要跟別人傳遞密文,而密鑰只能是僅能由雙方知道,否則第三個(gè)人就可能知道我們之間傳遞的內(nèi)容了,這種情況下,如果有兩個(gè)人,就會(huì)需要1個(gè)密鑰,如果有三個(gè)人,則需要3個(gè)密鑰,如果四個(gè)人,則需要6個(gè)密鑰,那么如果是n個(gè)人,就需要n(n-1)/2個(gè)密鑰,假如有1萬(wàn)個(gè)人需要

13、相互發(fā)送密文,需要的密鑰量就是49995000個(gè)不同的密鑰,這個(gè)量實(shí)在是太大了,無(wú)論在管理,傳遞方面都是一個(gè)巨大的負(fù)擔(dān),而且存在著很大的傳遞風(fēng)險(xiǎn)!對(duì)稱算法也有它的優(yōu)勢(shì)。現(xiàn)代加解密的算法絕大部分都是分組處理的。在對(duì)稱算法中,通常的一個(gè)分組為8個(gè)字節(jié),也就是說(shuō)每8個(gè)字節(jié)進(jìn)行一次加密或者解密。分組處理完成之后再按照線性存放即可。對(duì)稱算法可以在速度這方面做到極致,它的分組處理可以并發(fā)進(jìn)行,因此運(yùn)算十分高效,在對(duì)比非對(duì)稱算法處理方面,對(duì)稱算法的速度性是個(gè)無(wú)可比擬的優(yōu)勢(shì)所在。通過(guò)巧妙的程序設(shè)計(jì),可以將加密或者解密做成一個(gè)模塊,或軟件,或硬件,在實(shí)際使用中通過(guò)并發(fā)計(jì)算,能達(dá)到極高的速度。通常我們?cè)谠u(píng)估可信計(jì)

14、算模塊或者芯片的性能的時(shí)候,對(duì)于對(duì)稱算法,每秒可計(jì)算的數(shù)據(jù)量是一個(gè)重要的指標(biāo)。通常使用的對(duì)稱算法有:DES、3DES、AES。國(guó)家密碼管理局此前推廣的國(guó)產(chǎn)對(duì)稱算法有SSF33、SCB2。后來(lái)經(jīng)過(guò)發(fā)展,SSF33逐漸淡出,SCB2更名為SM1。除此之外,還推出了算法公開(kāi)的SM4等。隨著計(jì)算技術(shù)的發(fā)展,CPU的升級(jí),對(duì)稱算法也存在破解的可能,例如,目前破解DES算法的可能性就大大提高了。在1997年、1998年、1999年美國(guó)都舉辦了DES密碼破解的競(jìng)賽。當(dāng)時(shí)分別通過(guò)多機(jī)分布式計(jì)算,單機(jī)高性能計(jì)算以及耗時(shí)數(shù)月的計(jì)算后都找到了相應(yīng)的密鑰。為了提高對(duì)稱算法的破解難度,數(shù)學(xué)家在此后發(fā)展了3DES,將密鑰

15、長(zhǎng)度擴(kuò)展到24個(gè)字節(jié)(實(shí)際是21個(gè)字節(jié),DES使用56bits為密鑰)。3DES意味著一個(gè)8Bytes的分組數(shù)據(jù),要經(jīng)過(guò)3次DES運(yùn)算,而且每次運(yùn)算的密鑰還各不相同,最后計(jì)算出來(lái)一個(gè)分組密文。由于密鑰空間變大了,3DES的安全性得到大大提高。此外,數(shù)學(xué)家還對(duì)加解密時(shí)的數(shù)據(jù)分組方式進(jìn)行了擴(kuò)展。在最早我們使用最原始,效率最高的電子密碼本模式(ECB)。也就是在加密時(shí)是按照固定分組進(jìn)行的,只要原文分組好了,完全可以并發(fā)運(yùn)算,效率極高。后來(lái)為了加大破解的難度,設(shè)計(jì)了密碼分組鏈接模式(CBC)。在這種方式下,第一個(gè)分組運(yùn)算出來(lái)的密文要跟第二個(gè)分組進(jìn)行異或然后再進(jìn)行加密,因此這是一種鏈?zhǔn)郊用?,在沒(méi)有完成第

16、一個(gè)分組的加密時(shí),無(wú)法進(jìn)行第二個(gè)分組的加密。這種模式增加了破解難度,但效率大大降低了。除此之外,還有密碼反饋模式(CFB),CFB是設(shè)計(jì)為流式加密服務(wù)的,分組加密后輸出的密文要按照一個(gè)字節(jié)一個(gè)字節(jié)發(fā)送出去,同時(shí)原文向前移動(dòng)一個(gè)字節(jié),最低位的字節(jié)要與發(fā)送的該字節(jié)進(jìn)行異或并替換該原明文字節(jié),然后再對(duì)這個(gè)移動(dòng)了一個(gè)字節(jié)的分組進(jìn)行加密,再輸出一個(gè)加密字節(jié),依次漸進(jìn)。還有一種分組方式叫做輸出反饋模式(OFB)。OFB類似于CFB,但反饋到原文的是加密后的密文的若干bits,且并不需要跟原文的某些bits進(jìn)行異或處理。以上這些復(fù)雜的分組模式的具體過(guò)程,可以參考相關(guān)的密碼學(xué)教科書(shū),如現(xiàn)代密碼學(xué)教程等。如學(xué)習(xí)

17、時(shí)對(duì)照教科書(shū)上的內(nèi)容,并參考一些加密算法的實(shí)現(xiàn)代碼,能有助于理解算法處理的過(guò)程。我認(rèn)為非對(duì)稱算法是算法界的一個(gè)了不起的創(chuàng)舉。由于非對(duì)稱算法的開(kāi)創(chuàng),催生了CA這一類身份證書(shū)管理機(jī)構(gòu);由于有了證書(shū),在互聯(lián)網(wǎng)上可以實(shí)現(xiàn)安全的鏈接和數(shù)據(jù)傳輸規(guī)范,這大大刺激了互聯(lián)網(wǎng)的發(fā)展壯大。非對(duì)稱算法又稱為公鑰密碼算法。RSA算法是歷史上第一個(gè)能正式大規(guī)模應(yīng)用的非對(duì)稱算法。RSA公鑰加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美國(guó)麻省理工學(xué)院)開(kāi)發(fā)的。RSA取名來(lái)自開(kāi)發(fā)他們?nèi)叩拿帧SA也是目前最有影響力的公鑰加密算法。非對(duì)稱算法的本質(zhì)就是加密和

18、解密的密碼是不同的,比如加密用密碼k1,那么會(huì)存在一個(gè)密碼k2,可以用來(lái)解密。同樣的,用k2做加密,也只能用k1來(lái)解密。k1和k2之間符合某種數(shù)學(xué)關(guān)系。但要想從k1推導(dǎo)出k2對(duì)于簡(jiǎn)單的機(jī)構(gòu)組織而言,幾乎是不可能的。比如某人擁有一對(duì)密碼,分別是k1和k2,他可以選擇將k1公之于眾,而k2則作為個(gè)人機(jī)密為個(gè)人私有。那么在這種情況下,可以完成在網(wǎng)絡(luò)通信下的兩種重要的過(guò)程。1)數(shù)據(jù)加密。由于k1公開(kāi)了,所以別人要給你發(fā)送私密信息,只需要用k1加密即可,全世界只有你的k2能解開(kāi);2)身份認(rèn)證。由于k1公開(kāi),且被認(rèn)證未你的公開(kāi)密碼,那么對(duì)應(yīng)的就有你自己保管的k2,這個(gè)時(shí)候,你要想給某人發(fā)一個(gè)公函文件,只要

19、用k2加密,對(duì)方用k1來(lái)解開(kāi)的時(shí)候,就知道這個(gè)公函一定是你簽發(fā)的了。這就實(shí)現(xiàn)了一個(gè)身份認(rèn)證的功能。2、PKCS#11接口標(biāo)準(zhǔn)RSA非對(duì)稱密碼算法的三個(gè)創(chuàng)始人的姓的第一個(gè)字母聯(lián)合起來(lái)就是RSA了,他們?nèi)齻€(gè)創(chuàng)建的公司的名字也就叫做RSA。在RSA有一個(gè)著名的公鑰算法的實(shí)驗(yàn)室,這個(gè)實(shí)驗(yàn)室頒發(fā)的一系列行業(yè)標(biāo)準(zhǔn)就稱作為PKCS標(biāo)準(zhǔn),其中PKCS#11(簡(jiǎn)稱P11)就是針對(duì)密碼設(shè)備的接口指令標(biāo)準(zhǔn)。目前最新的版本應(yīng)該是2.3了。P11模型中重要的概念之一是slot,也稱為槽。一個(gè)slot為一個(gè)密碼設(shè)備對(duì)象。某個(gè)打開(kāi)的slot會(huì)話稱之為session。Session之間存在不同的驗(yàn)證權(quán)限。而同一個(gè)slot的不

20、同的session之間存在操作的互相影響性,同時(shí)在某些狀況下,權(quán)限會(huì)發(fā)生同步。另外一個(gè)重要的概念是對(duì)象。P11中支持幾種重要的對(duì)象,如公鑰、私鑰、對(duì)稱密鑰,數(shù)據(jù)對(duì)象等。PKCS#11創(chuàng)建和支持下列對(duì)象:對(duì)象說(shuō)明CKO_DATA應(yīng)用程序定義的對(duì)象。對(duì)象的數(shù)據(jù)結(jié)構(gòu)可由應(yīng)用程序任意定義,但是數(shù)據(jù)意義的解釋由應(yīng)用程序負(fù)責(zé)。CKO_SECRET_KEY對(duì)稱加密算法使用的密鑰。CKO_CERTIFICATEX.509CKO_PUBLIC_KEYRSACKO_PRIVATE_KEYRSACKO_MECHANISM算法對(duì)象 PKCS#11的對(duì)象可根據(jù)其生命期長(zhǎng)短的不同分成兩大類:一類是持久存儲(chǔ)的類對(duì)

21、象,這類對(duì)象被保存在USB Key的安全存儲(chǔ)區(qū)域當(dāng)中,直到應(yīng)用程序主動(dòng)刪除這些對(duì)象;另一類是會(huì)話對(duì)象,這類對(duì)象只存在于運(yùn)行時(shí)建立的特定會(huì)話(Session對(duì)象)當(dāng)中,一旦會(huì)話結(jié)束,這類對(duì)象也跟著被刪除。決定對(duì)象生命期的模板屬性是CKA_TOKEN,這是個(gè)布爾值,所有的對(duì)象都有這一屬性。當(dāng)該值為T(mén)RUE時(shí),該對(duì)象將被保存到Key內(nèi)的存儲(chǔ)空間,否則,該對(duì)象保存在會(huì)話空間中,當(dāng)會(huì)話結(jié)束后,該對(duì)象即銷毀。PKCS#11的對(duì)象除了生命期長(zhǎng)短有分別之外,在訪問(wèn)權(quán)限上也有限制。所有的對(duì)象都可根據(jù)訪問(wèn)權(quán)限的不同分成兩大類:一類是公開(kāi)對(duì)象,這類對(duì)象是任何用戶都可以訪問(wèn)的;另一類是私有對(duì)象,這一類對(duì)象只

22、有身份被驗(yàn)證的用戶才有權(quán)訪問(wèn)。決定對(duì)象的訪問(wèn)限制類型的模板屬性是CKA_PRIVATE。這是個(gè)布爾值,所有的對(duì)象都有這一屬性。應(yīng)用程序可根據(jù)需要決定對(duì)象應(yīng)為私有對(duì)象還是公開(kāi)對(duì)象。P11標(biāo)準(zhǔn)頒發(fā)了70余條指令。其中部分指令簡(jiǎn)介如下表:接口類型函數(shù)名稱描述通用接口函數(shù)C_Initialize初始化 CryptokiC_Finalize整理各種適合 Cryptoki的資源C_GetInfo獲得關(guān)于Cryptoki的通用信息C_GetFunctionList獲得Cryptoki 庫(kù)函數(shù)的進(jìn)入點(diǎn)槽和令牌管理函數(shù)C_GetSlotList獲得系統(tǒng)中槽的名單C_GetSlotI

23、nfo獲得關(guān)于特殊槽的信息C_GetTokenInfo獲得關(guān)于特殊令牌的信息C_WaitForSlotEvent等待槽事件(令牌插入,轉(zhuǎn)移等) 的發(fā)生C_GetMechanismList獲得由令牌支持的機(jī)制的名單C_GetMechanismInfo獲得關(guān)于特殊機(jī)制的信息C_InitToken初始化一個(gè)令牌C_InitPIN初始化普通用戶的 PINC_SetPIN改變現(xiàn)在用戶的PIN會(huì)話管理函數(shù)C_OpenSession打開(kāi)一個(gè)應(yīng)用程序和特殊令牌之間的連接或安裝一個(gè)應(yīng)用程序呼叫返回令牌插入C_CloseSession關(guān)閉一個(gè)會(huì)話C_CloseAllSessions用令牌關(guān)閉所

24、有的會(huì)話C_GetSessionInfo獲得關(guān)于會(huì)話的信息C_GetOperationState獲得會(huì)話的加密操作狀態(tài)C_SetOperationState設(shè)置會(huì)話的加密操作狀態(tài)C_Login注冊(cè)一個(gè)令牌C_Logout從一個(gè)令牌注銷對(duì)象管理函數(shù)C_CreateObject建立一個(gè)對(duì)象C_CopyObject建立一個(gè)對(duì)象的拷貝C_DestroyObject銷毀一個(gè)對(duì)象C_GetObjectSize獲取字節(jié)中一個(gè)對(duì)象的大小C_GetAttributeValue獲取一個(gè)對(duì)象的屬性值C_SetAttributeValue改變一個(gè)對(duì)象的屬性值C_FindObjectsInit初始化一個(gè)對(duì)象的搜索操作C

25、_FindObjects繼續(xù)一個(gè)對(duì)象搜索操作C_FindObjectsFinal完成一個(gè)對(duì)象搜索操作加密函數(shù)C_EncryptInit初始化一個(gè)加密操作C_Encrypt加密單部分?jǐn)?shù)據(jù)C_EncryptUpdate繼續(xù)一個(gè)多部分加密操作C_EncryptFinal完成一個(gè)多部分加密操作解密函數(shù)C_DecryptInit初始化一個(gè)解密操作C_Decrypt解密單部分加密數(shù)據(jù)C_DecryptUpdate繼續(xù)一個(gè)多部分解密操作C_DecryptFinal完成一個(gè)多部分解密操作消息解密函數(shù)C_DigestInit初始化一個(gè)消息摘要操作C_Digest摘要單部分?jǐn)?shù)據(jù)C_DigestUpdate繼續(xù)一個(gè)

26、多部分摘要操作C_DigestKey摘要一個(gè)密鑰C_DigestFinal完成一個(gè)多部分摘要操作簽名和消息鑒別函數(shù)C_SignInit初始化一個(gè)簽名操作C_Sign簽名單部分?jǐn)?shù)據(jù)C_SignUpdate繼續(xù)一個(gè)多部分簽名操作C_SignFinal完成一個(gè)多部分簽名操作C_SignRecoverInit初始化一個(gè)簽名操作,在操作中數(shù)據(jù)能從簽名中恢復(fù)C_SignRecover簽名單部分?jǐn)?shù)據(jù),在操作中數(shù)據(jù)能從簽名中恢復(fù)簽名鑒定消息鑒別函數(shù)C_VerifyInit初始化一個(gè)鑒定操作C_Verify在單部分?jǐn)?shù)據(jù)上鑒定一個(gè)簽名C_VerifyUpdate繼續(xù)一個(gè)多部分鑒定操作C_VerifyFinal完成

27、一個(gè)多部分鑒定操作C_VerifyRecoverInit初始化一個(gè)鑒定操作,在操作中數(shù)據(jù)能從簽名中恢復(fù)C_VerifyRecover在單部分?jǐn)?shù)據(jù)上鑒定一個(gè)簽名,在操作中數(shù)據(jù)能從簽名中恢復(fù)雙效加密函數(shù)C_DigestEncryptUpdate繼續(xù)類似的多部分摘要和加密操作C_DecryptDigestUpdate繼續(xù)類似的多部分解密和摘要操作C_SignEncryptUpdate繼續(xù)類似的多部分簽名和加密操作C_DecryptVerifyUpdate繼續(xù)類似的多部分解密和鑒定操作密鑰管理函數(shù)C_GenerateKey產(chǎn)生一個(gè)保密密鑰C_GenerateKeyPair產(chǎn)生一個(gè)公共/私鑰對(duì)C_WrapKey加密一個(gè)密鑰C_UnwrapKey解密一個(gè)密鑰C_DeriveKey從基礎(chǔ)密鑰派生一個(gè)密鑰隨機(jī)數(shù)生成函數(shù)C_SeedRandom把一個(gè)附加種子材料加入隨機(jī)數(shù)字生成器C_GenerateRandom生成隨機(jī)數(shù)并行功能管理函數(shù)C_GetFunctionStatus已廢棄函數(shù),返回CKR_FUNCTION_NOT_PARALLELC_CancelFunction已廢棄函數(shù),返回CKR_FUNCTION_NOT_PARALLEL 3、CSP接口標(biāo)準(zhǔn)CS

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論