999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于USB KEY數(shù)字簽名的實(shí)現(xiàn)方案

2014-04-29 00:00:00周向明李智勇史玥許晨
計(jì)算機(jī)世界 2014年45期

數(shù)字簽名是非對(duì)稱密鑰加密技術(shù)與數(shù)字摘要技術(shù)的應(yīng)用。所謂數(shù)字簽名(Digital Signature),又稱公鑰數(shù)字簽名、電子簽章,是一種使用了公鑰加密領(lǐng)域的技術(shù)實(shí)現(xiàn)、用于鑒別數(shù)字信息的方法。一套數(shù)字簽名通常定義兩種互補(bǔ)的運(yùn)算,一個(gè)用于簽名,另一個(gè)用于驗(yàn)證。使用數(shù)字簽名技術(shù),接收方能夠核實(shí)發(fā)送者對(duì)報(bào)文的簽名,發(fā)送者事后不能抵賴其對(duì)報(bào)文的簽名,且其他人無(wú)法偽造對(duì)報(bào)文的簽名。數(shù)字簽名保證了傳輸信息的完整性、發(fā)送者的身份驗(yàn)證和不可抵賴性。

按照數(shù)字簽名流程,簽名一條消息涉及到兩個(gè)步驟。第一步,從發(fā)送的消息原文得到一個(gè)散列值,即報(bào)文摘要。然后使用發(fā)送者的私鑰來(lái)簽名這個(gè)散列值。把得到的簽名數(shù)據(jù)和消息原文一起發(fā)送給接收方,便于接收方進(jìn)行驗(yàn)證。

數(shù)字簽名驗(yàn)證流程,為了驗(yàn)證一個(gè)簽名,需要從發(fā)送方得到消息原文和簽名數(shù)據(jù)。首先用相同的算法得到散列值,然后用發(fā)送方的公鑰對(duì)數(shù)字簽名進(jìn)行解密,最后比較散列值和簽名解密后的數(shù)據(jù),如果相同便可以確認(rèn)此簽名是來(lái)自發(fā)送方的,并且在發(fā)送傳輸過(guò)程中未被篡改。

微軟CryptoAPI

微軟CryptoAPI(Microsoft Cryptographic Application Programming Interface)是為應(yīng)用程序開(kāi)發(fā)者提供在Win32環(huán)境下使用加密、驗(yàn)證等安全服務(wù)時(shí)的標(biāo)準(zhǔn)加密接口。微軟CryptoAPI是一組數(shù)目眾多的安全函數(shù),這些安全函數(shù)是Windows操作系統(tǒng)的一部分。CryptoAPI對(duì)密碼函數(shù)進(jìn)行抽象,隱藏了實(shí)現(xiàn)的細(xì)節(jié)。

CryptoAPI的上層是應(yīng)用程序,下層是加密服務(wù)提供者(Cryptographic Service Provider,CSP),CSP是真正執(zhí)行加密功能的獨(dú)立模塊。

1.CryptoAPI體系結(jié)構(gòu)

CryptoAPI由簡(jiǎn)單消息函數(shù)、底層消息函數(shù)、基本加密函數(shù)、證書(shū)編解碼函數(shù)和證書(shū)庫(kù)管理函數(shù)共五部分組成,包含有100多個(gè)庫(kù)函數(shù)。其中前三種函數(shù)接口用于處理信息加解密和數(shù)字簽名,后兩種函數(shù)主要針對(duì)證書(shū)驗(yàn)證身份的操作。CryptoAPI便是通過(guò)一系列的庫(kù)函數(shù)來(lái)對(duì)應(yīng)用程序提供PKI安全服務(wù)的,其總體系統(tǒng)結(jié)構(gòu)如圖1所示。

2.加密服務(wù)提供者(CSP)

加密服務(wù)提供者(CSP)是真正執(zhí)行加密功能的獨(dú)立模塊,它實(shí)現(xiàn)了那些可以通過(guò)CryptoAPI公共接口訪問(wèn)的密碼函數(shù)。換言之,CSP封裝和隱藏了密碼算法的具體實(shí)現(xiàn),這樣用戶就不需要去關(guān)心它。典型的CSP有Microsoft Base Cryptographic Provider、Microsoft RSA Base Provider等。

每個(gè)CSP都有一個(gè)名字和一個(gè)類型。為了便于CryptoAPI找到對(duì)應(yīng)的CSP,每個(gè)CSP的名字都是惟一的。微軟預(yù)定義的CSP類型目前有PROV_RSA_AES 、PROV_RSA_SIG 、PROV_DSS 等10種,分別支持不同的密鑰交換算法、簽名算法、對(duì)稱加密算法和Hash算法。

每個(gè)CSP都有一個(gè)密鑰庫(kù)(Key Database),里面存儲(chǔ)著算法密鑰。每個(gè)密鑰庫(kù)都包含一個(gè)或多個(gè)密鑰容器(Key Container),每個(gè)密鑰容器中保存有屬于一個(gè)特定用戶的所有密鑰對(duì)。每個(gè)用戶通常有兩對(duì)公私鑰對(duì),一對(duì)用來(lái)加密會(huì)話密鑰,一對(duì)用來(lái)創(chuàng)建數(shù)字簽名。每個(gè)密鑰容器都被賦予一個(gè)惟一的名字,這個(gè)名字是程序要獲得此容器句柄時(shí)傳遞給函數(shù)CryptAcquireContext的參數(shù)。

用CryptoAPI實(shí)現(xiàn)基于USBKEY的數(shù)字簽名

按照使用CryptoAPI進(jìn)行數(shù)字簽名的一般流程,對(duì)數(shù)據(jù)進(jìn)行簽名,首先要?jiǎng)?chuàng)建一個(gè)密鑰容器(或指定使用一個(gè)現(xiàn)有的CSP密鑰容器),以便存儲(chǔ)密鑰和進(jìn)行以后的工作。然后從密鑰容器當(dāng)中取得密鑰對(duì),導(dǎo)出公鑰發(fā)給接收者用來(lái)驗(yàn)證簽名,私鑰用于簽名。接著便可以創(chuàng)建一個(gè)Hash對(duì)象,先散列要簽名的數(shù)據(jù),最后便可以對(duì)此Hash數(shù)據(jù)進(jìn)行簽名了。其簽名過(guò)程圖解如圖2所示。

對(duì)數(shù)據(jù)簽名進(jìn)行驗(yàn)證,首先也需要?jiǎng)?chuàng)建一個(gè)密鑰容器(或指定一個(gè)現(xiàn)有的CSP密鑰容器),以便存儲(chǔ)密鑰和進(jìn)行以后的工作。然后從發(fā)送者那得到的公鑰,導(dǎo)出公鑰句柄用來(lái)驗(yàn)證簽名。接著便可以創(chuàng)建一個(gè)Hash對(duì)象,先散列原始消息的數(shù)據(jù),最后由散列值,公鑰句柄和簽名便可驗(yàn)證此簽名了。

1.USB KEY簡(jiǎn)介

USB KEY是一種USB接口的硬件設(shè)備,它內(nèi)置單片機(jī)或智能卡芯片,有一定的存儲(chǔ)空間,主要用于保存數(shù)字證書(shū)和用戶私鑰。通過(guò)USB KEY生產(chǎn)廠商開(kāi)發(fā)的驅(qū)動(dòng)程序,還可以完成數(shù)據(jù)加解密、簽名驗(yàn)證等功能。

但因?yàn)楦鱾€(gè)廠商開(kāi)發(fā)的驅(qū)動(dòng)接口程序沒(méi)有統(tǒng)一的標(biāo)準(zhǔn),用戶針對(duì)某一型號(hào)USB KEY接口函數(shù)開(kāi)發(fā)的加解密/簽名應(yīng)用程序,在更換不同廠家型號(hào)的USB KEY之后一般無(wú)法正常使用,還需要重新再次開(kāi)發(fā),作者在實(shí)際工作中就遇到了這種情況。經(jīng)過(guò)調(diào)研后發(fā)現(xiàn),各USB KEY生產(chǎn)廠商一般都會(huì)提供符合微軟CryptoAPI標(biāo)準(zhǔn)的CSP中間件,用于硬件USB KEY的應(yīng)用開(kāi)發(fā)。換言之,如果使用CryptoAPI標(biāo)準(zhǔn)函數(shù),就可以開(kāi)發(fā)出通用的、兼容各USB KEY生產(chǎn)廠商CSP中間件的加解密/簽名應(yīng)用程序。

2.實(shí)現(xiàn)過(guò)程

第一步要獲得硬件USB KEY對(duì)應(yīng)的CSP名稱。為了獲取與USB KEY對(duì)應(yīng)的CSP密鑰容器操作句柄,必須首先知道該CSP的惟一名稱。獲取的途徑有兩種:一是在安裝硬件USB KEY生產(chǎn)廠商提供的驅(qū)動(dòng)程序時(shí),安裝程序會(huì)將該USB KEY對(duì)應(yīng)的CSP名稱、類型、對(duì)應(yīng)的動(dòng)態(tài)鏈接庫(kù)(DLL)等信息寫(xiě)入系統(tǒng)注冊(cè)表中。第二種方法就是使用函數(shù) CryptEnumProviders,通過(guò)枚舉的方式獲得。第二步就是代碼實(shí)現(xiàn),限于篇幅,在此不再贅述。

微軟CryptoAPI是PKI推薦使用的加密API,它隱藏了具體密碼算法的實(shí)現(xiàn)細(xì)節(jié),程序員利用該接口可以開(kāi)發(fā)出安全的應(yīng)用程序或產(chǎn)品,而無(wú)需太多密碼學(xué)方面的背景知識(shí)。但使用CryptoAPI編程時(shí)需要了解CryptoAPI的系統(tǒng)結(jié)構(gòu)以及CryptoAPI與CSP的關(guān)系。在實(shí)現(xiàn)某個(gè)函數(shù)功能時(shí),還需調(diào)用很多其他的相關(guān)函數(shù),且每個(gè)函數(shù)的參數(shù)較多,使用起來(lái)比較復(fù)雜。

作者在工作中,用CryptoAPI實(shí)現(xiàn)了某系統(tǒng)中基于硬件USB KEY的通用數(shù)字簽名。即用同一段代碼,實(shí)現(xiàn)了兼容不同種類硬件USB KEY的通用數(shù)字簽名程序,希望能給大家以幫助。

主站蜘蛛池模板: 永久成人无码激情视频免费| 欧美激情视频一区| 高清不卡一区二区三区香蕉| 精品偷拍一区二区| 中文字幕日韩视频欧美一区| 亚洲国产成熟视频在线多多| 精品久久高清| 国产欧美专区在线观看| 国产丝袜一区二区三区视频免下载| 九色在线视频导航91| 国产哺乳奶水91在线播放| 亚洲 欧美 中文 AⅤ在线视频| 国产高清在线观看91精品| 国产乱子精品一区二区在线观看| 日本国产精品一区久久久| 国产精品区视频中文字幕 | 亚洲天堂网站在线| 国产导航在线| 亚洲V日韩V无码一区二区| 国产精品浪潮Av| 91麻豆国产视频| 免费 国产 无码久久久| 玖玖免费视频在线观看| av无码久久精品| 欧美精品1区2区| 婷婷开心中文字幕| 免费不卡视频| 老司国产精品视频| 欧美色香蕉| 欧美一级高清免费a| 中文成人在线| AV不卡无码免费一区二区三区| 国产综合网站| 国产精品一区二区国产主播| 国产在线拍偷自揄拍精品| 谁有在线观看日韩亚洲最新视频| 高清不卡毛片| 久久精品亚洲热综合一区二区| 思思99热精品在线| 亚洲精品中文字幕午夜| 国产欧美精品午夜在线播放| 国产成人综合日韩精品无码首页| 园内精品自拍视频在线播放| 亚洲欧美日韩成人在线| 国产亚洲精久久久久久久91| 国产精品入口麻豆| 亚洲一区二区三区香蕉| 黄色网站在线观看无码| 女人av社区男人的天堂| 久久网欧美| 亚洲开心婷婷中文字幕| 国产高清不卡| 一区二区无码在线视频| 国产情侣一区二区三区| 国产最爽的乱婬视频国语对白| 亚洲欧美在线综合图区| 亚洲三级成人| 国产成人免费视频精品一区二区| 91精选国产大片| 国产91透明丝袜美腿在线| 亚洲中文久久精品无玛| 亚洲成在人线av品善网好看| 亚洲中文字幕在线观看| 国产白浆一区二区三区视频在线| 天天躁日日躁狠狠躁中文字幕| 蜜臀AV在线播放| 欧美激情视频在线观看一区| 中文成人无码国产亚洲| 欧洲欧美人成免费全部视频 | 亚洲人成电影在线播放| 亚洲一级毛片在线观| 亚洲成人免费看| 黄色网址手机国内免费在线观看| 国产亚洲欧美日本一二三本道| 国产免费久久精品99re丫丫一| 波多野结衣一区二区三区88| 91无码视频在线观看| 996免费视频国产在线播放| 在线日韩日本国产亚洲| 国产99精品视频| 色婷婷综合激情视频免费看| 国产精品视频第一专区|