是否有任何用于公钥加密的免费和开源工具,其中私钥只是一个选择的密码?
这是我需要的:
- 我想使用脚本每小时进行一次备份
- 我只想使用开源工具。
- 备份必须加密,
- 我需要能够在没有任何文件的情况下解密它们。
我不能对备份使用对称加密,因为无法在脚本中以明文形式提供密码,并且每次备份密码时都不会询问我(例如,因为当我有 1 个月的假期时,备份需要仍待制作)。
所以我想到了公钥密码学,但我读到的所有工具都将私钥存储在一个文件中。我害怕丢失它,就像所有其他数据一样(这就是我首先要做备份的原因)。想象一下我的磁盘发生了硬件故障,有人偷了它,它被火烧毁了,等等。当然,我有备份,但是没有私钥文件我无法解密它们,现在丢失了!当然,我可以备份我的私钥文件,但我只是不想依靠文件来解密我的数据。
我找到了一个解决方案(至少从数学的角度来看,因为我找不到任何实现它的工具)。假设我有密码。让我们使用以下函数 p2rsapk 生成一对素数 (p1,p2):
(p1,p2) = p2rsapk(password) = {
bits = password as vector of bits
(n1,n2) = split bits into two parts in deterministic way, e.g. just take halves
p1 = find prime based on n1, e.g. lowest prime p1 s.t. p1 > 2^n1-2
p2 = find prime based on n2
}
瞧!我们刚刚获取了一个密码并将其转换为我们的私钥/公钥对。现在我可以用公钥(由脚本使用)加密我的备份,并在不需要任何私钥文件的情况下解密它(因为我的密码是我的私钥,在 p2rsapk 函数的帮助下)。
我还可以将我的公钥发送给朋友,这样他们就可以向我发送加密的消息,我可以从任何地方解密它们,而无需访问我不再需要的私钥文件。
然而,虽然这个想法很简单,但我还没有找到任何实现它的工具。这种方法是否已知?有这方面的工具吗?
编辑:我不能足够强调不依赖文件作为私钥对我来说有多重要。我很清楚将私钥存储在(可能受密码保护的)文件中的方法及其优缺点,并且我承认这是在许多情况下最安全的方法。有许多书籍、教程和手册页描述了如果想要将私钥保存在文件中时如何进行操作。我知道这一点,但是在回答时请记住,严格要求没有用于存储私钥的文件。
EDIT2:我完全了解弱密码的问题。我知道密码是最薄弱的环节,所以请假设我将使用一个安全的密码(至少 50 个字符,包括大小写字母、数字、符号和字典单词)。