KEM — 키 캡슐화 메커니즘

KEM — 키 캡슐화 메커니즘

KEM 클래스는 키 캡슐화 메커니즘(Key Encapsulation Mechanism, KEM)의 기능을 제공해요. KEM은 비대칭(공개키) 암호화를 이용해 두 당사자 사이에서 대칭 키를 안전하게 공유하는 데 사용돼요.

출처: Java API Reference

본문

KEM의 동작은 다음과 같아요. 송신자는 encapsulate 메서드를 호출해 비밀 키와 키 캡슐화 메시지를 생성하고, 수신자는 decapsulate 메서드를 호출해 키 캡슐화 메시지로부터 같은 비밀 키를 복구해요.

KEM 객체는 변경 불가능(immutable)해요. 같은 KEM 객체에서 여러 newEncapsulatornewDecapsulator 메서드를 동시에 호출하는 것이 안전해요. 인스턴트화할 때 제공자를 지정하지 않으면 newEncapsulator/newDecapsulator가 서로 다른 제공자의 캡슐레이터를 반환할 수 있어요. KEM.Encapsulator.providerName()KEM.Decapsulator.providerName() 메서드가 선택된 제공자 이름을 반환해요.

주요 클래스와 메서드를 살펴볼게요.

  • KEM getInstance(String algorithm) — 지정된 알고리즘을 구현하는 KEM 객체를 반환해요. NoSuchAlgorithmException, NoSuchProviderException이 발생할 수 있어요.
  • Encapsulator newEncapsulator(PublicKey publicKey, AlgorithmParameterSpec paramSpec, SecureRandom secureRandom) — 공개키로 캡슐레이터를 만들어요.
  • Decapsulator newDecapsulator(PrivateKey privateKey, AlgorithmParameterSpec paramSpec) — 개인키로 디캡슐레이터를 만들어요.
  • Encapsulator.encapsulate() — 공개 키 캡슐화 메시지를 생성해 반환해요.
  • Decapsulator.decapsulate(byte[] encapsulation) — 주어진 키 캡슐화 메시지로부터 비밀 키를 복구해요.

KEM은 현대 암호학에서 키 교환을 안전하게 수행하는 중요한 도구예요.

더 알아보기 (Learn more)