是否可以在客户端使用 AES 加密,在服务器上使用 KMS 加密,因为 KMS 使用 AES?
Can you use AES encryption on client and KMS encryption on server because KMS uses AES?
我需要在客户端使用密钥加密一些文本字符串,然后在服务器端使用与客户端加密相同的密钥解密这个加密的字符串。
据我了解,AWS KMS 是建立在 AES 之上的。
那么我可以在 Javascript 中使用 AES 加密在客户端上使用 CryptoJS 并在服务器上使用 AWS KMS SDK 来解密吗?
这个问题的原因是我可以在客户端(浏览器)端使用 AWS Javascript SDK,但是...我认为 AWS Javascript SDK 可能会占用大量内存。而且我也不想在客户端初始化 AWS 配置等(不确定我是否必须这样做才能仅使用来自 AWS KMS JS SDK 的单个加密功能)。 CryptoJS 看起来更灵活并且内存占用小。它支持 AES。我想将我的任务保持在最低限度...因为这里的主要目标是进行客户端加密,然后使用对称加密在服务器上对其进行解密。
如果这两个实现匹配,那将是巧合。通常它不会匹配,因为 AES 只是加密算法,但是那些加密框架使用的不止于此。因此所有其他算法也必须匹配:
- 使用的密钥派生算法(根据提供的密码创建 AES 密钥)
- 使用的密码模式。有非常不同的密码模式(ECB,CBC,OFB,GCM,......)导致完全不同的密文
- 使用的填充(如果密码模式需要)
只有当这三种算法在客户端和服务器端相同时,您才能使用一种框架加密并使用另一种框架解密。
适用于 JavaScript 的 AWS 加密 SDK 旨在为在 JavaScript 中编写 Web 浏览器应用程序或在 Node.js 中编写 Web 服务器应用程序的开发人员提供客户端加密库。
https://github.com/aws/aws-encryption-sdk-javascript/tree/master/modules/example-browser
我需要在客户端使用密钥加密一些文本字符串,然后在服务器端使用与客户端加密相同的密钥解密这个加密的字符串。
据我了解,AWS KMS 是建立在 AES 之上的。
那么我可以在 Javascript 中使用 AES 加密在客户端上使用 CryptoJS 并在服务器上使用 AWS KMS SDK 来解密吗?
这个问题的原因是我可以在客户端(浏览器)端使用 AWS Javascript SDK,但是...我认为 AWS Javascript SDK 可能会占用大量内存。而且我也不想在客户端初始化 AWS 配置等(不确定我是否必须这样做才能仅使用来自 AWS KMS JS SDK 的单个加密功能)。 CryptoJS 看起来更灵活并且内存占用小。它支持 AES。我想将我的任务保持在最低限度...因为这里的主要目标是进行客户端加密,然后使用对称加密在服务器上对其进行解密。
如果这两个实现匹配,那将是巧合。通常它不会匹配,因为 AES 只是加密算法,但是那些加密框架使用的不止于此。因此所有其他算法也必须匹配:
- 使用的密钥派生算法(根据提供的密码创建 AES 密钥)
- 使用的密码模式。有非常不同的密码模式(ECB,CBC,OFB,GCM,......)导致完全不同的密文
- 使用的填充(如果密码模式需要)
只有当这三种算法在客户端和服务器端相同时,您才能使用一种框架加密并使用另一种框架解密。
适用于 JavaScript 的 AWS 加密 SDK 旨在为在 JavaScript 中编写 Web 浏览器应用程序或在 Node.js 中编写 Web 服务器应用程序的开发人员提供客户端加密库。
https://github.com/aws/aws-encryption-sdk-javascript/tree/master/modules/example-browser