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

J2ME Midlet随服务器的公共密钥一起提供,在连接时,使用该公共密钥对消息(用户名,密码哈希和随机数)进行加密,然后将其发送到服务器。然后,服务器将其解密并用于对其进行身份验证。

证书颁发机构的主要思想是说谁是谁,如果两方都已经知道并且同意不会更改(除非通过已通过身份验证的连接),那么我是否绕过了对证书颁发机构的需求?

谢谢,
弗拉基米尔

最佳答案

如果两方都已经知道这一点并同意不会改变……那么我是否绕过了对一个人的需求?


是的,但是我认为您没有抓住重点。该程序附带了密钥,但是用户无法知道他们正在下载的程序实际上是由您提供的,并且没有一些恶意的黑客拦截/重写通信。用户所看到的只是碎屑是从墙上的一根电线进来的。

通常,您要做的就是用钥匙在罐子上签名,并随程序附带钥匙。现在我们遇到了一个鸡与蛋的问题:他们怎么知道钥匙来自你?

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

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

关于ssl - 认证中心与存储的公钥,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2149243/

10-12 04:33