乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       吳雨虹2kzpi83a 2020-05-02

      寫(xiě)完上一篇,密碼學(xué)這棵大樹(shù)的主干,基本就勾勒完了。我們要開(kāi)始為它添加枝葉和果實(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ì)稱(chēng)加解密、非對(duì)稱(chēng)加解密、數(shù)字簽名與驗(yàn)證、數(shù)字摘要以及證書(shū)管理這些主要功能以及眾多輔助功能。通過(guò)包含WinCrypt.h頭文件,可以瀏覽并引入所需要的功能接口。如下圖,調(diào)用CertOpenStore打開(kāi)計(jì)算機(jī)上的證書(shū)存儲(chǔ)集。

      CryptoAPI足夠強(qiáng)大全面,但它本質(zhì)上只是調(diào)用接口,真正實(shí)現(xiàn)密碼功能的是加密服務(wù)提供程序,英文全稱(chēng)Cryptographic Service Provider,簡(jiǎn)稱(chēng)CSPWindows定義了一套標(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ù)開(kāi)發(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è)陂_(kāi)發(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ù)的不同而做代碼的二次開(kāi)發(fā)。打開(kāi)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,以保證在沒(méi)有安裝任何第三方安全產(chǎn)品時(shí),系統(tǒng)的密碼功能還能正常運(yùn)行。

      2000年左右CSP由微軟推出后,迅速成為市場(chǎng)上主流的密碼服務(wù)調(diào)用機(jī)制,應(yīng)用系統(tǒng)實(shí)現(xiàn)密碼服務(wù)的門(mén)檻被大幅度降低。據(jù)我了解,Java、Android、IOS還沒(méi)有類(lèi)似的機(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ù)字證書(shū)的管理使用做的很不錯(cuò)。比如用下面的語(yǔ)句就可以在JS中調(diào)用CAPICOM的證書(shū)組件。

      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)論公約

        類(lèi)似文章 更多