首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >钠钠与captcha验证

钠钠与captcha验证
EN

Security用户
提问于 2015-10-27 18:27:13
回答 1查看 357关注 0票数 1

因此,我想实现服务器,它验证注册与captcha。首先,我考虑将captchas存储在服务器中,但后来我认为它会在缓存、内存方面遇到麻烦,如果我需要将它写入文件,等等。但是我有了一个天才的想法(可能是其他人已经做了),不如把captcha发送给客户,也发送加密的答案,当用户回答时,他发送captcha (或者它的摘要,如果它再大一点),我可以简单地从客户端解密答案。砰,我根本不需要存储海量的图像,而且我可以根据自己的意愿来放大这些图片!(不同的服务器可以发送captcha,不同的服务器可以为响应提供服务)。

现在,我有一个问题。我需要一个现在来加密脂肪钠中的东西。就像在这里,http://doc.libsodium.org/public-key_密码学/认证_encryption.html。现在,如果我每次都生成这个,发送给用户,让用户把它发回,那么它是公开的,这有什么意义?或者,如果我使用常量,那么,还有什么意义呢?服务器和客户端可以查找它。

我在这里该怎么办?在这种情况下,我应该使用常量现在,还是应该每次生成它,为什么?

EN

回答 1

Security用户

回答已采纳

发布于 2015-12-19 23:28:59

如果它是无状态的,则您的计划很容易被重放攻击。

无论最初发送了什么密文,客户端每次都可以使用相同的captcha+ciphertext进行响应。

使用一个timetamp+random字节作为一个现在。这不一定是秘密,只有钥匙必须保密。

您可以使用键控哈希,而不是加密captcha。

  • 服务器发送Hk(captcha) || timestamp || randombytesk = secret || timestamp || randombytes。您可以为此使用crypto_auth()crypto_generichash(),并使用192位秘密、32位粗时间戳和32位随机部分。
  • 客户端发送Hk(captcha) || timestamp || randombytes || captcha
  • 服务器使用客户端发送的captcha、时间戳和随机字节计算H'k(captcha),并验证时间戳是否接近当前时间,并且H'k(captcha)Hk(captcha)匹配。
票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/103858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档