簡體   English   中英

用於公開密鑰加密的商業.NET庫

[英]Commercial .NET libraries for Public-key cryptography

有很多關於SO,代碼項目等的公鑰加密實現示例。

我想評估一些商業解決方案,因為不是我自己的領域,而是依靠成熟的產品。

場景:

  • ASP .NET應用程序會加密文件容器。
  • WinForms應用程序解密容器。
  • ASP .NET應用程序不能訪問WinForms的私鑰。
  • WinForms的應用程序不能訪問ASP .NET應用程序的私鑰。

結果:強大的加密,防篡改和身份驗證。

然后,您應該查看的唯一庫是下一代加密(CNG)API。 它們是Windows上的本機,已經過全面測試,並實現了當今存在的幾乎所有重要的,經過測試的算法。

該庫還具有用於Windows的加密安全的隨機數生成器。

您可能還需要查看DPAPI和Windows的Windows證書存儲。 請記住,嘗試在客戶端實施任何安全性以阻止客戶端調查您的應用是徒勞的。 如果客戶擁有此盒子,則他們擁有您的應用程序以及您希望實現的任何安全性。

標准RSA算法非常適合您的工作,但是您可能想研究使用證書來注冊公鑰/私鑰,因為這將使您的應用程序更具適應性且更易於管理。

公鑰密碼術很容易被濫用,這種情況經常發生。 例如,人們忘記的一件事是,公鑰加密非常慢,並且要加密任何有意義的數據量(1024位RSA密鑰超過100個字節),人們需要采用對稱算法並生成會話密鑰。 這是出現安全漏洞的地方。

為了解決這個問題,存在幾種用於使用公共/專用密鑰和證書對數據進行加密/解密的標准。 它們是PKCS#1和PKCS#7(后來的CMS)和OpenPGP等。

我們的SecureBlackbox組件庫是一個全面的安全解決方案,提供許多安全方案和標准的實現,並且提供了廣泛的示例和支持。

確保SSL無法滿足您的需求。 看來您正在嘗試在客戶端和服務器之間進行安全的通信和身份驗證。 為此使用SSL。 實際上,由於您將加密密鑰存儲在哪里,因此這可能是在服務器端獲得最佳安全性的方法。 在這里查看我的答案以進行深入說明。

如果要保護客戶端(而不是用戶的DRM)上的數據安全,請使用DPAPI或其托管包裝器 實際上,這可以解決您所購買的密鑰存儲問題,因此它比您可以購買的任何產品都更安全。 如果您已經在客戶端上加密了數據並且需要脫機訪問,則最終要么將密鑰存儲在系統上,要么讓用戶插入東西,要么讓他們輸入單獨的密碼。 第一個是不安全的,第二個是痛苦的。 DPAPI使用從用戶的登錄密碼派生的密鑰進行加密(或者智能卡或Windows的生物特征正在使用它們)

關於加密庫

.net附帶具有公共密鑰加密的托管代碼加密程序包和本機代碼的包裝。 它的System.security.cryptography軟件包以及免費的並且已經安裝在任何具有.net的Windows系統上。

至少,您可以使用它來處理公共私鑰部分,而無需付出任何實際努力(例如,從zipblackbox加密密鑰)。

一些免費/開源庫還支持根據密碼創建加密的容器。 我想到了Truecrypt,tarsnap和7zip(盡管這些可能需要管理員權限才能安裝)。 有一個加密的alos dotNetZip,我不認為不需要管理員權限才能安裝,並且在非復制左許可的情況下是免費和開源的。

您也可以非常輕松地制作所需的加密容器,盡管我明白為什么您可能會猶豫。 只要使用這個是通過在微軟CLR安全的家伙寫的,寫文件到流,前面加上IV和標簽,然后對它進行加密提供了使用公鑰加密的密鑰。 在另一端,解密密鑰,讀取iv,解密數據,確認標簽匹配,然后檢查您的產品。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM