如何安全地在线存储敏感数据?
我想在网上将一些极其敏感的信息存储在公共文件夹中,我不知道该怎么做。
具体来说,我想将比特币私钥存储在公用文件夹中名为“walletData.json”的.json文件中。该文件包含明文的钱包地址和公钥,以及私钥的加密版本。
假设任何人都可以访问该文件并尝试使用“超级计算机”破解加密密码,那么安全加密该私钥的最佳方法是什么?
我知道更长的密码是一个好的开始,但理想情况下我不想需要超过10个字符的密码。
我想的可能是将密码哈希1000次,然后使用该哈希+密码作为AES加密密钥。但是,由于每个人都可以看到密钥生成方法,我不确定这会有所帮助吗?我还在考虑用一些其他随机数据填充加密的私钥,但同样,我不知道它是否真的有帮助?
有没有一种安全的方法可以做到这一点?
编辑 - 在Reid的回答之后:
我正在尝试在Javascript / jQuery中100%执行此操作。
当我导出CoinPrism.com钱包时,我明白了:
{ “键”:[{ “地址”: “1PNLiLgW2fBokCB2wmfhZTtbmioitkqtMm”, “PRIV”: “172655af193edeb54467a52fc6eb94c67eeeff8cd03555767e5cf12df694bb88f9c8b25c4019147d9e4993405274c96a”, “encryptionMode”: “PKBDF2-SHA256”, “迭代”:2000}], “盐”:“2222b67fc7255aaf0b4027bfcabffb5e62f39e9e0aa13e8ad70f2dc75a484f26 “}
“priv”值是加密的私钥。我不确切知道它是如何加密的,但我确信有一种方法可以使用我的10个字符密码来解密它。
有谁知道他们是怎么做的?
在线存储此信息是否安全?
答案 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
选项,该选项将单个文件作为参数。该文件的第一行是要使用的密码。