2

我的特殊使用案例是我必須訪問存儲在客戶端上的數字證書,並使用它們在客戶端和服務器端執行簽名,驗證,加密和解密任務。對於後者,有許多解決方案。關鍵是能夠訪問存儲在客戶端上的證書。X.509數字簽名/加密工作流程/庫建議?

請注意,我所說的「存儲在客戶端上的證書」是故意模糊的。我不想限制想法到系統商店,用戶商店,瀏覽器商店,密碼令牌,Java密鑰存儲,以往任何地方。

多年來,我用以下方法。沿着他們每一個我給予利弊。

  1. CAPICOM/ActiveX。雖然這是最簡單的工作,但它限制了用戶在Windows上的IE瀏覽器。更糟的是,它現在已經被棄用,只能在32位上運行。
  2. Java applet。這是跨平臺和跨瀏覽器,但瀏覽器中的Java並不像人們喜歡的那樣普遍,並且很快就消失了(顯然蘋果最近刪除了它)。因此,讓用戶下載並安裝JRE會帶來額外的麻煩。此外,用戶必須執行相對技術性的任務,即爲簽名人設置無限強度的密碼擴展。

事情我聽說過的/的想法,但我還沒有進展遠遠

  1. 大多數JavaScript的解決方案。他們實現RSA算法,但他們沒有辦法訪問客戶端證書存儲上的數字證書。他們中的大多數生成一個新的密鑰對。
  2. Flash/Flex。 Flash/flex似乎是最普遍的客戶端技術。他們已經可以訪問攝像頭和麥克風等客戶端硬件。如果他們可以訪問證書商店,那將是可愛的。
  3. 在微軟網站上給出的CAPICOM的替代品。它規定了CAPICOM的替代品,它們大多是使用.NET框架來做的事情。這對桌面客戶端來說很好。但是對於「腳本」,他們在一個「重要提示」中非常清楚地指出,您必須編寫自己的ActiveX控件。這使我們回到了原點。

我在尋找的是一種方法來解決/解決在客戶端上訪問證書存儲的主要問題。我不在尋找關於RSA算法的討論,也不是爲什麼PKI是愚蠢的,或者爲非對稱加密或使用除web應用程序之外的體系結構或蘋果公司的其他選擇。

+0

您是否找到解決方案? – Saber

+1

我們仍在使用java applet。依靠bouncycastle jar –

回答

2

我最好的選擇仍然是一個小程序,因爲這可能是最跨平臺的東西。或者,我可以開發自己的activeX並限制我的覆蓋範圍。

請記住,客戶端證書訪問是一件很大的安全事情。

+0

您無法通過javascript訪問本地文件系統 – CKmum

+0

這樣做非常糟糕但可行,實際上是要求用戶上傳證書文件,然後使用您的代碼在服務器端對其進行驗證。總而言之,當你使用applet或actives時,這就是後端間接發生的事情。 – CKmum

+0

如果這是一個簡單的工作流程,那麼我想你的建議可以出售。不幸的是,其中一個解決方案是公共採購領域。政府人員在做出任何改變時都非常小心。所以儘管我們目前的解決方案完美運行,但我們正在努力尋找同時支持更多瀏覽器和平臺的方法。 –

0

我們的SecureBlackbox庫有一個分佈式密碼加載項,它可以滿足您的需求。目前客戶端模塊進行簽名,但可以由用戶進行擴展(我們提供完整的源代碼)。您可以在附件on our sitethis SO answer中找到詳細說明。

-1

[披露:我爲餘弦工作]

到存儲客戶端上的證書的安全替代方法是將它們存儲在一個安全,集中SSCD(安全簽名生成設備)。本地證書(智能卡等)的問題是在客戶機/服務器或基於Web的應用程序中安全地使用它們。

集中的SSCD非常整齊地處理這個問題。用戶仍然需要將自己的身份驗證給SSCD,但SSCD本身持有證書並進行簽名。 認證步驟可以包括雙因素認證,包括一次性密碼(OTP),生物識別等。我們有客戶在做這一切。

這個想法是安全的客戶端身份驗證,但保持安全的簽名集中在網絡上作爲服務。

看到這個description。也可用作基於雲的解決方案。

ps此答案涵蓋了如何安全地登錄基於Web的應用程序的稍微更一般的問題。我同意它不包括通過使用用戶的智能卡或客戶端替代方案進行簽名的具體問題(OP有意含糊)。

+0

我已經可以聽到供應商的抗議和政府官員的反對意見......他們更願意堅持他們的數字證書......把他們放在第三方服務上是我無法想象的建議。我仍然會把你的鏈接放在閱讀清單上。 –

+0

@BinaryNights我們在世界各地有許多政府客戶。證書生活在政府機構網絡上的一個盒子裏。 –

+0

問題是,在印度,有許多承包商和許多政府機構。除了所有服務都由第三方提供(例如abcprocure.com,nprocure.com和其他許多服務)。如果你有什麼是真實的,你應該嘗試說服印度的認證機構。您應該訪問http://cca.gov.in/cca/?q=licensed_ca.html並嘗試與TCS和nCode開啓對話。 –