【发布时间】:2012-03-05 01:31:30
【问题描述】:
我正在创建一个 json 网络服务(C#、WCF),我需要识别一个用户。没有会话管理,因此用户需要为每个命令发送一个标识字符串。我想出的解决方案是对用户的凭据和字符串“过期”的时间(当前为 1000 毫秒)进行 AES 加密,然后在发送(通过 URL 或其他方式)之前使用 Base64 对其进行编码(HttpServerUtility.UrlTokenEncode)。
我的问题是这样的:编码后的字符串几乎总是一样的,只有很少的变化(我假设这将是到期的分钟和秒,因为凭证日期和小时很少改变。虽然字符串只能使用一次(最后收到的字符串被记录,倒数第二个可能已经过期),我仍然认为拦截并阻止GET请求,捏造一些东西然后重新发送它会很容易。攻击是自动的,即使超时也可能不起作用。
所以。如何向 AES 编码的 Base64 字符串引入额外(可逆)熵?
【问题讨论】:
-
为什么需要可逆?难道你不能只生成 GUID,将它与你需要的其他信息(用户、时间戳)一起保存到数据库中并将其发送给用户吗?
标签: c# web-services cryptography aes entropy