首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于秘密的RSA公钥验证

基于秘密的RSA公钥验证
EN

Cryptography用户
提问于 2018-01-24 07:22:56
回答 1查看 255关注 0票数 -1

我正试图用加密技术开发我的混乱应用。现在,我提出了授权和消息交换的算法。

服务器和客户端之间的连接是通过https实现的。

8月:

  1. 用户根据他的密码生成私钥和公钥。
  2. 用户请求授权
  3. 服务器随机生成64个字节字符串。
  4. 服务器用用户的公钥加密字符串,该公钥存储在数据库中
  5. 服务器向用户发送挑战。挑战是加密字符串。
  6. 客户端用他的私钥解密挑战
  7. 客户端发送服务器解密字符串
  8. 服务器比较字符串,如果它们匹配,则用户被授权并被授予交换消息和/或查看旧消息的权限。

交换:

  1. 用户#1请求用户#2公钥
  2. 服务器使用用户#2公钥进行响应
  3. 用户#1用用户#2公钥加密消息
  4. 用户1基于用户#2用户名和消息体生成签名。
  5. 用户#1用他的私钥加密签名
  6. 用户#1用用户#1公钥加密消息
  7. 用户1根据其密码和消息正文生成签名。
  8. 用户1向服务器发送一条用用户2公钥加密的消息
  9. 用户1向用户2发送消息签名
  10. 用户1向服务器发送一条用用户#1公钥加密的消息
  11. 用户1向服务器发送用他的公钥加密的消息的签名

在这种情况下,服务器没有用户的密码,因此无法生成私钥。但是,如果有人能够访问服务器,他可以通过伪造某人的公钥来执行攻击,从而能够解密消息。

  1. 服务器为用户#1生成假密钥
  2. 用户#2请求用户#1公钥
  3. 服务器使用假公钥进行响应
  4. …用户#2加密消息…
  5. 服务器检索消息并能够对它们进行解密。

那么,如何验证密钥不是由服务器伪造的呢?我在注册生成秘密字符串时想到了用户,用它进行了一些加密,所以服务器不能对它进行解密,接收者应该在不知道秘密和私钥的情况下验证秘密字符串用于生成密钥。但我不知道该怎么做。

EN

回答 1

Cryptography用户

发布于 2018-01-24 10:04:21

密码学对专业人士来说很难,更别提我们这些凡人了。对于现实世界的编码,重要的是不要尝试自己去做,因为你可能会犯一个错误。

如前所述,信号协议应该为您提供所需的功能。例如:

支持异步通信(“脱机消息”)

看看维基百科的文章。

虽然您提到的一件事是对受损服务器的恢复能力。事情是,在某种程度上,一定有一个政党,你相信整个事情的工作,否则密钥分配不能工作。我们可以确保另一方用固定的证书在所有公钥上签名,但我们必须信任它们。TLS使用证书颁发机构的层次结构来实现这一点,我们对其根CA进行了绝对信任。

票数 0
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/54978

复制
相关文章

相似问题

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