gpt4 book ai didi

c# - 在服务器端生成私钥(证书)是个坏主意吗?

转载 作者:可可西里 更新时间:2023-11-01 09:36:55 25 4
gpt4 key购买 nike

我正在处理一些加密项目(使用 C#),并且有一个任务,我正在考虑如何做好。

我需要客户端为非对称加密生成私钥,但正如我查看了一些库,这并不是那么简单易行的任务。

为什么?

为了在 Windows 中生成私钥,我有下一个可能性:

  • 使用 makecert.exepvk2pfx.exe 等生成它们...但是这些工具来自 Windows SDK,并且似乎与其他 DLL 链接,所以如果客户有一个干净的操作系统(没有安装任何库)我可以:1).在客户端的 PC 上安装 Windows SDK 2)。复制 makecert.exe 和其他实用程序将其与项目分发一起保存(我认为,由于不同的 Windows 版本(从 7 到 10)和 32/64 位架构,这是一个坏主意

  • 使用 Bouncy CaSTLe 生成,不错的方法(而且我可以使用编程语言而不是外部工具,这对我来说是一个优势),但 C# 版本没有很好的文档而且源码中还有一些丑陋的地方

  • 使用OpenSSL,不喜欢,因为有几个函数调用库本身有错误(多线程)

  • 使用 PowerShell(也是一个选项,但我想会有在旧版本的 Windows(如 7)上支持它的问题

鉴于这些事实,我想,如果我让客户端不再生成私钥呢?这是个坏主意吗?我可以在服务器端生成它并不保存私钥,只需通过 TLS 传输即可。

这种方式存在哪些安全漏洞?考虑一下,使用 TLS 是 STRICT 选项。

最佳答案

这取决于您的应用。在服务器上生成私钥至少存在几个问题。

  1. 客户必须相信您不会保存此 key 供以后使用。你知道你不知道,但客户不知道。根据应用,这可能是重要的区别。

  2. 即使您通过 TLS 发送 key ,在某些情况下它仍然可以被中间人拦截。例如,公司可能会在组织中的每台计算机上安装受信任的根证书,然后拦截和解密所有进出该组织的 ssl 流量。同样,这可能重要也可能不重要,具体取决于您的应用程序类型。

假设您编写面向大量受众的聊天应用程序,并且想要加密用户之间的所有消息。然后,如果您将在服务器上生成 key - 没有人会(或至少应该)使用您的应用程序。首先,您可以将他们所有的 key 转储给政府\无论如何(他们不能 100% 确定这不会发生),即使您不会这样做 - 整个国家/地区都通过使用“假”受信任的根证书来检查 ssl 流量.

长话短说 - 如果您可以在客户端生成私钥 - 那就去做吧。对于您的情况,我认为您可以。

关于c# - 在服务器端生成私钥(证书)是个坏主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37051366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com