首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以人类可读的方式表示PGP密钥(分散的客户端身份验证)

以人类可读的方式表示PGP密钥(分散的客户端身份验证)
EN

Stack Overflow用户
提问于 2019-08-28 02:14:22
回答 1查看 61关注 0票数 0

我正在开发一个分布式应用程序,我们需要一种方法来授权客户端。每个客户端都有一个与其相关联的PGP密钥对,我们要求它们输入其私钥(未存储),通过该私钥,其pubkey将被派生并用于标识客户端并修改其在分布式数据库上的字段。

现在,考虑到用户体验,当你需要做一些事情时,在网站上输入私钥是很麻烦的。但我们也不能维护一个用于基于用户名/密码的身份验证的中央数据库,因为这会创建单个故障点(而不是分布式应用程序要做的事情)

我希望有一些方法可以更容易地记住私钥的人类可读描述符,如果存在这样的东西,可以用它来进行身份验证。任何其他的想法也很受欢迎。

EN

回答 1

Stack Overflow用户

发布于 2019-08-29 17:09:39

我将抛出一堆想法来澄清这个问题:

您确定PGP适合您的需求吗?

我觉得你应该提供更多的细节来确保:-私钥和公钥到底是如何使用的?我的理解是:用户输入它的私钥,信息被解密和修改,公钥是从私钥推导出来的,并用于加密更新的信息。-这与使用常规密码并能够验证用户身份和加密数据有什么不同?-您似乎是在网络上发送私钥,它们应该是私有的。

如何使用常规密码:用户有一个密码,你的应用程序使用一个函数(例如sha256,KDF,...)以使其可用于经典加密算法(例如AES)。使用相同的(未存储的)密钥,您可以加密和解密数据。你只需要确保解密是有效的,通过在数据的开头添加一个已知值(例如,密钥的一部分)。

快速示例:

代码语言:javascript
复制
password: "WeakPassword"
key: sha256("WeakPassword"+"MySalt") = 493e3ae...b2eec8ef
Decrypt(data,key)
clearData = "493e3ae{123;456}" //valid, because you can check the beginning
Encrypt(clearData,key)

优点:可用的密码,更快的对称加密

使用二维码如果你坚持使用PGP,并且有一个可用的摄像头,这是相当方便的。你也可以使用十六进制,base64,...但是对于一个2048位的RSA密钥来说,仍然需要数百个字符。

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

https://stackoverflow.com/questions/57680212

复制
相关文章

相似问题

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