【发布时间】:2015-12-30 14:20:51
【问题描述】:
我打算编写一个小应用程序,其基本思想是用户能够彼此共享加密信息。一个小场景:Alice 写了一个备忘录(数据格式已知),应用程序加密这个备忘录并将备忘录保存在应用服务器上。现在爱丽丝想与鲍勃分享这份备忘录。 Alice 打开应用程序,搜索用户“Bob”并收到 Bob 的公钥。应用程序使用 Alice 和 Bob 的密钥加密备忘录并将备忘录保存在服务器上。现在 Bob 也可以阅读备忘录了。
用户的私钥只属于安装应用程序的设备。它永远不会通过网络传输。尽管如此,我还是想用用户的密码“加密”私钥,因此它可以以(相对)安全的方式存储在设备上,并且只有在输入正确的密码时才会被“解密”。如果用户的密码更改,则不应更改密钥本身,因为这将导致所有数据都必须使用此新密钥再次加密。相反,用户必须输入旧密码,然后使用新密码再次解密和加密密钥。
是否有任何功能(可能在 OpenSSL 中?)使用密码短语“加密”或保护密钥?
注意:私钥可能会也可能不会存储在密钥库中。因为该应用程序将在许多平台上运行,所以事先并不清楚哪个密钥库可用。
【问题讨论】:
-
您正在重新设计 PGP/GPG。所以是的,这样的系统已经存在,你不应该尝试重写它们并期望它们是安全的;)
-
简洁但完整的答案是:是的。冗长的答案是:有些库提供了一个或多个用于加密文本的函数。
-
让我们假设它不会是一个如此微不足道的应用程序。是否可以将 PGP 集成到我自己的应用程序中?
-
@YSC,OP 不仅在重新设计 GPG,他们还在复制粘贴 GPG 手册中的示例;)
-
@SergeyA OP 很可能引用了一位老师给出的作业,该老师从 GPG 手册中复制粘贴了示例:)
标签: c++ encryption private-key