【发布时间】:2012-05-25 15:53:46
【问题描述】:
我正在写一些 needs to do electronic signatures.
有些用户会像我一样是极客,并且已经拥有自己的 PGP 密钥。大多数人不会,也不想安装或维护它。
作为一种变通解决方案,我想执行以下操作:
- 为使用单独“签名”密码的用户创建公钥/私钥对。
- 当我需要用户签署某项内容时,向用户提供明文以及其中的一些其他信息(如时间戳和其他引用),并让他们使用我存储的私钥对其进行签名。
基本上有两种方法可以做到这一点(对于没有自己的 PGP 密钥的用户)。
- 用户通过 SSL 向我提交签名密码。我在服务器端生成私钥对,并在需要签名时临时解锁私钥。我根本不存储密码,我会尽快摆脱解锁的私钥。
- 用户在 Javascript 中生成 pub/priv 密钥。他们将公钥和加密私钥发送给我,并在本地存储中保留一份副本。当他们需要签署某些东西时,我确保他们的本地存储有它(如果没有,则推送),他们使用 JS 在本地解密和签署文本。我从来没有看到他们的签名密码,也没有看到他们解锁的私钥。
无论哪种方式,我也会使用服务器的密钥对结果进行签名。但我需要有一种用户唯一的、不可否认的方式让用户签署文本,并且让他们拥有我维护的 PGP 密钥是这样做的最简单方法。
选项 1 操作起来要简单得多,而且效果很好,足以满足我的最低需求。
选项 2 更值得信赖,因为除非我颠覆 JS(我仍然可以这样做),否则我自己不能使用他们的 privkey。
但是,为了做到这一点,我需要一个 JavaScript 库,可以
- 生成 pub/priv 密钥对
- 解密私钥以供使用
- 使用该私钥签署一段文本
哪些库可以做到这一点?
附:请注意,我不需要对给定的公钥加密。我需要用户使用他们自己的(加密存储的)密钥签名。
【问题讨论】:
标签: javascript encryption cryptography pgp openpgp