Spec-Zone.ru › Go

Пакет mlkem

  • import "crypto/mlkem"
  • Обзор
  • Указатель
  • Примеры
  • Подкаталоги

Обзор

Пакет mlkem реализует квантово-устойчивый метод инкапсуляции ключа ML-KEM (ранее известный как Kyber), описанный в NIST FIPS 203.

В большинстве приложений следует использовать набор параметров ML-KEM-768, реализованный в DecapsulationKey768 и EncapsulationKey768.

Пример

Код:

package mlkem_test

import (
    "crypto/mlkem"
    "log"
)

func Example() {
    // Alice generates a new key pair and sends the encapsulation key to Bob.
    dk, err := mlkem.GenerateKey768()
    if err != nil {
        log.Fatal(err)
    }
    encapsulationKey := dk.EncapsulationKey().Bytes()

    // Bob uses the encapsulation key to encapsulate a shared secret, and sends
    // back the ciphertext to Alice.
    ciphertext := Bob(encapsulationKey)

    // Alice decapsulates the shared secret from the ciphertext.
    sharedSecret, err := dk.Decapsulate(ciphertext)
    if err != nil {
        log.Fatal(err)
    }

    // Alice and Bob now share a secret.
    _ = sharedSecret
}

func Bob(encapsulationKey []byte) (ciphertext []byte) {
    // Bob encapsulates a shared secret using the encapsulation key.
    ek, err := mlkem.NewEncapsulationKey768(encapsulationKey)
    if err != nil {
        log.Fatal(err)
    }
    sharedSecret, ciphertext := ek.Encapsulate()

    // Alice and Bob now share a secret.
    _ = sharedSecret

    // Bob sends the ciphertext to Alice.
    return ciphertext
}

Указатель

  • Константы
  • тип DecapsulationKey1024
  • функция GenerateKey1024() (*DecapsulationKey1024, error)
  • функция NewDecapsulationKey1024(seed []byte) (*DecapsulationKey1024, error)
  • функция (dk *DecapsulationKey1024) Bytes() []byte
  • функция (dk *DecapsulationKey1024) Decapsulate(ciphertext []byte) (sharedKey []byte, err error)
  • функция (dk *DecapsulationKey1024) EncapsulationKey() *EncapsulationKey1024
  • функция (dk *DecapsulationKey1024) Encapsulator() crypto.Encapsulator
  • тип DecapsulationKey768
  • функция GenerateKey768() (*DecapsulationKey768, error)
  • функция NewDecapsulationKey768(seed []byte) (*DecapsulationKey768, error)
  • функция (dk *DecapsulationKey768) Bytes() []byte
  • функция (dk *DecapsulationKey768) Decapsulate(ciphertext []byte) (sharedKey []byte, err error)
  • функция (dk *DecapsulationKey768) EncapsulationKey() *EncapsulationKey768
  • функция (dk *DecapsulationKey768) Encapsulator() crypto.Encapsulator
  • тип EncapsulationKey1024
  • функция NewEncapsulationKey1024(encapsulationKey []byte) (*EncapsulationKey1024, error)
  • функция (ek *EncapsulationKey1024) Bytes() []byte
  • функция (ek *EncapsulationKey1024) Encapsulate() (sharedKey, ciphertext []byte)
  • тип EncapsulationKey768
  • функция NewEncapsulationKey768(encapsulationKey []byte) (*EncapsulationKey768, error)
  • функция (ek *EncapsulationKey768) Bytes() []byte
  • функция (ek *EncapsulationKey768) Encapsulate() (sharedKey, ciphertext []byte)

Примеры

Пакет

Файлы пакета

mlkem.go

Константы

const (
    // SharedKeySize is the size of a shared key produced by ML-KEM.
    SharedKeySize = 32

    // SeedSize is the size of a seed used to generate a decapsulation key.
    SeedSize = 64

    // CiphertextSize768 is the size of a ciphertext produced by ML-KEM-768.
    CiphertextSize768 = 1088

    // EncapsulationKeySize768 is the size of an ML-KEM-768 encapsulation key.
    EncapsulationKeySize768 = 1184

    // CiphertextSize1024 is the size of a ciphertext produced by ML-KEM-1024.
    CiphertextSize1024 = 1568

    // EncapsulationKeySize1024 is the size of an ML-KEM-1024 encapsulation key.
    EncapsulationKeySize1024 = 1568
)

тип DecapsulationKey1024 1.24

DecapsulationKey1024 — секретный ключ, используемый для декапсуляции общего ключа из шифротекста. Он содержит различные предварительно вычисленные значения.

type DecapsulationKey1024 struct {
    // contains filtered or unexported fields
}

функция GenerateKey1024 1.24

func GenerateKey1024() (*DecapsulationKey1024, error)

GenerateKey1024 генерирует новый ключ декапсуляции, получая случайные байты из безопасного источника. Ключ декапсуляции необходимо хранить в секрете.

функция NewDecapsulationKey1024 1.24

func NewDecapsulationKey1024(seed []byte) (*DecapsulationKey1024, error)

NewDecapsulationKey1024 разворачивает ключ декапсуляции из 64-байтового начального значения в форме "d || z". Начальное значение должно быть равномерно случайным.

функция (*DecapsulationKey1024) Bytes 1.24

func (dk *DecapsulationKey1024) Bytes() []byte

Bytes возвращает ключ декапсуляции в виде 64-байтового начального значения в форме "d || z".

Ключ декапсуляции необходимо хранить в секрете.

функция (*DecapsulationKey1024) Decapsulate 1.24

func (dk *DecapsulationKey1024) Decapsulate(ciphertext []byte) (sharedKey []byte, err error)

Decapsulate генерирует общий ключ из шифротекста и ключа декапсуляции. Если длина шифротекста неверна, Decapsulate возвращает ошибку. Если длина шифротекста верна, но он недействителен по другим причинам, ошибка не возвращается; вместо этого будет создан общий ключ, не совпадающий с ключом отправителя, согласно FIPS 203.

Общий ключ необходимо хранить в секрете.

функция (*DecapsulationKey1024) EncapsulationKey 1.24

func (dk *DecapsulationKey1024) EncapsulationKey() *EncapsulationKey1024

EncapsulationKey возвращает открытый ключ инкапсуляции, необходимый для создания шифротекстов.

функция (*DecapsulationKey1024) Encapsulator 1.26

func (dk *DecapsulationKey1024) Encapsulator() crypto.Encapsulator

Encapsulator возвращает ключ инкапсуляции, как и DecapsulationKey1024.EncapsulationKey.

Он реализует интерфейс crypto.Decapsulator.

тип DecapsulationKey768 1.24

DecapsulationKey768 — секретный ключ, используемый для декапсуляции общего ключа из шифротекста. Он содержит различные предварительно вычисленные значения.

type DecapsulationKey768 struct {
    // contains filtered or unexported fields
}

функция GenerateKey768 1.24

func GenerateKey768() (*DecapsulationKey768, error)

GenerateKey768 генерирует новый ключ декапсуляции, получая случайные байты из безопасного источника. Ключ декапсуляции необходимо хранить в секрете.

функция NewDecapsulationKey768 1.24

func NewDecapsulationKey768(seed []byte) (*DecapsulationKey768, error)

NewDecapsulationKey768 разворачивает ключ декапсуляции из 64-байтового начального значения в форме "d || z". Начальное значение должно быть равномерно случайным.

функция (*DecapsulationKey768) Bytes 1.24

func (dk *DecapsulationKey768) Bytes() []byte

Bytes возвращает ключ декапсуляции в виде 64-байтового начального значения в форме "d || z".

Ключ декапсуляции необходимо хранить в секрете.

функция (*DecapsulationKey768) Decapsulate 1.24

func (dk *DecapsulationKey768) Decapsulate(ciphertext []byte) (sharedKey []byte, err error)

Decapsulate генерирует общий ключ из шифротекста и ключа декапсуляции. Если длина шифротекста неверна, Decapsulate возвращает ошибку. Если длина шифротекста верна, но он недействителен по другим причинам, ошибка не возвращается; вместо этого будет создан общий ключ, не совпадающий с ключом отправителя, согласно FIPS 203.

Общий ключ необходимо хранить в секрете.

функция (*DecapsulationKey768) EncapsulationKey 1.24

func (dk *DecapsulationKey768) EncapsulationKey() *EncapsulationKey768

EncapsulationKey возвращает открытый ключ инкапсуляции, необходимый для создания шифротекстов.

функция (*DecapsulationKey768) Encapsulator 1.26

func (dk *DecapsulationKey768) Encapsulator() crypto.Encapsulator

Encapsulator возвращает ключ инкапсуляции, как и DecapsulationKey768.EncapsulationKey.

Он реализует интерфейс crypto.Decapsulator.

тип EncapsulationKey1024 1.24

EncapsulationKey1024 — открытый ключ, используемый для создания шифротекстов, которые декапсулируются соответствующим ключом DecapsulationKey1024.

type EncapsulationKey1024 struct {
    // contains filtered or unexported fields
}

функция NewEncapsulationKey1024 1.24

func NewEncapsulationKey1024(encapsulationKey []byte) (*EncapsulationKey1024, error)

NewEncapsulationKey1024 разбирает ключ инкапсуляции из его закодированного представления. Если ключ инкапсуляции недействителен, NewEncapsulationKey1024 возвращает ошибку.

функция (*EncapsulationKey1024) Bytes 1.24

func (ek *EncapsulationKey1024) Bytes() []byte

Bytes возвращает ключ инкапсуляции в виде среза байтов.

функция (*EncapsulationKey1024) Encapsulate 1.24

func (ek *EncapsulationKey1024) Encapsulate() (sharedKey, ciphertext []byte)

Encapsulate генерирует общий ключ и связанный с ним шифротекст на основе ключа инкапсуляции, получая случайные байты из безопасного источника.

Общий ключ необходимо хранить в секрете.

Для тестирования пакет crypto/mlkem/mlkemtest предоставляет детерминированную инкапсуляцию.

тип EncapsulationKey768 1.24

EncapsulationKey768 — открытый ключ, используемый для создания шифротекстов, которые декапсулируются соответствующим ключом DecapsulationKey768.

type EncapsulationKey768 struct {
    // contains filtered or unexported fields
}

функция NewEncapsulationKey768 1.24

func NewEncapsulationKey768(encapsulationKey []byte) (*EncapsulationKey768, error)

NewEncapsulationKey768 разбирает ключ инкапсуляции из его закодированного представления. Если ключ инкапсуляции недействителен, NewEncapsulationKey768 возвращает ошибку.

функция (*EncapsulationKey768) Bytes 1.24

func (ek *EncapsulationKey768) Bytes() []byte

Bytes возвращает ключ инкапсуляции в виде среза байтов.

функция (*EncapsulationKey768) Encapsulate 1.24

func (ek *EncapsulationKey768) Encapsulate() (sharedKey, ciphertext []byte)

Encapsulate генерирует общий ключ и связанный с ним шифротекст на основе ключа инкапсуляции, получая случайные байты из безопасного источника.

Общий ключ необходимо хранить в секрете.

Для тестирования пакет crypto/mlkem/mlkemtest предоставляет детерминированную инкапсуляцию.

Подкаталоги

Название Описание
..
mlkemtest Пакет mlkemtest предоставляет функции тестирования алгоритма ML-KEM.

© Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
http://golang.org/pkg/crypto/mlkem/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API