在SO、代码项目等上有许多公钥加密实现的例子.
我想评估一些商业解决方案,因为,不是来自领域本身,宁愿依赖成熟的产品。
设想情况:
结果:强加密、防篡改和身份验证.
发布于 2012-04-26 16:10:30
确保SSL不会对您所想的起作用。您似乎试图在客户端和服务器之间获得安全的通信和身份验证。为此使用SSL。事实上,这可能是您在服务器端可以获得的最好的安全性,因为您可以将加密密钥存储在哪里。请参阅我的答案这里以获得更深入的解释。
如果您想保护客户端上的数据(而不是来自用户的数据,即DRM),请使用DPAPI或其托管包装器。这实际上比你能买到的任何东西都安全,因为它解决了发行的密钥存储问题。如果客户端上有加密的数据,并且需要脱机访问,则最终可以将密钥存储在系统上,让用户插入某些内容,或者让用户输入单独的密码。第一个是不安全的,第二个是痛苦的。DPAPI在用户的登录密码(或智能卡或windows的生物识别技术正在使用的)下加密。
论密码图书馆的主体
.net附带了带有公钥密码的托管代码密码包和本机代码的包装器。它是System.security.cryptography包,它是免费的,并且已经安装在任何有.net的windows系统上。
最低限度,您可以使用它来处理公共私钥部分,而无需付出任何实际的努力(.e.g可以从zipblackbox加密密钥)。
一些免费/开放源码库还支持从密码创建加密容器。Truecrypt、tarsnap和7zip (尽管这可能需要管理员权限来安装)。有alos dotNetZip进行加密,我不认为需要管理员权限来安装,并且是免费的和开放源代码下的一个非副本左许可证。
您也可以非常容易地制作您想要的加密容器,不过我可以理解为什么您可能对此犹豫不决。只需使用Microsoft安全方面的人员编写的这个班级,将文件写入该流,在IV和标记前面加上,然后使用公钥加密加密它提供的密钥。在另一端,解密密钥,读取iv,解密数据,验证标签匹配,然后您的产品。
发布于 2012-04-26 13:20:15
然后,您应该查看的唯一库是加密下一代(CNG) API。这些程序都是在Windows上进行的,已经过了彻底的测试,并且实现了今天存在的每一个重要的、经过测试的算法。
此库还具有适用于Windows的加密安全随机数生成器。
您可能也需要查看DPAPI和windows证书存储区。记住,尝试在客户端实现任何安全性,停止客户端对应用程序的调查都是徒劳的。如果客户端拥有这个盒子,他们就拥有你的应用程序和你想要实现的任何安全。
标准的RSA算法非常适合您所做的工作,但是您可能需要研究使用证书注册公钥/私钥,因为这将使您的应用程序更具有适应性,更易于管理。
发布于 2012-04-26 14:37:07
公钥密码很容易被滥用,这种情况经常发生。例如,人们忘记的一件事是,公钥加密非常慢,要加密任何有意义的数据量(1024位RSA密钥超过100个字节),需要使用对称算法并生成会话密钥。这就是安全漏洞出现的地方。
为了解决这个问题,有几个标准用于使用公共/私钥和证书加密/解密数据。他们是PKCS#1和PKCS#7 (后来的CMS)和OpenPGP等等。
我们的SecureBlackbox组件库是一个全面的安全解决方案,它为许多安全方案和标准提供了实现,并提供了广泛的示例和支持。
https://stackoverflow.com/questions/10334240
复制相似问题