【问题标题】:Can you use AES encryption on client and KMS encryption on server because KMS uses AES?由于 KMS 使用 AES,您可以在客户端使用 AES 加密,在服务器上使用 KMS 加密吗?
【发布时间】:2017-10-06 18:12:19
【问题描述】:

我需要在客户端使用密钥加密一些文本字符串,然后在服务器端使用用于客户端加密的相同密钥解密此加密字符串。

按照我的理解,AWS KMS 是建立在 AES 之上的。

那么我可以在客户端使用CryptoJS 和服务器上的AWS KMS SDK 在Javascript 中使用AES 加密来解密它吗?

这个问题的原因是我可以在客户端(浏览器)端使用 AWS Javascript SDK,但是......我认为 AWS Javascript SDK 可能会占用大量内存。而且我也不想在客户端初始化 AWS config 等(不确定我是否必须这样做才能仅使用 AWS KMS JS SDK 中的单一加密功能)。 CryptoJS 看起来更流畅,内存占用也更小。它支持AES。我想将我的任务降到最低……因为这里的主要目标是进行客户端加密,然后在服务器上使用对称加密对其进行解密。

【问题讨论】:

    标签: javascript cryptography aes encryption-symmetric aws-kms


    【解决方案1】:

    如果两个实现匹配,那将是巧合。通常它不会匹配,因为 AES 只是加密算法,但是那些加密框架使用的不止这些。因此所有其他算法也必须匹配:

    1. 使用的密钥派生算法(根据提供的密码创建 AES 密钥)
    2. 使用的密码模式。有非常不同的密码模式(ECB、CBC、OFB、GCM,...)导致完全不同的密文
    3. 使用的填充(如果密码模式需要)

    只有当这三种算法在客户端和服务器端相同时,您才能使用一个框架加密并使用另一个框架解密。

    【讨论】:

      【解决方案2】:

      适用于 JavaScript 的 AWS 加密 SDK 旨在为使用 JavaScript 编写 Web 浏览器应用程序或使用 Node.js 编写 Web 服务器应用程序的开发人员提供客户端加密库。

      https://github.com/aws/aws-encryption-sdk-javascript/tree/master/modules/example-browser

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-16
        • 1970-01-01
        • 2019-09-03
        • 2012-01-09
        • 2021-12-07
        相关资源
        最近更新 更多