【发布时间】:2010-02-19 15:34:21
【问题描述】:
我有一个 Silverlight 3 应用程序,它连接到服务器以执行各种操作。我的用户使用表单身份验证登录,但他们请求的操作是使用 AppPool 帐户在服务器上运行的,因此当他们进入审核日志时,他们会根据 AppPool 帐户进行记录。 PCI DSS 法规现在要求用户自己的 ID 存在于审计日志中,这意味着必须使用用户的信用来采取行动。现在,我可以在用户登录并提交每个请求时保存用户的凭据,并且服务器正在执行的操作可以使用这些凭据。但是 PCI 法规说,如果保存凭据,则必须对其进行加密(以避免有人窃取 PC 的内存转储并获取密码)。
我能看到的唯一方法是从服务器获取公钥并用它加密密码,然后提交加密密码并使用私钥在服务器上解密。但 Silverlight 没有非对称加密。
我想我离问题太近了,必须有另一个解决方案,但我看不出它是什么。有人可以帮忙吗?
澄清
这是一个内部应用程序。到目前为止,我一直在使用 IIS Forms AuthN over SSL 到 Active Directory - 我不担心在传输过程中保护密码,只是当它保存在客户端的内存中时。据我了解,因为我使用的是Forms Authentication,所以除非我使用LogonUser,否则无法在服务器上进行模拟,这意味着我需要服务器上的密码,所以我每次都需要传输它,所以我需要持有它在客户端,在内存中,直到应用关闭。
【问题讨论】:
-
请澄清“信用”。我不认为 PCI regs 要求对用户 ID 进行加密,所以我在这里看不出有什么问题。不要保存密码,只需将用户 ID 保存在当前会话中并将其用于日志记录。
-
我觉得你很困惑。我根本看不到公钥密码学如何帮助这种情况。为什么不能通过 ssl 使用普通的用户名/密码登录系统,然后将密码存储为 sha256 哈希。
-
我已经澄清了我原来的帖子 - 我希望能解释我的担忧所在。
标签: security silverlight-3.0 passwords encryption-asymmetric