通过AES验证

时间:2013-10-08 17:03:20

标签: http authentication encryption cryptography

我对密码学还很陌生,所以请原谅任何新手的错误。我很害羞这已被问过几次,但我不知道该搜索什么。

所以,我有一台服务器,通过我的智能手机接收来自http的命令。目前,所有内容都使用带密码的AES进行加密,密码可以在服务器的配置中设置。

问题是,当有人拦截我的请求时,他无法解密命令,但他可以将加密的命令重新发送到我的服务器。

我想到的两个解决方案是:

  • 加密命令中的时间戳,因此在一段时间后它们无效,但缺点是仍然(在该时间段内)可以重新发送命令。
  • 服务器向客户端发送一些随机的东西,客户端必须加密并发送加密的东西(我想这会杀死我的http方法)

我真的有更好的方法(也许是另一种算法?),欢迎任何帮助。

同样,我对密码学没有多少经验,编程只是一个爱好:D

2 个答案:

答案 0 :(得分:4)

请不要尝试重新发明安全通信。 SSL和SSH是两种非常广泛使用的,非常好的安全通信协议,它们都可以解决重放问题,以及许多其他你尚未想到的安全问题(重新排序,删除消息,从中插入消息)一个地方到另一个地方,等等。)

答案 1 :(得分:1)

您似乎需要加密和身份验证。

正如其他人所说,请仅使用SSL(HTTPS)加密HTTP请求。 SSL非常适合加密。 SSL可以进行身份​​验证,但有更好的智能手机用户身份验证解决方案。

对于用户的身份验证,有很多选项。对于智能手机连接,我建议您也不要发明自己的身份验证协议,并使用经过验证的解决方案,例如OpenIDOATH。有许多库支持这一点。使用此类协议可以使用现有的Google,Facebook,Twitter帐户等对用户进行身份验证。