【问题标题】:Protecting a file using asymmetric cryptography使用非对称加密保护文件
【发布时间】:2012-01-21 19:57:54
【问题描述】:

我知道非对称加密的工作原理。我知道有两把钥匙(一把私人钥匙和一把公共钥匙)。

当有人想要交流时,他们用这些公钥交换他们的公钥加密消息,然后相应的消息只能由拥有私钥的用户解密。

现在,我正在使用 Node.js,我需要做这样的事情......

我需要一个每小时读取数据库、提取数据并将其保存到需要发送到另一台服务器的文件的应用程序。
我的问题是我不希望该文件对其他人可见,我使用 SSH 进行传输所以没有问题但是 我必须加密该文件,因为我不是该服务器的管理员,所以也许有人可以阅读它。不幸的是,两台服务器的管理员都是相同的。 所以我的想法是用公钥加密文件,然后只有拥有私钥的人(我)才能解密。

我认为使用类似的东西是没有意义的:

var key = 'blablabla'

如果我使用公钥,没有问题,所有人都可以读取它......它确实是公开的。但是有了这个公钥,没有人可以解密消息,所以它是 类似于单向加密。

现在,有人可以告诉我是否需要签名者/验证者来完成这项工作,或者我是否必须使用 openssl 生成两个密钥(公共/私有)并将这些密钥传递给密码器/解密器?

我正在查看加密模块,但没有示例......

【问题讨论】:

    标签: node.js cryptography openssl public-key-encryption


    【解决方案1】:

    一般来说,您的想法是正确的 - 您使用公钥加密并使用您的私钥解密。然而,实际上该过程更复杂。生成随机对称密钥,并使用该密钥对数据进行加密。然后使用公钥对随机密钥进行加密。加密密钥与加密数据一起发送给接收方。另一方面,使用私钥解密加密密钥,然后解密数据。

    您可以使用 OpenPGP 密钥或 X.509 证书来完成这项工作。

    在 OpenPGP 的情况下,该标准将加密和解密作为原子过程(在用户级别)提供。如果是 X.509 证书,您需要使用 PKCS#7 / CMS。

    OpenSSL 库提供使用 PKCS#7 / CMS 的操作,但是当我查看用于 OpenSSL 的 nodeJS API 时,该 API 非常有限,并且没有公开这些功能。也许您可以编写自己的 nodeJS 模块,该模块将与 OpenSSL 接口并提供缺少的功能。

    另一种选择是使用 OpenPGP 密钥和node-gpg 模块。该模块使用 gnupg 来完成实际工作,因此必须安装 gnupg。

    不幸的是,我在 nodeJS wiki 中提供的 3rd-party 模块列表中没有看到任何其他合适的库。

    【讨论】:

    • 使用 OpenPGP 代替 OpenSLL 有没有区别?两者都使用 PKCS#7 / CMS
    • @Dail OpenPGP 与 PKCS#7/CMS 无关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多