小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Windows下密碼服務(wù)開發(fā)指引----CryptoAPI/CSP體系

 吳雨虹2kzpi83a 2020-05-02

寫完上一篇,密碼學(xué)這棵大樹的主干,基本就勾勒完了。我們要開始為它添加枝葉和果實(shí),就是一個(gè)個(gè)重要的知識(shí)點(diǎn)。今天介紹的是Windows下密碼體系的實(shí)現(xiàn)和調(diào)用機(jī)制。

密碼學(xué)是科學(xué),PKI是技術(shù)體系,而不同操作系統(tǒng)平臺(tái)有不同的PKI實(shí)現(xiàn)方式。Windows采用的是CryptoAPI/CSP體系。CryptoAPI是標(biāo)準(zhǔn)密碼功能接口,包括了對(duì)稱加解密、非對(duì)稱加解密、數(shù)字簽名與驗(yàn)證、數(shù)字摘要以及證書管理這些主要功能以及眾多輔助功能。通過(guò)包含WinCrypt.h頭文件,可以瀏覽并引入所需要的功能接口。如下圖,調(diào)用CertOpenStore打開計(jì)算機(jī)上的證書存儲(chǔ)集。

CryptoAPI足夠強(qiáng)大全面,但它本質(zhì)上只是調(diào)用接口,真正實(shí)現(xiàn)密碼功能的是加密服務(wù)提供程序,英文全稱Cryptographic Service Provider,簡(jiǎn)稱CSP。Windows定義了一套標(biāo)準(zhǔn)的密碼服務(wù)接口,CSP實(shí)現(xiàn)了這些接口,而CryptoAPI則通過(guò)這套接口調(diào)用CSP的相關(guān)功能。那么,CSP從哪來(lái)的呢?是由各個(gè)安全廠商提供的。比如,研發(fā)加密機(jī)、加密卡、USB Key的安全企業(yè)。根據(jù)密碼學(xué)“私鑰永遠(yuǎn)不出Key”的圭帛,涉及到密鑰的運(yùn)算都需要由硬件完成,而不同硬件的原生接口千差萬(wàn)別,應(yīng)用系統(tǒng)如果直接調(diào)用硬件的接口,會(huì)帶來(lái)很多的重復(fù)開發(fā),程序的可移植性和兼容性也會(huì)差很多。因此,CSP機(jī)制的意義在于屏蔽了硬件實(shí)現(xiàn)的不同,各個(gè)廠商提供自己的CSP,使CryptoAPI可以用同樣的接口調(diào)用不同的安全硬件功能。整個(gè)CryptoAPI/CSP體系的結(jié)構(gòu)如下圖。

從上往下看,應(yīng)用層就是要實(shí)現(xiàn)密碼
服務(wù)的應(yīng)用,系統(tǒng)層是CryptoAPI,而服務(wù)提供層里就是各個(gè)產(chǎn)品的CSP了。這樣的結(jié)構(gòu)層次界限清晰,上層應(yīng)用無(wú)需知道下層CSP細(xì)節(jié),更重要的是,通過(guò)使用不同的CSP,就可以實(shí)現(xiàn)不同級(jí)別的安全運(yùn)算,而應(yīng)用系統(tǒng)本身可以做到無(wú)需改造。以電子印章系統(tǒng)為例,我們?cè)陂_發(fā)時(shí)可以使用軟實(shí)現(xiàn)(通過(guò)計(jì)算機(jī)軟件功能實(shí)現(xiàn))的CSP,以便于調(diào)試;在一般用戶使用時(shí),可以設(shè)置成使用某款USB KeyCSP;而在安全性要求更高,簽章量很大的應(yīng)用場(chǎng)景下,就可以配置成使用加密卡甚至加密機(jī)的CSP。而電子印章系統(tǒng)卻不用因密碼服務(wù)的不同而做代碼的二次開發(fā)。打開Windows注冊(cè)表的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider位置,可以看到目前所安裝的CSP。而Microsoft Base Cryptographic Provider v1.0、Microsoft Enhanced Cryptographic Provider v1.0、Microsoft Strong Cryptographic Provider都是Windows提供的缺省CSP,以保證在沒有安裝任何第三方安全產(chǎn)品時(shí),系統(tǒng)的密碼功能還能正常運(yùn)行。

2000年左右CSP由微軟推出后,迅速成為市場(chǎng)上主流的密碼服務(wù)調(diào)用機(jī)制,應(yīng)用系統(tǒng)實(shí)現(xiàn)密碼服務(wù)的門檻被大幅度降低。據(jù)我了解,Java、AndroidIOS還沒有類似的機(jī)制。而微軟的這一機(jī)制倒是啟發(fā)了國(guó)內(nèi)很多CA廠商,它們也通過(guò)定義一套標(biāo)準(zhǔn)接口,實(shí)現(xiàn)接入多種安全硬件設(shè)備。

CryptoAPI/CSP機(jī)制雖然強(qiáng)大,但它畢竟比較復(fù)雜,而且不適合所有的應(yīng)用場(chǎng)景,尤其是JavaScript這樣的客戶端頁(yè)面腳本。你當(dāng)然可以自己把CryptoAPI封裝成COM控件,供腳本語(yǔ)言調(diào)用。但這里推薦CAPICOM,全名是 Cryptographic API Component Object Model,它是微軟為了方便使用,將CryptoAPI封裝成的COM安全組件。最新版本的CAPICOM2.1.0.2。因?yàn)樗怯晌④浽瓘S商提供,又和CryptoAPI同源,所以使用起來(lái)還是很方便的,尤其它對(duì)數(shù)字證書的管理使用做的很不錯(cuò)。比如用下面的語(yǔ)句就可以在JS中調(diào)用CAPICOM的證書組件。

var smcerts = new ActiveXObject ("CAPICOM.Certificate");

關(guān)于Windows下密碼體系的實(shí)現(xiàn)和調(diào)用機(jī)制就介紹到這里,如果大家有任何問(wèn)題和建議,歡迎評(píng)論交流。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多