KEM — 키 캡슐화 메커니즘
KEM — 키 캡슐화 메커니즘
KEM 클래스는 키 캡슐화 메커니즘(Key Encapsulation Mechanism, KEM)의 기능을 제공해요. KEM은 비대칭(공개키) 암호화를 이용해 두 당사자 사이에서 대칭 키를 안전하게 공유하는 데 사용돼요.
본문
KEM의 동작은 다음과 같아요. 송신자는 encapsulate 메서드를 호출해 비밀 키와 키 캡슐화 메시지를 생성하고, 수신자는 decapsulate 메서드를 호출해 키 캡슐화 메시지로부터 같은 비밀 키를 복구해요.
KEM 객체는 변경 불가능(immutable)해요. 같은 KEM 객체에서 여러 newEncapsulator와 newDecapsulator 메서드를 동시에 호출하는 것이 안전해요. 인스턴트화할 때 제공자를 지정하지 않으면 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은 현대 암호학에서 키 교환을 안전하게 수행하는 중요한 도구예요.