Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8305384

KEM: Implementation



    • CSR
    • Resolution: Approved
    • P3
    • 21
    • security-libs
    • None
    • source
    • minimal
    • New feature.
    • Java API
    • SE



      Introduce an API for Key Encapsulation Mechanism (KEM). KEM is an encryption technique for securing symmetric keys using public key cryptography.


      KEM is a modern cryptographic technique that is designed to encrypt symmetric keys using asymmetric or public key cryptography. It is increasing in popularity and will be an important cryptographic mechanism for providing protection against quantum computers. The Java Platform contains a comprehensive set of cryptographic APIs called the Java Cryptography Architecture (JCA), but none of the APIs are a good match for a KEM — see the Alternatives section on this JEP page. It is important that the Java Platform provides a specific API for KEMs.


      A new JCA primitive engine KEM is introduced. Users can instantiate a KEM instance using one of the getInstance methods, and call its newEncapsulator or newDecapsulator to create an encapsulator object (on the sender side) or a decapsulator object (on the receiver side). Then they can call encapsulate or decapsulate on the new objects.

      A KEMSpi class is created for security providers to implement KEM algorithms. A security provider needs to implement the KEMSpi, EncapsulatorSpi, and DecapsulatorSpi interfaces.

      The user API classes and SPI classes are mostly parallel. The major difference is that the user side Encapsulator and Decapsulator classes have a providerName() method that returns the name of the security provider. User side classes also have more overloaded methods for common and special use cases.


      New Java SE APIs

      The attachment kem20230502.txt contains KEM and its inner classes for end user, and KEMSpi and its inner classes for implementors. They are also available online. Only names starting with KEM are uploaded.

      A new security standard name section

      KEM Algorithms

      The algorithm names in this section can be specified when generating an instance of KEM.

      ------------------  ---------------------------------------------------------
      Algorithm Name      Description
      ------------------  ---------------------------------------------------------
      DHKEM               DH-Based KEM as defined in
                          [RFC 9180](https://www.rfc-editor.org/rfc/rfc9180#name-dh-based-kem-dhkem).
      ------------------  ---------------------------------------------------------


        Issue Links



              weijun Weijun Wang
              weijun Weijun Wang
              Sean Mullan
              0 Vote for this issue
              4 Start watching this issue