【发布时间】:2011-07-05 11:18:09
【问题描述】:
我正在使用 Ruby on Rails 3,我想通过 HTTP 协议发送“电子邮件”和“密码”值(我知道,我不应该,但我需要)。我需要将用户凭据从 my client 应用程序发送到 my service 应用程序*。
我可以使用公共和私有 RSA 密钥来完成此操作,但如果是这样,我必须不要通过 HTTP 将公共密钥发送给收件人,否则黑客可以窃取密钥并解密内容。另一方面,HMAC 加密(如果我理解的话)仅适用于验证数据完整性和消息的真实性。
我听说过 AES...它对我的目的有用吗?如果是这样,我在哪里可以找到有关如何将其与 Ruby\Ruby on Rails 一起使用的教程?我“只”需要在客户端加密用户凭据并在服务器端解密。
附:我:如果我写的东西有误,请告诉我。
附: II:如果您建议其他方法,请告诉我!
更新我
*客户端是一个 Web 应用程序(一个站点 Web,例如 'www.site1.com),服务器是另一个 Web 应用程序(另一个站点 Web,例如 'www.site2.com)。
更新 II
使用 RSA 加密...
Client-I-service 步骤:
客户端生成公钥\私钥巴黎
我(真人)手动将公钥从客户端复制粘贴到服务中
客户端向服务发送包含加密用户凭据的消息(客户端不向 HTTP 请求发送\附加公钥)
服务使用公钥(只有服务知道)解密用户凭据并继续用户登录
现在,如果我发送公钥而不是执行第 2 步,因此客户端必须在第 3 步中通过 HTTP 协议发送公钥,黑客可以
截取消息
获取公钥
解密用户凭据并窃取这些凭据
那么,我应该加密用户凭据(这些是重要的私人信息)如果我将公钥发送到服务,则使用 RSA 加密?
【问题讨论】:
-
HTTPS 是不可能的吗?它旨在解决加密 HTTP 传输的问题。
-
@user502052 任何加密机制都需要双方都知道密钥。使用公钥加密,一方知道“公钥”,另一方知道“私钥”。
-
@user502052 如果您可以使用 HTTPS,请继续使用它。使用带有method=post的表单来传输数据;你不需要做任何其他事情。
-
@tiagoinu 我知道。在我的情况下,我需要只有客户端和服务器知道的东西......但是我必须使用什么加密程序?这就是问题所在。
-
@user502052 您想要的任何程序。只是不要通过 HTTP 发送任何密钥。将其保存在服务器和客户端的某处。
标签: ruby-on-rails ruby security ruby-on-rails-3 encryption