我正在开发一个将由相对不精通技术的用户使用的应用程序,虽然机器可以访问互联网,但该应用程序不能有任何类型的托管中介。
该应用程序允许人们获取文件,将其压缩并将其编码为图像,以便在 GitHub 等网站上共享,以帮助共享测试文件等内容。
该应用程序的第一个版本运行良好,但有时需要共享敏感数据并且需要某种程度的加密。
理想情况下,我想沿着公钥/私钥对路线走,但从用户的角度来看,共享这些是麻烦和复杂的。
我希望能够(以某种方式):
- 获取用户的电子邮件地址并将其用作公钥
- 从用户那里获取密码并使用它来派生私钥
- 以某种方式将它们纠缠在一起,以便它们可以以这种方式使用。
电子邮件地址是否最终解析为其他然后使用的东西并不重要,但一般流程需要是这样的:
- 爱丽丝想要加密图像以供特定用户使用
- Alice 输入该用户的电子邮件地址(或目标的其他字符串 - 例如组)
- Bob 将图像下载到应用程序中并输入他的私人密码以解压缩它。
该应用程序还可以使用私钥对数据进行签名,以便在另一端进行验证。
我知道我可以使用密码派生的公钥/私钥,但这意味着可以使用单个密码来派生这两个部分,并且最终会使其无用。