Spring Cloud Config 在客户端解密期间是否使用具有强 RSA 的 AES 密钥

Does Spring Cloud Config use AES key with strong RSA during client side decryption

设置

我配置了一个由本地 Git 存储库支持的 Spring 云配置服务器,并创建了一个 Spring 启动应用程序来使用来自 SCC 的配置。 Git 中的配置文件 scc-client.yml 有两个纯文本属性和一个加密的属性,app.secret:

app:
  name: client-app
  port: 8085
  secret: '{cipher}AgCGh ... X3pTW'

解密在客户端完成:SCC 服务器上的 bootstrap.propertiesspring.cloud.config.server.encrypt.enabled=false 和我的 Spring 启动应用程序的 bootstrap.yml 包含:

...
encrypt:
  keystore:
    location: classpath:keystore.p12
    password: kspass
    alias: client-key
    secret: kspass
  key: client-key
  rsa:
    strong: true
...

keystore.p12 包含用于加密 app.secret 值的密钥。我使用 keytool 生成了密钥:

keytool -genkeypair -alias client-key -keyalg RSA -deststoretype pkcs12 -keystore src/main/resources/keystore.p12 -keysize 4096 -storepass kspass -keypass kspass


问题

在上面的设置中,在客户端解密值时,Spring是否使用混合 RSA 加密方法?

根据代码判断,在 o.s.s.r.c.RsaSecretEncryptor.decrypt() 方法中调用了一些 AES 相关组件,但我不太确定这是否表示完整的 hybrid encryption 以及正在使用的自生成 AES 密钥顺便。

Spring Cloud 确实采用了维基百科 link 中描述的那种类型的混合算法。服务器或命令行客户端对数据进行加密。服务器、命令行客户端或客户端应用程序可以解密它们。请注意,客户端解密通常是最弱的,因为您必须使用与加密器相同的私钥配置它。