繁体   English   中英

使用.net中的app公钥/私钥加密

[英]Encrypting with app public/private key in .net

- 我 - 我发现了另一种用途。 有些数据是通过HTTPS POST数据提交给我的,我想将它存储在我的数据库中(例如客户支持可能需要稍后阅读的母系名称,而不是拼写错误地检查哈希是否匹配)。 我只需要加密的部分而不是整个数据库,并且使用单独的数据库可能不值得。 问题:如何使用预制公钥使用.NET加密对称密钥+文本? (其余的是上下文,我只想要一个答案plz)

-edit-之前我做过对称加密。 如何使用公钥加密对称密钥? 一个很好的奖励是,如果你可以告诉我如何在一个单独的应用程序中生成公钥/私钥,这样我就可以创建它们并只在我的应用程序中存储公钥。

我正在考虑从更繁忙的网站自动减少压力较小的网站抓取备份。 传输数据不是问题,因为我可以使用https但我不完全相信我的便宜的网站是安全的或不会有人环顾我的文件。 我主要想保护电子邮件地址和PM,如果我在网站上有它们。

所以我想知道如何在我的应用程序中使用公钥或私钥来加密数据,这样只有我(或者我提供密钥的任何人)才能解密备份。 我如何在.NET中执行此操作。 登录和传输我可以在几分钟内写,但我如何加密流我写它?

- 编辑 - 它只是打我。 用户/通行证不是秘密。 所以我必须在传输之前加密我的备份。 如何使用.NET使用公钥加密对称密钥。 然后在我身边解密它。 使用对称密钥加密文件我知道该怎么做。

首先:深度防守。 如果您担心备份站点的安全性,请保护备份站点 通过加密缓解攻击是一个好主意,但它不应该是唯一的想法。

其次,为什么要考虑使用公钥/私钥加密? 通常,在尝试将消息从发件人传递给收件人时,您只使用公钥/私钥加密。 公钥加密对您的方案有什么价值?

要在C#中加密流,此页面可能会有所帮助:

http://support.microsoft.com/kb/307010

更新:

当然,是的,您必须在文件到达您认为已被盗用的网站之前对其进行加密。

您认为该网站可能不安全。 你应该做的假设是该网站是你的敌人,并试图伤害你 像攻击者想的那样开始思考。 你的敌人会做什么? 如果我是你的敌人,你递给我一堆文件代表你存储,我可能会:

  • 删除你的文件
  • 破坏你的文件
  • 读你的文件
  • 记录进入或出去进行分析的每个字节
  • 用您存储在本网站上的恶意文件(特别是所有可执行代码,脚本等)替换您的文件,您应该假设其中充满了专门针对您攻击的病毒
  • 做些让你陷入困境的东西 - 伪造看起来像是来自你的消息,等等

假设不安全的备份站点操作员正在尝试对您执行所有这些操作。 加密是对某些攻击的缓解,但不是全部。

没有冒犯,但很明显,你不知道加密来解决这个问题,有任何合理的机会让它对抗真正的攻击者。 这没什么好羞耻的; 我也没有这方面的知识 相反, 我有足够的知识知道这个问题超出了我的范围。 尝试更多地了解加密是没有错的; 我强烈鼓励。 但是如果你有一个真正的威胁,并且你正试图用专业级的加密工具来缓解它, 那么就不要推出自己的解决方案了 聘请这个领域的专家顾问,他可以告诉你正确的事情是什么,给你面临的现实威胁。

使用对称密钥加密,然后使用公钥加密对称密钥,然后删除对称密钥。 只有相应私钥(您)的所有者才能解密对称密钥,从而解密文档。 应用程序中没有存储任何秘密。 好消息是,只有大约一吨的开箱即用产品(pgp)和协议(s-mime)才能解决这个问题。

您可以使用对称密钥算法(AES,DES,Triple-DES)对代码执行加密,并将其以十六进制形式存储在数据库中(在nvarchar字段中)。 因为,你需要以加密的形式将其转移给其他人,你不需要使用任何不对称算法(如RSA,ElGamal等)。如果像RSA这样的东西,你还必须考虑使用类似PGP的数据进行数据签名。

但是,无论您使用哪种算法,都需要确保密钥尽可能安全 ,即AES的对称密钥和RSA的私钥等。

本文提供了有关如何使用/不使用Salt执行对称加密的教程。

http://www.obviex.com/samples/Encryption.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM