Как использовать Ed25519/Curve25519 с SpringBoot для обеспечения безопасности JWK, JWE, JWS и JWT?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Гость
 Как использовать Ed25519/Curve25519 с SpringBoot для обеспечения безопасности JWK, JWE, JWS и JWT?

Сообщение Гость »

tl;dr
  • Необходим ресурс, который обеспечивает и показывает, как использовать эллиптическую кривую под названием Ed25519/Curve25519 вместе с сервером авторизации Spring-Boot.
Цели
  • < br />
  • Использование криптографии эллиптической кривой (EC), предоставляемой Spring-Boot
  • Использование Ed25519 / Curve25519, поскольку он используется «заслуживающими доверия» организациями

    Википедия – Curve25519
  • Вещи, которые используют Ed25519
    Открытый международный проект безопасности приложений (OWASP) – алгоритмы
[*]Необходим для ...
  • Генерация ключей -> JWK
  • Шифрование (и дешифрование) -> JWE
  • Подписание -> JWS
  • Генерация токена -> JWT

Настройка
  • Java: 21
  • Spring Boot: v3.2.x< br />
  • spring-security-oauth2-authorization-server: 1.2.x
Предварительное исследование
< ul>
[*]Spring-Boot внутренне использует библиотеку com.nimbusds.jose (начиная с ~2020 г., ~v5.1).
  • Аналогично вопросы задавались «до 2018 года» (наверное)
  • Поддерживается RSA
  • Эллиптические кривые поддерживаются (как правило)

    Использование «Ed25519 / Curve25519» – неизвестно



Тем не менее, существует несколько классов, которые предлагают EC-функциональность вокруг Ed25519 / Curve25519.
Генерация ключей , совместимо с java.security.KeyPair

Код: Выделить всё

    static KeyPair generateEcKeyPairUsingEd25519() {
KeyPair keyPair;
try {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("Ed25519");
keyPair = keyPairGenerator.generateKeyPair();
} catch (NoSuchAlgorithmException e) {
throw new IllegalStateException("JVM does not support Ed25519 algorithm", e);
}
return keyPair;
}
Интерфейсы также предоставляются

Код: Выделить всё

        import java.security.interfaces.EdECPrivateKey;
import java.security.interfaces.EdECPublicKey;

KeyPair ecKeyPair = generateEcKeyPairUsingEd25519()

EdECPublicKey edEcPublicKey = (EdECPublicKey) ecKeyPair.getPublic();
EdECPrivateKey edEcPrivateKey = (EdECPrivateKey) ecKeyPair.getPrivate();
Обнадеживает
  • Это уже слишком глубоко в кроличьей норе?
  • Использует ли Spring-Boot Ed25519 для JWK, JWE, JWS и JWT без моего ведома?
  • Есть ли подходящий Ed25519/Curve25519 эталонная реализация?
Проблема
Spring Boot: v3.2.x

Код: Выделить всё

org.springframework.boot
spring-boot-starter-oauth2-resource-server
${spring-boot.version}

Насколько мне известно, используемый com.nimbusds.jose.* поддерживает JWK, JWE, JWS и JWT с RSA и для EC в целом.
Пары ключей, показанные выше, могут быть сгенерированы, но, насколько мне известно, их нельзя использовать в приведенном ниже примере.
Пример

Код: Выделить всё

    @Bean
public JwtDecoder jwtDecoder() {
KeyPair keyPair = this.getKeyPair();
RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic();
return NimbusJwtDecoder.withPublicKey(rsaPublicKey).build();
}

@Bean
JwtEncoder jwtEncoder() {
KeyPair keyPair = this.getKeyPair();
RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic();
RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) keyPair.getPrivate();

JWK jwk = new RSAKey.Builder(rsaPublicKey)
.privateKey(rsaPrivateKey).build();

JWKSource jwks = new ImmutableJWKSet(new JWKSet(jwk));
return new NimbusJwtEncoder(jwks);
}
Finally
  • How to use Ed25519 / Curve25519 with SpringBoot for JWK, JWE, JWS and JWT security?


Источник: https://stackoverflow.com/questions/781 ... jwt-securi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»