我将敏感信息存储在数据库中,该信息通过以下过程:
解密数据:
我想知道的是在这个实例中通过AES-256位运行信息甚至是值得的(因为密钥是脱机的,如果数据受到损害,盐已经存储在表中)?
答案 0 :(得分:3)
Salting对于symetrically加密数据毫无意义,这是你用AES-256得到的。如果有的话,它只是通过在数据中加入一些已知的明文来使任何潜在的破解者的工作变得更容易。毕竟,任何密钥都将“解密”数据,但只有一个密钥会产生原始数据。通过在那里放入一大块已知的明文,您可以更容易地确定所使用的密钥是否有效(“如果密钥有效则是盐文本”)。
如果数据太敏感而你必须采取这些预防措施,当密钥文件实际存储在服务器上时,我会更担心曝光窗口,以及它将留在内存中的痕迹-disk,即使你删除了文件。
答案 1 :(得分:1)
使用与加密数据位于同一位置的密钥加密数据毫无意义。
但是,如果您为每个用户使用单独的公钥/私钥对,这将是一个优势 - 这样,如果私钥泄漏,您只展示您的一个记录而不是所有记录。
顺便说一句,openssl_public_encrypt()
/ openssl_private_decrypt()
实际上并不是正确使用的函数 - 它是一个较低级别的函数,用于加密随机生成的密钥,而不是直接对数据进行操作。正确的更高级别功能是openssl_seal()
/ openssl_open()
。