2

我正在开发一个 J2ME 应用程序,它可以安全地连接到服务器以进行登录。我在两者之间设置 SSL 时遇到了很多困难,所以我想到了一个更简单的解决方案,我希望你能对此发表看法。

J2ME Midlet 附带服务器的公钥,连接时使用该公钥加密消息(用户名、密码哈希和随机数)并发送到服务器。然后服务器对其进行解密并使用它来验证客户端。

证书颁发机构的主要思想是说谁是谁,如果双方已经知道并同意它不会改变(除非通过已经过身份验证的连接),那么我不绕过对一个的需要吗?

谢谢,弗拉基米尔

4

1 回答 1

1

如果双方已经知道这一点并同意它不会改变......那么我不绕过对一个的需要吗?

是的,但我认为你没有抓住重点。该程序附带密钥,但用户无法知道他们正在下载的程序实际上来自您,而不是一些恶意黑客拦截/重写通信;用户看到的只是从墙上的电线进来的钻头。

通常,您接下来要做的就是使用您的密钥对 jar 进行签名,然后将密钥与您的程序一起发送。现在我们有一个先有鸡还是先有蛋的问题:他们怎么知道钥匙来自你?

这就是证书颁发机构的用武之地;CA 的密钥已经在他们的计算机上,因此他们将其留给 CA 来验证您的身份并签署您的公钥。然后当用户获得公钥,验证它是否由 CA 签名,并验证 jar 是否由密钥签名时,他们知道密钥是你的,因此 jar 必须来自你,因为你是唯一的一个可以用私钥签名的人。

现在,如果您的密钥提前在他们的计算机上(例如,在公司内部,在设置密钥时将密钥物理放置在计算机上),他们是的,您绝对不需要密钥签名。

于 2010-01-27T18:25:05.257 回答