我希望该用户/攻击者加密数据并发送到服务器。现在我想要一个与标准算法完全相反的算法(快速使用,难以解密),即很难加密数据,如使用服务器发送的密钥来加密数据,以防止随机攻击,但非常容易解密,因此服务器在验证用户时消耗的时间非常少,但对于攻击者来说,每次使用服务器发送的密钥加密新的试用密码变得非常困难。
再说一次,我不是在谈论SSL。
发布于 2012-03-19 16:33:56
这听起来像是在寻找一种proof-of-work方案--这种方案的一个应用程序就是您所描述的:强制客户机执行一定数量的工作,从而防止它向服务器发送大量请求。
发布于 2012-03-19 15:50:32
一个愚蠢的想法可能真的很管用,那就是在加密方案上附加一个“拼图”。这样,为了将加密数据发布到服务器,您必须解决一些已知的NP-hard问题(例如,找到一个大型布尔公式的令人满意的赋值),并将答案与一起发送。然后,服务器可以很容易地验证解决方案,但在假设P≠NP的情况下,尝试发布数据的客户端必须执行超多项式的额外工作,从而防止它们淹没您的服务器。
希望这能有所帮助!
发布于 2012-03-19 16:08:54
您可以使用RSA签名(例如PKCS#1)。
您的服务器只有在使用您先前分发的RSA密钥的私有部分签名的情况下才能接受答案。服务器使用公共部分。
RSA的特性是,当您通过因子或x10或x100选择一个小的公共指数(通常称为e,例如e=3)时,验证比签名要快得多,这取决于密钥长度以及您的客户端是否足够聪明,可以使用CRT。
RSA密钥生成速度极慢,但只要在协议中包含阻止重放攻击的挑战,对所有客户端使用一个密钥可能就足够了。
最后,RSA签名不会为您提供机密性。
https://stackoverflow.com/questions/9766579
复制相似问题