安全地存储加密的敏感数据'公开'线上?

时间:2014-06-08 21:48:19

标签: security encryption aes

如何安全地在线存储敏感数据?

我想在网上将一些极其敏感的信息存储在公共文件夹中,我不知道该怎么做。

具体来说,我想将比特币私钥存储在公用文件夹中名为“walletData.json”的.json文件中。该文件包含明文的钱包地址和公钥,以及私钥的加密版本。

假设任何人都可以访问该文件并尝试使用“超级计算机”破解加密密码,那么安全加密该私钥的最佳方法是什么?

我知道更长的密码是一个好的开始,但理想情况下我不想需要超过10个字符的密码。

我想的可能是将密码哈希1000次,然后使用该哈希+密码作为AES加密密钥。但是,由于每个人都可以看到密钥生成方法,我不确定这会有所帮助吗?我还在考虑用一些其他随机数据填充加密的私钥,但同样,我不知道它是否真的有帮助?

有没有一种安全的方法可以做到这一点?

编辑 - 在Reid的回答之后:

我正在尝试在Javascript / jQuery中100%执行此操作。

当我导出CoinPrism.com钱包时,我明白了:

{ “键”:[{ “地址”: “1PNLiLgW2fBokCB2wmfhZTtbmioitkqtMm”, “PRIV”: “172655af193edeb54467a52fc6eb94c67eeeff8cd03555767e5cf12df694bb88f9c8b25c4019147d9e4993405274c96a”, “encryptionMode”: “PKBDF2-SHA256”, “迭代”:2000}], “盐”:“2222b67fc7255aaf0b4027bfcabffb5e62f39e9e0aa13e8ad70f2dc75a484f26 “}

“priv”值是加密的私钥。我不确切知道它是如何加密的,但我确信有一种方法可以使用我的10个字符密码来解密它。

有谁知道他们是怎么做的?

在线存储此信息是否安全?

1 个答案:

答案 0 :(得分:2)

好吧,我会直接说不需要是编写代码来执行此操作的人 - 它太容易搞砸了,你的帖子提出的建议是很关心。 (例如,您描述了一些ad-hoc密钥派生方案,但是保护方案不足。)

因此,您需要某种类型的库来为您处理此业务。

我的建议:使用带有ASCII装甲选项的GPG。例如:

gpg --symmetric --armor --cipher-algo AES file.txt

这将symmetrically encrypt--symmetric)一个文件(此处为file.txt)使用AES密码(--cipher-algo AES)并将生成的加密文件存储在{{3}中}(--armor)。 注意:生成的加密文件将存储在文件名加上扩展名.asc;例如,在这里,它将结果放在file.txt.asc中。您可以使用--output选项更改此选项。

现在,上面的命令将提示你输入密码 - 这个密码需要非常强大,我担心的远远超过10个字符。这是基于密码短语的加密的负担:您需要强大的密码短语。理想情况下,您需要一个长而复杂,难以猜测且难以用力的密码短语。

由于我们在StackOverflow上,您可能希望自动化密码短语条目(使用脚本)。为此,GPG有几个--passphrase相关选项。例如,

gpg --batch --passphrase "test" --symmetric --armor --cipher-algo AES file.txt

将使用密码test而不是提示用户。但是,在系统上,命令行参数并不安全,因此最好使用--passphrase-from-file选项,该选项将单个文件作为参数。该文件的第一行是要使用的密码。