在桌面应用程序和远程服务器之间创建安全连接?

时间:2014-03-10 17:34:21

标签: java python security ssl encryption

我有一个需要安全地与远程服务器通信的桌面应用程序。

  1. 所有数据都必须加密。
    • 这也意味着数据不能被第三方更改。
  2. 任何人都不应该重新发送两次相同的数据(重播攻击)
  3. 列表项
  4. 服务器设置了一个restful API,因此桌面客户端将进行https(get,post,push和delete)调用。

    我知道SSL证书是不够的。有mitmProxy之类的工具可以重新签名证书并显示攻击者纯文本。

    我的问题与一般的interworking加密无关。我想知道在现实世界中最常用的Perfect Forward Secrecy是什么常见做法?!

    如果服务器是用python编写的,客户端是用java编写的,那么我可以看一下教程或库吗?

1 个答案:

答案 0 :(得分:1)

SSL听起来完全此方案的解决方案。您关于中间人攻击的陈述忽略了一个关键点 - 您提到的工具要求其连接被截获的客户端之前已经设置为信任该工具的CA证书(它用于验证为被拦截的服务器)。如果您正确地验证了服务器(以及可选的客户端)证书,那么中间人攻击应该没有问题。 SSL同样阻止了第三方的重播攻击。

Perfect Forward Secrecy是一个有点单独的主题,但SSL中也有可用的PFS机制(例如,使用Diffie-Hellman短暂密钥交换)。

正如其他人所提到的,教程/库的建议是StackOverflow的主题。