C# ECDiffieHellmancing安全吗?

C# ECDiffieHellmancing安全吗?,c#,security,networking,encryption,C#,Security,Networking,Encryption,我想使用这个类来建立从客户端到服务器的安全连接。在此之前,我从未从事过加密或网络方面的工作,根据我所做的一些研究,我对这门课及其安全性有几个问题 我知道diffie hellman可以通过中间人攻击来破解,保护您自己的一种方法是,服务器创建消息的散列,并使用其私钥对其进行加密,然后客户端使用服务器的公钥对其进行解密,并查看散列是否有效。这个类是自动完成的还是我需要自己完成的 我还了解到,在大约10年的时间里,一个后门伪随机数生成器使用了一个名为Dual_EC_DRBG的椭圆曲线(我相信这个类会

我想使用这个类来建立从客户端到服务器的安全连接。在此之前,我从未从事过加密或网络方面的工作,根据我所做的一些研究,我对这门课及其安全性有几个问题

  • 我知道diffie hellman可以通过中间人攻击来破解,保护您自己的一种方法是,服务器创建消息的散列,并使用其私钥对其进行加密,然后客户端使用服务器的公钥对其进行解密,并查看散列是否有效。这个类是自动完成的还是我需要自己完成的

  • 我还了解到,在大约10年的时间里,一个后门伪随机数生成器使用了一个名为Dual_EC_DRBG的椭圆曲线(我相信这个类会使用),它是加密的标准。关于它是安全的说法大约在5年前被撤回,但我想知道这个类中是否使用了这个函数或任何其他可能不安全的函数,在这种情况下,我可能可以使用其他安全函数

  • 我看了一下“零化”。当然,钥匙存储在RAM中。垃圾收集器是否会在应用程序关闭后立即处理这些问题,或者我是否应该自己执行诸如归零/覆盖之类的操作


TLS已经死了吗?我宁愿做我自己的东西来实现这一点,而不是使用一个为我做一切的包装器。是的,而不是相信你在网络上几乎所有安全的东西所使用的技术,比如购物、银行或任何登录。让我们创建自己的东西,使用私有代码,除了我们的团队之外,没有人会对其进行审查。随着时间的推移,你自己的东西也会得到维护和广泛的测试,对吗?您可以自行开发应用程序,但出于运输安全考虑,有一个很好的解决方案可以满足您的需求。请使用它,为您的用户使用它。顺便说一句,如果你正在考虑自己储存密码的方式。。。这也是一个坏主意。我计划使用C#中经过测试的加密类,我只想确保所有内容都包含在内。我需要有更多的控制权,因为我的服务器是如何工作的(顺便说一句,它不是一个网站)。另外,我没有存储密码,但是,例如,当共享密码被发送到客户端,他将其存储在字节数组中时,例如,我不希望它停留在程序退出的部分之后,这就是我的意思diffie hellman在没有身份验证的情况下容易受到中间人的攻击,但是认证比你想象的要复杂得多。仅仅用另一个未经验证的密钥对您的密钥进行签名并没有真正的帮助。ECDiffieHellmancing与Dual_EC_DRBG没有任何关系,这是一种随机发生器,我确信它早已从Windows中消失。您使用的是非常旧的、未修补的Windows版本吗?关于零化的问题问得好,但是比我胃口更大的人将不得不在微软的文档中寻找答案。TLS已经死了吗?我宁愿自己制作实现这一点的东西,而不是使用为我做一切的包装器是的,而不是相信你所使用的技术在网络上几乎任何安全的东西,比如购物、银行或任何登录。让我们创建自己的东西,使用私有代码,除了我们的团队之外,没有人会对其进行审查。随着时间的推移,你自己的东西也会得到维护和广泛的测试,对吗?您可以自行开发应用程序,但出于运输安全考虑,有一个很好的解决方案可以满足您的需求。请使用它,为您的用户使用它。顺便说一句,如果你正在考虑自己储存密码的方式。。。这也是一个坏主意。我计划使用C#中经过测试的加密类,我只想确保所有内容都包含在内。我需要有更多的控制权,因为我的服务器是如何工作的(顺便说一句,它不是一个网站)。另外,我没有存储密码,但是,例如,当共享密码被发送到客户端,他将其存储在字节数组中时,例如,我不希望它停留在程序退出的部分之后,这就是我的意思diffie hellman在没有身份验证的情况下容易受到中间人的攻击,但是认证比你想象的要复杂得多。仅仅用另一个未经验证的密钥对您的密钥进行签名并没有真正的帮助。ECDiffieHellmancing与Dual_EC_DRBG没有任何关系,这是一种随机发生器,我确信它早已从Windows中消失。您使用的是非常旧的、未修补的Windows版本吗?关于零化的问题问得好,但是有一个比我胃口更大的人必须在微软的文档中寻找答案。