首页
学习
活动
专区
圈层
工具
发布

AES认证
EN

Stack Overflow用户
提问于 2013-10-08 17:03:19
回答 2查看 48关注 0票数 0

我对密码学还是很陌生的,所以请原谅任何新手的错误。我被问过几次了,但我不知道该找什么。

所以,我有一个服务器,它从我的智能手机上通过http接收命令。目前,所有内容都是使用AES加密的,密码可以在服务器的配置中设置。

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

我认为有两种解决办法:

  • 对命令中的时间戳进行加密,使其在一段时间后无效,但缺点是仍然(在此期间内)命令可能会被重置。
  • 服务器向客户端发送一些随机的信息,客户端必须对其进行加密,并将加密的内容发回(我认为这将扼杀我的http方法)。

我认为有更好的方法(也许是另一种算法?),有什么帮助是欢迎的。

再说一遍,我对密码学没有多少经验,编程只是一种爱好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-08 17:17:02

请不要试图重新发明安全通信。SSL和SSH是两种非常广泛使用的、非常好的安全通信协议,这两种协议都将解决重播,以及许多尚未考虑的安全问题(重新排序、删除消息、将消息从一个地方插入到另一个地方等)。

票数 4
EN

Stack Overflow用户

发布于 2013-10-09 00:35:18

看来您需要加密和身份验证。

正如其他人所述,对于HTTP请求,请只使用SSL (HTTPS)进行加密。SSL是加密的特例。SSL可以进行身份验证,但是有更好的解决方案可以通过智能手机对用户进行身份验证。

对于用户的身份验证,有许多选项。对于智能手机连接,我建议您也不要发明自己的身份验证协议,而使用经过尝试和测试的解决方案,如OpenID宣誓。有许多库支持这一点。使用这些协议可以使用现有的Google、Facebook、Twitter帐户等对用户进行身份验证。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19253941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档