Использует ли Spring Cloud Config ключ AES с сильным RSA во время расшифровки на стороне клиента - PullRequest
0 голосов
/ 14 сентября 2018

SETUP

Я настроил сервер Spring Cloud Config при поддержке локального репозитория Git и создал приложение Spring Boot для использования конфигурации из SCC. Файл конфигурации scc-client.yml в Git имеет два простых текстовых свойства и одно зашифрованное, app.secret:

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

Расшифровка выполняется на стороне клиента: bootstrap.properties на сервере SCC имеет spring.cloud.config.server.encrypt.enabled=false, а bootstrap.yml моего приложения Spring Boot содержит:

...
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 при расшифровке значения на стороне клиента в приведенной выше настройке?

Судя по коду, некоторые связанные с AES компоненты вызываются в методе o.s.s.r.c.RsaSecretEncryptor.decrypt(), но я не совсем уверен, представляет ли это полное гибридное шифрование с самогенерируемым ключом AES, используемым вдоль способ.

1 Ответ

0 голосов
/ 17 сентября 2018

Spring Cloud действительно использует гибридный алгоритм того типа, который описан в ссылке на Википедию. Сервер или клиент командной строки шифрует данные. Сервер, или клиент командной строки, или клиентское приложение могут расшифровать их. Обратите внимание, что дешифрование на стороне клиента, как правило, является самым слабым, поскольку вы должны сконфигурировать его с тем же секретным ключом, что и у энциптора.

...