我有一个用例,其中我在bash脚本中使用keytool
命令,在该脚本中我以明文格式输入了Keystore密码。类似的东西:
test.sh
#!/bin/bash
keytool -keystore <PATH-TO-KEYSTORE> -storepass <CLEARTEXT-PASSWORD> ...
现在的要求是在脚本中加密这个明文密码,这样就可能不知道实际的Keystore密码。我尝试使用OpenSSL加密默认密码,将其存储在另一个隐藏文件中,并在运行脚本时随时解密密码,但任何有权访问脚本的人都可以查看正在使用的算法,并使用相同的OpenSSL命令解密密码。
我知道keytool需要不惜任何代价解密密码,所以即使密码以任何方式加密,也必须在传递到keytool之前解密,我需要知道是否有任何方法可以只允许我的脚本解密密码,而不允许任何合法的黑客解密。
除非有某种方法可以让运行中的脚本获得黑客无法获得的信息,否则这本质上是不可能的。无论你在脚本中放了什么,黑客都可以在打开跟踪的情况下运行它,手动模拟脚本,或者简单地按照脚本的操作,找出脚本将产生的密钥。
保护这样的密钥需要你有一些黑客无法访问的信息存储。这通常采取硬件安全模块(HSM(的形式,其接口设置为可以执行必要的操作,但密钥材料无法从中提取。这在你的情况下可能是不可能的,也不相关,但你需要一些黑客无法访问的东西。