如何在不同的 PHP 应用程序之间共享一个加密密钥?

信息安全 加密 php 密钥管理
2021-09-11 04:41:47

我正在使用 php-encryption 库来提供两个不同应用程序之间的集成。一方面,我有一个包含所有用户数据的公司应用程序。此应用程序将通过 API 提供一些敏感数据。

另一方面,另一个应用程序将请求一些数据,使用 API。此时,API 正在使用经过身份验证的加密来保证数据的安全。

php-encryption 库的问题是:加密的密钥是随机密钥。我需要保留该密钥,因为其他应用程序必须解密数据。

例子:

加密:

$key = Crypto::createNewRandomKey();

$message = "mymessage";

$ciphertext = Crypto::encrypt($message, $key);

解密:

$decrypted = Crypto::decrypt($ciphertext, $key);

在不同应用程序之间共享密钥或保持相同密钥的最佳方式是什么?

1个回答

正如@schroeder 建议的那样,您应该使用公钥基础设施 (PKI) 在应用程序/服务器之间共享密钥。不建议您自己实现。

有一篇很棒的文章,名为为您的 PHP 项目选择正确的密码库这值得一看。它推荐以下库:

  • 石盐
  • Libsodium(由@NSSec 推荐)
  • PHP 加密
  • Phpseclib(RSA!仅限)

其他需要考虑的:

  • EasyRSA(不是 PKCS#1v1.5!)
  • phpseclib

此外,由于涉及企业应用程序,因此在各自的服务器上制定密钥管理策略(即密钥管理流程和策略、硬件安全模块 (HSM) 的使用等)。您还可以查阅《保护公钥基础设施指南》

祝你的项目好运!