我正在 Java 中构建一个服务器应用程序,该应用程序为使用 AS3 在 Flash 中构建的客户端提供服务。 as3crypto 库需要 RSA key 的模数才能进行加密,因此我正在考虑将 key 的模数从服务器传递到客户端。在不加密 key 的情况下这样做安全吗?
最佳答案
首先,SSL/TLS 将是更好的选择,因为它已经是一个强大的 (TLS 1.1) 协议(protocol),而不是虚构的协议(protocol)。其次,传递模数就可以了。至少,应该是这样。如果您正确使用 RSA,您的模数应由两个素数组成,每个素数至少有 1024 位长。你只需要非常小心你到底通过了什么。 RSA(公共(public)加密系统) key 有两个部分。一间公立,一间私立。在 RSA 中,您只能通过开放 channel 传递质数的乘积(这根本不提供任何身份验证)。不是指数。您无法加密您的模数,因为那样您就必须破解第二个信封并且仍然可以获得您的模数,这只会将问题转移到了解外部模数。
我必须承认,使用 TLS 层会让您更安全。使用已经存在的东西,如果你真的想有自己的协议(protocol),是的,你可以安全地传递模数。 (在大多数情况下。尽管在密码学中,永远不能保证任何协议(protocol)都是健壮的)
关于java - 通过Java Socket连接传递RSA key 的模数而不加密是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8051742/