在互联网上加密并在专用网络中解密的最佳方法是什么?

时间:2011-11-19 18:15:11

标签: c# security encryption

我有一个网站,有敏感信息。 我还有一个私人网络(关闭互联网),我的网站中的数据被同步。

我有使用他们选择的私人ID和密码登录网站的用户帐户。我希望能够从内部网络(封闭的网络)知道他们的密码。

所以我考虑使用两种类型的加密。 HASH(单向)用于登录和身份验证。 和RSA(公钥)加密我网站的密码,并在我的私人网络中使用私钥解密。

我想知道我的方式是否足够安全(或者可能过度安全?)或者有更好的选择。

另外,我应该用什么库来加密RSA?

提前致谢, 阿米尔。

3 个答案:

答案 0 :(得分:2)

您可以使用System.Security.Cryptography.RSACryptoServiceProvider来加密专用网络的密码,也可以使用哈希函数进行身份验证。使用公钥加密的明文密码应该与任何其他正确的哈希函数(例如SHA-1)一样安全,尽管它会比典型的哈希函数输出稍长一些。

答案 1 :(得分:0)

除非你绝对必须,否则我不会设计任何专有的安全方案。目前还没有过度安全的事情,因为任何安全方案(包括SSL)都可以被打破。专有机制通常被认为不太安全,但更加模糊,而且编写这些机制的人通常认为通过默默无闻的安全性可以为他们提供保护。但通常情况则相反。您自己的默默无闻会阻止您轻松识别安全漏洞,而想要访问您的数据的人将拥有足够的经验和知识来分析您的安全漏洞。

  1. 如果您有基于网络的应用,则应该明确地在服务器和用户的网络浏览器之间使用SSL。它将保护(尽可能多)浏览器和Web服务器之间的所有通信。在您的场景中,阻止某人简单地嗅出您的哈希然后使用它来登录其他人的帐户是什么。如果你所检查的都是一个哈希,而这就是你所要求的,那么他们就会发送它。

  2. 一旦数据返回到您的服务器,它应该受到保护,就像您在公共网络上保护它一样。请记住,超过90%的安全漏洞(不,我不记得我从哪里获得统计数据,但我对此主题进行了大量阅读)来自您自己公司内部。心怀不满的员工希望在出路上做更多的破坏,或者黑客闯入内部机器(可能使用社交工程,这通常是大多数公司的弱点),然后发现你自己的网络中没有任何保护。 / p>

  3. 您是否确定需要在内部存储密码?通常,您应该在身份验证数据库中存储的唯一内容是密码哈希(也应预先播种以使彩虹表攻击更加困难)。如果您的数据库遭到入侵并且哈希被盗,那么找出实际上的用户名密码仍然非常困难。虽然我不关心大多数网站是如何运作的,但如果我发现我正在与一家拥有我的敏感信息并且密码以明文形式存储的公司打交道,我通常会将我的业务带到其他地方。

答案 2 :(得分:0)

你必须更具描述性,“我希望能够知道他们的密码”

阅读你的问题,我会说:如果你使用网络表单进行身份验证并且它通过HTTP / HTTPS运行,我会在我的WEB服务器之前放置一个反向代理并在那里完成SSL连接,读取HTTP流量明文和存储密码。请注意,它有很多与道德和隐私相关的含义。