使用CryptoJS时发送'Secret Passphrase'(密钥/ iv)



我正在使用CryptoJs在上传到服务器之前加密客户端的文件。加密和解密正在起作用,但我的问题是这有多安全。在我的javascript中,我将"秘密密码短语"作为参数传递给加密函数。我用于解密的所有内容也是相同的密码。那么,如果有人可以掌握这个"秘密密码",他们就不能轻易解密数据吗?

Crytpjs:

var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");
var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase");

如果你的要求是上传的文件被加密但对服务器可见,你实际上应该只使用TLS。 没有理由使用其他任何东西。

如果您要求对上传的文件进行加密,以至于即使服务器也无法解密它们,则只需要求用户输入密码,应用 PBKDF2,并使用结果作为密钥。

如果你要保留你当前的代码,有一些事情你应该改变。 目前,您似乎正在使用 ECB 模式(您不提供 IV)。 ECB 模式不安全,不应使用。 此外,您需要一种方法来确保数据在传输过程中未被更改。 您应该应用 HMAC 并将其附加到末尾。

AES是一种用于加密的对称算法。这意味着用于加密和解密的密钥(秘密密码)是相同的。

因此,它的安全性主要取决于保持密钥的安全。如果有人获得了密钥,他们将能够解密使用该密码加密的任何内容。

我通常建议,如果要共享加密数据,则通过一个渠道(电子邮件或云服务器)共享数据,并通过其他渠道(whatsapp,电话等)发送密钥。

通过使用 Javascript 混淆解决。这是屏蔽脚本内容的巧妙方法。

最新更新