我正在尝试使用Openssl-RSA编写一个简单的Encryption-Decryption程序。加密数据后,将生成密钥对。如果要解密数据,则需要加密时生成的确切密钥对。
因此,我在哪里以及如何存储此密钥对,以便在可能的情况下可以解密加密的内容?
我正在使用公共密钥进行加密,并使用私钥进行解密。
从技术上讲,您可以将密钥对存储在任意位置,尽管有一些通用的方法可以完成。
如果数据特别敏感并且不需要定期/恒定地使用,则存储私钥的最安全方法是将其存储在闪存驱动器上或打印在保险箱或银行金库中的纸上。(请注意,您可以将公共密钥存储在所需的任何位置-毕竟,这是一条“公共”信息。
如果您需要易于访问的数据,由于每次都需要麻烦地将脱机私钥存储在保险箱或保管库中,通常是不现实的。通常用于密钥存储的常见位置是.ssh
在主目录中命名的文件夹。(这是Linux上的OpenSSL中的默认设置,并且也经常在其他系统上使用。)通常的做法是将密钥存储为两个文件,并用以下方式描述它们的名称:purpose_type
私钥和purpose_type.pub
公钥。例如,如果您使用OpenSSL命令行来创建和RSA密钥识别是你,它会默认在文件存储id_rsa
和id_rsa.pub
在.ssh
目录中。就您而言,您可以将密钥文件命名为mydatastorage_rsa
和mydatastorage_rsa.pub
。
重要提示:如果以这种方式存储私钥,则强烈建议您使用密码来保护它。这样可以防止任何能够访问您文件的人使用您的私钥。最初创建密钥对时,可能会提示您提供密钥密码。如果不是,则可以使用OpenSSL命令行工具将密码短语添加到私钥中。
如果您将要进行大量敏感的加密工作,则可以购买一个硬件密钥库,称为“硬件安全模块”,缩写为“ HSM”,该密钥库用于安全存储私钥。除非您实际在安全/加密行业中工作,否则这几乎肯定是太过分了。还有其他硬件解决方案,包括“智能卡”和“ USB加密令牌”,它们比完整的HSM便宜,但仍然需要对硬件的一些投资,而这些投资可能比您需要的更多。
尽管建议使用密码保护私钥,但是如果需要在服务(例如Web服务器)中进行解密,则可能会遇到问题。在这种情况下,您有三个选择:
虽然第一个是最安全的,但是只有每次手动启动该服务时,才可以使用它。如果需要执行其他两个选项之一,请确保正确保护配置文件(选项2)或私钥(选项3),以防止对其进行访问。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句