Encryption 如何创建一个简单、安全的调查应用程序?

Encryption 如何创建一个简单、安全的调查应用程序?,encryption,Encryption,假设您正在编写一个调查应用程序,并且希望以某种方式保证结果从用户角度来看是安全的。简单地说,我知道你来自哪个IP,但我想确保你晚上睡得好,因为我对你的回答一无所知。我不能以原始形式存储IP 不过我需要保证一件事,那就是你只回答一次问题。因此,一旦您的电脑收到一些数据,我需要确认您的电脑已经对调查做出了响应 对如何最好地处理它有什么建议吗 谢谢 -mac创建IP地址(以及任何其他唯一标识属性)的单向散列,并将该散列与响应一起存储。这样,没有人可以查找响应的IP地址,但您可以将哈希与以前提交的响应进

假设您正在编写一个调查应用程序,并且希望以某种方式保证结果从用户角度来看是安全的。简单地说,我知道你来自哪个IP,但我想确保你晚上睡得好,因为我对你的回答一无所知。我不能以原始形式存储IP

不过我需要保证一件事,那就是你只回答一次问题。因此,一旦您的电脑收到一些数据,我需要确认您的电脑已经对调查做出了响应

对如何最好地处理它有什么建议吗

谢谢
-mac

创建IP地址(以及任何其他唯一标识属性)的单向散列,并将该散列与响应一起存储。这样,没有人可以查找响应的IP地址,但您可以将哈希与以前提交的响应进行比较,以确保人们只提交一次表单

你无法说服别人你尊重他们的隐私。不要滥用信任,人们会解决的


(有关如何在java中创建散列的想法,请参见)

您不能保证这两个都是正确的。你所能做的就是提高门槛,这样就更难绕过它。如果有人真的想绕过你的追踪,如果他们对你的系统了解得足够多,他们可以。好的是,大多数人要么不想麻烦,要么不知道怎么做

如果要防止代理问题,可以生成加密哈希并将其存储在persons浏览器上的cookie中。许多网站这样做是为了保持会话创建跟踪身份验证。这类似于使用HMAC生成某种东西,用一个不能伪造的唯一密钥标识浏览器。如果他们清除了他们的浏览器,尽管你无法跟踪他们

IP地址的单向散列是一种防止IP被跟踪的方法,但是同一IP总是散列到相同的值,这样您就可以知道是否有人在这样做。然而,如果他们去网吧中提琴,他们可以重新提交。你可以使用SHA1、MD5等

您可以对电子邮件地址执行相同的操作,并将其散列。若要让人们参与,请将结果发送到他们的电子邮件地址,而不是显示在浏览器中。人们只需要相信你不会用他们的电子邮件做坏事

如果你也知道你想向谁发送调查,你可能会有其他想法。生成标识单个响应的随机数。然后通过电子邮件将这些链接发送给其他人。然后他们将以该号码提交,而您不跟踪电子邮件->随机号码,则无法将答案与电子邮件地址关联。一旦一个随机数被使用,一旦你不让他们再次提交。跟踪一次响应。多次显示结果


您可以将其中一些组合在一起,尝试解决另一个的不足。

好问题-这就是为什么我不相信工作中的“匿名调查”。还考虑如果使用一组代理服务器(不太可能)会发生什么。我怀疑你不能保证这两个问题中的任何一个:)你实际上有两个问题,即安全地处理数据和让某人相信你在安全地处理数据:)@Hamish Grubijan盒子中的投递文件解决方案并不强制执行一人一调查的保证。一些员工会放弃调查,其他人会打印多份他们的回答。@mac对于局外人来说,实施是靠声誉。如果员工认为局外人不会与老板分享敏感数据,他们会更加开放。技术要求是最低限度的,但你不能在内部做到这一点。“行为问题没有好的技术解决方案。”:)酷!这类似于Gmail实际上并不存储我们的密码,而是散列。这解决了一半的问题,所以这已经证明我错了。你必须大量迭代散列(微小的键空间…)。但即便如此,如果您希望能够在可行的时间内验证哈希值,那么对手将能够选择一个IP地址并检查它是否与哈希值匹配。他可以把它缩小到小于2^32的范围。这个想法有两个问题:1。多个员工共享同一台计算机。这将阻止第二名员工完成调查。2.一名员工使用多台计算机绕过一名员工一次调查担保。但我非常同意“你无法说服别人你尊重他们的隐私。只是不要滥用信任,人们会解决的。”@Longpoke和@emory:这就是为什么你会添加额外的识别属性。更多的属性(例如浏览器会话id/甚至其姓氏)会使攻击者更难攻击,也会使标识符更独特。我不确定我是否理解您的意思。“会话ID”是指随机生成的令牌吗?然后用户就可以清除他的cookie并获得一个新的cookie,从而再次投票?姓氏相同。