NIST SP 800-227 日本語訳
英語タイトル : Recommendations for Key-Encapsulation Mechanisms日本語タイトル : 鍵カプセル化メカニズムに関する勧告
公開日 : 2025-09-18
原文URL : https://csrc.nist.gov/pubs/sp/800/227/final
翻訳編集 : 自動生成(有志による非公式の日本語訳), 原文取得日 : 2026-09-27, 訳文 : 706 / 706 ブロック
[要約] SP 800-227 は、鍵カプセル化メカニズム(KEM)の基本的な定義、性質、用途を説明し、安全な実装と利用に関する勧告を示す文書です。KEMは2者が公開チャネルを介して共有シークレット鍵を安全に確立するためのアルゴリズム群で、FIPS 140検証済み暗号モジュールでの実装・使用の要件や、耐量子方式と他方式の鍵素材を組み合わせる際の指針も示します。特定のKEMの仕様は定めずFIPS 203などに委ね、現在および将来のKEM標準化を補完するもので、教育的な説明も含んでいます。
NIST Special Publication 800
NIST特別刊行物800
NIST SP 800-227
NIST SP 800-227
Recommendations for Key-Encapsulation
鍵カプセル化に関する勧告
Mechanisms
メカニズム
Gorjan Alagic Elaine Barker Lily Chen Dustin Moody Angela Robinson Hamilton Silberg Noah Waller
Gorjan Alagic、Elaine Barker、Lily Chen、Dustin Moody、Angela Robinson、Hamilton Silberg、Noah Waller
This publication is available free of charge from: https://doi.org/10.6028/NIST.SP.800-227
本刊行物は次のURLから無料で入手できる:https://doi.org/10.6028/NIST.SP.800-227
[NIST のロゴ。公的な標章のため、この非公式サイトには掲載していません。原本 PDF を参照してください。]
NIST Special Publication 800
NIST特別刊行物800
NIST SP 800-227
NIST SP 800-227
Recommendations for Key-Encapsulation
鍵カプセル化に関する勧告
Mechanisms
メカニズム
Gorjan Alagic Elaine Barker Lily Chen Dustin Moody Angela Robinson Hamilton Silberg Noah Waller
Gorjan Alagic、Elaine Barker、Lily Chen、Dustin Moody、Angela Robinson、Hamilton Silberg、Noah Waller
Computer Security Division Information Technology Laboratory
コンピュータセキュリティ部門/情報技術研究所
This publication is available free of charge from: https://doi.org/10.6028/NIST.SP.800-227
本刊行物は次のURLから無料で入手できる:https://doi.org/10.6028/NIST.SP.800-227
September 2025
2025年9月
U.S. Department of Commerce Howard Lutnick, Secretary
米国商務省 Howard Lutnick長官
National Institute of Standards and Technology
米国国立標準技術研究所
Craig Burkhardt, Acting Under Secretary for Standards and Technology and Acting NIST Director
Craig Burkhardt、標準技術担当商務次官代理兼NIST所長代理
Certain commercial equipment, instruments, software, or materials, commercial or non-commercial, are identified in this paper in order to specify the experimental procedure adequately. Such identification does not imply recommendation or endorsement of any product or service by NIST, nor does it imply that the materials or equipment identified are necessarily the best available for the purpose.
本論文では、実験の手順を適切に特定するために、特定の商用の機器、装置、ソフトウェア、または材料(商用・非商用を問わない)を挙げています。こうした記載は、NISTがいかなる製品やサービスも推奨または支持することを意味せず、挙げた材料や機器がその目的に最適であると必ずしも意味するものでもありません。
There may be references in this publication to other publications currently under development by NIST in accordance with its assigned statutory responsibilities. The information in this publication, including concepts and methodologies, may be used by federal agencies even before the completion of such companion publications. Thus, until each publication is completed, current requirements, guidelines, and procedures, where they exist, remain operative. For planning and transition purposes, federal agencies may wish to closely follow the development of these new publications by NIST.
本刊行物では、NISTが割り当てられた法定責任に基づいて現在策定中の他の刊行物を参照している場合があります。本刊行物に含まれる情報(概念および方法論を含む)は、関連する刊行物が完成する前であっても連邦機関が利用できます。したがって、各刊行物が完成するまでは、現行の要件、指針および手順が存在する場合、それらは引き続き有効です。計画および移行のため、連邦機関はNISTによるこれらの新刊行物の策定状況を注意深く確認するとよいです。
Organizations are encouraged to review all draft publications during public comment periods and provide feedback to NIST. Many NIST cybersecurity publications, other than the ones noted above, are available at https://csrc.nist.gov/publications.
組織は、パブリックコメント期間中にすべての草案を確認し、NISTに意見を提出することが推奨されます。上記に記載したものを除くNISTのサイバーセキュリティ刊行物の多くは、https://csrc.nist.gov/publications で入手できます。
Authority This publication has been developed by NIST in accordance with its statutory responsibilities under the Federal Information Security Modernization Act (FISMA) of 2014, 44 U.S.C. § 3551 et seq., Public Law (P.L.) 113-283. NIST is responsible for developing information security standards and guidelines, including minimum requirements for federal information systems, but such standards and guidelines shall not apply to national security systems without the express approval of appropriate federal officials exercising policy authority over such systems. This guideline is consistent with the requirements of the Office of Management and Budget (OMB) Circular A-130.
権限 本刊行物は、2014年連邦情報セキュリティ近代化法(FISMA)44 U.S.C. § 3551以下、Public Law(P.L.)113-283に基づくNISTの法定責任に従って作成されました。NISTは、連邦情報システムの最低要件を含む情報セキュリティ標準およびガイドラインの策定を担います。ただし、これらの標準およびガイドラインは、国家安全保障システムに関する政策権限を行使する適切な連邦当局者の明示的な承認がない限り、国家安全保障システムには適用されません。本ガイドラインは、行政管理予算局(OMB)回章A-130の要件と整合しています。
Nothing in this publication should be taken to contradict the standards and guidelines made mandatory and binding on federal agencies by the Secretary of Commerce under statutory authority. Nor should these guidelines be interpreted as altering or superseding the existing authorities of the Secretary of Commerce, Director of the OMB, or any other federal official. This publication may be used by nongovernmental organizations on a voluntary basis and is not subject to copyright in the United States. Attribution would, however, be appreciated by NIST.
本刊行物のいかなる内容も、法定権限に基づき商務長官が連邦機関に義務付け、拘束力を持たせた標準およびガイドラインに矛盾すると解釈してはなりません。また、本ガイドラインは、商務長官、OMB長官、その他の連邦当局者が持つ既存の権限を変更または置き換えるものと解釈してはなりません。本刊行物は非政府組織が任意に利用でき、米国内で著作権の対象とはなりません。ただし、NISTへの出典表示を歓迎します。
NIST Technical Series Policies Copyright, Use, and Licensing Statements NIST Technical Series Publication Identifier Syntax
NIST技術シリーズの方針、著作権・使用・ライセンスに関する声明、NIST技術シリーズ刊行物識別子の構文
Publication History Approved by the NIST Editorial Review Board on 2025-09-03
刊行履歴 NIST編集審査委員会により2025-09-03に承認
How to cite this NIST Technical Series Publication: Alagic G, Barker EB, Chen L, Moody D, Robinson A, Silberg H, Waller N (2025) Recommendations for Key-Encapsulation Mechanisms. (National Institute of Standards and Technology, Gaithersburg, MD), NIST Special Publication (SP) NIST SP 800-227. https://doi.org/10.6028/NIST.SP.800-227
本NIST技術シリーズ刊行物の引用方法: Alagic G, Barker EB, Chen L, Moody D, Robinson A, Silberg H, Waller N (2025) Recommendations for Key-Encapsulation Mechanisms. (National Institute of Standards and Technology, Gaithersburg, MD), NIST Special Publication (SP) NIST SP 800-227. https://doi.org/10.6028/NIST.SP.800-227
Author ORCID iDs
著者のORCID iD
Gorjan Alagic: 0000-0002-0107-6037
Gorjan Alagic: 0000-0002-0107-6037
Elaine Barker: 0000-0003-0454-0461
Elaine Barker: 0000-0003-0454-0461
Lily Chen: 0000-0003-2726-4279
Lily Chen: 0000-0003-2726-4279
Dustin Moody: 0000-0002-4868-6684
Dustin Moody: 0000-0002-4868-6684
Angela Robinson: 0000-0002-1209-0379
Angela Robinson: 0000-0002-1209-0379
Hamilton Silberg: 0009-0004-4178-8954
Hamilton Silberg: 0009-0004-4178-8954
Noah Waller: 0000-0002-6979-9725
Noah Waller: 0000-0002-6979-9725
Contact Information
連絡先
sp800-227-comments@nist.gov
sp800-227-comments@nist.gov
Additional Information Additional information about this publication is available at https://csrc.nist.gov/pubs/sp/800/227/final, including related content, potential updates, and document history.
追加情報 本刊行物に関する追加情報は、https://csrc.nist.gov/pubs/sp/800/227/final で入手できます。関連コンテンツ、更新の可能性、および文書履歴も掲載しています。
All comments are subject to release under the Freedom of Information Act (FOIA).
すべてのコメントは、情報公開法(FOIA)に基づく公開の対象となります。
Abstract
概要
A key-encapsulation mechanism (KEM) is a set of algorithms that can be used by two parties under certain conditions to securely establish a shared secret key over a public channel. A shared secret key that is established using a KEM can then be used with symmetric-key cryptographic algorithms to perform essential tasks in secure communications, such as encryption and authentication. This document describes the basic definitions, properties, and applications of KEMs. It also provides recommendations for implementing and using KEMs in a secure manner.
鍵カプセル化メカニズム(KEM)は、一定の条件下で2者が公開チャネルを介して共有シークレット鍵を安全に確立するために使用できるアルゴリズム群です。KEMを用いて確立した共有シークレット鍵は、その後、共通鍵暗号アルゴリズムと組み合わせて、暗号化や認証など、安全な通信に不可欠な処理に使用できます。本書では、KEMの基本的な定義、性質、および用途を説明します。また、KEMを安全に実装し使用するための勧告も示します。
Keywords
キーワード
cryptography; encryption; key-encapsulation mechanism; key establishment; public-key cryptography.
暗号技術;暗号化;鍵カプセル化メカニズム;鍵確立;公開鍵暗号
Reports on Computer Systems Technology
コンピュータシステム技術報告書
The Information Technology Laboratory (ITL) at the National Institute of Standards and Technology (NIST) promotes the U.S. economy and public welfare by providing technical leadership for the Nation’s measurement and standards infrastructure. ITL develops tests, test methods, reference data, proof of concept implementations, and technical analyses to advance the development and productive use of information technology. ITL’s responsibilities include the development of management, administrative, technical, and physical standards and guidelines for the cost-effective security and privacy of other than national security-related information in federal information systems. The Special Publication 800-series reports on ITL’s research, guidelines, and outreach efforts in information system security, and its collaborative activities with industry, government, and academic organizations.
米国国立標準技術研究所(NIST)の情報技術研究所(ITL)は、米国の計量・標準基盤に関する技術的リーダーシップを発揮し、米国経済と公共の福祉を促進しています。ITLは、情報技術の発展と生産的な利用を促すため、試験、試験方法、参照データ、概念実証の実装、および技術分析を開発します。ITLの責務には、連邦情報システムにおける国家安全保障関連以外の情報の費用対効果の高いセキュリティとプライバシーのための、管理上、事務上、技術上、および物理的な標準とガイドラインの策定が含まれます。特別刊行物800シリーズは、情報システムセキュリティに関するITLの研究、ガイドライン、普及活動、および産業界、政府、学術機関との協働活動を報告するものです。
Patent Disclosure Notice
特許開示に関する通知
NOTICE: ITL has requested that holders of patent claims whose use may be required for compliance with the guidance or requirements of this publication disclose such patent claims to ITL. However, holders of patents are not obligated to respond to ITL calls for patents and ITL has not undertaken a patent search in order to identify which, if any, patents may apply to this publication.
通知:ITLは、本刊行物のガイダンスまたは要件への準拠に使用が必要となる可能性のある特許請求を保有する者に対し、当該特許請求をITLに開示するよう求めています。ただし、特許保有者はITLによる特許情報の提供要請に回答する義務を負わず、ITLは本刊行物に適用され得る特許の有無を特定するための特許調査を実施していません。
As of the date of publication and following call(s) for the identification of patent claims whose use may be required for compliance with the guidance or requirements of this publication, no such patent claims have been identified to ITL.
刊行日時点で、本刊行物のガイダンスまたは要件への準拠に使用が必要となる可能性のある特許請求の特定を求めましたが、ITLに対して特定された該当する特許請求はありません。
No representation is made or implied by ITL that licenses are not required to avoid patent infringe-ment in the use of this publication.
本刊行物を使用する際に特許侵害を避けるためのライセンスが不要であると、ITLが表明または暗示するものではありません。
Table of Contents
目次
List of Tables
表一覧
List of Figures
図一覧
1. Introduction
1. はじめに
1.1. Background
1.1. 背景
A key-establishment scheme is a set of algorithms that can be used to securely establish a shared secret key between two or more parties. Such a shared secret key can then be used to perform tasks that are suitable for symmetric-key cryptography, such as efficient confidential communication.
鍵確立方式は、2者以上の間で共有シークレット鍵を安全に確立するために使用できるアルゴリズム群です。この共有シークレット鍵は、効率的な機密通信など、共通鍵暗号に適した処理に利用できます。
Many widely deployed key-establishment schemes — including those specified in NIST Spe-cial Publication (SP) 800-56A [1] and SP 800-56B [2] — are vulnerable to cryptographic at-tacks that make use of a large-scale, cryptanalytically relevant quantum computer. In 2016, NIST initiated a process to select and standardize a set of post-quantum key-establishment schemes (i.e., key-establishment schemes that would not be vulnerable to attacks even by cryptanalytically-relevant quantum computers). In response, NIST received feedback from the cryptographic community that the post-quantum key-establishment schemes best suited for standardization and widespread deployment are key-encapsulation mecha-nisms (KEMs). The first KEM standard that resulted from this NIST Post-Quantum Cryptog-raphy (PQC) standardization process was ML-KEM, which is specified in Federal Information Processing Standards (FIPS) publication 203 [3].
NIST特別刊行物(SP)800-56A [1]およびSP 800-56B [2]に規定されたものを含む、多くの広く利用されている鍵確立方式は、大規模で暗号解読上実用的な量子コンピュータを用いた暗号攻撃に対して脆弱です。2016年、NISTは、暗号解読上実用的な量子コンピュータによる攻撃に対しても脆弱でない耐量子鍵確立方式を選定し、標準化するプロセスを開始しました。これに対し、暗号コミュニティから、標準化と広範な導入に最も適している耐量子鍵確立方式は鍵カプセル化メカニズム(KEM)であるとの意見が寄せられました。このNIST耐量子暗号(PQC)標準化プロセスで策定された最初のKEM標準はML-KEMであり、連邦情報処理標準(FIPS)刊行物203 [3]に規定されています。
At the time of the standardization of ML-KEM, NIST had not provided extensive guidelines on the basic definitions, properties, and applications of KEMs. This recommendation is meant to provide these guidelines, supplement the current and future standardization of KEMs, and provide recommendations for implementing and using KEMs in a secure man-ner.
ML-KEMの標準化時点では、NISTはKEMの基本的な定義、性質、および用途について詳細なガイドラインを提示していませんでした。本勧告はこれらのガイドラインを示し、現在および将来のKEM標準化を補完するとともに、KEMを安全に実装し使用するための勧告を示すことを目的とします。
1.2. Scope and Purpose
1.2. 適用範囲および目的
This recommendation provides guidelines on the basic definitions, properties, and appli-cations of KEMs; supplements the current and future standardization of KEMs; and makes some requirements and recommendations for implementing and using KEMs in FIPS 140-validated cryptographic modules. This recommendation also provides guidelines for ven-dors who wish to securely combine keying material produced via approved post-quantum methods with keying material produced via other (potentially quantum-vulnerable) meth-ods.
本勧告は、KEMの基本的な定義、性質、および用途に関するガイドラインを示し、現在および将来のKEM標準化を補完します。また、FIPS 140検証済み暗号モジュールにおけるKEMの実装および使用について、一部の要件と勧告を示します。さらに、承認済みの耐量子方式で生成した鍵素材と、その他の(量子攻撃に脆弱な可能性がある)方式で生成した鍵素材を安全に組み合わせることを希望するベンダー向けのガイドラインも示します。
This recommendation does not discuss how or when to migrate from quantum-vulnerable key-establishment procedures to post-quantum KEMs (see [4]), nor does it provide a spec-ification for any particular KEM. Such specifications will be provided in a FIPS or an SP, such as the specification of ML-KEM in FIPS 203 [3].
本勧告では、量子攻撃に脆弱な鍵確立手順から耐量子KEMへ移行する方法や時期([4]を参照)を扱わず、特定のKEMの仕様も定めません。そのような仕様は、ML-KEMを規定するFIPS 203 [3]など、FIPSまたはSPで示されます。
This recommendation includes explanatory and educational material to aid in the general understanding of KEMs. While SPs typically only include material that pertains to what is approved, this SP describes KEMs both generally and with respect to what is approved. Specific requirements will be clearly noted with “shall” and “must” statements.
本勧告には、KEMの一般的な理解を助ける説明資料および教育資料が含まれます。SPは通常、承認済みの事項に関する内容のみを含みますが、本SPは、KEM全般と承認済みのKEMの両方について説明します。個別の要件は、「shall」および「must」という記述で明示します。
1.3. Requirements
1.3. 要件
Conforming implementations of approved KEMs are required to satisfy all of the requirements below. Requirements that are testable by a Cryptographic Module Validation Program (CMVP) validation lab are enumerated with the prefix “RS,” and requirements that are not testable by a validation lab are enumerated with the prefix “RM.” Each requirement is directly quoted from the corresponding referenced section. Requirements RS6, RS7, RS8, RS10, and RS11 pertain to key confirmation (Sec. 4.4), which is recommended but not required.
承認済みKEMの適合実装は、以下のすべての要件を満たすことが求められます。暗号モジュール検証プログラム(CMVP)の検証試験機関が試験可能な要件には接頭辞「RS」を、検証試験機関が試験できない要件には接頭辞「RM」を付けて列挙します。各要件は、対応する参照元の節から直接引用したものです。要件RS6、RS7、RS8、RS10、およびRS11は鍵確認(4.4節)に関するものであり、鍵確認は推奨されるが必須ではありません。
The following requirements are testable by a CMVP validation lab (i.e., shall statements):
次の要件は、CMVP検証試験機関が試験可能です(すなわち、「shall」を用いて規定されています)。
•RS1 (Section 3.1) KEM implementations shall comply with a specific NIST FIPS or SP that specifies the algorithms of the relevant KEM. For example, a conforming implementation of ML-KEM shall comply with FIPS 203 [3]. 1
•RS1(3.1節)KEMの実装は、当該KEMのアルゴリズムを規定する特定のNIST FIPSまたはSPに準拠しなければなりません。例えば、ML-KEMの適合実装はFIPS 203 [3]に準拠しなければなりません。¹
•RS2 (Section 3.1) KEM implementations shall follow the guidelines given in FIPS 140-3 [5] and associated implementation guidance.
•RS2(3.1節)KEMの実装は、FIPS 140-3 [5]および関連する実装ガイダンスに示された指針に従わなければなりません。
RS3 (Section 3.1) KEM implementations shall use approved components with security strengths that meet or exceed the required strength for each KEM parameter set.
RS3(3.1節)KEMの実装は、各KEMパラメータセットに必要な強度以上のセキュリティ強度を備えた承認済みコンポーネントを使用しなければなりません。
•RS4 (Section 3.1) Random bits shall be generated using approved techniques, as described in the latest revisions of SP 800-90A, SP 800-90B, and SP 800-90C [6–8].
•RS4(3.1節)乱数ビットは、SP 800-90A、SP 800-90B、およびSP 800-90C [6–8]の最新版に記載された承認済みの技法を用いて生成しなければなりません。
RS5 (Section 3.2) Except for random seeds and data that can be easily computed from public information, all intermediate values used in any given KEM algorithm (i.e., KeyGen, Encaps, and Decaps) shall be destroyed before the algorithm terminates.
RS5(3.2節)乱数シードおよび公開情報から容易に計算できるデータを除き、任意のKEMアルゴリズム(すなわち、KeyGen、Encaps、Decaps)で使用されるすべての中間値は、そのアルゴリズムが終了する前に消去しなければなりません。
RS6 (Section 4.2) If an application uses an ephemeral key pair, the key pair shall be used for only one execution of key-establishment via a KEM and shall be destroyed as soon as possible after its use.
RS6(4.2節)アプリケーションが一時鍵ペアを使用する場合、その鍵ペアはKEMによる鍵確立を1回だけ実行するために使用し、使用後できる限り速やかに消去しなければなりません。
•RS7 (Section 4.4.1) When a nonce is used by the decapsulator during key confirmation (as specified herein), a nonce with a bit length that is (at least) equal to the targeted security strength of the KEM key-establishment process shall be used (see Appendix C.2).
•RS7(4.4.1節)鍵確認の際にデカプセル化を行う当事者がノンスを使用する場合(本書の規定による)は、KEMによる鍵確立プロセスの目標セキュリティ強度に(少なくとも)等しいビット長のノンスを使用しなければなりません(付録C.2を参照してください)。
•RS8 (Section 4.4.1) For key confirmation, the MAC algorithm and key-confirmation key used shall have security strengths that are equal to or greater than the desired security strength of the application.
•RS8(4.4.1節)鍵確認では、使用するMACアルゴリズムおよび鍵確認鍵は、アプリケーションに求められるセキュリティ強度以上のセキュリティ強度を備えていなければなりません。
RS9 (Section 4.4.2) The key-confirmation key shall only be used for key confirmation and destroyed after use.
RS9(4.4.2節)鍵確認鍵は鍵確認の目的に限って使用し、使用後に消去しなければなりません。
RS10 (Appendix C.1) When key confirmation requires the use of a MAC algorithm, it shall be an approved MAC algorithm (e.g., HMAC, AES-CMAC, KMAC). In addition, AES-GMAC (specified in [9]) is an approved MAC algorithm and may be used.
RS10(付録C.1)鍵確認でMACアルゴリズムを使用する場合は、承認済みのMACアルゴリズム(例:HMAC、AES-CMAC、KMAC)でなければなりません。さらに、AES-GMAC([9]に規定)も承認済みのMACアルゴリズムであり、使用してもよいです。
RS11 (Appendix C.1) When a MAC tag is used for key confirmation, an entity shall compute the MAC tag on received or derived data using a MAC algorithm with a \(\mathit{MacKey}\) that is determined from a shared secret key.
RS11(付録C.1)鍵確認にMACタグを使用する場合、エンティティは、共有シークレット鍵から決定される \(\mathit{MacKey}\) を持つMACアルゴリズムを用いて、受信データまたは導出データに対するMACタグを計算しなければなりません。
The following requirements are not testable by a CMVP validation lab (i.e., must state-ments):
次の要件はCMVP検証試験機関では試験できません(すなわち、「must」で規定されています)。
RM1 (Section 3.1). Implementations must correctly implement the mathematical functionality of the target KEM. 2
RM1(3.1節)。実装は、対象とするKEMの数学的機能を正しく実装しなければなりません。2
RM2 (Section 4.2) In applications of KEMs, a parameter set with an application-appropriate security strength must be selected (see [10, Section 2.2]).
RM2(4.2節)KEMを利用するアプリケーションでは、そのアプリケーションに適したセキュリティ強度を持つパラメータセットを選択しなければなりません([10, 2.2節]を参照してください)。
RM3 (Section 4.2) If an encapsulating party obtains the static encapsulation key of another party, it must have assurance of the other party’s ownership of the key before or during the execution of key-establishment.
RM3(4.2節)カプセル化を行う当事者が別の当事者の静的カプセル化鍵を取得する場合、鍵確立の実行前または実行中に、相手がその鍵を所有していることの保証を得なければなりません。
RM4 (Section 4.2) The devices used to execute KEM algorithms and store any sensitive data (e.g., decapsulation keys) must be appropriately secured.
RM4(4.2節)KEMアルゴリズムの実行および機微なデータ(例:デカプセル化鍵)の保存に用いる機器は、適切に保護しなければなりません。
RM5 (Section 4.2) The key-establishment process that takes place over the channel used by Alice and Bob must satisfy an application-appropriate notion of integrity.
RM5(4.2節)AliceとBobが使用するチャネルを介して行う鍵確立プロセスは、アプリケーションに適した完全性の概念を満たさなければなりません。
2. Overview of Key-Encapsulation Mechanisms
2. 鍵カプセル化メカニズムの概要
This section provides a high-level overview of KEMs, which are collections of mathematical functions (some of which include random inputs) and data that specify parameters. Section 3 describes how to implement a KEM as a collection of computer programs, and Sec. 4 describes how to deploy KEMs in applications.
本節では、KEMの概要を示します。KEMは、数学的関数(一部はランダムな入力を含む)とパラメータを規定するデータの集合です。3節ではKEMをコンピュータプログラム群として実装する方法を、4節ではKEMをアプリケーションに導入する方法を説明します。
2.1. Overview and Motivation
2.1. 概要と動機
Modern symmetric-key cryptography provides a wide range of useful functionalities, including secure and highly efficient computation and communication. Before symmetric-key cryptography can be used, the participating parties need to establish a shared secret (i.e., symmetric) key. One approach to establishing such a key is over a public communication channel. Any algorithmic method that establishes a shared secret key over a public channel is called a key-establishment scheme. A general key-establishment scheme can require multiple rounds of communication and involve any number of parties.
現代の共通鍵暗号は、安全で非常に効率的な計算や通信など、幅広い有用な機能を提供します。共通鍵暗号を使用する前に、参加する当事者は共有シークレット鍵(すなわち共通鍵)を確立する必要があります。そのような鍵を確立する方法の一つは、公開通信路を介する方法です。公開通信路を介して共有シークレット鍵を確立するアルゴリズム的な方法はすべて、鍵確立方式と呼ばれます。一般的な鍵確立方式では、複数回の通信ラウンドが必要になる場合があり、任意の数の当事者が関与し得ます。
A KEM is a specific type of key-establishment scheme. Typical key establishment via a KEM involves two parties (here referred to as Alice and Bob) and consists of the following three stages (see Fig. 1):
KEMは、特定の種類の鍵確立方式です。KEMによる一般的な鍵確立では、2者(ここではAliceとBobと呼ぶ)が次の3段階を実行します(図1を参照してください)。
1.(Key generation) Alice generates a (private) decapsulation key and a (public) encapsulation key.
1.(鍵生成)Aliceは、(秘密の)デカプセル化鍵と(公開の)カプセル化鍵を生成します。
2.(Encapsulation) Bob uses Alice’s encapsulation key to generate a shared secret key and an associated ciphertext. The ciphertext is sent to Alice.
2.(カプセル化)BobはAliceのカプセル化鍵を使って共有シークレット鍵と、それに対応する暗号文を生成します。暗号文はAliceに送信されます。
3.(Decapsulation) Alice uses the ciphertext and her decapsulation key to compute another copy of the shared secret key.
3.(デカプセル化)Aliceは、暗号文と自身のデカプセル化鍵を使って、共有シークレット鍵のもう一つのコピーを計算します。
Security of KEMs. When a KEM is used as in Fig. 1, the result should be a shared secret key that is random, unknown to adversaries, and identical for Alice and Bob with high probability. Ensuring that security holds in practice is a complex task that relies on three conditions:
KEMの安全性。図1のようにKEMを使用した場合、ランダムで、攻撃者には分からず、高い確率でAliceとBobにとって同一となる共有シークレット鍵が得られるべきです。実環境で安全性を確保するのは複雑な作業であり、次の3条件に依存します。
1.Theoretical security: Selecting a KEM that is well-defined, correct, and satisfies an application-appropriate mathematical notion of security (see Sec. 2.2 and 2.3)
1.理論的安全性:適切に定義され、正しく動作し、アプリケーションに適した数学的な安全性の概念を満たすKEMを選ぶこと(2.2節および2.3節を参照してください)。
2.Implementation security: Implementing the selected KEM in a real-world algorithm (e.g., a collection of routines) in a secure manner (see Sec. 3)
2.実装の安全性:選択したKEMを、実際のアルゴリズム(例:一連のルーチン)として安全に実装すること(3節を参照してください)。
3.Deployment security: Deploying the implemented KEM in a manner that is secure for the relevant application and using the shared secret key in a secure manner (see Sec. 4.2)
3.導入時の安全性:実装したKEMを該当アプリケーションに適した安全な方法で導入し、共有シークレット鍵も安全に使用すること(4.2節を参照してください)。
Each of these three conditions is essential for security. For example, a KEM that is theoretically secure (i.e., satisfies condition 1) but is implemented without side-channel countermeasures (i.e., does not satisfy condition 2) or is deployed on a device with physical vulnerabilities (i.e., does not satisfy condition 3) is likely to be insecure in practice.
これら3つの条件はいずれもセキュリティに不可欠です。例えば、理論上は安全である(すなわち条件1を満たす)KEMであっても、サイドチャネル対策なしで実装されている場合(すなわち条件2を満たさない場合)や、物理的な脆弱性のある装置上で導入されている場合(すなわち条件3を満たさない場合)は、実際には安全でない可能性が高いです。
Fig. 1. Outline of key establishment using a KEM
図1. KEMを用いた鍵確立の概要
History and development. KEMs were first introduced by Cramer and Shoup [11, 12] as a building block for constructing highly efficient public-key encryption (PKE) schemes. Their approach combines a KEM with a data encryption mechanism (DEM), which is simply a symmetric-key encryption scheme. The KEM is used to generate a shared secret key, while the DEM is used to encrypt an arbitrarily long stream of messages under that key. This is commonly referred to as the KEM/DEM paradigm (see the HPKE example in Sec. 5.2.1). This approach to constructing highly efficient public-key encryption has been the subject of several standards [1, 2, 11, 13–16]. Most recently, KEMs have attracted significant attention due to most of the post-quantum key-establishment candidates in the NIST PQC standardization process being KEMs. This ongoing process has produced one KEM standard so far — ML-KEM in FIPS 203 [3] — with more KEM standards likely to follow.
経緯と発展。KEMは、非常に効率的な公開鍵暗号(PKE)方式を構築するための構成要素として、CramerとShoup [11, 12]により最初に導入されました。彼らの方法は、KEMとデータ暗号化メカニズム(DEM)を組み合わせるものであり、DEMは単に共通鍵暗号方式です。KEMは共有シークレット鍵の生成に使用し、DEMはその鍵の下で任意の長さのメッセージ列を暗号化するために使用します。これは一般にKEM/DEMパラダイムと呼ばれます(5.2.1節のHPKEの例を参照してください)。非常に効率的な公開鍵暗号を構築するこの方法は、複数の標準の主題となってきました [1, 2, 11, 13–16]。最近では、NIST PQC標準化プロセスにおける耐量子鍵確立の候補の大半がKEMであることから、KEMが大きな注目を集めています。この進行中のプロセスでこれまでに生まれたKEM標準は、FIPS 203 [3]のML-KEMの1つであり、今後さらに多くのKEM標準が続く見込みです。
2.2. Basic Definitions and Examples
2.2. 基本的な定義と例
This section establishes the basic definitions and properties of KEMs. Note that probabilistic algorithms require randomness, while deterministic algorithms do not.
本節では、KEMの基本的な定義と性質を確立します。確率的アルゴリズムには乱数が必要であり、決定的アルゴリズムには必要ないことに注意されました。
Definition 1. A KEM denoted by \(\Pi\) consists of the following four components:
定義1. \(\Pi\) で表されるKEMは、次の4つの要素から構成されます。
1. \(\Pi.\mathsf{ParamSets}\) (parameters): A collection of parameter sets
1. \(\Pi.\mathsf{ParamSets}\)(パラメータ):パラメータセットの集合
2. \(\Pi.\mathsf{KeyGen}\) (key-generation algorithm): An efficient probabilistic algorithm that accepts a parameter set \(p \in \Pi.\mathsf{ParamSets}\) as input and produces an encapsulation key \(\mathsf{ek}\) and a decapsulation key \(\mathsf{dk}\) as output
2. \(\Pi.\mathsf{KeyGen}\)(鍵生成アルゴリズム):パラメータセット \(p \in \Pi.\mathsf{ParamSets}\) を入力として受け取り、カプセル化鍵 \(\mathsf{ek}\) およびデカプセル化鍵 \(\mathsf{dk}\) を出力する、効率的な確率的アルゴリズム
3. \(\Pi.\mathsf{Encaps}\) (encapsulation algorithm): An efficient probabilistic algorithm that accepts a parameter set \(p \in \Pi.\mathsf{ParamSets}\) and an encapsulation key \(\mathsf{ek}\) as input and produces a shared secret key \(K\) and a ciphertext \(c\) as output
3. \(\Pi.\mathsf{Encaps}\)(カプセル化アルゴリズム):パラメータセット \(p \in \Pi.\mathsf{ParamSets}\) とカプセル化鍵 \(\mathsf{ek}\) を入力として受け取り、共有シークレット鍵 \(K\) と暗号文 \(c\) を出力する、効率的な確率的アルゴリズム
4. \(\Pi.\mathsf{Decaps}\) (decapsulation algorithm): An efficient deterministic algorithm that accepts a parameter set \(p \in \Pi.\mathsf{ParamSets}\), a decapsulation key \(\mathsf{dk}\), and a ciphertext \(c\) as input and produces a shared secret key \(K'\) as output
4. \(\Pi.\mathsf{Decaps}\)(デカプセル化アルゴリズム):パラメータセット \(p \in \Pi.\mathsf{ParamSets}\)、デカプセル化鍵 \(\mathsf{dk}\)、および暗号文 \(c\) を入力として受け取り、共有シークレット鍵 \(K'\) を出力する、効率的な決定論的アルゴリズム
As this section views KEMs purely as mathematical objects, the labels \(p\), \(\mathsf{ek}\), \(\mathsf{dk}\), \(c\), \(K\), and \(K'\) in Definition 1 are viewed as abstract variables that represent, for example, numbers or bit strings. In implementations, these variables will be represented with concrete data types (see Sec. 3).
本節ではKEMを純粋に数学的対象として扱うため、定義1におけるラベル \(p\)、\(\mathsf{ek}\)、\(\mathsf{dk}\)、\(c\)、\(K\)、および \(K'\) は、例えば数値やビット列を表す抽象変数とみなします。実装では、これらの変数を具体的なデータ型で表現します(3節を参照)。
In general, Definition 1 only requires some very basic properties from the four components that make up a KEM (see Example 1 below). In order to be useful and secure, a KEM should fulfill a number of additional properties. The first such property is correctness of the KEM algorithm. Correctness ensures that, in an ideal setting, the process in Fig. 1 almost always produces the same shared secret key value for both parties.
一般に、定義1ではKEMを構成する4要素にごく基本的な性質だけを求めます(下記の例1を参照してください)。KEMを有用かつ安全なものにするには、さらにいくつかの性質を満たすべきです。最初の性質はKEMアルゴリズムの正しさです。正しさにより、理想的な状況では、図1のプロセスによって両者にほぼ常に同じ共有シークレット鍵の値が生成されます。
Definition 2. The key-encapsulation correctness experiment for a KEM \(\Pi\) and parameter set \(p \in \Pi.\mathsf{ParamSets}\) consists of the following three steps:
定義2. KEM \(\Pi\) およびパラメータセット \(p \in \Pi.\mathsf{ParamSets}\) に対する鍵カプセル化の正しさ実験は、次の3ステップから成ります。
1.
1.
2.
2.
3.
3.
The KEM \(\Pi\) is correct if, for all \(p \in \Pi.\mathsf{ParamSets}\), the correctness experiment for \(p\) results in \(K = K'\) with all but negligible probability.
KEM \(\Pi\) が正しいとは、すべての \(p \in \Pi.\mathsf{ParamSets}\) について、\(p\) に対する正しさ実験の結果が、無視できる確率を除いて \(K = K'\) となることをいいます。
Recall that \(\Pi.\mathsf{KeyGen}\) and \(\Pi.\mathsf{Encaps}\) are probabilistic algorithms. When they are invoked as above (i.e., \(\Pi.\mathsf{KeyGen}\) with only a parameter set as input, and \(\Pi.\mathsf{Encaps}\) with only a parameter set and encapsulation key as input), it is implied that their randomness is generated internally and uniformly at random. If one wishes to explicitly refer to the randomness used by these algorithms, then the following expressions can be used:
\(\Pi.\mathsf{KeyGen}\) と \(\Pi.\mathsf{Encaps}\) は確率的アルゴリズムであることを思い出されました。上記のように呼び出す場合(すなわち、\(\Pi.\mathsf{KeyGen}\) にはパラメータセットだけを入力し、\(\Pi.\mathsf{Encaps}\) にはパラメータセットとカプセル化鍵だけを入力する場合)、それらの乱数は内部で一様ランダムに生成されることが含意されます。これらのアルゴリズムが使用する乱数を明示的に示したい場合は、次の表記を使用できます。
Key generation (using randomness \(r\)):
鍵生成(乱数 \(r\) を使用):
Encapsulation (using randomness \(s\)):
カプセル化(乱数 \(s\) を使用):
These expressions can, for example, refer to the process of re-expanding a key pair \((\mathsf{ek},\mathsf{dk})\) by running \(\mathsf{KeyGen}\) using a stored seed \(r\).
これらの表記は、例えば鍵ペア \((\mathsf{ek},\mathsf{dk})\) を、\(\mathsf{KeyGen}\) を保存済みのシード \(r\) を使って実行することで再展開するプロセスを示す場合に使用できます。
The following two simple but instructive examples show abstract KEMs that satisfy Defini-tion 1 and Definition 2.
次の2つの簡単ながら示唆に富む例は、定義1および定義2を満たす抽象的なKEMを示します。
Example 1: Simple but insecure. As the following example shows, a correct and efficient KEM can still be completely insecure. Define a KEM DONOTUSE as follows:
例1:単純だが安全ではありません。次の例が示すように、正しく効率的なKEMであっても、完全に安全でない場合があります。以下のDONOTUSEというKEMを定義します。
• \(\mathsf{DONOTUSE}.\mathsf{ParamSets}\): Contains a single, empty parameter set
• \(\mathsf{DONOTUSE}.\mathsf{ParamSets}\):空のパラメータセットを1つ含む
• \(\mathsf{DONOTUSE}.\mathsf{KeyGen}\): On randomness \(r\), outputs \(\mathsf{dk} := r\) and \(\mathsf{ek} := r\)
• \(\mathsf{DONOTUSE}.\mathsf{KeyGen}\):乱数 \(r\) を受け取り、\(\mathsf{dk} := r\) および \(\mathsf{ek} := r\) を出力する
• \(\mathsf{DONOTUSE}.\mathsf{Encaps}\): On input \(\mathsf{ek}\) and randomness \(s\), outputs \(K := s\) and \(c := s\)
• \(\mathsf{DONOTUSE}.\mathsf{Encaps}\):\(\mathsf{ek}\) と乱数 \(s\) を入力として受け取り、\(K := s\) および \(c := s\) を出力する
• \(\mathsf{DONOTUSE}.\mathsf{Decaps}\): On input \(\mathsf{dk}\) and \(c\), outputs \(K' := c\)
• \(\mathsf{DONOTUSE}.\mathsf{Decaps}\):\(\mathsf{dk}\) と \(c\) を入力として受け取り、\(K' := c\) を出力する
While \(\mathsf{DONOTUSE}\) is obviously a correct KEM since \(K'\) always equals \(K\), it is also completely insecure since the shared secret key \(K\) is transmitted in plaintext. This shows that a KEM needs to satisfy additional properties in order to be secure (see Sec. 2.3).
\(\mathsf{DONOTUSE}\) は、\(K'\) が常に \(K\) と等しいため明らかに正しいKEMです。しかし、共有シークレット鍵 \(K\) が平文で送信されるため、完全に安全ではありません。この例は、KEMが安全であるためには追加の性質を満たす必要があることを示しています(2.3節を参照)。
Example 2: Key transport using PKE. The following is a simple construction of a KEM from any PKE scheme. A PKE scheme consists of a collection \(\mathsf{PKE}.\mathsf{ParamSets}\) of parameter sets and three algorithms: key generation \(\mathsf{PKE}.\mathsf{KeyGen}\) (that accepts a parameter set), encryption \(\mathsf{PKE}.\mathsf{Encrypt}\) (that accepts a parameter set, an encryption key, and a plaintext), and decryption \(\mathsf{PKE}.\mathsf{Decrypt}\) (that accepts a parameter set, a decryption key, and a ciphertext). One can construct a KEM \(\mathsf{KEMFROMPKE}\) from the PKE scheme as follows:
例2:PKEを用いた鍵配送。任意のPKE方式からKEMを構成する簡単な方法を示します。PKE方式は、パラメータセットの集合 \(\mathsf{PKE}.\mathsf{ParamSets}\) と、3つのアルゴリズムから成ります。すなわち、鍵生成 \(\mathsf{PKE}.\mathsf{KeyGen}\)(パラメータセットを受け取る)、暗号化 \(\mathsf{PKE}.\mathsf{Encrypt}\)(パラメータセット、暗号化鍵および平文を受け取る)、ならびに復号 \(\mathsf{PKE}.\mathsf{Decrypt}\)(パラメータセット、復号鍵および暗号文を受け取る)です。このPKE方式から、次のようにKEM \(\mathsf{KEMFROMPKE}\) を構成できます。
• \(\mathsf{KEMFROMPKE}.\mathsf{ParamSets} = \mathsf{PKE}.\mathsf{ParamSets}\)
• \(\mathsf{KEMFROMPKE}.\mathsf{ParamSets} = \mathsf{PKE}.\mathsf{ParamSets}\)
• \(\mathsf{KEMFROMPKE}.\mathsf{KeyGen} = \mathsf{PKE}.\mathsf{KeyGen}\)
• \(\mathsf{KEMFROMPKE}.\mathsf{KeyGen} = \mathsf{PKE}.\mathsf{KeyGen}\)
• \(\mathsf{KEMFROMPKE}.\mathsf{Encaps}\): On input \(p\), \(\mathsf{ek}\) and randomness \(s\), output key \(K := s\) and ciphertext \(c \leftarrow \mathsf{PKE}.\mathsf{Encrypt}(p,\mathsf{ek},s)\).
• \(\mathsf{KEMFROMPKE}.\mathsf{Encaps}\):\(p\)、\(\mathsf{ek}\)、および乱数 \(s\) を入力として受け取り、鍵 \(K := s\) と暗号文 \(c \leftarrow \mathsf{PKE}.\mathsf{Encrypt}(p,\mathsf{ek},s)\) を出力します。
• \(\mathsf{KEMFROMPKE}.\mathsf{Decaps}\): On input \(p\), \(\mathsf{dk}\), and \(c\), output key \(K' := \mathsf{PKE}.\mathsf{Decrypt}(p,\mathsf{dk},c)\).
• \(\mathsf{KEMFROMPKE}.\mathsf{Decaps}\):\(p\)、\(\mathsf{dk}\)、および \(c\) を入力として受け取り、鍵 \(K' := \mathsf{PKE}.\mathsf{Decrypt}(p,\mathsf{dk},c)\) を出力します。
The efficiency, correctness, and security properties of \(\mathsf{KEMFROMPKE}\) depend on the respective properties of \(\mathsf{PKE}\).
\(\mathsf{KEMFROMPKE}\) の効率性、正しさ、および安全性に関する性質は、\(\mathsf{PKE}\) の対応する性質に依存します。
KEM examples. Section 5.1 briefly discusses three additional examples of KEMs:
KEMの例。5.1節では、次の3つのKEM例を簡潔に説明します。
1.ECDH-KEM is a quantum-insecure KEM based on ECDH key exchange (see Sec. 5.1.1).
1.ECDH-KEMは、ECDH鍵交換に基づく、量子攻撃に脆弱なKEMです(5.1.1節を参照してください)。
2.RSASVE-KEM is a quantum-insecure example of RSA key transport (see Sec. 5.1.2).
2.RSASVE-KEMは、RSA鍵配送の量子攻撃に脆弱な例です(5.1.2節を参照してください)。
3.ML-KEM is a lattice-based, NIST-approved post-quantum KEM (see Sec. 5.1.3).
3.ML-KEMは格子に基づく、NIST承認済みの耐量子KEMです(5.1.3節を参照してください)。
ECDH-KEM and RSASVE-KEM are based on NIST-standardized key-establishment schemes that can easily be viewed as KEMs. ML-KEM is the first key-establishment scheme to be standardized by NIST directly as a KEM.
ECDH-KEMとRSASVE-KEMは、NIST標準化済みの鍵確立方式に基づいており、KEMとして容易に捉えることができます。ML-KEMは、NISTがKEMとして直接標準化した最初の鍵確立方式です。
A remark on key transport and key agreement. There are various ways to categorize two-party key-establishment schemes. One particular categorization distinguishes between key agreement and key transport. In key agreement (e.g., a Diffie-Hellman key exchange), both parties contribute information that influences the final shared secret key so that neither party can predetermine it. In key transport (e.g., RSA-OAEP [2]), one party selects the key and then transmits it (in some form) to the other party.
鍵配送と鍵共有について。2者間の鍵確立方式を分類する方法はいくつかあります。特定の分類では、鍵共有と鍵配送を区別します。鍵共有(例:Diffie-Hellman鍵交換)では、両者が最終的な共有シークレット鍵に影響を与える情報を提供するため、いずれの当事者も鍵を事前に決定できません。鍵配送(例:RSA-OAEP [2])では、一方の当事者が鍵を選択し、その後、何らかの形式で他方に送信します。
Depending on the internal structure of the encapsulation function, a KEM could be viewed as either a key-agreement scheme or a key-transport scheme. For example, the shared secret key in ML-KEM [3] is a function of both the randomness provided by Bob and the (randomly generated) encapsulation key of Alice. Therefore, ML-KEM could be viewed as a key-agreement scheme. However, as the example \(\mathsf{KEMFROMPKE}\) shows, the encapsulation operation in a KEM might simply consist of Bob generating the shared secret key and then encrypting it, which is key transport.
カプセル化関数の内部構造によっては、KEMを鍵共有方式または鍵配送方式のいずれかとみなすことができます。例えば、ML-KEM [3]の共有シークレット鍵は、Bobが与える乱数とAliceの(ランダムに生成された)カプセル化鍵の両方の関数です。したがって、ML-KEMは鍵共有方式とみなすことができます。一方、例の \(\mathsf{KEMFROMPKE}\) が示すように、KEMのカプセル化操作は、Bobが共有シークレット鍵を生成してから暗号化するだけの場合があり、これは鍵配送に当たります。
An application can achieve a particular type of key establishment (i.e., key agreement or key transport) using any KEM by taking appropriate additional steps using standard symmetric-key cryptography techniques. That is, given a KEM \(\Pi\), Alice and Bob can achieve key agreement by both executing \(\Pi.\mathsf{KeyGen}\), sending the encapsulation keys to each other, and completing the steps of key establishment using a KEM. This will result in two separate shared secret keys that can be combined using an appropriate key-derivation method. Conversely, \(\Pi\) can be used to achieve key transport by following the steps in Fig. 7 and replacing \(m\) with the shared secret key produced by \(\Pi\).
アプリケーションは、標準的な共通鍵暗号技法による適切な追加手順を実行することで、任意のKEMを使って特定の種類の鍵確立(すなわち、鍵共有または鍵配送)を実現できます。KEM \(\Pi\) が与えられたとき、AliceとBobはそれぞれ \(\Pi.\mathsf{KeyGen}\) を実行し、カプセル化鍵を相互に送り合い、KEMによる鍵確立の手順を完了することで鍵共有を実現できます。この方法では2つの別々の共有シークレット鍵が得られ、適切な鍵導出方法で結合できます。逆に、\(\Pi\) は、図7の手順に従い、\(m\) を \(\Pi\) によって生成された共有シークレット鍵に置き換えることで、鍵配送に使用できます。
2.3. Theoretical Security of KEMs
2.3. KEMの理論的安全性
This section discusses the theoretical security of KEMs. Section 3 discusses KEM imple-mentation security, and Sec. 4.2 discusses the secure deployment of KEMs.
本節ではKEMの理論的安全性を扱います。3節ではKEM実装の安全性を、4.2節ではKEMの安全な導入を扱います。
Semantic security. Informally speaking, a secure key-establishment procedure produces a shared secret key \(K\) that is uniformly random and unknown to adversaries. This property should hold despite the fact that adversaries can freely observe the messages transmitted by Alice and Bob. In the case of KEMs, the encapsulation key \(\mathsf{ek}\) and ciphertext \(c\) should reveal no information about the resulting shared secret key \(K\) or the decapsulation key \(\mathsf{dk}\). Moreover, even adversaries who somehow learn some partial information (e.g., if the first half of \(K\) is accidentally leaked) should not be able to combine that information with \(\mathsf{ek}\) and \(c\) to learn more (e.g., the last bit of \(K\)). This informal notion of security can be rigorously formalized, and the resulting definition is called semantic security [17].
意味的安全性。直観的には、安全な鍵確立手順によって、一様ランダムで攻撃者には分からない共有シークレット鍵 \(K\) が生成されます。この性質は、攻撃者がAliceとBobの間で送信されるメッセージを自由に観察できても成立する必要があります。KEMの場合、カプセル化鍵 \(\mathsf{ek}\) と暗号文 \(c\) から、生成された共有シークレット鍵 \(K\) やデカプセル化鍵 \(\mathsf{dk}\) に関する情報が漏れてはなりません。さらに、例えば \(K\) の前半が誤って漏えいするなどして攻撃者が何らかの部分情報を得ても、その情報を \(\mathsf{ek}\) および \(c\) と組み合わせて、例えば \(K\) の最後のビットなど、さらに情報を得ることができてはなりません。この直観的な安全性の概念は厳密に形式化でき、その結果得られる定義を意味的安全性と呼びます[17]。
Passive adversaries and IND-CPA. The formal way to define semantic security for KEMs involves an imaginary “ciphertext indistinguishability” experiment (see Fig. 2). In this experiment, an adversary is given an encapsulation key \(\mathsf{ek}\), a ciphertext \(c\), and either the true shared secret key underlying \(c\) or a freshly generated random string. The adversary’s goal is to distinguish between these scenarios, and they are free to use \(\mathsf{ek}\) to generate their own encapsulations to help them in this task. This experiment is called “indistinguishable under chosen-plaintext attack” (IND-CPA) [17].
受動的攻撃者とIND-CPA。KEMの意味的安全性を形式的に定義する方法として、架空の「暗号文識別不能性」実験を用います(図2を参照)。この実験では、攻撃者にカプセル化鍵 \(\mathsf{ek}\) と暗号文 \(c\) が与えられ、さらに \(c\) に対応する真の共有シークレット鍵、または新たに生成したランダム文字列のいずれかが与えられます。攻撃者の目的はこの2つの状況を見分けることであり、そのために \(\mathsf{ek}\) を用いて自らカプセル化を行うこともできます。この実験を「選択平文攻撃に対する識別不能性」(IND-CPA)と呼びます[17]。
Challenger:
チャレンジャー:
Adversary:
攻撃者:
output WIN iff \(b = b'\).
\(b = b'\) の場合に限り、WINを出力します。
Fig. 2. The IND-CPA security experiment for a KEM \(\Pi\)
図2. KEM \(\Pi\) のIND-CPA安全性実験
Definition 3 (IND-CPA, informal). A KEM \(\Pi\) has indistinguishable ciphertexts (or is IND-CPA) if, for every computationally bounded adversary \(\mathcal{A}\), the difference between the probability that \(\mathcal{A}\) wins the experiment \(\text{IND-CPA}[\Pi]\) and \(1/2\) is negligible.
定義3(IND-CPA、非形式的)。KEM \(\Pi\) が暗号文識別不能である(またはIND-CPAである)とは、計算能力が制限されたすべての攻撃者 \(\mathcal{A}\) について、\(\mathcal{A}\) が実験 \(\text{IND-CPA}[\Pi]\) で勝つ確率と \(1/2\) との差が無視できることをいいます。
In the IND-CPA experiment, the adversary is free to study the encapsulation key \(\mathsf{ek}\) and the ciphertext \(c\) in order to identify whether \(K_b\) is the true key. However, the adversary is not capable of actively interfering with the challenger’s use of the decapsulation key. As a result, IND-CPA only captures security against passive adversaries (i.e., eavesdroppers).
IND-CPA実験で攻撃者は、カプセル化鍵 \(\mathsf{ek}\) および暗号文 \(c\) を自由に調べて、\(K_b\) が真の鍵かどうかを特定しようとすることができます。しかし攻撃者は、チャレンジャーがデカプセル化鍵を使用する処理に能動的に干渉することはできません。そのため、IND-CPAが捉えるのは、受動的攻撃者(すなわち盗聴者)に対する安全性のみです。
Challenger:
チャレンジャー:
Adversary:
攻撃者:
output WIN iff \(b = b'\).
\(b = b'\) の場合に限り、WINを出力します。
Fig. 3. The IND-CCA security experiment for a KEM \(\Pi\)
図3. KEM \(\Pi\) のIND-CCA安全性実験
Active adversaries and IND-CCA. Real-world experience indicates that adversaries can sometimes actively interfere with key-establishment processes and use this ability to un-cover the shared secret key. For example, an active adversary may be able to convince an honest user to decapsulate some ciphertexts of the adversary’s choosing. In such a sce-nario, it is natural to ask whether other ciphertexts are still protected. In this setting, IND-CPA security is insufficient. Instead, one must consider security against so-called chosen-ciphertext attacks (CCA)3 [17].
能動的攻撃者とIND-CCA。実環境での経験から、攻撃者が鍵確立プロセスに能動的に干渉し、その能力を使って共有シークレット鍵を暴く場合があることが分かっています。例えば、能動的攻撃者は、正当な利用者を誘導して、攻撃者が選んだ暗号文をデカプセル化させる場合があります。このような状況では、他の暗号文が引き続き保護されるかを問うのが自然です。この場合、IND-CPA安全性では不十分であり、選択暗号文攻撃(CCA)と呼ばれる攻撃に対する安全性を考慮する必要がある3 [17]。
The \(\text{IND-CCA}[\Pi]\) experiment for a KEM \(\Pi\) is described in Fig. 3. It is similar to the IND-CPA experiment, except that the adversary is now also granted “black-box oracle access” to the decapsulation function \(c \mapsto \Pi.\mathsf{Decaps}(p,\mathsf{dk},c)\). This means that the adversary is allowed to submit ciphertexts \(c^*\) that they generate and get the response \(K^* \leftarrow \Pi.\mathsf{Decaps}(p,\mathsf{dk},c^*)\). The only restriction is that they cannot submit the actual ciphertext \(c\) produced by the challenger since that would make the game trivial to win for any KEM.
\(\text{IND-CCA}[\Pi]\) 実験は、KEM \(\Pi\) に対するものであり、図3に示します。IND-CPA実験と類似していますが、攻撃者にデカプセル化関数 \(c \mapsto \Pi.\mathsf{Decaps}(p,\mathsf{dk},c)\) への「ブラックボックスのオラクルアクセス」も与える点が異なります。つまり攻撃者は、自ら生成した暗号文 \(c^*\) を送信し、応答 \(K^* \leftarrow \Pi.\mathsf{Decaps}(p,\mathsf{dk},c^*)\) を受け取ることができます。唯一の制限は、チャレンジャーが生成した実際の暗号文 \(c\) を送信できないことです。その場合、どのKEMでもゲームに勝つことが自明になるためです。
Definition 4 (IND-CCA, informal). A KEM \(\Pi\) is IND-CCA if, for every computationally bounded adversary \(\mathcal{A}\), the difference between the probability that \(\mathcal{A}\) wins the experiment \(\text{IND-CCA}[\Pi]\) and \(1/2\) is negligible.
定義4(IND-CCA、非形式的)。KEM \(\Pi\) がIND-CCAであるとは、計算能力が制限されたすべての攻撃者 \(\mathcal{A}\) について、\(\mathcal{A}\) が実験 \(\text{IND-CCA}[\Pi]\) で勝つ確率と \(1/2\) との差が無視できることをいいます。
ML-KEM, the first post-quantum KEM standardized by NIST, is believed to satisfy IND-CCA security [3].
NISTが標準化した最初の耐量子KEMであるML-KEMは、IND-CCA安全性を満たすと考えられています[3]。
3. Requirements for Secure KEM Implementations
3. KEMの安全な実装に関する要件
As discussed in Sec. 2.1, a KEM (as a mathematical object) should satisfy both correctness (Definition 2) and an appropriate notion of security (Definition 3 or Definition 4). In order for such a KEM to be used in real-world applications, it needs to be implemented in actual code as part of a cryptographic module. The quality of the resulting implementation has a dramatic impact on usability and security in real-world applications.
2.1節で述べたように、KEMは数学的対象として正しさ(定義2)と適切な安全性の概念(定義3または定義4)の両方を満たす必要があります。このようなKEMを実環境のアプリケーションで使用するには、暗号モジュールの一部として実際のコードに実装しなければなりません。実装の品質は、実環境のアプリケーションにおける使いやすさと安全性に大きな影響を与えます。
The following subsections detail requirements for cryptographic modules that implement approved KEMs. However, adherence to these requirements does not guarantee that a given implementation will be secure. For a discussion of requirements for applications that make use of a KEM cryptographic module, see Sec. 4.2.
以下の各節では、承認済みKEMを実装する暗号モジュールの要件を詳述します。ただし、これらの要件に準拠しても、個々の実装の安全性が保証されるわけではありません。KEM暗号モジュールを利用するアプリケーションの要件については、4.2節を参照されました。
3.1. Compliance With NIST Standards and Validation
3.1. NIST標準への準拠および妥当性確認
Conforming implementations of approved KEMs are required to comply with the require-ments outlined in this section as well as all other applicable NIST standards. In addition, such implementations are required to use only approved cryptographic elements and pass FIPS-140 validation.
承認済みKEMの適合実装は、本節に示す要件および適用されるその他すべてのNIST標準に準拠する必要があります。さらに、承認済みの暗号要素のみを使用し、FIPS 140検証に合格しなければなりません。
Implementing according to NIST standards. Implementations shall comply with a specific NIST FIPS or SP that specifies the algorithms of the relevant KEM. For example, a conform-ing implementation of ML-KEM shall comply with FIPS 203 [3]. Each FIPS or SP that speci-fies a KEM will have special requirements for the particular scheme in question, including specifications for all algorithms and parameter sets of the relevant KEM. In particular, con-crete data types will be specified for the parameter sets, keys, ciphertexts, and shared secret keys (Definition 1) of the relevant KEM. Assurance of parameter validity is obtained by checking the lists of approved parameters in the appropriate publication.
NIST標準に従った実装。実装は、該当するKEMのアルゴリズムを規定する特定のNIST FIPSまたはSPに準拠しなければなりません。例えば、適合するML-KEM実装はFIPS 203 [3]に準拠しなければなりません。KEMを規定する各FIPSまたはSPは、該当する方式に固有の要件を定め、そのKEMのすべてのアルゴリズムとパラメータセットを規定します。特に、該当するKEMのパラメータセット、鍵、暗号文、および共有シークレット鍵(定義1)に用いる具体的なデータ型が規定されます。適切な刊行物にある承認済みパラメータの一覧を確認することで、パラメータの有効性を保証します。
The requirements in any FIPS or SP that standardizes a particular KEM are in addition to the general requirements described in this section. Any implementations shall follow the guidelines given in FIPS 140-3 [5] and associated implementation guidance.
特定のKEMを標準化するFIPSまたはSPの要件は、本節に記載する一般要件に加えて適用されます。実装は、FIPS 140-3 [5]および関連する実装ガイダンスのガイドラインに従わなければなりません。
Approved cryptographic elements. KEMs commonly make use of other cryptographic elements, such as RBGs and hash functions (see Appendix D). Typically, the security of a system consisting of multiple cryptographic elements is at best as secure as the weakest element. When not already specified by the KEM parameter set, KEM implementations shall use approved cryptographic elements with security strengths that meet or exceed the required strength for each KEM parameter set. The security strength of the selected parameter set should be at least the desired security strength of the application. In addition, random bits shall be generated using approved techniques, as described in the latest revisions of SP 800-90A, SP 800-90B, and SP 800-90C [6–8]. For using randomness in key generation, see SP 800-133 [18].
承認済み暗号要素。KEMでは、RBGやハッシュ関数など、他の暗号要素を使用することが多くあります(付録Dを参照してください)。複数の暗号要素で構成されるシステムの安全性は、通常、最も弱い要素の安全性を上回りません。KEMのパラメータセットで既に指定されていない場合、KEMの実装は、各パラメータセットに必要な強度以上のセキュリティ強度を持つ承認済み暗号要素を使用しなければなりません。選択したパラメータセットのセキュリティ強度は、アプリケーションが望む強度以上とすべきです。さらに、乱数ビットはSP 800-90A、SP 800-90B、およびSP 800-90C [6–8]の最新版に記載された承認済み技法で生成しなければなりません。鍵生成に乱数を使用する方法については、SP 800-133 [18]を参照されました。
Testing and validation. Mistakes in implementations can easily lead to security vulner-abilities or a loss of usability. Therefore, it is crucial that implementations are validated for conformance to NIST cryptographic standards and FIPS 140 by the Cryptographic Al-gorithm Validation Program (CAVP) and CMVP. Validation testing checks whether a given implementation correctly computes the desired output for only a small number of (often randomly sampled) inputs. This means that validation testing does not guarantee correct functioning on all inputs, which is often impossible to ensure. Nonetheless, implementa-tions must correctly implement the mathematical functionality of the target KEM. As vali-dation only tests input-output behavior, implementations need not follow the exact step-by-step algorithmic specifications in the NIST standard that specifies the relevant KEM. Any implementation that produces the correct output for every input will pass validation.
試験と妥当性確認。実装上の誤りは、容易にセキュリティ脆弱性や使いやすさの低下につながります。そのため、暗号アルゴリズム検証プログラム(CAVP)およびCMVPによって、実装がNIST暗号標準とFIPS 140に準拠していることを検証することが重要です。妥当性確認試験では、限られた数(多くの場合、無作為抽出)の入力について、実装が所定の出力を正しく計算するかを確認します。このため、すべての入力で正しく動作する保証にはならず、それを確認できない場合も多くあります。それでも、実装は対象KEMの数学的機能を正しく実装しなければなりません。妥当性確認では入出力の動作のみを試験するため、該当するKEMを規定するNIST標準の手順を逐一実行する必要はありません。すべての入力に対して正しい出力を生成する実装であれば、妥当性確認に合格します。
Requiring equivalence only at the level of input-output functionality (e.g., rather than in terms of step-by-step behavior) is desirable, as different implementations can then be op-timized for different goals. For example, some implementations will focus on maximizing efficiency, while other implementations will employ numerous side-channel and leakage protection techniques.
手順ごとの動作ではなく、入出力機能のレベルでのみ同等性を求めることが望まれます。これにより、実装ごとに異なる目標に合わせて最適化できます。例えば、効率の最大化に重点を置く実装もあれば、多数のサイドチャネル対策や漏えい保護技法を用いる実装もあります。
3.2. Managing Cryptographic Data
3.2. 暗号データの管理
KEM implementations need to manage all cryptographic data appropriately, including data used during the execution of KEM algorithms (i.e., intermediate values) and data at rest (e.g., decapsulation key). As a cryptographic module has no control over data that exists outside of the module (e.g., while in transit from one module to another), such data is not discussed here. However, a cryptographic module can exert control over what data it outputs to the outside world (e.g., by ensuring correct implementations of all functions). It can also exert control over what data it accepts from the outside world (e.g., by performing appropriate input-checking and importing).
KEMの実装では、KEMアルゴリズムの実行中に使用するデータ(すなわち中間値)や、保存中のデータ(例:デカプセル化鍵)を含むすべての暗号データを適切に管理する必要があります。暗号モジュールは、モジュール外に存在するデータ(例:モジュール間の転送中のデータ)を制御できないため、そのようなデータは本節では扱いません。一方、暗号モジュールは、すべての機能を正しく実装するなどして、外部に出力するデータを制御できます。また、適切な入力検査やインポート処理などにより、外部から受け入れるデータも制御できます。
In general, cryptographic data needs to be destroyed as soon as it is no longer needed. Some examples include destroying intermediate computation values at the end of an algo-rithm, destroying the randomness generated by RBGs after encapsulation, and destroying keys after all relevant communication sessions are completed.
一般に、暗号データは不要になった時点で速やかに消去する必要があります。例えば、アルゴリズムの終了時に中間計算値を消去すること、カプセル化後にRBGが生成した乱数を消去すること、および関連するすべての通信セッションの終了後に鍵を消去することが挙げられます。
Input checking. The correct and secure operation of cryptographic operations depends crucially on the validity of the provided inputs. Even relatively benign faults, such as ac-cepting an input that is too long or too short, can have serious security consequences. KEM implementations need to perform input checking in an appropriate manner for all KEM algorithms (i.e., KeyGen, Encaps, and Decaps). The exact form of the required input checking is described in the FIPS or SP that specifies the relevant KEM.
入力検査。暗号処理が正しく安全に動作するかは、与えられた入力の有効性に大きく左右されます。長すぎる入力や短すぎる入力を受け入れるといった比較的軽微な誤りでも、重大なセキュリティ上の影響をもたらし得ます。KEMの実装では、すべてのKEMアルゴリズム(KeyGen、Encaps、およびDecaps)について適切な方法で入力検査を行う必要があります。必要な入力検査の具体的な形式は、該当するKEMを規定するFIPSまたはSPに記載されています。
Sometimes, an input will not need to be checked. Instead, the implementer can acquire assurance that the input was validly generated or has already been checked, as in the fol-lowing cases:
入力を検査する必要がない場合もあります。その代わりに、次のような場合は、入力が有効に生成されたこと、または既に検査済みであることを実装者が確認できます。
1.If the cryptographic module generated an input internally using an algorithm that ensures validity and stored that input in a manner that prevents modification, then the module is not required to check that input. For example, if the module gener-ated a decapsulation key dk via KeyGen and then stored dk in a manner that prevents modification, then the module can later invoke Decaps directly on dk without per-forming any input checking.
1.暗号モジュールが、有効性を保証するアルゴリズムを用いて入力を内部生成し、改変を防ぐ方法で保存した場合、その入力を検査する必要はありません。例えば、モジュールがKeyGenでデカプセル化鍵dkを生成し、改変を防ぐ方法で保存した場合、後に入力検査を行わず、dkに対してDecapsを直接呼び出すことができます。
2.If the cryptographic module checks an input once and stores that input in a man-ner that prevents modification, then the module is not required to check that input again. For example, if the module performed input-checking on a given encapsula-tion key ek and stored it in a manner that prevents modification, then the module may invoke Encaps directly on ek (even repeatedly) without performing any further input checking.
2.暗号モジュールが入力を一度検査し、改変を防ぐ方法で保存した場合、その入力を再度検査する必要はありません。例えば、所定のカプセル化鍵ekを検査して改変を防ぐ方法で保存した場合、以後の入力検査を行わずに、ekに対してEncapsを直接(繰り返し)呼び出すことができます。
3.If the cryptographic module imports the relevant input from a trusted third party (TTP), and the TTP can provide assurance that the input does not need input-checking, and the module stores that input in a manner that prevents modification, then the module is not required to check the input.
3.暗号モジュールが信頼できる第三者(TTP)から該当する入力をインポートし、TTPが入力検査不要であることを保証でき、さらにモジュールが改変を防ぐ方法でその入力を保存する場合、その入力を検査する必要はありません。
Intermediate values. All intermediate values used in any given KEM algorithm (i.e., KeyGen, Encaps, Decaps) shall be destroyed before the algorithm terminates. However, there are two exceptions to this rule:
中間値。任意のKEMアルゴリズム(KeyGen、Encaps、Decaps)で使用するすべての中間値は、アルゴリズムの終了前に消去しなければなりません。ただし、次の2つの例外があります。
1.A random seed used for key generation may be stored as private data for the purpose of recomputing the same key pair at a later time.
1.鍵生成で使用する乱数シードは、後で同じ鍵ペアを再計算するために、秘密データとして保存してもよいです。
2.Data that can be easily computed from public information (e.g., from the encapsu-lation key) may be stored as public data to improve efficiency.
2.公開情報(例:カプセル化鍵)から容易に計算できるデータは、効率を高めるため公開データとして保存してもよいです。
When values are stored under either of these exceptions, the storage needs to be per-formed according to the rules for data at rest.
いずれかの例外に基づき値を保存する場合、保存データに関する規則に従って保存する必要があります。
The outputs of a KEM algorithm are not considered to be intermediate values and will thus not be immediately destroyed in typical situations. The format in which outputs and inputs are stored depends on the implementation (see the discussion of data formats below.)
KEMアルゴリズムの出力は中間値とはみなされないため、通常は直ちに消去しません。出力と入力の保存形式は実装に応じて異なります(以下のデータ形式に関する説明を参照してください)。
Data at rest. A cryptographic module that implements a KEM needs to maintain certain data at rest. This can include both private data (e.g., seeds, decapsulation keys) and public data (e.g., encapsulation keys). In general, private data needs to be stored within the cryp-tographic module in a manner that is secure against both leakage and unauthorized mod-ification. Private data needs to be destroyed as soon as it is no longer needed. The import and export of private data (e.g., seeds, decapsulation keys, shared secret keys) needs to be performed in a secure manner. In general, public data stored within the cryptographic module needs to be stored in a manner that is secure against unauthorized modification [5, 19].
保存データ。KEMを実装する暗号モジュールでは、一定の保存データを維持する必要があります。これには、秘密データ(例:シード、デカプセル化鍵)と公開データ(例:カプセル化鍵)の両方が含まれる場合があります。一般に、秘密データは暗号モジュール内において、漏えいと不正な改変の両方を防ぐ方法で保存する必要があります。秘密データは不要になった時点で消去する必要があります。秘密データ(例:シード、デカプセル化鍵、共有シークレット鍵)のインポートおよびエクスポートは、安全な方法で行う必要があります。一般に、暗号モジュール内に保存する公開データも、不正な改変を防ぐ方法で保存する必要があります[5, 19]。
Data formats, import, and export. FIPS validation tests input and output the behavior of relevant KEM algorithms using a specific data format. Typically, this format is byte arrays that contain the inputs and outputs described in the FIPS or SP that specifies the relevant KEM. This format is required for testing but is not a requirement for internal storage, data import, or data export. A given cryptographic module may choose to store, import, or export data (whether sensitive or not) using other formats. The desired format can vary significantly depending on the application. For example, some applications might call for storing keys using only a short seed, while other applications might call for storing keys in an expanded format that allows for faster computations. In any case, the storage, import, and export of sensitive data needs to be performed securely, regardless of the chosen data format.
データ形式、インポート、およびエクスポート。FIPS検証では、特定のデータ形式を用いて該当するKEMアルゴリズムの入出力動作を試験します。一般に、この形式は、該当するKEMを規定するFIPSまたはSPに記載された入力と出力を含むバイト配列です。この形式は試験に必要ですが、内部保存、データのインポート、またはデータのエクスポートに必須ではありません。暗号モジュールは、機微情報の有無を問わず、他の形式でデータを保存、インポート、またはエクスポートしてもよいです。望ましい形式はアプリケーションによって大きく異なります。例えば、鍵を短いシードだけで保存するアプリケーションもあれば、計算を高速化するため展開済みの形式で保存するアプリケーションもあります。いずれの場合も、選択したデータ形式にかかわらず、機微データの保存、インポート、およびエクスポートを安全に行う必要があります。
3.3. Additional Requirements
3.3. 追加要件
The following are additional requirements for cryptographic modules that implement ap-proved KEMs.
以下は、承認済みKEMを実装する暗号モジュールに対する追加要件です。
Failures and aborts. Any of the KEM algorithms (i.e., KeyGen, Encaps, Decaps) and their cryptographic elements (e.g., DRBGs, hash functions) can potentially fail or abort. This could be a result of normal KEM operations (e.g., decapsulating a ciphertext that was cor-rupted by the environment during transmission), a hardware or software failure (e.g., a failed DRBG execution due to a memory fault), or an adversarial attack. Implementers need to take precautions to ensure that the cryptographic module handles failures and aborts appropriately. In particular, leaking information about failures and aborts outside of the perimeter of the cryptographic module should be avoided.
失敗と中断。KEMアルゴリズム(KeyGen、Encaps、Decaps)およびその暗号要素(例:DRBG、ハッシュ関数)は、失敗または中断する可能性があります。これは、通常のKEM処理(例:転送中に環境要因で破損した暗号文のデカプセル化)、ハードウェアまたはソフトウェアの障害(例:メモリ障害によるDRBG実行の失敗)、あるいは攻撃によって起こり得ます。実装者は、暗号モジュールが失敗や中断を適切に処理できるよう、予防措置を講じる必要があります。特に、暗号モジュールの境界外に失敗や中断に関する情報が漏れることは避けるべきです。
Side-channel protection. Cryptographic modules for KEMs should be designed with ap-propriate countermeasures against side-channel attacks. This includes protecting against timing attacks with constant-time implementations and protecting memory from leakage. Universal guidelines are unlikely to be helpful as exposure to side-channel attacks varies significantly with the desired application, and countermeasures are often costly.
サイドチャネル対策。KEM用の暗号モジュールは、サイドチャネル攻撃に対する適切な対策を組み込んで設計すべきです。これには、定時間実装によるタイミング攻撃への対策や、メモリの漏えい防止が含まれます。サイドチャネル攻撃への曝露は想定するアプリケーションによって大きく異なり、対策には多くの場合コストがかかるため、汎用的なガイドラインが役立つ可能性は低いです。
4. Using KEMs Securely in Applications
4. アプリケーションにおけるKEMの安全な使用
This section describes how to deploy a KEM in real-world applications in a manner that is useful and secure, assuming that the KEM under discussion satisfies an appropriate notion of theoretical security (see Sec. 2.3) and has been securely implemented in a cryptographic module (see Sec. 3).
本節では、対象のKEMが適切な理論的安全性の概念を満たし(2.3節を参照)、暗号モジュールに安全に実装されていること(3節を参照)を前提として、実環境のアプリケーションにKEMを有用かつ安全な方法で導入する手順を説明します。
4.1. How to Establish a Key With a KEM
4.1. KEMによる鍵の確立方法
This section describes how a KEM can be used to establish a shared secret key between two parties. The description will go into greater detail than the brief outline in Sec. 2.1. However, since KEMs are highly flexible and can be used in a wide range of applications and contexts, no single description can account for all variations. Section 5 provides more detailed examples of special cases of key establishment using a KEM.
本節では、KEMを使って2者間で共有シークレット鍵を確立する方法を説明します。2.1節の簡潔な概要より詳しく述べます。ただし、KEMは柔軟性が高く、幅広いアプリケーションや状況で利用できるため、すべての差異を網羅する単一の説明はできません。5節では、KEMによる鍵確立の特別なケースをより詳しく例示します。
For simplicity of exposition, the two parties in the key establishment process will be re-ferred to as Alice and Bob. It is assumed that Alice and Bob are communicating over a single bidirectional channel and will only use that channel to transmit data to each other.
説明を簡潔にするため、鍵確立プロセスに参加する2者をAliceおよびBobと呼びます。AliceとBobは、双方向チャネルを1つだけ使って通信し、そのチャネルのみを用いて相互にデータを送信するものとします。
The key-establishment process using a KEM \(\Pi\) proceeds as follows:
KEM \(\Pi\) を用いた鍵確立プロセスは、次のとおり進みます。
1. Preparation. Before key establishment can begin, a parameter set \(p \in \Pi.\mathsf{ParamSets}\) needs to be selected. Depending on the application, \(p\) may be selected by Alice, by Bob, or through an interactive negotiation between Alice and Bob. The choice of the KEM \(\Pi\) itself could also be made at this stage.
1. 準備。鍵確立を開始する前に、パラメータセット \(p \in \Pi.\mathsf{ParamSets}\) を選択する必要があります。アプリケーションに応じて、\(p\) はAliceが選択しても、Bobが選択しても、AliceとBobの対話的な交渉によって選択してもよいです。この段階でKEM \(\Pi\) 自体を選択することもできます。
2. Key generation. Alice begins by running the key-generation algorithm in her cryptographic module:
During the execution of \(\mathsf{KeyGen}\), Alice’s module internally generates private randomness using an appropriate RBG. Alice then transmits \(\mathsf{ek}_A\) to Bob and keeps \(\mathsf{dk}_A\) private.
2. 鍵生成。Aliceはまず、自身の暗号モジュールで鍵生成アルゴリズムを実行します。
\(\mathsf{KeyGen}\) の実行中、Aliceのモジュールは適切なRBGを使って秘密の乱数を内部で生成します。その後、Aliceは \(\mathsf{ek}_A\) をBobに送信し、\(\mathsf{dk}_A\) を秘密に保持します。
3. Encapsulation. Bob receives \(\mathsf{ek}_A\) from Alice and uses it to execute the encapsulation algorithm in his cryptographic module:
3. カプセル化。BobはAliceから \(\mathsf{ek}_A\) を受け取り、それを用いて自身の暗号モジュールでカプセル化アルゴリズムを実行します。
During the execution of \(\mathsf{Encaps}\), Bob’s module internally generates private randomness using an appropriate RBG. Bob then transmits \(c_B\) to Alice and keeps \(K_B\) private.
\(\mathsf{Encaps}\) の実行中、Bobのモジュールは適切なRBGを使って秘密の乱数を内部で生成します。その後、Bobは \(c_B\) をAliceに送信し、\(K_B\) を秘密に保持します。
4. Decapsulation. Alice receives \(c_B\) from Bob and runs the decapsulation algorithm in her module using her decapsulation key and Bob’s ciphertext:
4. デカプセル化。AliceはBobから \(c_B\) を受け取り、自身のデカプセル化鍵とBobの暗号文を用いて、自身のモジュールでデカプセル化アルゴリズムを実行します。
Alice keeps \(K_A\) private.
Aliceは \(K_A\) を秘密に保持します。
5. Using the shared secret key. If the appropriate conditions are satisfied (see Sec. 4.2), then \(K_A\) will equal \(K_B\) and can be used by Alice and Bob for any symmetric-key cryptographic protocol. A typical choice is to use \(K_A = K_B\) as the key for an authenticated encryption scheme (e.g., AES-GCM [9]), thereby establishing a communication channel between Alice and Bob that satisfies both confidentiality and integrity.
5. 共有シークレット鍵の使用。所定の条件が満たされれば(4.2節を参照)、\(K_A\) は \(K_B\) と等しくなり、AliceとBobは任意の共通鍵暗号プロトコルにこれを使用できます。典型的な選択は、\(K_A = K_B\) を認証付き暗号化方式(例:AES-GCM [9])の鍵として用いることであり、これにより、機密性と完全性の両方を満たす通信チャネルがAliceとBobの間に確立されます。
Figure 4 depicts the high-level stages of this process. Note that some desirable security properties might not be achieved by a protocol of this form and may require additional steps and ingredients.
図4は、このプロセスの大まかな各段階を示します。この形式のプロトコルでは、望ましい安全性の性質が一部実現されない場合があり、追加の手順や要素が必要となることに注意されました。
Alice:
Alice:
Bob:
Bob:
Π,p
Π,p
1.
←−−−−−−−→
←−−−−−−−→
2.(ek ,dk ) ← Π.KeyGen(p) A A e kA−−−→ −−−−− − 3. (K ,c ) ← Π.Encaps(ek ) B B A ←−−−c−B−−−−
2.(ek ,dk ) ← Π.KeyGen(p) A A e kA−−−→ −−−−− − 3. (K ,c ) ← Π.Encaps(ek ) B B A ←−−−c−B−−−−
4.K ← Π.Decaps(dk ,c ) A A B
4.K ← Π.Decaps(dk ,c ) A A B
5.output: K output: K A B
5.出力:K 出力:K A B
Fig. 4. Simple key establishment using a KEM
図4. KEMを用いた簡単な鍵確立
Additional considerations. Steps 1-5 in the key-establishment process might need to be modified, depending on the security and functionality needs of the application. Some common modifications are as follows.
追加の考慮事項。アプリケーションのセキュリティや機能に関するニーズに応じて、鍵確立プロセスのステップ1~5を変更する必要がある場合があります。一般的な変更例を次に示します。
Static versus ephemeral key pairs. Consider an application in which Alice independently decides on a parameter set, performs key generation, and publishes the resulting encapsulation key \(\mathsf{ek}_A\). Alice might then accept many connections from multiple parties over a long period of time, each initiated via \(\mathsf{ek}_A\). Each such connection would follow stages 3-5 described above. While the other party in each connection would always encapsulate with \(\mathsf{ek}_A\), each ciphertext is generated with new randomness and only applicable to the connection between Alice and that party. In this scenario, Alice’s encapsulation key is said to be static.
静的鍵ペアと一時鍵ペア。Aliceが独自にパラメータセットを決め、鍵生成を行い、得られたカプセル化鍵 \(\mathsf{ek}_A\) を公開するアプリケーションを考えます。その後Aliceは、長期間にわたり複数の相手から多数の接続を受け付けることがあり、各接続は \(\mathsf{ek}_A\) を介して開始されます。そのような各接続は、前述の段階3~5に従います。各接続の相手は常に \(\mathsf{ek}_A\) でカプセル化しますが、各暗号文は新しい乱数で生成され、Aliceとその相手との間の接続にのみ適用されます。この状況では、Aliceのカプセル化鍵は静的であると言います。
In other applications, Alice might want to use a particular key pair to establish only a single connection (e.g., as part of a protocol that ensures forward secrecy). In that case, she will perform key generation, send her encapsulation key \(\mathsf{ek}_A\) to Bob, and discard \(\mathsf{ek}_A\) once the connection with Bob is established. In this scenario, Alice’s encapsulation key is said to be ephemeral.
別のアプリケーションでは、Aliceが特定の鍵ペアを使って単一の接続だけを確立する場合があります(例:前方秘匿性を確保するプロトコルの一部)。その場合、Aliceは鍵を生成し、カプセル化鍵\(\mathsf{ek}_A\)をBobに送り、Bobとの接続が確立した時点で\(\mathsf{ek}_A\)を破棄します。この場合、Aliceのカプセル化鍵は一時的であるといいます。
Authentication. In most applications, some form of authentication and cryptographic in-tegrity checking is required (e.g., to prevent “machine-in-the-middle” attacks). Assuring this is highly application-dependent and typically requires additional cryptographic ele-ments, such as digital signatures and certificates. Section 5.2.4 and Sec. 5.2.3 provide some illustrative examples.
認証。ほとんどのアプリケーションでは、何らかの認証および暗号学的完全性検査(例:「中間者」攻撃の防止)が必要となります。これを保証する方法はアプリケーションに大きく依存し、通常、デジタル署名や証明書などの暗号要素がさらに必要となります。5.2.4節および5.2.3節に例を示します。
Using the shared secret key. In some applications, Alice and Bob will use \(K_A\) and \(K_B\) directly as symmetric keys as soon as the decapsulation and encapsulation stages are successfully completed, respectively. If \(K_A \ne K_B\), a failure in the desired symmetric-key functionality will likely follow. For other applications, Alice and Bob might need to first post-process \(K_A\) and \(K_B\) appropriately and then use the results of that post-processing step — if successful — as their symmetric keys. This post-processing might include key derivation steps that securely produce multiple symmetric keys from the initial shared secret key (see Sec. 4.3). It might also include key confirmation steps to confirm that \(K_A = K_B\) and reject them otherwise (see Sec. 4.4). In some cases, key confirmation might also involve performing additional computations during the encapsulation and decapsulation stages to reduce the number of communication rounds.
共有シークレット鍵の使用。一部のアプリケーションでは、AliceとBobは、デカプセル化段階とカプセル化段階がそれぞれ正常に完了すると直ちに、\(K_A\)と\(K_B\)をそのまま共通鍵として使用します。\(K_A \ne K_B\)であれば、所望の共通鍵機能は失敗する可能性が高い。その他のアプリケーションでは、AliceとBobはまず\(K_A\)と\(K_B\)を適切に後処理し、その後処理が成功すれば、その結果を共通鍵として使用する必要がある場合があります。この後処理には、初期の共有シークレット鍵から複数の共通鍵を安全に生成する鍵導出手順が含まれることがあります(4.3節を参照)。また、\(K_A = K_B\)であることを確認し、そうでなければ鍵を棄却する鍵確認手順が含まれることもあります(4.4節を参照)。場合によっては、鍵確認に、通信ラウンド数を減らすため、カプセル化段階およびデカプセル化段階で追加の計算を行うことが含まれることもあります。
4.2. Conditions for Using KEMs Securely
4.2. KEMを安全に使用するための条件
This section discusses general requirements for securely using approved KEMs in applica-tions. As discussed in point 1 below, the first step involves selecting an approved KEM that has been implemented in a validated cryptographic module (see Section 3). Deploying such a cryptographic module in applications entails a number of additional requirements that are outlined below. Adherence to these requirements does not guarantee that the relevant KEM application will be secure. The overall requirements fall into four general categories: KEM algorithm security, device security, channel security, and key usage secu-rity.
この節では、承認済みKEMをアプリケーションで安全に使用するための一般要件を説明します。以下の項目1で述べるように、まず、検証済み暗号モジュール(第3節参照)に実装された承認済みKEMを選択します。その暗号モジュールをアプリケーションに導入するには、以下に示す追加要件も満たす必要があります。これらの要件に従っても、該当するKEMアプリケーションの安全性が保証されるわけではありません。要件は、KEMアルゴリズムの安全性、デバイスの安全性、通信路の安全性、鍵使用の安全性という4つの一般カテゴリに分かれます。
1. KEM algorithm security: The selected KEM \(\Pi\) is approved, appropriate for the application, and implemented and deployed in a secure manner.
1. KEMアルゴリズムの安全性:選択したKEM \(\Pi\)は承認済みで、用途に適しており、安全な方法で実装および配備されていること。
Being an approved KEM, \(\Pi\) will satisfy correctness (Definition 2) and either IND-CPA or IND-CCA security (see Section 2.3). Whenever possible, IND-CCA-secure KEMs should be used. For some specific applications (e.g., ephemeral key establishment), IND-CPA security might be sufficient.
承認済みKEMである\(\Pi\)は、正当性(定義2)を満たし、IND-CPAまたはIND-CCAのいずれかの安全性を満たします(第2.3節参照)。可能な場合は、IND-CCA安全なKEMを使用することが望まれます。用途によっては(例:一時鍵確立)、IND-CPA安全性で十分な場合があります。
Cryptographic module implementation. The implementations of \(\Pi\) used by Alice and Bob need to satisfy the requirements in Sec. 3. Whether a given implementation is sufficiently secure is an application-dependent question. For example, an implementation might be secure enough for use on a web server in a physically secure location but have insufficient side-channel protections for use on an embedded device.
暗号モジュールの実装:AliceとBobが使用する\(\Pi\)の実装は、第3節の要件を満たす必要があります。実装の安全性が用途に対して十分かどうかは、用途に応じて判断します。例えば、物理的に安全な場所にあるウェブサーバーで使うには十分安全な実装でも、組み込みデバイスで使うにはサイドチャネル保護が不十分な場合があります。
Parameter set selection. A parameter set of \(\Pi\) with application-appropriate security strength must be selected.
パラメータセットの選択:\(\Pi\)のパラメータセットは、用途に適した安全性強度を持つものを選択すること。
KEM key-pair usage. If an application uses an ephemeral key pair, the key pair shall be used for only one execution of key-establishment via a KEM and shall be de-stroyed as soon as possible after its use.
KEM鍵ペアの使用:アプリケーションで一時鍵ペアを使用する場合、その鍵ペアはKEMによる鍵確立を1回だけ実行するために使用し、使用後できるだけ速やかに破棄しなければなりません。
If an encapsulating party obtains the static encapsulation key of another party, it must have assurance of the other party’s ownership of the key before or during the execution of key-establishment. This assurance can be obtained from a trusted party (e.g., a certificate authority) or a combination of proof of possession (see Sec. 4.5) and verification of real-world identity.
カプセル化を行う側が他者の静的カプセル化鍵を取得する場合、鍵確立の実行前または実行中に、相手がその鍵を所有していることを確認しなければなりません。この確認は、信頼できる第三者(例:認証局)を利用するか、所持証明(第4.5節参照)と実社会での本人確認を組み合わせることで得られます。
2.Device security: The devices used to execute KEM algorithms and store any sensitive data (e.g., decapsulation keys) must be appropriately secured.
2.デバイスの安全性:KEMアルゴリズムの実行や機密データ(例:デカプセル化鍵)の保存に用いるデバイスは、適切に保護しなければなりません。
Physical protection. Devices need to be appropriately protected against attacks (see [19, Section 5]). This includes protection against leakage, physical intrusion, remote access, and corruption.
物理的保護:デバイスは攻撃から適切に保護する必要があります([19]第5節参照)。これには、情報漏えい、物理的侵入、リモートアクセス、改ざんからの保護が含まれます。
Secure storage. Devices need to provide appropriate secure storage for sensitive data (e.g., KEM keys, seeds, shared secret keys, any derived keys) and destroy that data when required by the cryptographic module (see Sec. 3.2). For further guide-lines on key storage considerations, see SP 800-57pt1 [19] and SP 800-152 [10, Sec-tion 2.2].
安全な保管:デバイスは、機密データ(例:KEM鍵、シード、共有シークレット鍵、派生鍵)のために適切で安全な保管手段を提供し、暗号モジュールが要求するときにそのデータを破棄する必要があります(第3.2節参照)。鍵の保管に関する追加の指針については、SP 800-57pt1 [19]およびSP 800-152 [10, 第2.2節]を参照すること。
3.Channel security: The key-establishment process that takes place over the channel used by Alice and Bob must satisfy an application-appropriate notion of integrity.
3.通信路の安全性:AliceとBobが使用する通信路上で行われる鍵確立プロセスは、用途に適した完全性要件を満たさなければなりません。
Preestablished versus simultaneous. Ensuring the integrity of the key-establishment process could be achieved by first ensuring the integrity of the channel and then performing key establishment. More commonly, integrity is assured simultaneously with key establishment by augmenting the key-establishment process with addi-tional steps and checks (see, e.g., Section 5.2.3).
事前確立と同時確立:まず通信路の完全性を確保してから鍵確立を行うことで、鍵確立プロセスの完全性を確保できます。より一般的には、追加の手順や検査を鍵確立プロセスに組み込み、鍵確立と同時に完全性を保証します(例:5.2.3節参照)。
Unilateral versus bilateral authentication. For some applications, only one of the parties is assured of the other’s identity and the integrity of their messages. This is commonly called a unilaterally authenticated key exchange (see Sec. 5.2.3). In other applications, both Alice and Bob require assurances of the other party’s identity and the integrity of their messages. This is commonly called a bilaterally authenticated key exchange.
一方向認証と相互認証:用途によっては、一方の当事者だけが、相手の身元と相手からのメッセージの完全性を確認します。これは一般に一方向認証付き鍵交換と呼ばれます(第5.2.3節参照)。別の用途では、AliceとBobの双方が、相手の身元と相手からのメッセージの完全性を確認する必要があります。これは一般に相互認証付き鍵交換と呼ばれます。
Secure authentication algorithms. For all applications, the cryptographic algorithms (e.g., digital signature algorithms) and other elements (e.g., certificates) required to establish channel integrity need to be selected and deployed securely.
安全な認証アルゴリズム:すべての用途で、通信路の完全性を確立するために必要な暗号アルゴリズム(例:デジタル署名アルゴリズム)やその他の要素(例:証明書)を、安全に選択して配備する必要があります。
4.Shared-secret-key usage security: The shared secret key produced by the KEM is used appropriately and securely.
4.共有シークレット鍵の使用に関する安全性:KEMが生成する共有シークレット鍵を、適切かつ安全に使用すること。
Shared-secret-key processing and management. Key-derivation and key-confirmation steps are performed appropriately, as required by the application (see Sec. 4.3 and 4.4). Each shared secret key and any derived keys are destroyed as soon as they are no longer needed (see Sec. 4.2).
共有シークレット鍵の処理と管理:用途に応じて、鍵導出および鍵確認の手順を適切に実施します(第4.3節および第4.4節参照)。各共有シークレット鍵とその派生鍵は、不要になり次第、速やかに破棄します(第4.2節参照)。
Secure symmetric-key algorithms. The KEM shared secret key and any derived keys should only be used with appropriately secure symmetric-key cryptographic algo-rithms. In particular, the security of the symmetric-key algorithms used is appropri-ate for the security provided by the KEM so that the combined algorithm (consisting of key establishment followed by symmetric cryptography operations) fulfills the de-sired security properties.
安全な共通鍵アルゴリズム:KEMの共有シークレット鍵とその派生鍵は、適切に安全な共通鍵暗号アルゴリズムとのみ使用すべきです。特に、使用する共通鍵アルゴリズムの安全性はKEMが提供する安全性に見合うものとし、鍵確立の後に共通鍵暗号処理を行う複合アルゴリズムが、求められる安全性特性を満たすようにします。
4.3. Post Processing of the Shared Secret Key
4.3. 共有シークレット鍵の後処理
Certain key-establishment schemes (e.g., Diffie-Hellman key exchange) can be viewed as first generating a shared secret and then performing a key-derivation step that transforms the shared secret into one or more shared secret keys. In contrast, KEMs by definition output a key \(K\) that is ready to use.
Diffie-Hellman鍵交換など一部の鍵確立方式は、まず共有シークレットを生成し、次にその共有シークレットを変換して1つ以上の共有シークレット鍵を得る鍵導出手順を行うものとみなせます。一方、KEMは定義上、そのまま使用できる鍵 \(K\) を出力します。
Key derivation may be required for applications in which the amount of keying material needed does not match the output size of the KEM algorithm (i.e., the length of shared secret key \(K\)).
必要な鍵素材の量がKEMアルゴリズムの出力サイズ(すなわち共有シークレット鍵 \(K\) の長さ)と一致しない用途では、鍵導出が必要となる場合があります。
As specified in SP 800-108 [20], key derivation consists of applying a key-derivation method (KDM) to a key-derivation key. A KDM is an algorithm for transforming a given key-derivation key (possibly with some other data) into keying material (e.g., a list of keys).
SP 800-108 [20]で規定されているように、鍵導出では、鍵導出鍵に鍵導出方式(KDM)を適用します。KDMは、与えられた鍵導出鍵(場合によっては他のデータも含む)を鍵素材(例:複数の鍵のリスト)に変換するアルゴリズムです。
If additional keying material is needed, a KDM can be used to expand \(K\). If keys with lengths less than \(K\) are needed, a KDM may be used, or the shared secret key \(K\) can be used directly as keying material by:
追加の鍵素材が必要な場合、KDMを使用して \(K\) を拡張できます。\(K\) より短い鍵が必要な場合は、KDMを使うか、共有シークレット鍵 \(K\) を鍵素材として直接利用できます。その方法は次のとおりです。
• Truncating \(K\) or
• \(K\) を切り詰める、または
• Parsing \(K\) into non-overlapping segments to derive shorter keys.
• \(K\) を重複しない複数の部分に分割し、短い鍵を導出します。
The derived shorter key is considered a shared secret key if \(K\) was a shared secret key. The security strength of any derived shorter key is the minimum of the security strength of \(K\), the length of the derived key, and the strength of any KDM used.
\(K\) が共有シークレット鍵であれば、そこから導出された短い鍵も共有シークレット鍵とみなされます。導出された短い鍵の安全性強度は、\(K\) の安全性強度、導出鍵の長さ、および使用したKDMの強度のうち最小のものです。
When key derivation for a KEM Π is needed, the shared secret key output by Π (i.e., as an output of Π.Encaps or Π.Decaps) may be used as a key-derivation key supplied to an approved key-derivation method specified in SP 800-108 [20], SP 800-56C [21], or SP 800-133 [18]. If a KDM from SP 800-56C is used, the shared secret key of the KEM is used as an input to the KDM in place of the shared secret. A key derivation step is included in the example protocol in Sec. 5.2.3.
KEM Πで鍵導出が必要な場合、Πが出力する共有シークレット鍵(すなわちΠ.EncapsまたはΠ.Decapsの出力)を、SP 800-108 [20]、SP 800-56C [21]、またはSP 800-133 [18]で規定された承認済み鍵導出方式への鍵導出鍵として使用できます。SP 800-56CのKDMを使用する場合は、共有シークレットの代わりにKEMの共有シークレット鍵をKDMの入力にします。鍵導出手順は第5.2.3節のプロトコル例にも含まれています。
4.4. Key Confirmation
4.4. 鍵確認
Key confirmation (KC) refers to the actions taken to provide assurance to one party (i.e., the key-confirmation recipient) that another party (i.e., the key-confirmation provider) pos-sesses matching keying material. In the case of KEMs, this confirmation is done for keying material that was produced by encapsulation and/or decapsulation.
鍵確認(KC)とは、一方の当事者(鍵確認の受領者)が、もう一方の当事者(鍵確認の提供者)が一致する鍵素材を保有していることを確信できるようにするための措置を指します。KEMの場合、この確認の対象はカプセル化および/またはデカプセル化によって生成された鍵素材です。
Key confirmation should be used during KEM usage, as it may enhance the security prop-erties of the overall key-establishment process. Confirming successful establishment of the shared secret key can also address potential errors in transmission or decapsulation. Key confirmation can also act as a proof of possession (see Sec. 4.5). While this section includes a description of an explicit process, key confirmation can be accomplished in a va-riety of other ways. For example, successful use of the shared secret key for authenticated encryption can act as key confirmation.
鍵確認はKEMの使用時に行うべきです。鍵確認によって、鍵確立プロセス全体の安全性特性が向上する場合があります。共有シークレット鍵の確立が成功したことを確認すれば、伝送やデカプセル化で発生する可能性のあるエラーにも対処できます。鍵確認は所持証明としても機能する場合があります(第4.5節参照)。本節では明示的な手順を説明しますが、鍵確認を実現する方法は他にもさまざまあります。例えば、共有シークレット鍵を使った認証付き暗号化に成功すれば、鍵確認として機能します。
Key confirmation is typically achieved by exchanging a value that can only be calculated correctly with very high probability if the key establishment was successful. Some com-mon protocols perform key confirmation in a manner that is integrated into the steps of the protocol. For example, bilateral key confirmation is provided during a TLS handshake protocol by the generation and verification of a message authentication code (MAC) over all previous messages in the handshake using a symmetric MAC key that was established during the handshake.
鍵確認は通常、鍵確立が成功した場合に限り、非常に高い確率で正しく計算できる値を交換することで実現します。一般的なプロトコルの中には、プロトコルの手順に鍵確認を組み込んでいるものがあります。例えばTLSハンドシェイクプロトコルでは、ハンドシェイク中に確立した共通鍵MAC鍵を使用して、そこまでの全メッセージに対するメッセージ認証コード(MAC)を生成・検証することで、相互鍵確認が行われます。
In some circumstances, it may be appropriate to perform key confirmation by including dedicated key-confirmation steps in a key-establishment scheme. An acceptable method for providing key confirmation during a key-establishment scheme involves the KC provider calculating a MAC tag on MAC_Data and sending the MAC tag to the KC recipient for confir-mation of the provider’s correct calculation of the shared secret key. Unilateral key confir-mation is provided when only one of the parties serves as the key-confirmation provider. If mutual key confirmation is desired (i.e., bilateral key confirmation), then the parties swap roles for the second KC process, and the new provider (i.e., the previous recipient) sends a MAC value on a different data string (i.e., different MAC_Data) to the new recipient (i.e., the previous provider).
状況によっては、鍵確立方式に専用の鍵確認手順を含めるのが適切な場合があります。鍵確立方式で鍵確認を行うための許容される方法として、KC提供者がMAC_Dataに対するMACタグを計算し、そのタグをKC受領者に送信して、提供者が共有シークレット鍵を正しく計算したことを確認する方法があります。一方の当事者だけが鍵確認の提供者となる場合、一方向の鍵確認が行われます。相互鍵確認(すなわち双方向の鍵確認)が求められる場合は、2回目のKC処理で両者の役割を入れ替え、新しい提供者(すなわち前回の受領者)が、新しい受領者(すなわち前回の提供者)に対し、異なるデータ文字列(すなわち異なるMAC_Data)に対するMAC値を送信します。
This recommendation makes no statement as to the adequacy of other methods.
本推奨事項では、他の方法が十分であるかどうかについては述べません。
Key-confirmation key. The key-confirmation steps specified in this recommendation can be incorporated into any scheme using a KEM to establish a shared secret key. To perform key confirmation, a dedicated KC key will be determined from the shared secret key pro-duced by the KEM. The KC provider will use the KC key with an approved MAC algorithm to create a MAC tag on certain data and provide the tag to the KC recipient. The KC recipient will then obtain the KC key from their copy of the shared secret key produced by the KEM and use it to verify the MAC tag.
鍵確認鍵:本推奨事項に示す鍵確認手順は、KEMを使用して共有シークレット鍵を確立するあらゆる方式に組み込むことができます。鍵確認を行うには、KEMが生成した共有シークレット鍵から専用のKC鍵を導出します。KC提供者は、承認済みMACアルゴリズムとKC鍵を使って所定のデータに対するMACタグを生成し、そのタグをKC受領者に渡します。KC受領者は、KEMが生成した共有シークレット鍵の自分の複製からKC鍵を導出し、その鍵でMACタグを検証します。
4.4.1. Creating the MAC Data
4.4.1. MACデータの作成
During key confirmation, the KC provider creates a message with a MAC tag that is computed on \(\mathsf{MAC\_Data}\) that contains context-specific information. The \(\mathsf{MAC\_Data}\) is formatted as follows:
鍵確認では、KC提供者が、コンテキスト固有の情報を含む \(\mathsf{MAC\_Data}\) に対して計算したMACタグ付きメッセージを作成します。\(\mathsf{MAC\_Data}\) は次の形式です。
• \(\mathsf{KC\_Step\_Label}\) is a six-byte character string that indicates that the \(\mathsf{MAC\_Data}\) is used for key confirmation, whether the \(\mathsf{MAC\_Data}\) is used for the first or second key-confirmation message, and the party serving as the KC provider, either the encapsulator (E) or decapsulator (D). The four valid options are ”\(\mathsf{KC\_1\_E}\)”, ”\(\mathsf{KC\_2\_E}\)”, ”\(\mathsf{KC\_1\_D}\)”, or ”\(\mathsf{KC\_2\_D}\)”. As an example, ”\(\mathsf{KC\_1\_D}\)” indicates that the decapsulator (D) is the KC provider and sends the first KC message. ”\(\mathsf{KC\_2\_E}\)” could then be used by the encapsulator (E) to provide bilateral key confirmation.
• \(\mathsf{KC\_Step\_Label}\) は6バイトの文字列であり、\(\mathsf{MAC\_Data}\) が鍵確認に使われること、その \(\mathsf{MAC\_Data}\) が1回目と2回目のどちらの鍵確認メッセージに使われるか、およびKC提供者がカプセル化側(E)とデカプセル化側(D)のどちらであるかを示します。有効な値は ”\(\mathsf{KC\_1\_E}\)”、”\(\mathsf{KC\_2\_E}\)”、”\(\mathsf{KC\_1\_D}\)”、”\(\mathsf{KC\_2\_D}\)” の4つです。例えば ”\(\mathsf{KC\_1\_D}\)” は、デカプセル化側(D)がKC提供者であり、1回目のKCメッセージを送信することを示します。その後、カプセル化側(E)が ”\(\mathsf{KC\_2\_E}\)” を使用して双方向の鍵確認を行えます。
• \(\mathsf{ID}_P\) and \(\mathsf{ID}_R\) are the identifiers used to label the KC provider and recipient, respectively.
• \(\mathsf{ID}_P\) および \(\mathsf{ID}_R\) は、それぞれKC提供者およびKC受領者を示すラベルとして使用する識別子です。
• \(\mathsf{Eph}_P\) and \(\mathsf{Eph}_R\) are ephemeral data provided by the KC provider and recipient, respectively. The encapsulator’s ephemeral data is the ciphertext. The decapsulator’s ephemeral data is the encapsulation key \(\mathsf{ek}\) if \(\mathsf{ek}\) is ephemeral. Otherwise, the decapsulator’s ephemeral data shall be a nonce with a bit length that is at least equal to the targeted security strength of the KEM key-establishment process (see Appendix C.2).
• \(\mathsf{Eph}_P\) および \(\mathsf{Eph}_R\) は、それぞれKC提供者とKC受領者が提供する一時データです。カプセル化側の一時データは暗号文です。デカプセル化側の一時データは、\(\mathsf{ek}\) が一時的なものである場合はカプセル化鍵 \(\mathsf{ek}\) です。それ以外の場合、デカプセル化側の一時データは、KEMによる鍵確立プロセスの目標安全性強度以上のビット長を持つノンスでなければなりません(付録C.2参照)。
When a nonce is used during key confirmation, it needs to be provided to the encapsulator to construct \(\mathsf{MAC\_Data}\) for MAC tag generation or verification.
鍵確認でノンスを使用する場合、そのノンスをカプセル化側に渡し、MACタグの生成または検証に使う \(\mathsf{MAC\_Data}\) を構成できるようにする必要があります。
• \(\mathsf{Extra}_P\) and \(\mathsf{Extra}_R\) are optional additional data provided by the KC provider and recipient, respectively. This could include additional identifiers, values computed during the key-establishment process but not transmitted, or any other information that the party wants to include. This information can be known ahead of time by both parties or transmitted during key confirmation.
• \(\mathsf{Extra}_P\) および \(\mathsf{Extra}_R\) は、それぞれKC提供者とKC受領者が提供する任意の追加データです。追加の識別子、鍵確立プロセス中に計算されたが送信されなかった値、その他当事者が含めたい情報を含めることができます。この情報は、両当事者が事前に知っていても、鍵確認の際に送信してもよいです。
The MAC algorithm and \(\mathsf{KC\_Key}\) used shall have security strengths equal to or greater than the desired security strength of the application. See Appendix C.1 for permitted MAC algorithms and further details.
使用するMACアルゴリズムと \(\mathsf{KC\_Key}\) の安全性強度は、アプリケーションに求められる安全性強度以上でなければなりません。使用できるMACアルゴリズムと詳細は付録C.1を参照されました。
4.4.2. Obtaining the Key-Confirmation Key
4.4.2. 鍵確認鍵の取得
In order to create and validate the MAC tag for the created MAC_Data, the parties cre-ate a dedicated key-confirmation key (KC_Key). This can be either a portion of the KEM shared secret key or part of the keying material derived from the KEM shared secret key when using a derivation function (see Sec. 4.3). The KC_Key shall only be used for key confirmation and destroyed after use. See Appendix C.1 for KC_Key lengths.
作成したMAC_Dataに対するMACタグを生成して検証するため、当事者は専用の鍵確認鍵(KC_Key)を作成します。これはKEM共有シークレット鍵の一部、または導出関数を使う場合にKEM共有シークレット鍵から導出した鍵素材の一部です(第4.3節参照)。KC_Keyは鍵確認の目的に限って使用し、使用後に破棄しなければなりません。KC_Keyの長さについては付録C.1を参照すること。
When a derivation function is used. After computing the shared secret value and applying the key-derivation method to obtain the derived keying material \(\mathsf{Derived\_Keying\_Material}\), the key-confirmation provider uses agreed-upon bit lengths to parse \(\mathsf{Derived\_Keying\_Material}\) into two parts — the key-confirmation key (\(\mathsf{KC\_Key}\)) and the keys to subsequently protect data (\(\mathsf{Data\_Key}\)):
導出関数を使用する場合:共有シークレット値を計算し、鍵導出方式を適用して導出鍵素材 \(\mathsf{Derived\_Keying\_Material}\) を得た後、鍵確認の提供者は合意したビット長に基づいて \(\mathsf{Derived\_Keying\_Material}\) を2つに分割します。一方は鍵確認鍵(\(\mathsf{KC\_Key}\))、もう一方は後続のデータ保護に使う鍵(\(\mathsf{Data\_Key}\))です。
When a derivation function is NOT used. The key-confirmation provider parses the output of the encapsulation process (i.e., \(\mathsf{KEM\_shared\_secret\_key}\)) into \(\mathsf{KC\_Key}\) and \(\mathsf{Data\_Key}\):
導出関数を使用しない(NOT)場合:鍵確認の提供者はカプセル化処理の出力(すなわち \(\mathsf{KEM\_shared\_secret\_key}\))を \(\mathsf{KC\_Key}\) と \(\mathsf{Data\_Key}\) に分割します。
4.4.3. Key-Confirmation Example
4.4.3. 鍵確認の例
The key-confirmation process can be achieved in multiple ways. The following example showcases unilateral key confirmation from the encapsulator to the decapsulator, which can be used for a client (e.g., Alice) requesting confirmation of successful key establishment from a server (e.g., Bob). Figure 5 shows this process. Some desirable security properties might not be achieved by a protocol of this form and may require additional steps and ingredients.
鍵確認はいくつかの方法で実現できます。以下に示す例は、カプセル化側からデカプセル化側への一方向鍵確認です。これは、クライアント(例:Alice)がサーバー(例:Bob)に対し、鍵確立が成功したことの確認を要求する場合に利用できます。図5にこの処理を示します。この形式のプロトコルでは、望ましい安全性特性の一部が得られない場合があり、それらを得るには追加の手順や構成要素が必要になる場合があります。
1. Alice (i.e., decapsulating party) generates a set of ephemeral keys \((\mathsf{ek}, \mathsf{dk})\) for KEM \(\Pi\) under the agreed parameter set \(p\). Alice then sends \(\mathsf{ek}\), Alice’s identifying string (\(\mathsf{ID}_A\)), and any extra data \(\mathsf{Extra}_A\) to include in the key confirmation to Bob (i.e., encapsulating party).
1. Alice(すなわちデカプセル化側)は、一時鍵の組 \((\mathsf{ek}, \mathsf{dk})\) を、KEM \(\Pi\) 用に、合意したパラメータセット \(p\) のもとで生成します。次にAliceは、\(\mathsf{ek}\)、Aliceの識別文字列(\(\mathsf{ID}_A\))、および鍵確認に含める追加データ \(\mathsf{Extra}_A\) をBob(すなわちカプセル化側)に送信します。
2. Bob performs encapsulation with the received \(\mathsf{ek}\) to generate ciphertext \(c\) and initial key \(K_{B0}\). Bob then derives two keys from \(K_{B0}\): a key-confirmation key \(K_{\mathit{Bkc}}\) to perform key confirmation and additional keying material \(K_{B1}\).
2. Bobは受信した \(\mathsf{ek}\) を使ってカプセル化を行い、暗号文 \(c\) と初期鍵 \(K_{B0}\) を生成します。次にBobは \(K_{B0}\) から2つの鍵を導出します。鍵確認を行うための鍵確認鍵 \(K_{\mathit{Bkc}}\) と、追加の鍵素材 \(K_{B1}\) です。
3. Bob constructs \(\mathsf{MAC\_Data}\) using the following in order:
3. Bobは次のものをこの順に用いて \(\mathsf{MAC\_Data}\) を構成します。
•The constant string ”KC_1_E,” which indicates that Bob (i.e., the encapsulator) is providing key confirmation and that this is the first KC message
•定数文字列「KC_1_E」。これはBob(カプセル化側)が鍵確認を行う提供者であり、1回目のKCメッセージであることを示します。
• \(\mathsf{ID}_B\), which is Bob’s identifier string
• \(\mathsf{ID}_B\)。Bobの識別文字列です。
• \(\mathsf{ID}_A\), which is Alice’s identifier string
• \(\mathsf{ID}_A\)。Aliceの識別文字列です。
• Ciphertext \(c\), which serves as Bob’s (i.e., the KC provider’s) ephemeral value for the key-confirmation process
• 暗号文 \(c\)。これはBob(すなわちKC提供者)の鍵確認プロセスにおける一時値です。
Alice (Decapsulator, Client):
Alice(デカプセル化側、クライアント):
Bob (Encapsulator, Server):
Bob(カプセル化側、サーバー):
1. \((\mathsf{ek}, \mathsf{dk}) \leftarrow \Pi.\mathsf{KeyGen}(p)\)
\(\xrightarrow{\mathsf{ek},\, \mathsf{ID}_A,\, \mathsf{Extra}_A}\)
2. \((c, K_{B0}) \leftarrow \Pi.\mathsf{Encaps}(p, \mathsf{ek})\)
\(K_{\mathit{Bkc}} \parallel K_{B1} \leftarrow \mathsf{KDF}(K_{B0})\)
3. Construct \(\mathsf{MAC\_Data}\)
\(\mathsf{t} \leftarrow \mathtt{MAC}(K_{\mathit{Bkc}}, \mathsf{MAC\_Data})\)
\(\xleftarrow{c,\, \mathsf{t},\, \mathsf{ID}_B,\, \mathsf{Extra}_B}\)
1. \((\mathsf{ek}, \mathsf{dk}) \leftarrow \Pi.\mathsf{KeyGen}(p)\)
\(\xrightarrow{\mathsf{ek},\, \mathsf{ID}_A,\, \mathsf{Extra}_A}\)
2. \((c, K_{B0}) \leftarrow \Pi.\mathsf{Encaps}(p, \mathsf{ek})\)
\(K_{\mathit{Bkc}} \parallel K_{B1} \leftarrow \mathsf{KDF}(K_{B0})\)
3. \(\mathsf{MAC\_Data}\) を構成
\(\mathsf{t} \leftarrow \mathtt{MAC}(K_{\mathit{Bkc}}, \mathsf{MAC\_Data})\)
\(\xleftarrow{c,\, \mathsf{t},\, \mathsf{ID}_B,\, \mathsf{Extra}_B}\)
4. \(K_{A0} \leftarrow \Pi.\mathsf{Decaps}(p, \mathsf{dk}, c)\)
\(K_{\mathit{Akc}} \parallel K_{A1} \leftarrow \mathsf{KDF}(K_{A0})\)
4. \(K_{A0} \leftarrow \Pi.\mathsf{Decaps}(p, \mathsf{dk}, c)\)
\(K_{\mathit{Akc}} \parallel K_{A1} \leftarrow \mathsf{KDF}(K_{A0})\)
5. Construct \(\mathsf{MAC\_Data}\)
if \(\mathtt{MAC}.\mathsf{Ver}(K_{\mathit{Akc}}, \mathsf{MAC\_Data}, \mathsf{t})\)
rejects, abort.
5. \(\mathsf{MAC\_Data}\) を構成
もし \(\mathtt{MAC}.\mathsf{Ver}(K_{\mathit{Akc}}, \mathsf{MAC\_Data}, \mathsf{t})\)
が拒否したら、中止します。
6. result: \(K_{A1}\) (\(K_{\mathit{Akc}}\) destroyed)
result: \(K_{B1}\) (\(K_{\mathit{Bkc}}\) destroyed)
6. 結果:\(K_{A1}\)(\(K_{\mathit{Akc}}\) は破棄)
結果:\(K_{B1}\)(\(K_{\mathit{Bkc}}\) は破棄)
Fig. 5. Key-confirmation example with an ephemeral key pair
図5. 一時鍵ペアを用いた鍵確認の例
• Encapsulation key \(\mathsf{ek}\), which is Alice’s (i.e., the KC recipient’s) ephemeral value for the key-confirmation process
• カプセル化鍵\(\mathsf{ek}\)。これはAlice(すなわちKC受領者)の鍵確認プロセスにおける一時値である
• \(\mathsf{Extra}_B\), which refers to any extra data that Bob (i.e., the KC provider) would like to include
• \(\mathsf{Extra}_B\)。Bob(すなわちKC提供者)が含めたい任意の追加データを指す
• \(\mathsf{Extra}_A\), which refers to the extra data provided by Alice (i.e., the KC recipient)
• \(\mathsf{Extra}_A\)。Alice(すなわちKC受領者)が提供する追加データを指す
Bob calculates the tag \(\mathsf{t}\) using \(K_{\mathit{Bkc}}\) on \(\mathsf{MAC\_Data}\) and sends the following to Alice: 1) ciphertext \(c\), 2) the generated tag \(\mathsf{t}\), 3) and any extra data \(\mathsf{Extra}_B\) that Bob included in the \(\mathsf{MAC\_Data}\).
Bobはタグ\(\mathsf{t}\)を、\(K_{\mathit{Bkc}}\)を用いて\(\mathsf{MAC\_Data}\)に対して計算し、次のものをAliceに送信します。1) 暗号文\(c\)、2) 生成したタグ\(\mathsf{t}\)、3) 追加データ\(\mathsf{Extra}_B\)(Bobが\(\mathsf{MAC\_Data}\)に含めたもの)。
4. Alice performs decapsulation on the received ciphertext \(c\) using the previously generated decapsulation key \(\mathsf{dk}\) to calculate initial key \(K_{A0}\). Alice then derives two keys from \(K_{A0}\) similarly to Bob (in step 2): key-confirmation key \(K_{\mathit{Akc}}\) and additional keying material \(K_{A1}\).
4. Aliceは、受信した暗号文\(c\)を、事前に生成したデカプセル化鍵\(\mathsf{dk}\)でデカプセル化し、初期鍵\(K_{A0}\)を計算します。次にAliceは、\(K_{A0}\)から、Bobと同様に(手順2)2つの鍵を導出します。鍵確認鍵\(K_{\mathit{Akc}}\)と追加の鍵素材\(K_{A1}\)です。
5. Alice constructs \(\mathsf{MAC\_Data}\) as Bob did in step 3 and verifies the received \(\mathsf{t}\) for the \(\mathsf{MAC\_Data}\) using key \(K_{\mathit{Akc}}\). Alice aborts if the tag is rejected or continues if it is verified.
5. Aliceは手順3のBobと同じ方法で\(\mathsf{MAC\_Data}\)を構成し、受信した\(\mathsf{t}\)を、その\(\mathsf{MAC\_Data}\)に対するものとして鍵\(K_{\mathit{Akc}}\)を使って検証します。Aliceは、タグが拒否された場合は中止し、検証された場合は処理を続けます。
6. Alice now has additional assurance that \(K_{A1}\) matches \(K_{B1}\). Alice and Bob destroy the key-confirmation keys \(K_{\mathit{Akc}}\) and \(K_{\mathit{Bkc}}\) and can proceed to use \(K_{A1}\) and \(K_{B1}\) as planned.
6. これでAliceは、\(K_{A1}\)が\(K_{B1}\)と一致することについて追加の保証を得ます。AliceとBobは鍵確認鍵\(K_{\mathit{Akc}}\)および\(K_{\mathit{Bkc}}\)を破棄し、予定どおり\(K_{A1}\)と\(K_{B1}\)を使用できます。
This example only provides unilateral key confirmation. If Bob also wanted assurance, another round of key confirmation can be performed by swapping roles. During this additional round, Alice generates new \(\mathsf{MAC\_Data}\) using \(\mathsf{KC\_2\_D}\) as the label and indicating herself as the KC provider (see Sec. 4.4.1), generates a tag on new \(\mathsf{MAC\_Data}\), and sends the new tag to Bob for verification.
この例では一方向の鍵確認のみを行います。Bobも保証を得たい場合は、役割を入れ替えて鍵確認をもう1ラウンド実行できます。この追加ラウンドでは、Aliceは新たな\(\mathsf{MAC\_Data}\)を、\(\mathsf{KC\_2\_D}\)をラベルとし、自身をKC提供者として示して生成し(第4.4.1節参照)、新しい\(\mathsf{MAC\_Data}\)に対するタグを生成して、その新しいタグを検証のためにBobへ送信します。
4.5. Proof of Possession for KEM Keys
4.5. KEM鍵の所持証明
A key-pair owner may need to provide proof-of-possession (PoP), which is the assurance that they possess the private decapsulation key corresponding to the public encapsulation key. In practice, PoP for RSA encryption key pairs (i.e., encryption key, decryption key) has historically been provided by reusing the same keys as a digital signature key pair (i.e., verification key, signing key). A key-pair owner can provide assurance that they possess the secret decryption key by signing a message using the private signing/decryption key. The party seeking assurance can verify the signature using the public verification/encryption key. Unfortunately, this shortcut does not necessarily apply to all KEMs, so it is important to consider alternative approaches to providing PoP for KEMs.
鍵ペアの所有者は、所持証明(PoP)を提示する必要が生じることがあります。PoPは、公開カプセル化鍵に対応するデカプセル化用秘密鍵を所有していることを保証するものです。実務では、RSA暗号化鍵ペア(暗号化鍵、復号鍵)のPoPは、同じ鍵をデジタル署名鍵ペア(検証鍵、署名鍵)として再利用することで、従来から提示されてきました。鍵ペアの所有者は、署名用/復号用秘密鍵でメッセージに署名し、復号用秘密鍵を所有していることを証明できます。確認する側は、公開検証鍵/暗号化鍵を使って署名を検証できます。しかし、この簡便な方法はすべてのKEMに適用できるとは限らないため、KEMのPoPを提示する代替方法を検討することが重要です。
Consider the case in which Bob has obtained another party’s static public encapsulation key and is communicating with a party purporting to be the key-pair owner corresponding to that encapsulation key. Bob may seek PoP from the other party before any further engagement. One method to obtain PoP is for Bob to participate in a KEM protocol that includes key confirmation (see Sec. 4.4) and in which assurance of the identity of the other party is provided. This method can be used for both static and ephemeral key pairs.
Bobが他者の静的公開カプセル化鍵を取得し、その鍵ペアの所有者を名乗る相手と通信している場合を考えます。Bobは、その相手とさらにやり取りする前にPoPを求めることがあります。PoPを得る方法の1つは、鍵確認を含み(4.4節参照)、相手の身元も確認できるKEMプロトコルにBobが参加することです。この方法は、静的鍵ペアと一時鍵ペアの両方に使用できます。
However, for static key pairs, PoP can also be provided in a certificate by a certificate au-thority (CA). Consider the case in which Alice is the owner of a static KEM key pair and would like to acquire a certificate establishing her ownership. A certificate authority (CA) would require PoP from Alice prior to issuing and publishing a certificate. Bob could then acquire the certificate from either Alice or the CA and would have assurance that Alice pos-sesses the private key. Methods for performing PoP by a CA for KEMs are being developed.
ただし、静的鍵ペアの場合、認証局(CA)が発行する証明書によってPoPを提示することもできます。Aliceが静的KEM鍵ペアの所有者で、その所有を証明する証明書を取得したい場合を考えます。CAは証明書を発行・公開する前にAliceのPoPを要求します。その後、BobはAliceまたはCAから証明書を取得し、Aliceが秘密鍵を所有していることを確認できます。KEMのPoPをCAが確認する方法は現在開発中です。
For illustrative purposes, this section also describes a method proposed in [22] that can be used by a CA to obtain PoP for a private decapsulation key for which a certificate is requested for the corresponding public encapsulation key. In practice, a certificate not only links the identity of the key-pair owner to the static public key, but it also proves that a key-pair owner possesses the static private key that corresponds to a static public key. For the sake of simplicity, assume that Alice’s identifying information \(\mathsf{ID}_{\mathit{Alice}}\) has been submitted to and verified by the CA prior to the protocol run described below.
説明のため、本節では[22]で提案された方法も示します。これは、対応する公開カプセル化鍵について証明書が要求されている秘密デカプセル化鍵のPoPを、CAが得るために使用できます。実際には、証明書は鍵ペア所有者の身元を静的公開鍵に結び付けるだけでなく、鍵ペア所有者が静的公開鍵に対応する静的秘密鍵を保有していることも証明します。簡単のため、Aliceの識別情報\(\mathsf{ID}_{\mathit{Alice}}\)は、以下で説明するプロトコルの実行前にCAへ提出され、CAによって検証済みであると仮定します。
Suppose that Alice has generated a static KEM key pair \((\mathsf{ek},\mathsf{dk})\) and wants to obtain a certificate for \(\mathsf{ek}\). Let \(\Pi\), \(p\) be the KEM and parameter set associated with \((\mathsf{ek},\mathsf{dk})\). Let \(\mathsf{Sym}=(\mathsf{Sym.KeyGen},\mathsf{Sym.Enc},\mathsf{Sym.Dec})\) denote a symmetric encryption scheme with corresponding key generation, encryption, and decryption algorithms, respectively. Let \(H\) denote a cryptographic hash function. Let \(\mathsf{Cert.Gen}\) denote the process used by the CA to generate a certificate.
Aliceが静的KEM鍵ペア\((\mathsf{ek},\mathsf{dk})\)を生成し、\(\mathsf{ek}\)の証明書を取得したいとします。\(\Pi\)、\(p\)を、\((\mathsf{ek},\mathsf{dk})\)に関連付けられたKEMおよびパラメータセットとします。\(\mathsf{Sym}=(\mathsf{Sym.KeyGen},\mathsf{Sym.Enc},\mathsf{Sym.Dec})\)は、それぞれ鍵生成、暗号化、復号のアルゴリズムを持つ共通鍵暗号方式を表すとします。\(H\)は暗号学的ハッシュ関数を表すとします。\(\mathsf{Cert.Gen}\)は、CAが証明書を生成するために使用する処理を表すとします。
Alice (key pair owner)
Alice(鍵ペアの所有者)
Bob (CA)
Bob(CA)
1. static: \((\mathsf{ek},\mathsf{dk})\)
\(\mathsf{ID}_{\mathit{Alice}}\)
\(\xrightarrow{\mathsf{ek},\mathsf{ID}_{\mathit{Alice}}}\)
2. \((c,K) \leftarrow \Pi.\mathsf{Encaps}(p,\mathsf{ek})\)
\(\mathsf{cert}[\mathsf{ek}, p, \mathsf{Alice}] \leftarrow \mathsf{Cert.Gen}(\mathsf{ek},\mathsf{ID}_{\mathit{Alice}})\)
\(H_B \leftarrow H(\mathsf{cert}[\mathsf{ek}, p, \mathsf{Alice}])\)
\(c_{\mathsf{cert}} \leftarrow \mathsf{Sym.Enc}_K(\mathsf{cert}[\mathsf{ek}, p, \mathsf{Alice}])\)
\(\xleftarrow{c,c_{\mathsf{cert}}}\)
1. 静的: \((\mathsf{ek},\mathsf{dk})\)
\(\mathsf{ID}_{\mathit{Alice}}\)
\(\xrightarrow{\mathsf{ek},\mathsf{ID}_{\mathit{Alice}}}\)
2. \((c,K) \leftarrow \Pi.\mathsf{Encaps}(p,\mathsf{ek})\)
\(\mathsf{cert}[\mathsf{ek}, p, \mathsf{Alice}] \leftarrow \mathsf{Cert.Gen}(\mathsf{ek},\mathsf{ID}_{\mathit{Alice}})\)
\(H_B \leftarrow H(\mathsf{cert}[\mathsf{ek}, p, \mathsf{Alice}])\)
\(c_{\mathsf{cert}} \leftarrow \mathsf{Sym.Enc}_K(\mathsf{cert}[\mathsf{ek}, p, \mathsf{Alice}])\)
\(\xleftarrow{c,c_{\mathsf{cert}}}\)
3. \(K_A \leftarrow \Pi.\mathsf{Decaps}(p,\mathsf{dk},c)\)
\(\mathsf{cert}'[\mathsf{ek}, p, \mathsf{Alice}] \leftarrow \mathsf{Sym.Dec}_{K_A}(c_{\mathsf{cert}})\)
\(H_A \leftarrow H(\mathsf{cert}'[\mathsf{ek}, p, \mathsf{Alice}])\)
\(\xrightarrow{H_A}\)
if \(H_A \ne H_B\), abort.
4. publish: \(\mathsf{cert}[\mathsf{ek}, p, \mathsf{Alice}]\)
3. \(K_A \leftarrow \Pi.\mathsf{Decaps}(p,\mathsf{dk},c)\)
\(\mathsf{cert}'[\mathsf{ek}, p, \mathsf{Alice}] \leftarrow \mathsf{Sym.Dec}_{K_A}(c_{\mathsf{cert}})\)
\(H_A \leftarrow H(\mathsf{cert}'[\mathsf{ek}, p, \mathsf{Alice}])\)
\(\xrightarrow{H_A}\)
\(H_A \ne H_B\) であれば中止します。
4. 公開: \(\mathsf{cert}[\mathsf{ek}, p, \mathsf{Alice}]\)
Fig. 6. KEM PoP between a key-pair owner and CA
図6. 鍵ペア所有者とCA間のKEM所持証明
0. Prior to the protocol initiation, Alice has submitted her identifying information \(\mathsf{ID}_{\mathit{Alice}}\) to the CA, and the CA has verified her identity. Throughout the protocol execution, messages coming from Alice are assumed to be authenticated so that no one can impersonate Alice within the protocol.
0. プロトコルの開始前に、Aliceは自分の識別情報\(\mathsf{ID}_{\mathit{Alice}}\)をCAへ提出しており、CAは彼女の身元を検証済みです。プロトコルの実行を通じて、Aliceからのメッセージは認証されているものと仮定し、誰もプロトコル内でAliceになりすますことはできないとします。
1. Alice sends \(\mathsf{ek},\mathsf{ID}_{\mathit{Alice}}\) to the CA to initiate the protocol.
1. Aliceは\(\mathsf{ek},\mathsf{ID}_{\mathit{Alice}}\)をCAへ送信し、プロトコルを開始します。
2. The CA runs \(\Pi.\mathsf{Encaps}(\mathsf{ek},p)\) to produce \((K,c)\). The CA generates the certificate \(\mathsf{cert}[\mathsf{ek},p,\mathsf{Alice}]\) and links Alice’s identity to her encapsulation key \(\mathsf{ek}\). The CA computes \(H_B\), which is the hash of the certificate. The CA then computes \(c_{\mathsf{cert}}=\mathsf{Sym.Enc}_K(\mathsf{cert}[\mathsf{ek},p,\mathsf{Alice}])\) by encrypting the certificate with the key produced by KEM \(\Pi\). Finally, the CA sends the two ciphertexts \(c\) and \(c_{\mathsf{cert}}\) to Alice.
2. CAは\(\Pi.\mathsf{Encaps}(\mathsf{ek},p)\)を実行して\((K,c)\)を生成します。CAは証明書\(\mathsf{cert}[\mathsf{ek},p,\mathsf{Alice}]\)を生成し、Aliceの身元を彼女のカプセル化鍵\(\mathsf{ek}\)に結び付けます。CAは証明書のハッシュである\(H_B\)を計算します。次にCAは、\(c_{\mathsf{cert}}=\mathsf{Sym.Enc}_K(\mathsf{cert}[\mathsf{ek},p,\mathsf{Alice}])\)を、KEM \(\Pi\)が生成した鍵で証明書を暗号化することにより計算します。最後に、CAは2つの暗号文\(c\)と\(c_{\mathsf{cert}}\)をAliceへ送信します。
3. Alice runs \(\Pi.\mathsf{Decaps}(p,\mathsf{dk},c)\) to recover \(K\) and decrypts the certificate by computing \(\mathsf{Sym.Dec}_K(c_{\mathsf{cert}})\) to obtain the plaintext certificate. Alice hashes the plaintext certificate and sends the resulting hash value \(H_A\) to the CA.
3. Aliceは\(\Pi.\mathsf{Decaps}(p,\mathsf{dk},c)\)を実行して\(K\)を復元し、\(\mathsf{Sym.Dec}_K(c_{\mathsf{cert}})\)を計算することで証明書を復号して平文の証明書を得ます。Aliceは平文の証明書をハッシュ化し、得られたハッシュ値\(H_A\)をCAへ送信します。
4. The CA verifies the received hash value \(H_A\) against \(H_B\), which is the hash of the plaintext certificate \(\mathsf{cert}[\mathsf{ek},p,\mathsf{Alice}]\) generated in step 2. If the two hash values are equal, the CA sends an acknowledgment to Alice that the certification process was successful, and \(\mathsf{cert}[\mathsf{ek},p,\mathsf{Alice}]\) is published for use.
4. CAは、受信したハッシュ値\(H_A\)を、\(H_B\)、すなわち手順2で生成した平文の証明書\(\mathsf{cert}[\mathsf{ek},p,\mathsf{Alice}]\)のハッシュと照合します。2つのハッシュ値が等しい場合、CAは証明処理が成功したことを示す確認応答をAliceに送信し、\(\mathsf{cert}[\mathsf{ek},p,\mathsf{Alice}]\)が利用のために公開されます。
Once the CA publishes \(\mathsf{cert}[\mathsf{ek},p,\mathsf{Alice}]\), relying parties using that certificate have assurance that the owner of that certificate (Alice, with identity ”Alice”) possessed the private decapsulation key corresponding to \(\mathsf{ek}\) when the certificate was generated and published. If Alice manages to recover the certificate in step 3, this indirectly proves that she possesses the corresponding decapsulation key \(\mathsf{dk}\). However, the CA would not receive PoP from Alice unless step 4 is completed. This solution requires that the CA has the capabilities to run \(\Pi.\mathsf{Encaps}()\), which may not be true in practice.
CAが\(\mathsf{cert}[\mathsf{ek},p,\mathsf{Alice}]\)を公開すると、その証明書を利用する依拠当事者は、証明書の所有者(識別情報「Alice」を持つAlice)が、\(\mathsf{ek}\)に対応する秘密デカプセル化鍵を、証明書の生成・公開時に保有していたという保証を得ます。Aliceが手順3で証明書を復元できれば、対応するデカプセル化鍵\(\mathsf{dk}\)を保有していることが間接的に証明されます。ただし、手順4が完了しない限り、CAはAliceからPoPを受け取りません。この方法では、CAが\(\Pi.\mathsf{Encaps}()\)を実行する能力を持つ必要がありますが、実際にはそうとは限りません。
4.6. Multi-Algorithm KEMs and PQ/T Hybrids
4.6. マルチアルゴリズムKEMとPQ/Tハイブリッド
Combining multiple key-establishment schemes into a single key-establishment scheme can be advantageous for some applications (e.g., during the migration to post-quantum cryptography). The discussions of such schemes in this document will adhere to the ter-minology established in [23].
複数の鍵確立方式を1つの鍵確立方式に組み合わせると、アプリケーションによっては有利です(例:耐量子暗号への移行時)。本書では、そのような方式について[23]で定められた用語を使用します。
A multi-algorithm key-establishment scheme combines shared secret values that are gen-erated using two or more key-establishment schemes. The underlying schemes are called the components of the overall scheme. In general, the multi-algorithm scheme does not need to have the same interface as its components. In this document, for example, multi-algorithm schemes will always be KEMs, while their components need not be.
マルチアルゴリズム鍵確立方式は、2つ以上の鍵確立方式を用いて生成した共有シークレット値を組み合わせます。基礎となる各方式を、全体方式の構成要素と呼びます。一般に、マルチアルゴリズム方式が構成要素と同じインターフェースを持つ必要はありません。例えば本書では、マルチアルゴリズム方式は常にKEMですが、構成要素はKEMである必要はありません。
A well-designed multi-algorithm scheme will be secure if at least one of the component schemes is secure. This may provide some protection against vulnerabilities that are dis-covered in one of the component schemes after deployment. For example, the migra-tion to post-quantum key-establishment techniques might initially include multi-algorithm solutions that combine one new post-quantum algorithm with one tried-and-tested but quantum-vulnerable (or traditional) algorithm. This is sometimes referred to as hybrid post-quantum/traditional (PQ/T) key establishment. For example, X-Wing KEM is a hybrid PQ/T KEM built from two components: ML-KEM (a lattice-based post-quantum KEM) and X25519 (a traditional Diffie-Hellman-style key exchange) [24].
適切に設計されたマルチアルゴリズム方式は、構成要素方式の少なくとも1つが安全であれば安全です。これにより、導入後に構成要素の1つで脆弱性が発見された場合にも、一定の保護を得られる可能性があります。例えば、耐量子鍵確立技術への移行初期には、新しい耐量子アルゴリズムと、実績はあるものの量子計算に脆弱な従来型アルゴリズムを組み合わせるマルチアルゴリズム方式が使われることがあります。これは、耐量子/従来型(PQ/T)ハイブリッド鍵確立と呼ばれることがあります。例えば、X-Wing KEMは、格子に基づく耐量子KEMであるML-KEMと、従来型のDiffie-Hellman方式鍵交換であるX25519という2つの構成要素からなるPQ/TハイブリッドKEMです[24]。
This section outlines approved approaches for multi-algorithm key establishment, which have two stages:
本節では、次の2段階からなる、承認済みのマルチアルゴリズム鍵確立方式を説明します。
1.Establish shared secrets. All component key-establishment schemes are run (typi-cally in parallel), resulting in Alice and Bob sharing a collection of shared secrets — one for each component scheme.
1.共有シークレットの確立:すべての構成要素鍵確立方式を(通常は並列に)実行します。その結果、AliceとBobは各構成要素方式につき1つずつ、複数の共有シークレットを持ちます。
2.Combine shared secrets. Alice and Bob individually use a key combiner to combine their individual shared secrets into a single shared secret each. Approved key com-biners are described in Sec. 4.6.2.
2.共有シークレットの結合:AliceとBobはそれぞれ鍵結合器を使用し、各自の共有シークレットを1つの共有シークレットにまとめます。承認済みの鍵結合器については第4.6.2節で説明します。
For simplicity, the exposition below focuses on a particular case: constructing a single KEM from two component KEMs. Since both the components and the multi-algorithm scheme in this case are of the same type (i.e., KEMs), the result is called a composite KEM. Most key-establishment schemes of interest can easily be expressed as KEMs (see, e.g., ECDH-KEM in Sec. 5.1.1 and RSA-KEM in Sec. 5.1.2). Moreover, the hybrid PQ/T application typically calls for two component schemes: one post-quantum scheme, and one traditional scheme. The two-algorithm composite KEM described below is easily adapted to other cases, such as combining more than two schemes or combining KEMs with non-KEMs.
以下の説明では、簡単のため、2つの構成要素KEMから単一のKEMを構築する特定の場合に焦点を当てます。この場合、構成要素も複数アルゴリズム方式も同じ種類(すなわちKEM)であるため、その結果は合成KEMと呼ばれます。関心の対象となる鍵確立方式の大半は、KEMとして容易に表現できます(例えば、5.1.1節のECDH-KEMや5.1.2節のRSA-KEMを参照してください)。さらに、ハイブリッドPQ/Tのアプリケーションでは通常、2つの構成要素方式、すなわち耐量子方式1つと従来型方式1つが必要となります。以下に説明する2アルゴリズムの合成KEMは、3つ以上の方式の組合せや、KEMと非KEMの組合せなど、他の場合にも容易に適応できます。
4.6.1. Constructing a Composite KEM
4.6.1. 合成KEMの構築
Given two KEMs \(\Pi_1\) and \(\Pi_2\), one can construct a composite KEM \(\mathcal{C}[\Pi_1,\Pi_2]\) via the following sequence of steps:
2つのKEM \(\Pi_1\)および\(\Pi_2\)から、複合KEM \(\mathcal{C}[\Pi_1,\Pi_2]\)を次の一連の手順で構成できます。
1. Choose parameter sets. Choose a collection \(\mathcal{C}[\Pi_1,\Pi_2].\mathsf{ParamSets}\) of parameter sets. Each parameter set will be a pair \(p = (p_1, p_2)\), where \(p_1 \in \Pi_1.\mathsf{ParamSets}\) and \(p_2 \in \Pi_2.\mathsf{ParamSets}\).
1. パラメータセットを選択します。 パラメータセットの集まり\(\mathcal{C}[\Pi_1,\Pi_2].\mathsf{ParamSets}\)を選択します。各パラメータセットはペア\(p = (p_1, p_2)\)であり、\(p_1 \in \Pi_1.\mathsf{ParamSets}\)かつ\(p_2 \in \Pi_2.\mathsf{ParamSets}\)です。
2. Select a key combiner. Choose a key combiner algorithm \(\mathtt{KeyCombine}\). The inputs to \(\mathtt{KeyCombine}\) include a pair of shared secret keys (one from \(\Pi_1\) and one from \(\Pi_2\)), a pair of ciphertexts, a pair of encapsulation keys, and a parameter set. The output is a single shared secret key. Section 4.6.2 discusses NIST-approved key combiners.
2. 鍵結合器を選択します。 鍵結合アルゴリズム\(\mathtt{KeyCombine}\)を選択します。\(\mathtt{KeyCombine}\)への入力には、共有シークレット鍵の対(\(\Pi_1\)から1つ、\(\Pi_2\)から1つ)、暗号文の対、カプセル化鍵の対、およびパラメータセットが含まれます。出力は1つの共有シークレット鍵です。NISTが承認する鍵結合器については第4.6.2節で説明します。
3. Construct a composite key-generation algorithm. When a parameter set \(p = (p_1, p_2)\) is input, the algorithm \(\mathcal{C}[\Pi_1,\Pi_2].\mathsf{KeyGen}\) will perform:
3. 複合鍵生成アルゴリズムを構成します。 パラメータセット\(p = (p_1, p_2)\)が入力されると、アルゴリズム\(\mathcal{C}[\Pi_1,\Pi_2].\mathsf{KeyGen}\)は次を実行します。
1. \((\mathsf{ek}_1, \mathsf{dk}_1) \leftarrow \Pi_1.\mathsf{KeyGen}(p_1)\).
1. \((\mathsf{ek}_1, \mathsf{dk}_1) \leftarrow \Pi_1.\mathsf{KeyGen}(p_1)\)。
2. \((\mathsf{ek}_2, \mathsf{dk}_2) \leftarrow \Pi_2.\mathsf{KeyGen}(p_2)\).
2. \((\mathsf{ek}_2, \mathsf{dk}_2) \leftarrow \Pi_2.\mathsf{KeyGen}(p_2)\)。
3. Output composite encapsulation key \(\mathsf{ek}_1 \parallel \mathsf{ek}_2\).
3. 複合カプセル化鍵\(\mathsf{ek}_1 \parallel \mathsf{ek}_2\)を出力します。
4. Output composite decapsulation key \(\mathsf{dk}_1 \parallel \mathsf{dk}_2\).
4. 複合デカプセル化鍵\(\mathsf{dk}_1 \parallel \mathsf{dk}_2\)を出力します。
4. Construct a composite encapsulation algorithm. When a parameter set \(p = (p_1, p_2)\) and encapsulation key \(\mathsf{ek}_1 \parallel \mathsf{ek}_2\) are input, the algorithm \(\mathcal{C}[\Pi_1,\Pi_2].\mathsf{Encaps}\) will perform:
4. 複合カプセル化アルゴリズムを構成します。 パラメータセット\(p = (p_1, p_2)\)およびカプセル化鍵\(\mathsf{ek}_1 \parallel \mathsf{ek}_2\)が入力されると、アルゴリズム\(\mathcal{C}[\Pi_1,\Pi_2].\mathsf{Encaps}\)は次を実行します。
1. \((K_1, c_1) \leftarrow \Pi_1.\mathsf{Encaps}(p_1, \mathsf{ek}_1)\).
1. \((K_1, c_1) \leftarrow \Pi_1.\mathsf{Encaps}(p_1, \mathsf{ek}_1)\)。
2. \((K_2, c_2) \leftarrow \Pi_2.\mathsf{Encaps}(p_2, \mathsf{ek}_2)\).
2. \((K_2, c_2) \leftarrow \Pi_2.\mathsf{Encaps}(p_2, \mathsf{ek}_2)\)。
3. Output combined shared secret key
3. 結合した共有シークレット鍵を出力します。
4. Output composite ciphertext \(c := c_1 \parallel c_2\).
4. 複合暗号文 \(c := c_1 \parallel c_2\) を出力します。
5. Construct a composite decapsulation algorithm. When a parameter set \(p = (p_1, p_2)\), decapsulation key \(\mathsf{dk}_1 \parallel \mathsf{dk}_2\), and ciphertext \(c_1 \parallel c_2\) are input, the algorithm \(\mathcal{C}[\Pi_1, \Pi_2].\mathsf{Decaps}\) will perform:
5. 複合デカプセル化アルゴリズムを構成します。 パラメータセット \(p = (p_1, p_2)\)、デカプセル化鍵 \(\mathsf{dk}_1 \parallel \mathsf{dk}_2\)、および暗号文 \(c_1 \parallel c_2\) が入力されると、アルゴリズム \(\mathcal{C}[\Pi_1, \Pi_2].\mathsf{Decaps}\) は次を実行します。
1. \(K'_1 \leftarrow \Pi_1.\mathsf{Decaps}(p_1, \mathsf{dk}_1, c_1)\).
1. \(K'_1 \leftarrow \Pi_1.\mathsf{Decaps}(p_1, \mathsf{dk}_1, c_1)\)。
2. \(K'_2 \leftarrow \Pi_2.\mathsf{Decaps}(p_2, \mathsf{dk}_2, c_2)\).
2. \(K'_2 \leftarrow \Pi_2.\mathsf{Decaps}(p_2, \mathsf{dk}_2, c_2)\)。
3. Output combined shared secret key
3. 結合した共有シークレット鍵を出力します。
Since the inputs to KeyCombine include the composite encapsulation key, the decapsulat-ing party must retain a copy of that key or maintain the ability to recreate it after perform-ing key generation.
KeyCombineの入力には複合カプセル化鍵が含まれるため、デカプセル化側は、その鍵の複製を保持するか、鍵生成の実行後に鍵を再生成できる状態を保たなければなりません。
General multi-algorithm schemes. The above construction can be extended in the obvi-ous way to composite constructions that use more than two component KEMs. Extend-ing to the case of a completely general multi-algorithm key-establishment scheme can be more complex, as the components in such a scheme can vary widely. For example, such schemes could potentially include pre-shared keys or shared secrets established via quan-tum key distribution. Still, most multi-algorithm schemes will likely include a step in which a series of shared secrets are combined via a key combiner algorithm of a form similar to KeyCombine above. In those cases, an approved key combiner discussed in Sec. 4.6.2 shall be used.
一般的なマルチアルゴリズム方式:上記の構成は、2つを超える構成要素KEMを使う複合方式へも容易に拡張できます。より一般的なマルチアルゴリズム鍵確立方式に拡張する場合は、構成要素の種類が幅広く異なるため、さらに複雑になることがあります。例えば、事前共有鍵や量子鍵配送によって確立した共有シークレットを含む場合があります。それでも、多くのマルチアルゴリズム方式では、上記のKeyCombineに類似した鍵結合アルゴリズムを用いて複数の共有シークレットを結合する手順が含まれると考えられます。その場合、第4.6.2節で説明する承認済み鍵結合器を使用しなければなりません。
4.6.2. Approved Key Combiners
4.6.2. 承認済み鍵結合器
This section describes approved methods for combining shared secrets as part of a multi-algorithm key-establishment scheme. Choosing such a method amounts to selecting a key combiner KeyCombine. At a minimum, KeyCombine accepts two shared secrets as input, where one or both may be shared secret keys. Optionally, KeyCombine can also accept additional information, such as ciphertexts, encapsulation keys, parameter sets, or other context-dependent data (e.g., the composite KEM in Sec. 4.6.1). As output, KeyCombine produces a single shared secret key.
本節では、マルチアルゴリズム鍵確立方式の一部として共有シークレットを結合する、承認済みの方法を説明します。方法を選ぶことは、鍵結合器KeyCombineを選択することに相当します。KeyCombineは少なくとも2つの共有シークレットを入力として受け取り、その一方または両方を共有シークレット鍵とすることができます。任意で、暗号文、カプセル化鍵、パラメータセットなどの追加情報や、その他のコンテキスト依存データ(例:第4.6.1節の複合KEM)を受け取ることもできます。出力として、KeyCombineは1つの共有シークレット鍵を生成します。
This section describes how cryptographic methods standardized in other NIST publications can be used as key combiners under an appropriate interpretation. There are two cate-gories of such key combiners:
本節では、他のNIST刊行物で標準化された暗号方式を、適切な解釈のもとで鍵結合器として使用する方法を説明します。このような鍵結合器には次の2種類があります。
1.Key combiners from key-derivation methods approved in SP 800-56C [21]
1.SP 800-56C [21]で承認された鍵導出方式による鍵結合器。
2.Key combiners from key-combination methods approved in SP 800-133 [18]
2.SP 800-133 [18]で承認された鍵結合方式による鍵結合器。
Concatenation of inputs. The following descriptions involve invocations of functions (e.g., hash functions \(H : \{0,1\}^* \to \{0,1\}^n\)) on multiple comma-separated inputs (e.g., \(z := H(x, y)\)). This should be distinguished from invoking the same function on a single input that is formed by simply concatenating those inputs (e.g., \(w := H(x \| y)\)). For example, if the lengths of the two inputs can vary, concatenation can have unintended consequences (e.g., \(x \| y = x' \| y'\) even though \((x, y) \neq (x', y')\)). However, an appropriate encoding of a pair \((x, y)\) as a single bitstring can specify the lengths of \(x\) and \(y\) such that invoking \(H\) on \((x, y)\) is distinct from invoking \(H\) on \((x', y')\).
入力の連結。以下の説明では、カンマで区切った複数の入力に関数(例:ハッシュ関数 \(H : \{0,1\}^* \to \{0,1\}^n\))を呼び出す記法(例:\(z := H(x, y)\))が用いられます。これは、それらの入力を単純に連結して形成した単一の入力に同じ関数を呼び出すこと(例:\(w := H(x \| y)\))とは区別すべきです。例えば、2つの入力の長さが可変である場合、連結は意図しない結果を招くことがあります(例:\(x \| y = x' \| y'\)であっても\((x, y) \neq (x', y')\)となりうます)。しかし、組\((x, y)\)を単一のビット列として符号化し、\(x\)と\(y\)の長さを指定できる適切な符号化を用いれば、\(H\)を\((x, y)\)に対して呼び出すことと、\(H\)を\((x', y')\)に対して呼び出すこととを区別できます。
The interpretation of invoking a function on comma-separated inputs generally depends on the application and encoding and might also involve specifying the lengths of each individual input. In some scenarios, simple concatenation can also be appropriate. In any case, it is important to choose and fix this interpretation in a manner that is appropriate for the given application.
カンマ区切りの入力に対して関数を呼び出すことの解釈は、一般にアプリケーションと符号化に依存し、個々の入力の長さの指定を伴う場合もあります。状況によっては、単純な連結が適切なこともあります。いずれにせよ、この解釈は対象のアプリケーションに適した形で選択し、固定することが重要です。
Key derivation in SP 800-56C. SP 800-56C [21] specifies a collection of approved methods for performing key derivation. In SP 800-56C, a key derivation method (KDM) is applied to a shared secret \(Z\) generated as specified in SP 800-56A [1] or SP 800-56B [2] along with some additional input and results in keying material \(K\):
SP 800-56Cの鍵導出。 SP 800-56C [21]は、鍵導出を行うための承認済み方式の集まりを定めています。SP 800-56Cでは、SP 800-56A [1]またはSP 800-56B [2]に従って生成した共有シークレット \(Z\) に追加入力を組み合わせて鍵導出方式(KDM)を適用し、鍵素材 \(K\) を得ます。
The key-derivation method \(\mathsf{KDM}\) can take one of two forms:
鍵導出方式 \(\mathsf{KDM}\) には、次の2つの形式があります。
1. One-step key derivation. In this case, \(K\) is computed by applying a key-derivation function \(\mathsf{KDF}\) to the two inputs \(Z\) and \(\mathtt{OtherInput}\).
1. 1段階の鍵導出。この場合、\(K\) は、鍵導出関数 \(\mathsf{KDF}\) を2つの入力 \(Z\) および \(\mathtt{OtherInput}\) に適用して計算します。
2. Two-step key derivation. In this case, two functions are required: \(\mathsf{Extract}\) (which is a randomness extractor) and \(\mathsf{Expand}\). The process begins with applying \(\mathsf{Extract}\) to \(Z\) using a salt provided in \(\mathtt{OtherInput}\) as the seed. \(\mathsf{Expand}\) is then applied to the result along with \(\mathtt{FixedInfo}\), which is also provided in \(\mathtt{OtherInput}\).
2. 2段階の鍵導出:この場合は、\(\mathsf{Extract}\)(ランダムネス抽出器)と\(\mathsf{Expand}\)の2つの関数が必要です。処理ではまず、\(\mathsf{Extract}\)を\(Z\)に適用し、その際\(\mathtt{OtherInput}\)で与えられるsaltをシードとして用います。次に\(\mathsf{Expand}\)を、その結果と、\(\mathtt{FixedInfo}\)(これも\(\mathtt{OtherInput}\)で与えられる)に適用します。
In this method, it is required that extraction is applied to the shared secret \(Z\).
この方式では、共有シークレット\(Z\)に抽出処理を適用しなければなりません。
SP 800-56C describes the specific approved choices of \(\mathsf{KDF}\), \(\mathsf{Extract}\), and \(\mathsf{Expand}\) as well as the format and content of \(\mathtt{OtherInput}\). These details will not be discussed in this document.
SP 800-56Cは、承認済みの\(\mathsf{KDF}\)、\(\mathsf{Extract}\)、\(\mathsf{Expand}\)の具体的な選択肢に加え、\(\mathtt{OtherInput}\)の形式と内容を規定しています。これらの詳細は本書では扱いません。
As discussed in Sec. 4.3, this publication approves the application of SP 800-56C KDMs to the shared secret keys of approved KEMs. In particular, this means that the quantity \(Z\) in Equation (11) (and hence, also in (12) and (13)) can be the shared secret key of an approved KEM.
第4.3節で述べたように、本刊行物は、承認済みKEMの共有シークレット鍵にSP 800-56CのKDMを適用することを承認しています。具体的には、式(11)の量\(Z\)(したがって式(12)および(13)のものも)として、承認済みKEMの共有シークレット鍵を使用できます。
Key combiners derived from SP 800-56C. In both one-step and two-step key derivation, SP 800-56C allows the shared secret \(Z\) to have the form \(Z = (S_1, S_2)\), where \(S_1\) is a shared secret generated as specified in SP 800-56A [1] or SP 800-56B [2], while \(S_2\) is a shared secret generated in some other (not necessarily approved) manner. This yields a key combiner \(K \leftarrow \mathsf{KDM}((S_1, S_2), \mathtt{OtherInput})\) for a two-algorithm key-establishment scheme. One can also combine many shared secrets:
SP 800-56Cから導出される鍵結合器。1段階および2段階の鍵導出のどちらでも、SP 800-56Cは共有シークレット\(Z\)が\(Z = (S_1, S_2)\)の形をとることを認めています。ここで\(S_1\)はSP 800-56A [1]またはSP 800-56B [2]に規定された方法で生成された共有シークレットであり、\(S_2\)はそれ以外の(必ずしも承認されていない)方法で生成された共有シークレットです。これにより、2つのアルゴリズムを用いる鍵確立方式のための鍵結合器\(K \leftarrow \mathsf{KDM}((S_1, S_2), \mathtt{OtherInput})\)が得られます。複数の共有シークレットを結合することもできます。
This publication approves the use of the key combiner (14) for any \(t > 1\) if at least one shared secret (i.e., \(S_j\) for some \(j\)) is generated from the key-establishment methods in SP 800-56A [1] or SP 800-56B [2] or an approved KEM. If the \(\mathsf{KDM}\) in the combiner (14) is a two-step method (i.e., using (13)), extraction is performed with all shared secrets as the input.
本刊行物は、任意の\(t > 1\)について、少なくとも1つの共有シークレット(すなわち\(S_j\)、ただし\(j\)はいずれかの値)が、SP 800-56A [1]もしくはSP 800-56B [2]の鍵確立方式、または承認済みKEMによって生成されている場合に、鍵結合器(14)の使用を承認します。鍵結合器(14)の\(\mathsf{KDM}\)が2段階方式(すなわち(13)を用いるもの)である場合、すべての共有シークレットを入力として抽出を行います。
SP 800-56C allows \(\mathtt{OtherInput}\) to contain an input that is chosen arbitrarily by the protocol specification. This optional input is contained in a parameter called \(\mathtt{FixedInfo}\) in SP 800-56C. By choosing \(\mathtt{FixedInfo}\) appropriately, one can also construct approved key combiners of the form (14) that receive inputs in addition to shared secrets, such as encapsulation keys, ciphertexts, parameter sets, and domain separators.
SP 800-56Cでは、\(\mathtt{OtherInput}\)に、プロトコル仕様が任意に選択する入力を含めることができます。この任意の入力は、SP 800-56Cで\(\mathtt{FixedInfo}\)と呼ばれるパラメータに含まれます。\(\mathtt{FixedInfo}\)を適切に選ぶことで、共有シークレットに加えて、カプセル化鍵、暗号文、パラメータセット、ドメイン分離子なども入力として受け取る、(14)の形式の承認済み鍵結合器を構成することもできます。
Several key combiners can be generated according to Expression (14). As a simple example, consider the following special case. Choose \(\mathsf{KDM}\) to be the one-step key-derivation method, where \(\mathsf{KDF}\) is an approved hash function. Set \(\mathtt{OtherInput}\) to contain the list of ciphertexts and encapsulation keys together with a domain separator \(\mathtt{domain\_sep}\) (possibly including the parameter set \(p\)). Define a key combiner algorithm \(\mathtt{KeyCombine}\) simply by setting
式(14)に従って複数の鍵結合器を構成できます。簡単な例として、次の特別な場合を考えます。\(\mathsf{KDM}\)として1段階鍵導出方式を選び、その\(\mathsf{KDF}\)は承認済みハッシュ関数とします。\(\mathtt{OtherInput}\)には、暗号文とカプセル化鍵の一覧を、ドメイン分離子\(\mathtt{domain\_sep}\)(パラメータセット\(p\)を含んでもよい)とともに含めます。鍵結合アルゴリズム\(\mathtt{KeyCombine}\)を、単に次のように置いて定義します。
One can then instantiate the composite KEM example from Sec. 4.6 by using this key combiner. The resulting composite KEM will have a shared secret key whose length is the output length of \(H\).
この鍵結合器を使用して、第4.6節の複合KEMの例を具体化できます。得られる複合KEMの共有シークレット鍵の長さは、\(H\)の出力長になります。
Key combiners derived from SP 800-133. SP 800-133 [18] provides three approved methods for combining cryptographic keys that were generated in an approved way. These methods can be broadly described as concatenation, XORing, and key extraction using HMAC. Some of these methods can also be applied to just a single key. As discussed in Sec. 4.3, these methods are approved for key derivation for approved KEMs.
SP 800-133から導出される鍵結合器。SP 800-133 [18]は、承認された方法で生成された暗号鍵を結合する3つの承認済み方法を規定しています。これらの方法は、大きく連結、XOR、およびHMACを用いた鍵抽出に分けられます。これらの方法の一部は、単一の鍵にも適用できます。4.3節で述べたとおり、これらの方法は承認済みKEMの鍵導出に承認されています。
When combining multiple keys \(K_1, K_2, \ldots, K_t\), the key-combination methods found in SP 800-133 [18] require every key \(K_j\) for \(j \in \{1, 2, \ldots, t\}\) to be generated using approved methods. These methods can be used directly as key combiners for constructing multi-algorithm schemes in cases where all of the component schemes are approved, and each one produces a key. Any protocol using multi-algorithm KEMs with a concatenation key combiner should ensure that the final shared secret key from the key combiner is passed through a KDF before use.
複数の鍵 \(K_1, K_2, \ldots, K_t\) を結合する場合、SP 800-133 [18]の鍵結合方法では、\(j \in \{1, 2, \ldots, t\}\) のすべての鍵 \(K_j\) が承認済みの方法で生成されていることが求められます。これらの方法は、すべての構成要素方式が承認済みであり、それぞれが鍵を生成する場合に、複数アルゴリズム方式を構築するための鍵結合器としてそのまま使用できます。連結による鍵結合器を用いた複数アルゴリズムKEMを使用するプロトコルは、鍵結合器から得られた最終的な共有シークレット鍵を、使用前にKDFに通すべきです。
4.6.3. Security Considerations for Composite Schemes
4.6.3. 合成方式のセキュリティ上の考慮事項
The typical goal of a composite KEM construction is to ensure that security will hold if any of the component KEMs is secure. There are some important security considerations when constructing composite KEMs.
合成KEMの構成における典型的な目標は、構成要素KEMのいずれかが安全であれば、安全性が保たれるようにすることです。合成KEMを構築する際には、いくつかの重要なセキュリティ上の考慮事項があります。
Theoretical security.
理論的安全性。
The two main security properties that KEMs can satisfy (see Sec. 2.3) are:
KEMが満たし得る2つの主要なセキュリティ特性(2.3節を参照)は次のとおりです。
1.IND-CPA security (i.e., security against passive eavesdropping attacks)
1.IND-CPA安全性(すなわち、受動的な盗聴攻撃に対する安全性)
2.IND-CCA security (i.e., security against active attacks)
2.IND-CCA安全性(すなわち、能動的攻撃に対する安全性)
A well-constructed composite KEM \(\mathcal{C}[\Pi_1,\Pi_2]\) should preserve the security properties of its component KEMs \(\Pi_1\) and \(\Pi_2\). This crucially depends on how the composite KEM is constructed and the choice of the key combiner.
適切に構成された複合KEM \(\mathcal{C}[\Pi_1,\Pi_2]\) は、その構成要素KEMである \(\Pi_1\) および \(\Pi_2\) の安全性特性を維持することが望まれます。これは、複合KEMがどのように構成されるかと鍵結合器の選択に大きく依存します。
An important example is when the goal is active (i.e., IND-CCA) security, but only one of the two schemes \(\Pi_1\) and \(\Pi_2\) is itself IND-CCA, and the designer of the composite scheme may not know which one it is. In this case, the choice of the key combiner is particularly relevant. As shown in [24], the straightforward key combiner
重要な例として、目標が能動的攻撃に対する安全性(すなわちIND-CCA)である一方、2つの方式 \(\Pi_1\) と \(\Pi_2\) の一方だけがそれ自体IND-CCAであり、複合方式の設計者がそれがどちらであるかを知らない場合があります。この場合、鍵結合器の選択が特に重要です。[24]に示されているとおり、次の単純な鍵結合器
that only uses the two shared secret keys \(K_1\) (of \(\Pi_1\)) and \(K_2\) (of \(\Pi_2\)) does not preserve IND-CCA security, regardless of the properties of the KDF. So, for example, the scheme \(\Pi_2\) could be so broken that \(\mathcal{C}[\Pi_1,\Pi_2]\) is not IND-CCA, even if \(\Pi_1\) is IND-CCA and regardless of what KDF is used.
2つの共有シークレット鍵 \(K_1\)(\(\Pi_1\) のもの)と \(K_2\)(\(\Pi_2\) のもの)だけを使うこの鍵結合器は、KDFの性質にかかわらずIND-CCA安全性を維持しません。したがって、例えば方式 \(\Pi_2\) の安全性が大きく損なわれていて、\(\mathcal{C}[\Pi_1,\Pi_2]\) がIND-CCAでなくなることがありうます。これは \(\Pi_1\) がIND-CCAであっても、またどのKDFを使用しても変わりません。
Therefore, NIST encourages the use of key combiners that generically preserve IND-CCA security, in the sense that the combined scheme is IND-CCA, provided at least one of the ingredient KEMs is IND-CCA. One example of such a key combiner is as in (15). Let \(H\) denote a hash function from the SHA-3 family, which is approved for use in one-step key derivation in SP 800-56C [21]. Define the key combiner \(\mathtt{KeyCombine}_H^{\mathtt{CCA}}\) as follows (recalling the notation in Sec. 4.6):
したがってNISTは、少なくとも1つの構成要素KEMがIND-CCA安全であれば複合方式もIND-CCA安全となるという意味で、IND-CCA安全性を一般的に維持する鍵結合器の使用を推奨します。そのような鍵結合器の一例が式(15)の形のものです。\(H\)はSHA-3ファミリーのハッシュ関数を表すものとします。SHA-3ファミリーは、SP 800-56C [21]で1段階鍵導出への使用が承認されています。鍵結合器\(\mathtt{KeyCombine}_H^{\mathtt{CCA}}\)を次のように定義する(第4.6節の表記を用いる):
• Inputs from \(\Pi_1\): \(\mathsf{ek}_1\), \(c_1\), \(K_1\)
• \(\Pi_1\)からの入力: \(\mathsf{ek}_1\), \(c_1\), \(K_1\)
• Inputs from \(\Pi_2\): \(\mathsf{ek}_2\), \(c_2\), \(K_2\)
• \(\Pi_2\)からの入力: \(\mathsf{ek}_2\), \(c_2\), \(K_2\)
• Output: \(H(K_1, K_2, c_1, c_2, \mathsf{ek}_1, \mathsf{ek}_2, \mathtt{domain\_sep})\)
• 出力: \(H(K_1, K_2, c_1, c_2, \mathsf{ek}_1, \mathsf{ek}_2, \mathtt{domain\_sep})\)
The domain separator \(\mathtt{domain\_sep}\) should be used to uniquely identify the composite scheme in use (e.g., \(\Pi_1\), \(\Pi_2\), order of composition, choice of parameter set, key combiner, \(\mathit{KDF}\)). As shown in [25], \(\mathtt{KeyCombine}^{\mathtt{CCA}}_{H}\) preserves IND-CCA security if \(H\) is modeled as a random oracle. Note that [25] does not incorporate encapsulation keys into the combiner, as this is not needed to achieve the IND-CCA-preserving property. However, including encapsulation keys can have other potential advantages in secure protocols, such as binding the final shared secret to the identities of the participating parties.
ドメイン分離子\(\mathtt{domain\_sep}\)は、使用する複合方式(例:\(\Pi_1\)、\(\Pi_2\)、構成順序、パラメータセットの選択、鍵結合器、\(\mathit{KDF}\))を一意に識別するために用いるべきです。[25]で示されているとおり、\(H\)をランダムオラクルとしてモデル化する場合、\(\mathtt{KeyCombine}^{\mathtt{CCA}}_{H}\)はIND-CCA安全性を維持します。なお、[25]は、IND-CCAを維持する性質の達成には不要であるため、カプセル化鍵を鍵結合器に組み込んでいません。ただし、カプセル化鍵を含めることには、最終的な共有シークレットを関与する当事者の識別情報に結び付けるなど、安全なプロトコルにおける他の潜在的な利点があります。
Security in practice. While composite schemes are meant to increase security, they nec-essarily add a layer of additional complexity to the basic KEM framework. This additional complexity will be reflected in implementations and applications and could introduce se-curity vulnerabilities. Moreover, adding composite schemes introduces additional choices in protocols, which could also introduce vulnerabilities (e.g., in the form of “downgrade attacks”). Implementers and users should be aware of the potential challenges in imple-menting and deploying composite schemes.
実運用での安全性:複合方式は安全性の向上を目的としますが、基本的なKEMの枠組みに必然的に複雑さを追加します。その複雑さは実装やアプリケーションにも及び、新たなセキュリティ脆弱性を招くおそれがあります。また、複合方式を導入するとプロトコル上の選択肢も増え、ダウングレード攻撃などの脆弱性につながる場合があります。実装者と利用者は、複合方式の実装・配備に伴う潜在的な課題を認識しておくべきです。
5. Examples
5. 例
This section is meant to help readers understand some aspects of how KEMs are con-structed. It only provides examples, not requirements or specific guidelines.
本節は、KEMの構成方法のいくつかの側面について読者の理解を助けることを目的とします。ここに示すのは例のみであり、要件や具体的な指針ではありません。
5.1. Examples of KEMs
5.1. KEMの例
The following subsections discuss three key-encapsulation mechanisms: ECDH-KEM, RSA-KEM, and ML-KEM. While ECDH and RSA key transport are not typically described as KEMs, the discussions below will give a high-level description of how both can be naturally viewed as KEMs. The goal of these descriptions is illustrative only. As FIPS 203 already contains a complete description of ML-KEM, the discussion below will simply reference the relevant parts of FIPS 203 [3].
以下の各節では、ECDH-KEM、RSA-KEM、ML-KEMという3つの鍵カプセル化機構を取り上げます。ECDHとRSA鍵輸送は通常KEMとは説明されませんが、以下では、これらを自然にKEMとして捉える方法を概説します。説明は例示のみを目的としています。ML-KEMについてはFIPS 203に完全な説明があるため、以下の説明ではFIPS 203の関連する箇所を参照します[3]。
5.1.1. A KEM From Diffie-Hellman
5.1.1. Diffie-Hellmanから構成するKEM
A KEM may be constructed from a Diffie-Hellman (DH) key-agreement scheme. The high-level idea is that, if the two parties in a DH scheme send their messages in sequential order (e.g., Alice first, then Bob), then:
Diffie-Hellman(DH)鍵合意方式からKEMを構成できます。DH方式の2者がメッセージを順番に送信する(例:最初にAlice、次にBob)場合、概念的には次のように対応付けられます。
1.The public message and private randomness of Alice can be viewed as an encapsu-lation key and a decapsulation key, respectively, and
1.Aliceの公開メッセージと秘密乱数は、それぞれカプセル化鍵とデカプセル化鍵とみなすことができ、
2.The public message of Bob can be viewed as a ciphertext.
2.Bobの公開メッセージは暗号文とみなすことができます。
For example, a KEM can be constructed from the C(1e, 1s, ECC CDH) Scheme from SP 800-56A [1] as follows:
例えば、SP 800-56A [1]のC(1e, 1s, ECC CDH)方式から、次のようにKEMを構成できます。
• \(\text{ECDH-KEM}.\mathsf{ParamSets}\). The parameter sets are the same as those specified for ECDH in Sec. 5.5.1.2 of SP 800-56A.
• \(\text{ECDH-KEM}.\mathsf{ParamSets}\):パラメータセットは、SP 800-56A第5.5.1.2節でECDH用に規定されているものと同じです。
• \(\text{ECDH-KEM}.\mathsf{KeyGen}\). The key-generation algorithm is the same as the one specified in Sec. 5.6.1.2 of SP 800-56A. Alice generates a static key pair and makes the static public key available as the encapsulation key. Bob generates an ephemeral key pair when initiating the key establishment with Alice.
• \(\text{ECDH-KEM}.\mathsf{KeyGen}\):鍵生成アルゴリズムは、SP 800-56A第5.6.1.2節で規定されているものと同じです。Aliceは静的鍵ペアを生成し、その静的公開鍵をカプセル化鍵として利用可能にします。BobはAliceとの鍵確立を開始するときに一時鍵ペアを生成します。
• \(\text{ECDH-KEM}.\mathsf{Encaps}\). To encapsulate, perform Party U’s actions from Sec. 6.2.2.2 of SP 800-56A. The output is the key (i.e., the derived secret keying material) along with the ciphertext (i.e., the ephemeral public key \(Q_{e,U}\)).
• \(\text{ECDH-KEM}.\mathsf{Encaps}\):カプセル化では、SP 800-56A第6.2.2.2節のParty Uの手順を実行します。出力は、鍵(すなわち導出されたシークレット鍵素材)と暗号文(すなわち一時公開鍵\(Q_{e,U}\))です。
• \(\text{ECDH-KEM}.\mathsf{Decaps}\). To decapsulate, perform Party V’s actions from Sec. 6.2.2.2 of SP 800-56A. The output key is the derived secret keying material.
• \(\text{ECDH-KEM}.\mathsf{Decaps}\):デカプセル化では、SP 800-56A第6.2.2.2節のParty Vの手順を実行します。出力鍵は導出されたシークレット鍵素材です。
The use of this KEM requires that all assumptions for the scheme specified in SP 800-56A are met and that all necessary assurances have been obtained. This KEM is IND-CPA-secure if the computational Elliptic Curve Diffie Hellman problem is hard for parameter set ParamSets. The computational Elliptic Curve Diffie Hellman problem is efficiently solved by a quantum computer so this KEM is considered to be quantum-vulnerable, as mentioned in Section 2.2. This KEM is not claimed to be IND-CCA-secure. In similar ways, KEMs could be constructed from the C(1e, 1s, FFC DH), C(2e, 0s, ECC CDH), and C(2e, 0s, FFC DH) schemes.
このKEMを使用するには、SP 800-56Aに規定された方式のすべての前提が満たされ、必要な保証がすべて得られている必要があります。このKEMは、パラメータセット ParamSets に対して計算的楕円曲線Diffie-Hellman問題が困難であれば、IND-CPA安全です。計算的楕円曲線Diffie-Hellman問題は量子コンピュータで効率的に解けるため、2.2節で述べたとおり、このKEMは量子攻撃に対する耐性がないとみなされます。このKEMがIND-CCA安全であるとは主張されていません。同様の方法で、C(1e, 1s, FFC DH)、C(2e, 0s, ECC CDH)、およびC(2e, 0s, FFC DH)の各方式からもKEMを構築できます。
5.1.2. A KEM From RSA Secret-Value Encapsulation
5.1.2. RSA秘密値カプセル化から構成するKEM
As discussed in Sec. 2.2, any PKE scheme can be used to construct a KEM. A concrete example of this is RSA Secret-Value Encapsulation (RSASVE)4 with an agreed-upon key-derivation method applied to the shared secret value \(Z\) to derive a shared secret key. The high-level idea is described as follows:
第2.2節で述べたように、任意のPKE方式からKEMを構成できます。その具体例の1つが、RSA秘密値カプセル化(RSASVE)4に、共有シークレット値\(Z\)へ適用して共有シークレット鍵を導出する合意済みの鍵導出方式を組み合わせたものです。概要は次のとおりです。
1.Alice sends an RSA public key to Bob. Optionally, Alice can also send some other public information to Bob, such as a nonce for key derivation.
1.AliceはRSA公開鍵をBobに送信します。任意で、鍵導出用ノンスなどの公開情報を追加で送信できます。
2.Bob generates a secret value and encapsulates it with Alice’s RSA public key to produce the ciphertext. A key is derived from the secret value. The output of encapsulation is the ciphertext and the derived key. The ciphertext is sent to Alice.
2.Bobはシークレット値を生成し、AliceのRSA公開鍵でカプセル化して暗号文を生成します。シークレット値から鍵が導出されます。カプセル化の出力は、暗号文と導出された鍵です。暗号文はAliceに送信されます。
3.Alice decapsulates the ciphertext using her RSA private key to obtain the secret value that is used to derive the key.
3.Aliceは、自身のRSA秘密鍵を用いて暗号文をデカプセル化し、鍵の導出に用いるシークレット値を得ます。
For example, a KEM can be constructed from RSASVE from SP 800-56B [2] as follows:
例えば、SP 800-56B [2]のRSASVEから、次のようにKEMを構成できます。
1. \(\text{RSASVE-KEM}.\mathsf{ParamSets}\). The parameter set is the binary length of the modulus (specified in Table 2, Sec. 6.3 of SP 800-56B) along with the exponent \(e\).
1. \(\text{RSASVE-KEM}.\mathsf{ParamSets}\):パラメータセットは、モジュラスのビット長(SP 800-56B第6.3節の表2に規定)と指数\(e\)です。
2. \(\text{RSASVE-KEM}.\mathsf{KeyGen}\). The key-generation algorithm is specified in Sec. 6.3 of SP 800-56B (also see Appendix C.2 of FIPS 186-5).
2. \(\text{RSASVE-KEM}.\mathsf{KeyGen}\):鍵生成アルゴリズムはSP 800-56B第6.3節に規定されています(FIPS 186-5付録C.2も参照)。
3. \(\text{RSASVE-KEM}.\mathsf{Encaps}\). To encapsulate, Bob (in his role as Party U) performs RSASVE.GENERATE, as specified in Sec. 7.2.1.2 of SP 800-56B. The output is the ciphertext and a secret value \(Z\). Bob applies the agreed-upon key-derivation method to the secret value \(Z\) to derive a shared secret key.
3. \(\text{RSASVE-KEM}.\mathsf{Encaps}\):カプセル化では、Bob(Party Uとしての役割)がSP 800-56B第7.2.1.2節に規定されるRSASVE.GENERATEを実行します。出力は暗号文と秘密値\(Z\)です。Bobは合意済みの鍵導出方式を秘密値\(Z\)に適用し、共有シークレット鍵を導出します。
4. \(\text{RSASVE-KEM}.\mathsf{Decaps}\). To decapsulate, Alice (in her role as Party V) performs RSASVE.RECOVER using the ciphertext from Bob, as specified in Sec. 7.2.1.3 of SP 800-56B. The output is the secret value \(Z\). Alice applies the agreed-upon key-derivation method to the secret value \(Z\) to derive a shared secret key.
4. \(\text{RSASVE-KEM}.\mathsf{Decaps}\):デカプセル化では、Alice(Party Vとしての役割)が、Bobから受信した暗号文を用いてSP 800-56B第7.2.1.3節に規定されるRSASVE.RECOVERを実行します。出力は秘密値\(Z\)です。Aliceは合意済みの鍵導出方式を秘密値\(Z\)に適用し、共有シークレット鍵を導出します。
Using this KEM requires that all assumptions for the scheme specified in SP 800-56B are met and that all necessary assurances have been obtained. This KEM is IND-CPA-secure if the computational RSA problem is hard for parameter set \(\mathsf{ParamSets}\). The computational RSA problem is efficiently solved by a quantum computer so this KEM is considered to be quantum-vulnerable, as mentioned in Section 2.2. This KEM is not claimed to be IND-CCA-secure. In similar ways, KEMs could be constructed from RSA-OAEP-basic, as specified in Sec. 9.2.3 of SP 800-56B.
このKEMを使用するには、SP 800-56Bに規定された方式のすべての前提条件が満たされ、必要な保証がすべて得られている必要があります。パラメータセット\(\mathsf{ParamSets}\)について計算量的RSA問題が困難である場合、このKEMはIND-CPA安全です。計算量的RSA問題は量子コンピューターで効率的に解けるため、このKEMは2.2節で述べたとおり、量子攻撃に対する耐性がないとみなされます。このKEMがIND-CCA安全であるとは主張されていません。同様の方法で、SP 800-56Bの9.2.3節に規定されたRSA-OAEP-basicからもKEMを構成できます。
5.1.3. ML-KEM
5.1.3. ML-KEM
ML-KEM is a high-performance, general-purpose, lattice-based key-encapsulation mechanism. It is a NIST-approved KEM and was standardized in FIPS 203 [3]. ML-KEM is based on CRYSTALS-Kyber [26], which was a candidate in the NIST PQC standardization process. It is believed to satisfy IND-CCA security (Definition 4), even against adversaries in possession of a cryptanalytically relevant quantum computer [17, 27, 28]. The asymptotic, theoretical security of ML-KEM is based on the presumed hardness of the Module Learning with Errors (MLWE) problem [29, 30].
ML-KEMは、高性能で汎用的な格子ベースの鍵カプセル化機構です。NIST承認済みKEMであり、FIPS 203 [3]で標準化されています。ML-KEMは、NISTのPQC標準化プロセスの候補だったCRYSTALS-Kyber [26]に基づいています。暗号解読上重要な量子コンピューターを持つ攻撃者に対しても、IND-CCA安全性を満たすと考えられています(定義4)[17, 27, 28]。ML-KEMの漸近的な理論安全性は、Module Learning with Errors(MLWE)問題の困難性の仮定に基づいています[29, 30]。
FIPS 203 directly describes ML-KEM as a KEM in a manner that closely matches the notation of this document. Specifically, the components of ML-KEM are described in FIPS 203 as follows [3]:
FIPS 203は、本書の表記法とよく一致する形で、ML-KEMを直接KEMとして説明しています。具体的には、ML-KEMの構成要素はFIPS 203で次のように示されています[3]。
•ML-KEM.ParamSets. There are three parameter sets described in Sec. 8 of FIPS 203: ML-KEM-512, ML-KEM-768, and ML-KEM-1024.
•ML-KEM.ParamSets:FIPS 203第8節では、ML-KEM-512、ML-KEM-768、ML-KEM-1024の3つのパラメータセットを規定しています。
•ML-KEM.KeyGen. The key-generation algorithm of ML-KEM is specified as Algorithm 19 in Sec. 7.1 of FIPS 203.
•ML-KEM.KeyGen:ML-KEMの鍵生成アルゴリズムは、FIPS 203第7.1節のアルゴリズム19に規定されています。
•ML-KEM.Encaps. The encapsulation algorithm of ML-KEM is specified as Algorithm 20 in Sec. 7.2 of FIPS 203.
•ML-KEM.Encaps:ML-KEMのカプセル化アルゴリズムは、FIPS 203第7.2節のアルゴリズム20に規定されています。
•ML-KEM.Decaps. The decapsulation algorithm of ML-KEM is specified as Algorithm 21 in Sec. 7.3 of FIPS 203.
•ML-KEM.Decaps:ML-KEMのデカプセル化アルゴリズムは、FIPS 203第7.3節のアルゴリズム21に規定されています。
This document treats parameter sets as an explicit input for the KEM algorithms KeyGen, Encaps, and Decaps. By contrast, the algorithms of ML-KEM described in FIPS 203 expect the chosen parameter set to be stored in a set of global variables that are accessible to each of the algorithms of ML-KEM. This is only a difference in presentation and does not imply any particular implementation requirement.
本書では、KEMのKeyGen、Encaps、Decapsアルゴリズムにパラメータセットを明示的な入力として与えます。一方、FIPS 203に記載されたML-KEMのアルゴリズムは、選択されたパラメータセットが、各ML-KEMアルゴリズムから参照できるグローバル変数群に格納されていることを前提とします。これは表記上の違いにすぎず、特定の実装要件を意味するものではありません。
5.2. Examples of KEM Applications
5.2. KEMアプリケーションの例
This section provides a high-level overview of several example applications of KEMs.
本節では、KEMを利用する複数のアプリケーション例を概説します。
5.2.1. KEM-DEM Public-Key Encryption
5.2.1. KEM-DEM公開鍵暗号
A KEM can be combined with a symmetric-key encryption scheme to yield very efficient public-key encryption. This is sometimes referred to as the KEM-DEM paradigm for PKE [17]. Examples include El Gamal encryption [31] and the Elliptic Curve Integrated Encryption Scheme (ECIES) standardized in ANSI X9.63 [15].
KEMを共通鍵暗号方式と組み合わせると、非常に効率的な公開鍵暗号を構成できます。これはPKEにおけるKEM-DEMパラダイムと呼ばれることがあります[17]。例として、El Gamal暗号[31]や、ANSI X9.63 [15]で標準化された楕円曲線統合暗号方式(ECIES)があります。
The prescription for constructing a KEM-DEM PKE scheme is as follows. Let \(\Pi\) be a KEM, and let \(\Xi = (\mathsf{Encrypt}, \mathsf{Decrypt})\) be a symmetric-key encryption scheme. One then constructs a PKE called \(\mathtt{KD\text{-}PKE}\) as follows:
KEM-DEM PKE方式は、次の手順で構成します。\(\Pi\)をKEMとし、\(\Xi = (\mathsf{Encrypt}, \mathsf{Decrypt})\)を共通鍵暗号方式とします。これらから、\(\mathtt{KD\text{-}PKE}\)というPKEを次のように構成します。
• \(\mathtt{KD\text{-}PKE}.\mathsf{ParamSets} = \Pi.\mathsf{ParamSets}\)
• \(\mathtt{KD\text{-}PKE}.\mathsf{ParamSets} = \Pi.\mathsf{ParamSets}\)
• \(\mathtt{KD\text{-}PKE}.\mathsf{KeyGen} = \Pi.\mathsf{KeyGen}\)
• \(\mathtt{KD\text{-}PKE}.\mathsf{KeyGen} = \Pi.\mathsf{KeyGen}\)
• \(\mathtt{KD\text{-}PKE}.\mathsf{Encrypt}\): given input parameter set \(p\), \(\mathsf{ek}\), and message \(m\):
• \(\mathtt{KD\text{-}PKE}.\mathsf{Encrypt}\):入力としてパラメータセット\(p\)、\(\mathsf{ek}\)、メッセージ\(m\)が与えられたとき、次を実行します。
1. Compute \((K, c_\Pi) \leftarrow \Pi.\mathsf{Encaps}(p, \mathsf{ek})\).
1. \((K, c_\Pi) \leftarrow \Pi.\mathsf{Encaps}(p, \mathsf{ek})\)を計算します。
2. Compute \(c_\Xi \leftarrow \Xi.\mathsf{Encrypt}(K, m)\).
2. \(c_\Xi \leftarrow \Xi.\mathsf{Encrypt}(K, m)\)を計算します。
3. Output \((c_\Pi, c_\Xi)\).
3. \((c_\Pi, c_\Xi)\)を出力します。
• \(\texttt{KD-PKE}.\mathsf{Decrypt}\): given input \(p\), \(\mathsf{dk}\), and \((c_\Pi, c_\Xi)\),
• \(\texttt{KD-PKE}.\mathsf{Decrypt}\):入力\(p\)、\(\mathsf{dk}\)、および\((c_\Pi, c_\Xi)\)に対し、次を実行します。
1. Compute \(K' \leftarrow \Pi.\mathsf{Decaps}(p, \mathsf{dk}, c_\Pi)\).
1. \(K' \leftarrow \Pi.\mathsf{Decaps}(p, \mathsf{dk}, c_\Pi)\)を計算します。
2. Output \(m' \leftarrow \Xi.\mathsf{Decrypt}(K', c_\Xi)\).
2. \(m' \leftarrow \Xi.\mathsf{Decrypt}(K', c_\Xi)\)を出力します。
Here, the keys of \(\Xi\) are assumed to be the same length as the shared secret keys produced by \(\Pi\). If not, appropriate key-derivation steps (see Sec. 4.3) can be added to \(\texttt{KD-PKE}.\mathsf{Encrypt}\) and \(\texttt{KD-PKE}.\mathsf{Decrypt}\) to transform the shared secret key of \(\Pi\) into a key that is appropriate for use with \(\Xi\).
ここでは、\(\Xi\)の鍵長は\(\Pi\)が生成する共有シークレット鍵と同じであると仮定します。同じでない場合は、適切な鍵導出手順(第4.3節参照)を\(\texttt{KD-PKE}.\mathsf{Encrypt}\)と\(\texttt{KD-PKE}.\mathsf{Decrypt}\)に追加し、\(\Pi\)の共有シークレット鍵を\(\Xi\)で使用できる鍵に変換できます。
Figure 7 shows the procedure for sending an encrypted message \(m\) from Bob to Alice using \(\texttt{KD-PKE}\). In this description, Alice selects the parameter set \(p\).
図7に、暗号化メッセージ\(m\)を\(\texttt{KD-PKE}\)を使ってBobからAliceへ送信する手順を示します。この説明では、Aliceがパラメータセット\(p\)を選択します。
Alice
Alice
Bob
Bob
(ek,dk) ← Π.KeyGen(p)
(ek, dk) ← Π.KeyGen(p)
ek,p −−−−−−−−→
ek, p →
(K,c ) ← Π.Encaps(p,ek) Π c ← Ξ.Encrypt(K,m) Ξ
(K, c_Π) ← Π.Encaps(p, ek); c_Ξ ← Ξ.Encrypt(K, m)
c ,c ←−−−Π−−Ξ−−−
c ,c ←−−−Π−−Ξ−−−
K(cid:48) ← Π.Decaps(p,dk,c )
K(cid:48) ← Π.Decaps(p,dk,c )
Π
m ← Ξ.Decrypt(K(cid:48),c )
m ← Ξ.Decrypt(K(cid:48),c )
Ξ
Fig. 7. Sending a message using the KEM-DEM paradigm
図7. KEM-DEMパラダイムを用いたメッセージ送信
This same procedure can also be used to perform key transport by choosing \(m\) uniformly at random as the key to be transported. This allows one to perform key transport using any KEM, even one that does not natively perform key transport (e.g., ML-KEM).
同じ手順で、\(m\)を転送対象の鍵として一様ランダムに選ぶことで鍵転送も実行できます。これにより、鍵転送機能を本来備えていないKEM(例:ML-KEM)を含む、あらゆるKEMを用いて鍵転送を行えます。
5.2.2. Unilateral Authenticated Key Establishment Using a KEM
5.2.2. KEMを用いた一方向認証付き鍵確立
Most applications of key establishment require at least one party (typically, a server) to authenticate their identity. One approach to achieving this is for the server to acquire a certificate of authenticity for their long-term, static KEM encapsulation key. This certificate can then be provided to a client as proof that the key is associated with the server’s identity. An example description of key establishment in this setting is given below and depicted in Fig. 8. The example uses a simplified key confirmation process (see Sec. 4.4).
多くの鍵確立アプリケーションでは、少なくとも一方の当事者(通常はサーバー)が自らの身元を認証する必要があります。その方法の1つは、サーバーが長期静的KEMカプセル化鍵の真正性を示す証明書を取得することです。この証明書をクライアントに提示すれば、その鍵がサーバーの身元に結び付いていることを証明できます。この状況での鍵確立例を以下に示し、図8に図示します。この例では簡略化した鍵確認手順を使用します(第4.4節参照)。
Alice (server)
Alice(サーバー)
Bob (client)
Bob(クライアント)
1.static: (ek,dk) cert[ek, p, Alice] cert[ek,p,Alice] −−−−−−−−−−→ if cert[ek, p, Alice] invalid, abort. 2. (K ,c) ← Π.Encaps(p,ek) B c ←−−−−−−−−−−−
1.静的: (ek,dk) cert[ek, p, Alice] cert[ek,p,Alice] −−−−−−−−−−→ cert[ek, p, Alice]が無効なら中止します。2. (K ,c) ← Π.Encaps(p,ek) B c ←−−−−−−−−−−−
3.K ← Π.Decaps(p,dk,c) A
3.K ← Π.Decaps(p,dk,c) A
4.t ← MAC(K ,c) A t −−−−−−−−−−→ ,c,t) rejects, abort. if MAC.Ver(K B
4.t ← MAC(K ,c) A t −−−−−−−−−−→ ,c,t)が拒否した場合は中止します。もし MAC.Ver(K B
5.result: K result: K A B
5.結果: K 結果: K A B
Fig. 8. Unilateral authenticated key establishment using a KEM
図8. KEMを用いた一方向認証付き鍵確立
1. At the outset, Alice has a long-term, static key pair that she generated earlier via \((\mathsf{ek}, \mathsf{dk}) \leftarrow \Pi.\mathsf{KeyGen}(p)\). Here, \(\Pi\) is some KEM, and \(p\) is some parameter set of \(\Pi\). Alice also has a certificate \(\mathsf{cert}[\mathsf{ek}, p, \mathsf{Alice}]\) that contains \(\mathsf{ek}\) and \(p\) and associates them both with Alice’s identity.
1. 開始時点でAliceは、以前に\((\mathsf{ek}, \mathsf{dk}) \leftarrow \Pi.\mathsf{KeyGen}(p)\)によって生成した長期静的鍵ペアを保持しています。ここで\(\Pi\)は何らかのKEM、\(p\)は\(\Pi\)の何らかのパラメータセットです。Aliceは証明書\(\mathsf{cert}[\mathsf{ek}, p, \mathsf{Alice}]\)も保持しており、この証明書は\(\mathsf{ek}\)と\(p\)を含み、その両方をAliceの身元に結び付けます。
2. When Bob wants to connect to Alice, he acquires \(\mathsf{cert}[\mathsf{ek}, p, \mathsf{Alice}]\) (e.g., from Alice), verifies that the certificate is valid, and extracts \(\mathsf{ek}\) and \(p\) from the certificate. He then performs encapsulation with \(\mathsf{ek}\), saves the resulting shared secret key \(K_B\), and sends the ciphertext \(c\) to Alice.
2. BobはAliceへの接続時に、\(\mathsf{cert}[\mathsf{ek}, p, \mathsf{Alice}]\)を(例えばAliceから)取得して証明書の有効性を検証し、証明書から\(\mathsf{ek}\)と\(p\)を取り出します。次に\(\mathsf{ek}\)でカプセル化を行い、得られた共有シークレット鍵\(K_B\)を保存し、暗号文\(c\)をAliceへ送信します。
3. Alice decapsulates \(c\) and gets a shared secret key \(K_A\).
3. Aliceは\(c\)をデカプセル化し、共有シークレット鍵\(K_A\)を取得します。
4. Alice and Bob then perform a simplified key-confirmation step. Alice uses a \(\mathtt{MAC}\) algorithm to generate a tag \(t \leftarrow \mathtt{MAC}(K_A, c)\) for the ciphertext \(c\) and sends \(t\) to Bob. Bob then runs \(\mathtt{MAC}\) verification using \(K_B\) and aborts unless the tag \(t\) is accepted. If the tag is accepted, Bob knows that Alice’s key \(K_A\) and his key \(K_B\) are the same (i.e., they share the same key).
4. 続いてAliceとBobは簡略化した鍵確認手順を行います。Aliceは\(\mathtt{MAC}\)アルゴリズムでタグ\(t \leftarrow \mathtt{MAC}(K_A, c)\)を暗号文\(c\)に対して生成し、\(t\)をBobに送信します。Bobは\(\mathtt{MAC}\)検証を\(K_B\)を用いて実行し、タグ\(t\)が受理されない限り中止します。タグが受理されれば、BobはAliceの鍵\(K_A\)と自分の鍵\(K_B\)が同じである(すなわち、両者が同じ鍵を共有している)ことが分かります。
5.Alice and Bob can now use their shared secret key to communicate efficiently and securely using symmetric-key cryptography.
5.これでAliceとBobは、共有シークレット鍵を使った共通鍵暗号により、効率的かつ安全に通信できます。
If the KEM \(\Pi\) is secure, then only a holder of the decapsulation key \(\mathsf{dk}\) (corresponding to the encapsulation key \(\mathsf{ek}\) in the certificate) should be able to generate a valid MAC tag in step 4.
KEM \(\Pi\)が安全であれば、デカプセル化鍵\(\mathsf{dk}\)(証明書中のカプセル化鍵\(\mathsf{ek}\)に対応する)の保有者だけが、手順4で有効なMACタグを生成できるはずです。
5.2.3. Ephemeral Authenticated Key Establishment
5.2.3. 一時鍵を用いた認証付き鍵確立
This section describes an alternative approach to unilaterally authenticated key establishment using a KEM. Compared to the example in Sec. 5.2.2, Alice and Bob will now have the opposite roles in the protocol. Specifically, Bob is now the authenticated party (e.g., a web server), while Alice is the unauthenticated party (e.g., a browser client). Ephemeral KEM key-pair generation will now be performed by the client (i.e., Alice), and Alice will discard the KEM key pair once the connection is established. The server will not use a long-term, static KEM key pair but will need to establish his identity through other means. In this example, identity establishment will be done via a certificate that associates a particular digital signature verification key with Bob’s identity.
本節では、KEMを用いた一方向認証付き鍵確立の別の方法を説明します。第5.2.2節の例と比べ、このプロトコルではAliceとBobの役割が逆になります。具体的には、Bobが認証される側(例:ウェブサーバー)、Aliceが認証されない側(例:ブラウザーのクライアント)です。一時KEM鍵ペアはクライアント(Alice)が生成し、接続確立後に破棄します。サーバーは長期静的KEM鍵ペアを使用せず、別の方法で身元を確立します。この例では、特定のデジタル署名検証鍵をBobの身元に結び付ける証明書を用います。
The following ingredients are required. Let \(\Sigma\) be a digital signature scheme with algorithms \(\Sigma.\mathsf{KeyGen}\), \(\Sigma.\mathsf{Sign}\), and \(\Sigma.\mathsf{Ver}\). As before, KEM key pairs are denoted by \((\mathsf{ek}, \mathsf{dk})\). Digital signature key pairs are denoted by \((\mathsf{vk}, \mathsf{sk})\), where \(\mathsf{vk}\) is a public verification key and \(\mathsf{sk}\) is the corresponding private signing key.
必要な構成要素は次のとおりです。\(\Sigma\)を、\(\Sigma.\mathsf{KeyGen}\)、\(\Sigma.\mathsf{Sign}\)、\(\Sigma.\mathsf{Ver}\)の各アルゴリズムを持つデジタル署名方式とします。これまでと同様、KEM鍵ペアを\((\mathsf{ek}, \mathsf{dk})\)と表します。デジタル署名鍵ペアは\((\mathsf{vk}, \mathsf{sk})\)と表し、\(\mathsf{vk}\)は公開検証鍵、\(\mathsf{sk}\)は対応する署名用秘密鍵です。
The protocol proceeds as follows (see Fig. 9.)
プロトコルは次の手順で進みます(図9参照)。
1. At the outset, Bob has previously generated a static digital signature key pair \((\mathsf{vk}_B, \mathsf{sk}_B)\) and procured a certificate \(\mathsf{cert}[\mathsf{vk}_B, \mathsf{Bob}]\) that associates the public verification key with his identity.
1. 開始時点でBobは、静的デジタル署名鍵ペア\((\mathsf{vk}_B, \mathsf{sk}_B)\)を事前に生成し、公開検証鍵を自身の身元に結び付ける証明書\(\mathsf{cert}[\mathsf{vk}_B, \mathsf{Bob}]\)を取得しています。
2. When connecting to Bob, Alice generates an ephemeral KEM key pair \((\mathsf{ek}_A, \mathsf{dk}_A)\) and sends the encapsulation key \(\mathsf{ek}_A\) and her chosen parameter set \(p\) to Bob, keeping the decapsulation key \(\mathsf{dk}_A\) private.
2. Bobへの接続時、Aliceは一時KEM鍵ペア\((\mathsf{ek}_A, \mathsf{dk}_A)\)を生成し、カプセル化鍵\(\mathsf{ek}_A\)と自身が選択したパラメータセット\(p\)をBobに送信します。デカプセル化鍵\(\mathsf{dk}_A\)は秘密に保ちます。
3. Bob performs encapsulation using \(\mathsf{ek}_A\), which results in a KEM ciphertext \(c_B\) and a shared secret key \(K_B\). Bob then uses his private signing key \(\mathsf{sk}_B\) to sign the transcript of all communications with Alice, including what he will send in this transmission. This transcript includes \(\mathsf{ek}_A\), \(p\), \(\mathsf{vk}_B\), \(c_B\), and Bob’s certificate \(\mathsf{cert}[\mathsf{vk}_B, \mathsf{Bob}]\). He then sends the certificate, signature, and ciphertext to Alice. Finally, he applies a key-derivation function \(\mathsf{KDF}\) to \(K_B\) in order to produce two symmetric keys \(K'_B\) and \(K''_B\), destroys \(K_B\), and keeps \(K'_B\) and \(K''_B\) private.
3. Bobは\(\mathsf{ek}_A\)を使ってカプセル化を行い、KEM暗号文\(c_B\)と共有シークレット鍵\(K_B\)を得ます。次にBobは署名用秘密鍵\(\mathsf{sk}_B\)を使い、今回の送信で送る内容を含むAliceとの全通信の記録に署名します。この記録には\(\mathsf{ek}_A\)、\(p\)、\(\mathsf{vk}_B\)、\(c_B\)、およびBobの証明書\(\mathsf{cert}[\mathsf{vk}_B, \mathsf{Bob}]\)が含まれます。続いてBobは証明書、署名、暗号文をAliceへ送信します。最後に、鍵導出関数\(\mathsf{KDF}\)を\(K_B\)に適用して2つの共通鍵\(K'_B\)と\(K''_B\)を生成し、\(K_B\)を破棄して、\(K'_B\)と\(K''_B\)を秘密に保ちます。
4.Next, Alice performs two checks. First, she checks the validity of Bob’s claimed cer-tificate with the appropriate certification authority. Second, she verifies Bob’s signa-ture on the transcript. If either check fails, Alice aborts. Otherwise, she decapsulates
4.次にAliceは2つの確認を行います。まず、適切な認証局でBobが提示した証明書の有効性を確認します。次に、通信記録に対するBobの署名を検証します。どちらか一方でも失敗した場合、Aliceは中止します。それ以外の場合、Aliceはデカプセル化する
Alice (client)
Alice(クライアント)
Bob (server)
Bob(サーバー)
1.
static: (vkB,skB)
静的鍵ペア:(vkB,skB)
,Bob]
,Bob]
cert[vk B
cert[vk B
2. \((\mathsf{ek}_A,\mathsf{dk}_A) \leftarrow \Pi.\mathsf{KeyGen}(p)\)
\(\xrightarrow{\mathsf{ek}_A,p}\)
3. \((K_B,c_B) \leftarrow \Pi.\mathsf{Encaps}(p,\mathsf{ek}_A)\)
\(\sigma \leftarrow \Sigma.\mathsf{Sign}(\mathsf{sk}_B,\mathsf{transcript})\)
\((K'_B,K''_B) \leftarrow \mathsf{KDF}(K_B)\)
\(\xleftarrow{\mathsf{cert}[\mathsf{vk}_B,\mathsf{Bob}],\sigma,c_B}\)
2. \((\mathsf{ek}_A,\mathsf{dk}_A) \leftarrow \Pi.\mathsf{KeyGen}(p)\)
\(\xrightarrow{\mathsf{ek}_A,p}\)
3. \((K_B,c_B) \leftarrow \Pi.\mathsf{Encaps}(p,\mathsf{ek}_A)\)
\(\sigma \leftarrow \Sigma.\mathsf{Sign}(\mathsf{sk}_B,\mathsf{transcript})\)
\((K'_B,K''_B) \leftarrow \mathsf{KDF}(K_B)\)
\(\xleftarrow{\mathsf{cert}[\mathsf{vk}_B,\mathsf{Bob}],\sigma,c_B}\)
4.if cert[vk B ,σ,transcript) = ⊥, abort. if Σ.Ver(vk B K ← Π.Decaps(p,dk ,c ) A A B
4.もし cert[vk B ,σ,transcript) = ⊥なら中止します。もし Σ.Ver(vk B K ← Π.Decaps(p,dk ,c ) A A B
(K(cid:48) ,K(cid:48)(cid:48)) ← KDF(K )
(K(cid:48) ,K(cid:48)(cid:48)) ← KDF(K )
A
A A
A A
5.result: K(cid:48) ,K(cid:48)(cid:48) result: K(cid:48) ,K(cid:48)(cid:48) A A B B
5.結果: K(cid:48) ,K(cid:48)(cid:48) 結果: K(cid:48) ,K(cid:48)(cid:48) A A B B
Fig. 9. Using a KEM for key establishment with unilateral authentication
図9. 一方向認証を用いたKEM鍵確立
\(c_B\) and keeps the resulting shared secret key \(K_A\) private. She also derives two keys \(K'_A\) and \(K''_A\) via KDF applied to \(K_A\) and destroys \(K_A\).
\(c_B\)をデカプセル化し、得られた共有シークレット鍵\(K_A\)を秘密に保持します。さらに、2つの鍵\(K'_A\)と\(K''_A\)を、\(K_A\)にKDFを適用して導出し、\(K_A\)を破棄します。
5. Alice and Bob can now use the keys \(K'_A\) and \(K''_A\) for symmetric-key cryptography. For example, they could use \(K'_A\) for encryption and \(K''_A\) for authentication.
5. AliceとBobは、鍵\(K'_A\)および\(K''_A\)を共通鍵暗号に使用できます。例えば、\(K'_A\)を暗号化に、\(K''_A\)を認証に使用できます。
5.2.4. Static-Ephemeral Unilateral Authenticated Key Establishment Using KEMs
5.2.4. KEMを用いた静的一時型の一方向認証付き鍵確立
This section presents a static-ephemeral key-establishment scheme with unilateral authentication, as described in [32]. The scheme combines a shared secret key generated by a static KEM key pair with a shared secret key produced by a freshly generated, ephemeral KEM key pair. Just as in Example 5.2.2, one party possesses a static KEM key pair that is associated with a certificate.
本節では、[32]で説明されている、一方向認証を伴う静的一時型鍵確立方式を示します。この方式は、静的KEM鍵ペアから生成した共有シークレット鍵と、新たに生成した一時KEM鍵ペアから得られる共有シークレット鍵を組み合わせます。例5.2.2と同様、一方の当事者は証明書に結び付いた静的KEM鍵ペアを保有します。
In this example, Alice and Bob’s key pairs are generated using the same KEM \(\Pi\) and parameter set \(p\). In this case, \(\Pi\) and \(p\) are determined by Bob’s certificate. Note that Bob may use the same static key pair to perform key establishment with many different parties. To see how different KEMs might be used within one authenticated key-establishment scheme, see Example 5.2.5.
この例では、AliceとBobの鍵ペアを同じKEM \(\Pi\)およびパラメータセット\(p\)で生成します。この場合、\(\Pi\)と\(p\)はBobの証明書によって決まります。Bobは同じ静的鍵ペアを、多数の異なる相手との鍵確立に使用できます。1つの認証付き鍵確立方式内で異なるKEMを使用する方法については、例5.2.5を参照されました。
KEMTLS is a protocol with similar elements to this example, though it includes additional features that are not presented here [33]. In particular, KEMTLS utilizes KEM-based authentication and also combines two shared secret keys: one generated by a static KEM key pair and one by an ephemeral KEM key pair.
KEMTLSは本例と似た要素を持つプロトコルですが、ここでは説明しない追加機能も備えています[33]。特に、KEMTLSはKEMベースの認証を用い、2つの共有シークレット鍵(静的KEM鍵ペアから生成する鍵と一時KEM鍵ペアから生成する鍵)も結合します。
In this example, \(H\) denotes a KDF, and Bob is authenticated while Alice is not. Note that the choice of KDF for \(H\) in [32] is a cryptographic hash function. There is no key-confirmation step in this scheme, but one may easily incorporate such a step if desired.
この例では\(H\)はKDFを表し、Bobは認証されるがAliceは認証されません。[32]で\(H\)に選ばれているKDFは暗号学的ハッシュ関数です。この方式には鍵確認手順がありませんが、必要であれば容易に追加できます。
Alice (client)
Alice(クライアント)
Bob (server)
Bob(サーバー)
1.
static: (ekB,dkB)
静的鍵ペア:(ekB,dkB)
, p, Bob]
, p, Bob]
cert[ek B
cert[ek B
B ob p, [e k−B, ]
B ob p, [e k−B, ]
ce rt ←− − − − − − − − −
ce rt ←− − − − − − − − −
, p, Bob] invalid, abort.
, p, Bob]が無効なら、中止します。
2.if cert[ek B (ek,dk) ← Π.KeyGen(p) (K ,c ) ← Π.Encaps(p,ek ) B B B p, cB−−−→ ek , −−−−− − − − 3. (K, c) ← Π.Encaps(p,ek) K(cid:48) ← Π.Decaps(p,dk ,c ) B B B c ←−−−−−−−−−−−
2.もし cert[ek B (ek,dk) ← Π.KeyGen(p) (K ,c ) ← Π.Encaps(p,ek ) B B B p, cB−−−→ ek , −−−−− − − − 3. (K, c) ← Π.Encaps(p,ek) K(cid:48) ← Π.Decaps(p,dk ,c ) B B B c ←−−−−−−−−−−−
4. \(K' \leftarrow \Pi.\mathsf{Decaps}(p, \mathsf{dk}, c)\)
4. \(K' \leftarrow \Pi.\mathsf{Decaps}(p, \mathsf{dk}, c)\)
5. result: \(H(K', K_B)\) result: \(H(K, K'_B)\)
5. 結果:\(H(K', K_B)\) 結果:\(H(K, K'_B)\)
Fig. 10. Static-ephemeral unilateral authenticated key establishment using KEMs
図10. KEMを用いた静的一時型一方向認証付き鍵確立
1. At the outset, Bob has a long-term, static key pair that he generated earlier via \((\mathsf{ek}_B, \mathsf{dk}_B) \leftarrow \Pi.\mathsf{KeyGen}(p)\). Here, \(\Pi\) is some KEM, and \(p\) is some parameter set of \(\Pi\). Bob also has a certificate \(\mathsf{cert}[\mathsf{ek}_B, p, \mathsf{Bob}]\) that contains \(\mathsf{ek}_B\) and \(p\) and associates them both with Bob’s identity.
1. 開始時点でBobは、以前に\((\mathsf{ek}_B, \mathsf{dk}_B) \leftarrow \Pi.\mathsf{KeyGen}(p)\)によって生成した長期の静的鍵ペアを保持しています。ここで、\(\Pi\)は何らかのKEMであり、\(p\)は\(\Pi\)の何らかのパラメータセットです。Bobはまた、証明書\(\mathsf{cert}[\mathsf{ek}_B, p, \mathsf{Bob}]\)も保持しています。この証明書は\(\mathsf{ek}_B\)と\(p\)を含み、その両方をBobの身元に結び付けます。
2. When Alice wants to connect to Bob, she acquires \(\mathsf{cert}[\mathsf{ek}_B, p, \mathsf{Bob}]\) (e.g., from Bob), verifies that the certificate is valid, and extracts \(\mathsf{ek}_B\) and \(p\) from the certificate. She then performs encapsulation with \(\mathsf{ek}_B\), saves the resulting shared secret key \(K_B\), and sends the ciphertext \(c_B\) to Bob. Alice additionally generates an ephemeral KEM key pair \((\mathsf{ek}, \mathsf{dk})\) using the same KEM \(\Pi\) and parameter set \(p\) and sends the encapsulation key \(\mathsf{ek}\) and relevant parameter set \(p\) to Bob, keeping the private decapsulation key \(\mathsf{dk}\) private.
2. AliceはBobへの接続時に、\(\mathsf{cert}[\mathsf{ek}_B, p, \mathsf{Bob}]\)を(例えばBobから)取得し、証明書が有効であることを検証して、証明書から\(\mathsf{ek}_B\)と\(p\)を取り出します。次に\(\mathsf{ek}_B\)でカプセル化を行い、得られた共有シークレット鍵\(K_B\)を保存し、暗号文\(c_B\)をBobへ送信します。さらにAliceは、一時KEM鍵ペア\((\mathsf{ek}, \mathsf{dk})\)を同じKEM \(\Pi\)とパラメータセット\(p\)を使って生成し、カプセル化鍵\(\mathsf{ek}\)と関連するパラメータセット\(p\)をBobに送信します。秘密のデカプセル化鍵\(\mathsf{dk}\)は秘密に保ちます。
3. Bob uses \((p, \mathsf{ek})\) to perform encapsulation, which results in a KEM ciphertext \(c\) and shared secret key \(K\). Bob also performs decapsulation using \((p, \mathsf{dk}_B, c_B)\) to produce another shared secret key \(K'_B\). Bob sends ciphertext \(c\) to Alice.
3. Bobは\((p, \mathsf{ek})\)を使ってカプセル化を行い、KEM暗号文\(c\)と共有シークレット鍵\(K\)を得ます。Bobはまた、\((p, \mathsf{dk}_B, c_B)\)を使ってデカプセル化を行い、もう1つの共有シークレット鍵\(K'_B\)を生成します。Bobは暗号文\(c\)をAliceに送信します。
4. Alice uses \(c\), \(p\), and \(\mathsf{dk}\) to run decapsulation and recover her copy of the ephemeral shared secret key \(K'\).
4. Aliceは\(c\)、\(p\)、\(\mathsf{dk}\)を使ってデカプセル化を実行し、一時共有シークレット鍵の自身の複製\(K'\)を復元します。
5. Alice and Bob combine their copies of the shared ephemeral secret key \(K'\) (\(K\)) and the shared secret key \(K_B\) (\(K'_B\)) that was computed using Bob’s static key pair. A hash function \(H\) is applied to the result to establish a final shared secret key.
5. AliceとBobは、共有一時秘密鍵のそれぞれの複製\(K'\)(\(K\))と、Bobの静的鍵ペアを使って計算された共有シークレット鍵\(K_B\)(\(K'_B\))を結合します。その結果にハッシュ関数\(H\)を適用し、最終的な共有シークレット鍵を確立します。
It is assumed that if the certificate is valid, then only Bob is capable of performing decapsulation of ciphertexts that were encapsulated using \(\mathsf{ek}_B\).
証明書が有効であれば、\(\mathsf{ek}_B\)を使ってカプセル化された暗号文をデカプセル化できるのはBobだけであると仮定します。
5.2.5. Authenticated Key Establishment Using KEMs
5.2.5. KEMを用いた認証付き鍵確立
This section presents a bilaterally authenticated key-establishment scheme using KEMs, as described in [32]. In this example, both Alice and Bob are authenticated using static KEM key pairs associated with certificates. The KEM shared secret keys produced using their static key pairs contribute to the final key and a shared secret key produced using a freshly generated ephemeral KEM key pair. This scheme achieves weak forward secrecy [32, 34].
本節では、[32]で説明されている、KEMを用いた相互認証付き鍵確立方式を示します。この例では、AliceとBobの双方が証明書に結び付いた静的KEM鍵ペアで認証されます。両者の静的鍵ペアを用いて生成されるKEM共有シークレット鍵は、最終鍵と、新たに生成した一時KEM鍵ペアを用いて生成される共有シークレット鍵に寄与します。この方式は弱い前方秘匿性を実現します[32, 34]。
Alice’s static key pair may correspond to a different KEM than the one associated with Bob’s static key pair as the choices of KEM and parameter set used by Alice and Bob are determined by their certificates. As such, both parties must be able to operate using each other’s KEM encapsulation algorithm. Moreover, the ephemeral KEM key pair may correspond to a third, completely different KEM. To capture this possibility, let \((\Pi_A, p_A)\), \((\Pi_B, p_B)\), and \((\Pi, p)\) denote the KEM algorithm and parameter set associated with Alice’s static key pair, Bob’s static key pair, and the ephemeral KEM key pair, respectively. This notation allows for the possibility that \(\Pi_A = \Pi_B = \Pi\) and \(p_A = p_B = p\). Additionally, parameter sets are formatted differently for different KEMs (e.g., lattice-based KEMs might include lattice dimension, while code-based KEMs include code length and dimension). Therefore, if two KEMs \(\Pi_i\) and \(\Pi_j\) are distinct, the corresponding parameter sets are likely also distinct.
Aliceの静的鍵ペアは、Bobの静的鍵ペアに関連付けられたKEMとは異なるKEMに対応する場合があります。AliceとBobが使うKEMとパラメータセットの選択は、それぞれの証明書によって決まるためです。そのため、両者は互いのKEMカプセル化アルゴリズムを使って動作できなければなりません。さらに、一時KEM鍵ペアは3つ目のまったく異なるKEMに対応する場合があります。この可能性を表すため、\((\Pi_A, p_A)\)、\((\Pi_B, p_B)\)、\((\Pi, p)\)を、それぞれAliceの静的鍵ペア、Bobの静的鍵ペア、一時KEM鍵ペアに関連付けられたKEMアルゴリズムとパラメータセットとします。この表記は、\(\Pi_A = \Pi_B = \Pi\)かつ\(p_A = p_B = p\)である可能性も許します。また、パラメータセットの形式はKEMごとに異なります(例えば、格子ベースのKEMは格子の次元を含むことがあり、符号ベースのKEMは符号長と次元を含む)。したがって、2つのKEM \(\Pi_i\)と\(\Pi_j\)が異なる場合、対応するパラメータセットも異なる可能性が高い。
As with other examples, Alice and Bob will need to negotiate which KEM Π and parameter set p they will use for the ephemeral key pair prior to protocol execution. As in Example 5.2.3, H denotes a KDF. Note that in [32] H is chosen to be a cryptographic hash function. There is no key-confirmation step included in this example, but one could be added.
他の例と同様、AliceとBobはプロトコルの実行前に、一時鍵ペアで使用するKEM Πとパラメータセットpを交渉する必要があります。例5.2.3と同様、HはKDFを表します。[32]でHに選ばれているのは暗号学的ハッシュ関数です。この例には鍵確認手順が含まれていませんが、追加することはできます。
1. At the outset, Alice and Bob each have a long-term, static key pair. Alice has \((\mathsf{ek}_A, \mathsf{dk}_A)\), and Bob has \((\mathsf{ek}_B, \mathsf{dk}_B)\), which were generated earlier via \(\Pi_A.\mathsf{KeyGen}(p_A)\) and \(\Pi_B.\mathsf{KeyGen}(p_B)\), respectively. Alice and Bob also have certifi-
1. 開始時点でAliceとBobは、それぞれ長期の静的鍵ペアを保持しています。Aliceは\((\mathsf{ek}_A, \mathsf{dk}_A)\)を、Bobは\((\mathsf{ek}_B, \mathsf{dk}_B)\)を保持しており、これらはそれぞれ\(\Pi_A.\mathsf{KeyGen}(p_A)\)および\(\Pi_B.\mathsf{KeyGen}(p_B)\)によって以前に生成されたものです。AliceとBobはまた、証明書
cates \(\mathsf{cert}[\mathsf{ek}_A, p_A, \mathsf{Alice}]\) and \(\mathsf{cert}[\mathsf{ek}_B, p_B, \mathsf{Bob}]\), respectively, which contain their corresponding public keys and associate them to their respective identities.
\(\mathsf{cert}[\mathsf{ek}_A, p_A, \mathsf{Alice}]\)および\(\mathsf{cert}[\mathsf{ek}_B, p_B, \mathsf{Bob}]\)をそれぞれ保持しており、これらの証明書は対応する公開鍵を含み、その公開鍵をそれぞれの身元に結び付けます。
Alice (client)
Alice(クライアント)
Bob (server)
Bob(サーバー)
1.static: (ekA,dkA) static: (ekB,dkB) , Alice] , Bob] , p , p cert[ek cert[ek A A B B A li ce p−A, t[e k−A, ] ce r −− − − − − − − − → B ob p−B, t[e k−B, ] ce r ←− − − − − − − − − , Bob] invalid, abort. , Alice] invalid, abort.
1.静的:(ekA,dkA) 静的:(ekB,dkB) , Alice] , Bob] , p , p cert[ek cert[ek A A B B A li ce p−A, t[e k−A, ] ce r −− − − − − − − − → B ob p−B, t[e k−B, ] ce r ←− − − − − − − − − , Bob]が無効なら、中止します。, Alice]が無効なら、中止します。
2. if \(\mathsf{cert}[\mathsf{ek}_B, p_B, \mathsf{Bob}]\) invalid, abort.
if \(\mathsf{cert}[\mathsf{ek}_A, p_A, \mathsf{Alice}]\) invalid, abort.
\((\mathsf{ek},\mathsf{dk}) \leftarrow \Pi.\mathsf{KeyGen}(p)\)
\((K_B,c_B) \leftarrow \Pi_B.\mathsf{Encaps}(p_B,\mathsf{ek}_B)\)
\(\xrightarrow{\mathsf{ek},c_B}\)
3. \((K,c) \leftarrow \Pi.\mathsf{Encaps}(p,\mathsf{ek})\)
\((K_A,c_A) \leftarrow \Pi_A.\mathsf{Encaps}(p_A,\mathsf{ek}_A)\)
\(K'_B \leftarrow \Pi_B.\mathsf{Decaps}(p_B,\mathsf{dk}_B,c_B)\)
\(\xleftarrow{c,c_A}\)
2. \(\mathsf{cert}[\mathsf{ek}_B, p_B, \mathsf{Bob}]\) が無効であれば中止します。
\(\mathsf{cert}[\mathsf{ek}_A, p_A, \mathsf{Alice}]\) が無効であれば中止します。
\((\mathsf{ek},\mathsf{dk}) \leftarrow \Pi.\mathsf{KeyGen}(p)\)
\((K_B,c_B) \leftarrow \Pi_B.\mathsf{Encaps}(p_B,\mathsf{ek}_B)\)
\(\xrightarrow{\mathsf{ek},c_B}\)
3. \((K,c) \leftarrow \Pi.\mathsf{Encaps}(p,\mathsf{ek})\)
\((K_A,c_A) \leftarrow \Pi_A.\mathsf{Encaps}(p_A,\mathsf{ek}_A)\)
\(K'_B \leftarrow \Pi_B.\mathsf{Decaps}(p_B,\mathsf{dk}_B,c_B)\)
\(\xleftarrow{c,c_A}\)
4.K(cid:48) ← Π.Decaps(p,dk,c) K(cid:48) ← Π .Decaps(p ,dk ,c ) A A A A A
4.K(cid:48) ← Π.Decaps(p,dk,c) K(cid:48) ← Π .Decaps(p ,dk ,c ) A A A A A
5.result: H(K(cid:48),K (cid:48) ,K (cid:48) ) result: H(K,K ,K ) B A A B
5.結果:H(K(cid:48),K (cid:48) ,K (cid:48) ) 結果:H(K,K ,K ) B A A B
Fig. 11. Authenticated key establishment using KEMs
図11. KEMを用いた認証付き鍵確立
2. When Alice wants to connect to Bob, she acquires \(\mathsf{cert}[\mathsf{ek}_B, p_B, \mathsf{Bob}]\) (e.g., from Bob), verifies that the certificate is valid, and extracts \(\mathsf{ek}_B\), \(p_B\) from the certificate. Bob also acquires and verifies Alice’s certificate in this step.
2. AliceはBobへ接続するとき、(例えばBobから)\(\mathsf{cert}[\mathsf{ek}_B, p_B, \mathsf{Bob}]\)を取得し、その証明書が有効であることを検証して、証明書から\(\mathsf{ek}_B\)、\(p_B\)を取り出します。この手順でBobもAliceの証明書を取得して検証します。
Alice then performs encapsulation with Bob’s static public key \(\mathsf{ek}_B\), saves the resulting shared secret key \(K_B\), and sends the ciphertext \(c_B\) to Bob. Alice additionally generates an ephemeral KEM key pair \((\mathsf{ek}, \mathsf{dk})\) and sends the encapsulation key \(\mathsf{ek}\) and relevant parameter set \(p\) to Bob, keeping the private decapsulation key \(\mathsf{dk}\) private.
Aliceは次に、Bobの静的公開鍵\(\mathsf{ek}_B\)でカプセル化を行い、得られた共有シークレット鍵\(K_B\)を保存し、暗号文\(c_B\)をBobへ送信します。Aliceはさらに一時KEM鍵ペア\((\mathsf{ek}, \mathsf{dk})\)を生成し、カプセル化鍵\(\mathsf{ek}\)と関連するパラメータセット\(p\)をBobへ送信します。秘密のデカプセル化鍵\(\mathsf{dk}\)は秘密に保ちます。
3. Bob uses \((p, \mathsf{ek})\) to perform encapsulation, which results in a KEM ciphertext \(c\) and shared secret key \(K\). Bob extracts \(\mathsf{ek}_A\) and \(p_A\) from Alice’s certificate and then performs encapsulation with \(\mathsf{ek}_A\) and \(p_A\) to generate \(K_A\) and \(c_A\).
3. Bobは\((p, \mathsf{ek})\)を使ってカプセル化を行い、KEM暗号文\(c\)と共有シークレット鍵\(K\)を得ます。BobはAliceの証明書から\(\mathsf{ek}_A\)と\(p_A\)を取り出し、\(\mathsf{ek}_A\)と\(p_A\)でカプセル化を行って\(K_A\)と\(c_A\)を生成します。
Bob also performs decapsulation using \((p_B, \mathsf{dk}_B, c_B)\) to produce another shared secret key \(K'_B\). Bob sends ciphertexts \(c\) and \(c_A\) to Alice.
Bobはさらに\((p_B, \mathsf{dk}_B, c_B)\)を使ってデカプセル化を行い、もう一つの共有シークレット鍵\(K'_B\)を得ます。Bobは暗号文\(c\)と\(c_A\)をAliceへ送信します。
4. Alice uses \(c\), \(p\), and \(\mathsf{dk}\) to run decapsulation and recover her copy of the ephemeral shared secret key \(K'\). Alice additionally uses \(c_A\), \(p_A\), and \(\mathsf{dk}_A\) to run decapsulation and recover her copy of the long-term shared secret key \(K'_A\).
4. Aliceは\(c\)、\(p\)、\(\mathsf{dk}\)を使ってデカプセル化を行い、一時共有シークレット鍵の自分側の複製\(K'\)を復元します。Aliceはさらに\(c_A\)、\(p_A\)、\(\mathsf{dk}_A\)を使ってデカプセル化を行い、長期共有シークレット鍵の自分側の複製\(K'_A\)を復元します。
5. Alice and Bob combine their copies of the shared ephemeral secret key \(K'\) (\(K\)) and static shared secret keys \(K'_A\) and \(K_B\) (\(K_A\) and \(K'_B\).) and apply a KDF \(H\) to establish a final shared secret key.
5. AliceとBobは、共有一時秘密鍵の各自の複製\(K'\)(\(K\))と、静的共有シークレット鍵\(K'_A\)および\(K_B\)(\(K_A\)および\(K'_B\)。)を結合し、KDF \(H\)を適用して最終的な共有シークレット鍵を確立します。
References
参考文献
[1] Barker EB, Chen L, Roginsky A, Vassilev A, Davis R (2018) Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography (Depart-ment of Commerce, Washington, D.C.), NIST Special Publication (SP) NIST SP 800-56Ar3. https://doi.org/10.6028/NIST.SP.800-56Ar3
[1] Barker EB, Chen L, Roginsky A, Vassilev A, Davis R (2018) Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography (Depart-ment of Commerce, Washington, D.C.), NIST Special Publication (SP) NIST SP 800-56Ar3. https://doi.org/10.6028/NIST.SP.800-56Ar3
[2] Barker EB, Chen L, Roginsky A, Vassilev A, Davis R, Simon S (2019) Recommendation for Pair-Wise Key-Establishment Using Integer Factorization Cryptography (Depart-ment of Commerce, Washington, D.C.), NIST Special Publication (SP) NIST SP 800-56Br2. https://doi.org/10.6028/NIST.SP.800-56Br2
[2] Barker EB, Chen L, Roginsky A, Vassilev A, Davis R, Simon S (2019) Recommendation for Pair-Wise Key-Establishment Using Integer Factorization Cryptography (Department of Commerce, Washington, D.C.), NIST Special Publication (SP) NIST SP 800-56Br2. https://doi.org/10.6028/NIST.SP.800-56Br2
[3] National Institute of Standards and Technology (2024) Module-Lattice-Based Key-Encapsulation Mechanism Standard (Department of Commerce, Washington, D.C.), Federal Information Processing Standards Publications (FIPS) NIST FIPS 203. https://doi.org/10.6028/NIST.FIPS.203
[3] National Institute of Standards and Technology (2024) Module-Lattice-Based Key-Encapsulation Mechanism Standard (Department of Commerce, Washington, D.C.), Federal Information Processing Standards Publications (FIPS) NIST FIPS 203. https://doi.org/10.6028/NIST.FIPS.203
[4] Moody D, Perlner R, Regenscheid A, Robinson A, Cooper D (2024) Transition to Post-Quantum Cryptography Standards (Department of Commerce, Washington, D.C.), NIST Internal Report (IR) NIST IR 8547ipd. https://doi.org/10.6028/NIST.IR.8547.ipd
[4] Moody D, Perlner R, Regenscheid A, Robinson A, Cooper D (2024) Transition to Post-Quantum Cryptography Standards (Department of Commerce, Washington, D.C.), NIST Internal Report (IR) NIST IR 8547ipd. https://doi.org/10.6028/NIST.IR.8547.ipd
[5] National Institute of Standards and Technology (2019) Security Requirements for Cryptographic Modules (Department of Commerce, Washington, D.C.), Federal Information Processing Standards Publications (FIPS) NIST FIPS 140-3,. https://doi.org/10.6028/NIST.FIPS.140-3
[5] National Institute of Standards and Technology (2019) Security Requirements for Cryptographic Modules (Department of Commerce, Washington, D.C.), Federal Information Processing Standards Publications (FIPS) NIST FIPS 140-3,. https://doi.org/10.6028/NIST.FIPS.140-3
[6] Barker EB, Kelsey J (2015) Recommendation for Random Number Generation Using Deterministic Random Bit Generators (Department of Commerce, Washington, D.C.), NIST Special Publication (SP) NIST SP 800-90Ar1. https://doi.org/10.6028/NIST.SP.800-90Ar1
[6] Barker EB, Kelsey J (2015) Recommendation for Random Number Generation Using Deterministic Random Bit Generators (Department of Commerce, Washington, D.C.), NIST Special Publication (SP) NIST SP 800-90Ar1。https://doi.org/10.6028/NIST.SP.800-90Ar1
[7] Sönmez Turan M, Barker E, Kelsey J, McKay K, Baish M, Boyle M (2018) Recommendation for the Entropy Sources Used for Random Bit Generation (Department of Commerce, Washington, D.C.), NIST Special Publication (SP) NIST SP 800-90B. https://doi.org/10.6028/NIST.SP.800-90B
[7] Sönmez Turan M, Barker E, Kelsey J, McKay K, Baish M, Boyle M (2018) Recommendation for the Entropy Sources Used for Random Bit Generation (Department of Commerce, Washington, D.C.), NIST Special Publication (SP) NIST SP 800-90B。https://doi.org/10.6028/NIST.SP.800-90B
[8] Barker EB, Kelsey JM, McKay KA, Roginsky AL, Sönmez Turan M (2025) Recommendation for Random Bit Generator (RBG) Constructions (National Institute of Standards and Technology, Gaithersburg, MD), NIST Special Publication (SP) NIST SP 800-90C. https://doi.org/10.6028/NIST.SP.800-90C
[8] Barker EB, Kelsey JM, McKay KA, Roginsky AL, Sönmez Turan M (2025) Recommendation for Random Bit Generator (RBG) Constructions (National Institute of Standards and Technology, Gaithersburg, MD), NIST Special Publication (SP) NIST SP 800-90C。https://doi.org/10.6028/NIST.SP.800-90C
[9] Dworkin M (2007) Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC (National Institute of Standards and Technology, Gaithersburg, MD), NIST Special Publication (SP) NIST SP 800-38D. https://doi.org/10.6028/NIST.SP.800-38D
[9] Dworkin M (2007) Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC(米国標準技術研究所、メリーランド州ゲイザースバーグ)、NIST Special Publication (SP) NIST SP 800-38D。https://doi.org/10.6028/NIST.SP.800-38D
[10] Barker E, Branstad D, Smid M (2015) A Profile for U.S. Federal Cryptographic Key Man-agement Systems (CKMS) (National Institute of Standards and Technology, Gaithers-burg, MD), NIST Special Publication (SP) NIST SP 800-152. https://doi.org/10.6028/NIST.SP.800-152
[10] Barker E, Branstad D, Smid M (2015) 米国連邦暗号鍵管理システム(CKMS)のプロファイル(米国標準技術研究所、メリーランド州ゲイザースバーグ)、NIST特別刊行物(SP)NIST SP 800-152。https://doi.org/10.6028/NIST.SP.800-152
[11] Shoup V (2001) A Proposal for an ISO Standard for Public Key Encryption, Cryptology ePrint Archive, Paper 2001/112. Available at https://eprint.iacr.org/2001/112.
[12] Cramer R, Shoup V (2003) Design and analysis of practical public-key encryption schemes secure against adaptive chosen ciphertext attack. SIAM Journal on Computing 33(1):167–226. https://doi.org/10.1137/S0097539702403773
[11] Shoup V (2001) 公開鍵暗号のISO規格の提案、Cryptology ePrint Archive、Paper 2001/112。入手先:https://eprint.iacr.org/2001/112。
[12] Cramer R, Shoup V (2003) 適応的選択暗号文攻撃に対して安全な実用的公開鍵暗号方式の設計と解析。SIAM Journal on Computing 33(1):167–226。https://doi.org/10.1137/S0097539702403773
[13] Herranz J, Hofheinz D, Kiltz E (2006) Some (in)sufficient conditions for secure hybrid encryption, Cryptology ePrint Archive, Paper 2006/265. Available at https://eprint.iacr.org/2006/265.
[13] Herranz J, Hofheinz D, Kiltz E (2006) 安全なハイブリッド暗号化のためのいくつかの十分(不十分)条件、Cryptology ePrint Archive、Paper 2006/265。入手先:https://eprint.iacr.org/2006/265。
[14] Brainard J, Kaliski B, Turner S, Randall J (2010) Use of the RSA-KEM Key Transport Algorithm in the Cryptographic Message Syntax (CMS), RFC 5990. https://doi.org/10.17487/RFC5990.
[14] Brainard J, Kaliski B, Turner S, Randall J (2010) Use of the RSA-KEM Key Transport Algorithm in the Cryptographic Message Syntax (CMS), RFC 5990。https://doi.org/10.17487/RFC5990.
[15] American National Standards Institute (2011) ANSI X9.63-2011, (R2017) - Public Key Cryptography for the Financial Services Industry: Key Agreement and Key Transport Using Elliptic Curve Cryptography (Accredited Standards Committee X9, Annapolis, MD). Available at https://webstore.ansi.org/standards/ascx9/ansix9442007r2017.
[16] American National Standards Institute (2007) ANSI X9.44-2007 (R2017), Public Key Cryptography for the Financial Services Industry: Key Establishment Using Integer Factorization Cryptography (Accredited Standards Committee X9, Annapolis, MD). Available at https://webstore.ansi.org/standards/ascx9/ansix9442007r2017.
[17] Katz J, Lindell Y (2020) Introduction to Modern Cryptography (Chapman & Hall/CRC, Boca Raton, FL), 3rd Ed.
[15] American National Standards Institute (2011) ANSI X9.63-2011, (R2017) - 金融サービス業界向け公開鍵暗号:楕円曲線暗号を用いる鍵合意および鍵配送(Accredited Standards Committee X9、メリーランド州アナポリス)。入手先:https://webstore.ansi.org/standards/ascx9/ansix9442007r2017。
[16] American National Standards Institute (2007) ANSI X9.44-2007 (R2017)、金融サービス業界向け公開鍵暗号:素因数分解暗号を用いる鍵確立(Accredited Standards Committee X9、メリーランド州アナポリス)。入手先:https://webstore.ansi.org/standards/ascx9/ansix9442007r2017。
[17] Katz J, Lindell Y (2020) Introduction to Modern Cryptography(Chapman & Hall/CRC、フロリダ州ボカラトン)、第3版。
[18] Barker EB, Roginsky A, Davis R (2020) Recommendation for Cryptographic Key Generation (Department of Commerce, Washington, D.C.), NIST Special Publication (SP) NIST SP 800-133r2. https://doi.org/10.6028/NIST.SP.800-133r2
[18] Barker EB, Roginsky A, Davis R (2020) Recommendation for Cryptographic Key Generation (Department of Commerce, Washington, D.C.), NIST Special Publication (SP) NIST SP 800-133r2。https://doi.org/10.6028/NIST.SP.800-133r2
[19] Barker E (2020) Recommendation for Key Management: Part 1 – General (National Institute of Standards and Technology, Gaithersburg, MD), NIST Special Publication (SP) NIST SP 800-57pt1r5. https://doi.org/10.6028/NIST.SP.800-57pt1r5
[20] Chen L (2022) Recommendation for Key Derivation Using Pseudorandom Functions (National Institute of Standards and Technology, Gaithersburg, MD), NIST Special Publication (SP) NIST SP 800-108r1-upd1, Includes updates as of February 2, 2024. https://doi.org/10.6028/NIST.SP.800-108r1-upd1
[19] Barker E (2020) 鍵管理に関する推奨事項:第1部 – 一般(米国標準技術研究所、メリーランド州ゲイザースバーグ)、NIST特別刊行物(SP)NIST SP 800-57pt1r5。https://doi.org/10.6028/NIST.SP.800-57pt1r5
[20] Chen L (2022) 擬似ランダム関数を用いる鍵導出に関する推奨事項(米国標準技術研究所、メリーランド州ゲイザースバーグ)、NIST特別刊行物(SP)NIST SP 800-108r1-upd1、2024年2月2日時点の更新を含みます。https://doi.org/10.6028/NIST.SP.800-108r1-upd1
[21] Barker EB, Chen L, Davis R (2020) Recommendation for Key-Derivation Methods in Key-Establishment Schemes (Department of Commerce, Washington, D.C.), NIST Special Publication (SP) NIST SP 800-56Cr2. https://doi.org/10.6028/NIST.SP.800-56Cr2
[21] Barker EB, Chen L, Davis R (2020) Recommendation for Key-Derivation Methods in Key-Establishment Schemes (Department of Commerce, Washington, D.C.), NIST Special Publication (SP) NIST SP 800-56Cr2。https://doi.org/10.6028/NIST.SP.800-56Cr2
[22] Brockhaus H, von Oheimb D, Ounsworth M, Gray J (2025) Internet X.509 Public Key Infrastructure – Certificate Management Protocol (CMP), RFC 9810. https://doi.org/10.17487/RFC9810.
[22] Brockhaus H, von Oheimb D, Ounsworth M, Gray J (2025) Internet X.509 Public Key Infrastructure – Certificate Management Protocol (CMP), RFC 9810。https://doi.org/10.17487/RFC9810.
[23] Driscoll F, Parsons M, Hale B (2024) Terminology for Post-Quantum Traditional Hybrid Schemes (Internet Engineering Task Force), Internet-Draft draft-ietf-pquip-pqt-hybrid-terminology-05. Work in Progress. Available at https://datatracker.ietf.org/doc/draft-ietf-pquip-pqt-hybrid-terminology/05/.
[23] Driscoll F, Parsons M, Hale B (2024) 耐量子・従来型ハイブリッド方式の用語(Internet Engineering Task Force)、Internet-Draft draft-ietf-pquip-pqt-hybrid-terminology-05。作業中。入手先:https://datatracker.ietf.org/doc/draft-ietf-pquip-pqt-hybrid-terminology/05/。
[24] Barbosa M, Connolly D, Duarte JD, Kaiser A, Schwabe P, Varner K, Westerbaan B (2024) X-Wing. IACR Communications in Cryptology 1(1). https://doi.org/10.62056/a3qj89n4e
[24] Barbosa M, Connolly D, Duarte JD, Kaiser A, Schwabe P, Varner K, Westerbaan B (2024) X-Wing。IACR Communications in Cryptology 1(1)。https://doi.org/10.62056/a3qj89n4e
[25] Giacon F, Heuer F, Poettering B (2018) KEM combiners. Public-Key Cryptography – PKC 2018, eds Abdalla M, Dahab R (Springer International Publishing, Cham), pp 190–218.
[26] Avanzi R, Bos J, Ducas L, Kiltz E, Lepoint T, Lyubashekvsky V, Schanck JM, Schwabe P, Seiler G, Stehlé D (2021) CRYSTALS-Kyber Algorithm Specifications and Supporting Documentation (version 3.02). Available at https://pq-crystals.org/kyber/data/kyber-specification-round3-20210804.pdf.
[25] Giacon F, Heuer F, Poettering B (2018) KEMコンバイナ。Public-Key Cryptography – PKC 2018、Abdalla M, Dahab R 編(Springer International Publishing、Cham)、pp 190–218。
[26] Avanzi R, Bos J, Ducas L, Kiltz E, Lepoint T, Lyubashekvsky V, Schanck JM, Schwabe P, Seiler G, Stehlé D (2021) CRYSTALS-Kyberアルゴリズム仕様および補足文書(version 3.02)。入手先:https://pq-crystals.org/kyber/data/kyber-specification-round3-20210804.pdf。
[27] Avanzi R, Bos J, Ducas L, Kiltz E, Lepoint T, Lyubashevsky V, Schanck JM, Schwabe P, Seiler G, Stehlé D (2020) CRYSTALS-Kyber Algorithm Specifications and Supporting Documentation, Third-round submission to the NIST’s post-quantum cryptography standardization process. Available at https://csrc.nist.gov/Projects/post-quantum-cryptography/post-quantum-cryptography-standardization/round-3-submissions.
[28] Almeida JB, Olmos SA, Barbosa M, Barthe G, Dupressoir F, Grégoire B, Laporte V, Léchenet JC, Low C, Oliveira T, Pacheco H, Quaresma M, Schwabe P, Strub PY (2024) Formally verifying Kyber Episode V: Machine-checked IND-CCA security and correctness of ML-KEM in EasyCrypt, Cryptology ePrint Archive, Paper 2024/843. Available at https://eprint.iacr.org/2024/843.
[27] Avanzi R, Bos J, Ducas L, Kiltz E, Lepoint T, Lyubashevsky V, Schanck JM, Schwabe P, Seiler G, Stehlé D (2020) CRYSTALS-Kyberアルゴリズム仕様および補足文書、NISTの耐量子暗号標準化プロセスへの第3ラウンド提出文書。入手先:https://csrc.nist.gov/Projects/post-quantum-cryptography/post-quantum-cryptography-standardization/round-3-submissions。
[28] Almeida JB, Olmos SA, Barbosa M, Barthe G, Dupressoir F, Grégoire B, Laporte V, Léchenet JC, Low C, Oliveira T, Pacheco H, Quaresma M, Schwabe P, Strub PY (2024) Kyberの形式検証 エピソードV:EasyCryptによるML-KEMのIND-CCA安全性と正当性の機械検証、Cryptology ePrint Archive、Paper 2024/843。入手先:https://eprint.iacr.org/2024/843。
[29] Regev O (2005) On Lattices, Learning with Errors, Random Linear Codes, and Cryptography. Proceedings of the Thirty-Seventh Annual ACM Symposium on Theory of Computing STOC ’05 (Association for Computing Machinery, New York, NY, USA), pp 84–93. https://doi.org/10.1145/1060590.1060603.
[29] Regev O (2005) 格子、Learning with Errors、ランダム線形符号、および暗号について。Proceedings of the Thirty-Seventh Annual ACM Symposium on Theory of Computing STOC ’05(Association for Computing Machinery、米国ニューヨーク州ニューヨーク)、pp 84–93。https://doi.org/10.1145/1060590.1060603。
[30] Langlois A, Stehlé D (2015) Worst-case to average-case reductions for module lattices. Designs, Codes and Cryptography 75(3):565–599. https://doi.org/10.1007/s10623-09938-4.
[30] Langlois A, Stehlé D (2015) 加群格子に対する最悪時から平均時への帰着。Designs, Codes and Cryptography 75(3):565–599。https://doi.org/10.1007/s10623-09938-4。
[31] ElGamal T (1985) A public key cryptosystem and a signature scheme based on discrete logarithms. IEEE transactions on information theory 31(4):469–472. https://doi.org/10.1109/TIT.1985.1057074
[31] ElGamal T (1985) A public key cryptosystem and a signature scheme based on discrete logarithms. IEEE transactions on information theory 31(4):469–472。https://doi.org/10.1109/TIT.1985.1057074
[32] Bos J, Ducas L, Kiltz E, Lepoint T, Lyubashevsky V, Schanck JM, Schwabe P, Seiler G, Stehle D (2018) CRYSTALS - Kyber: A CCA-Secure Module-Lattice-Based KEM. 2018 IEEE European Symposium on Security and Privacy (EuroSP), pp 353–367. https://doi.org/10.1109/EuroSP.2018.00032
[32] Bos J, Ducas L, Kiltz E, Lepoint T, Lyubashevsky V, Schanck JM, Schwabe P, Seiler G, Stehle D (2018) CRYSTALS - Kyber: A CCA-Secure Module-Lattice-Based KEM. 2018 IEEE European Symposium on Security and Privacy (EuroSP), pp 353–367。https://doi.org/10.1109/EuroSP.2018.00032
[33] Schwabe P, Stebila D, Wiggers T (2020) Post-quantum TLS without handshake signatures. Proceedings of the 2020 ACM SIGSAC Conference on Computer and Communications Security, pp 1461–1480. https://doi.org/10.1145/3372297.3423350
[34] Canetti R, Krawczyk H (2001) Analysis of key-exchange protocols and their use for building secure channels. Advances in Cryptology — EUROCRYPT 2001 (Springer, Berlin, Heidelberg), pp 453–474. https://doi.org/10.1007/3-540-44987-6_28
[33] Schwabe P, Stebila D, Wiggers T (2020) ハンドシェイク署名を用いない耐量子TLS。Proceedings of the 2020 ACM SIGSAC Conference on Computer and Communications Security、pp 1461–1480。https://doi.org/10.1145/3372297.3423350
[34] Canetti R, Krawczyk H (2001) 鍵交換プロトコルの解析と安全なチャネルの構築への利用。Advances in Cryptology — EUROCRYPT 2001(Springer、Berlin、Heidelberg)、pp 453–474。https://doi.org/10.1007/3-540-44987-6_28
[35] Sönmez Turan M, Brandão LTAN (2024) Keyed-Hash Message Authentication Code (HMAC): Specification of HMAC and Recommendations for Message Authentication (National Institute of Standards and Technology, Gaithersburg, MD), NIST Special Publication (SP) NIST SP 800-224 ipd. https://doi.org/10.6028/NIST.SP.800-224.ipd
[35] Sönmez Turan M, Brandão LTAN (2024) Keyed-Hash Message Authentication Code (HMAC): Specification of HMAC and Recommendations for Message Authentication (National Institute of Standards and Technology, Gaithersburg, MD), NIST Special Publication (SP) NIST SP 800-224 ipd。https://doi.org/10.6028/NIST.SP.800-224.ipd
[36] Dworkin M (2010) Recommendation for Block Cipher Modes of Operation: Three Variants of Ciphertext Stealing for CBC Mode (National Institute of Standards and Technology, Gaithersburg, MD), NIST Special Publication (SP) NIST SP 800-38B. https://doi.org/10.6028/NIST.SP.800-38B
[36] Dworkin M (2010) Recommendation for Block Cipher Modes of Operation: Three Variants of Ciphertext Stealing for CBC Mode (National Institute of Standards and Technology, Gaithersburg, MD), NIST Special Publication (SP) NIST SP 800-38B。https://doi.org/10.6028/NIST.SP.800-38B
[37] Kelsey J, Chang SJ, Perlner R (2016) SHA-3 Derived Functions: cSHAKE, KMAC, Tuple-Hash and ParallelHash (Department of Commerce, Washington, D.C.), NIST Special Publication (SP) NIST SP 800-185. https://doi.org/10.6028/NIST.SP.800-185
[37] Kelsey J, Chang SJ, Perlner R (2016) SHA-3 Derived Functions: cSHAKE, KMAC, Tuple-Hash and ParallelHash(米国商務省、ワシントンD.C.)、NIST Special Publication (SP) NIST SP 800-185。https://doi.org/10.6028/NIST.SP.800-185
Appendix A. List of Acronyms
付録A. 略語一覧
CAVP Cryptographic Algorithm Verification Program
CAVP 暗号アルゴリズム検証プログラム
CMVP Cryptographic Module Verification Program
CMVP 暗号モジュール検証プログラム
DRBG Deterministic Random Bit Generator
DRBG 決定論的ランダムビット生成器
FIPS Federal Information Processing Standards
FIPS 連邦情報処理標準
IND-CCA Indistinguishability under Chosen Ciphertext Attack
IND-CCA 選択暗号文攻撃に対する識別不能性
IND-CPA Indistinguishability under Chosen Plaintext Attack
IND-CPA 選択平文攻撃に対する識別不能性
ITL Information Technology Laboratory
ITL 情報技術研究所
KC Key Confirmation
KC 鍵確認
KDF Key-Derivation Function
KDF 鍵導出関数
KDM Key-Derivation Method
KDM 鍵導出方式
KEM Key-Encapsulation Mechanism
KEM 鍵カプセル化機構
MAC Message Authentication Code
MAC メッセージ認証コード
ML-KEM Module-Lattice-Based Key-Encapsulation Mechanism
ML-KEM モジュール格子ベース鍵カプセル化機構
NIST National Institute of Standards and Technology
NIST 米国国立標準技術研究所
PKE Public-Key Encryption
PKE 公開鍵暗号
PoP Proof of Possession
PoP 所持証明
RBG Random Bit Generator
RBG ランダムビット生成器
SP Special Publication
SP 特別刊行物
TLS Transport Layer Security
TLS トランスポート層セキュリティ
TTP — Trusted Third Party
TTP — 信頼できる第三者(Trusted Third Party)
Appendix B. Glossary
付録B. 用語集
This section is informative.
本節は参考情報です。
approved — FIPS-approved and/or NIST-recommended. An algorithm or technique that is either 1) specified in a FIPS or NIST recommendation, 2) adopted in a FIPS or NIST recommendation, or 3) specified in a list of NIST-approved security functions.
承認済み(approved)— FIPS承認済み、および/またはNIST推奨。アルゴリズムまたは技法で、次のいずれかに該当するもの: 1) FIPSまたはNIST勧告で規定されている、2) FIPSまたはNIST勧告で採用されている、3) NIST承認のセキュリティ機能の一覧に記載されています。
ciphertext With regard to KEMs, a bit string that is produced by the encapsulation algorithm and used as an input to the decapsulation algorithm.
暗号文(ciphertext) KEMに関しては、カプセル化アルゴリズムによって生成され、デカプセル化アルゴリズムへの入力として用いられるビット列。
computationally bounded adversary An adversarial algorithm that is constrained in running time and memory, and is thus unlikely to break a cryptosystem under consideration. The nature of the constraints depends on the context, including the desired security strength of the cryptosystem.
計算能力が制限された攻撃者(computationally bounded adversary) 実行時間とメモリが制約された攻撃アルゴリズムであり、そのため対象とする暗号システムを破る見込みが低いもの。制約の内容は、暗号システムに求めるセキュリティ強度などの状況によって決まります。
cryptanalytically relevant quantum computer — A device capable of using quantum algorithms to break a cryptosystem that is secure against classical (i.e., non-quantum) computers.
暗号解読上実用的な量子コンピュータ(cryptanalytically relevant quantum computer)— 量子アルゴリズムを用いて、古典的な(すなわち非量子の)コンピュータに対して安全な暗号システムを破ることができる装置。
decapsulation The process of applying the \(\mathsf{Decaps}\) algorithm of a KEM. This algorithm accepts a KEM ciphertext and the decapsulation key as input and produces a shared secret key as output.
デカプセル化(decapsulation) KEMの\(\mathsf{Decaps}\)アルゴリズムを適用する処理。このアルゴリズムは、KEM暗号文とデカプセル化鍵を入力として受け取り、共有シークレット鍵を出力します。
decapsulation key A cryptographic key produced by a KEM during key generation and used during decapsulation.
デカプセル化鍵(decapsulation key) KEMが鍵生成時に生成し、デカプセル化時に使用する暗号鍵。
destroy — An action applied to a key or other piece of secret data. After a key or piece of secret data is destroyed, no information about its value can be recovered.
消去(destroy)— 鍵またはその他のシークレットデータに適用する操作。鍵またはシークレットデータを消去した後は、その値に関する情報を一切復元できません。
efficient (cryptographic) algorithm An algorithm whose running time is practical for the relevant security strength.
効率的な(暗号)アルゴリズム(efficient (cryptographic) algorithm) 対象とするセキュリティ強度に対して実行時間が実用的であるアルゴリズム。
encapsulation The process of applying the \(\mathsf{Encaps}\) algorithm of a KEM. This algorithm accepts the encapsulation key as input, requires private randomness, and produces a shared secret key and an associated ciphertext as output.
カプセル化(encapsulation) KEMの\(\mathsf{Encaps}\)アルゴリズムを適用する処理。このアルゴリズムは、カプセル化鍵を入力として受け取り、秘密乱数を必要とし、共有シークレット鍵とそれに対応する暗号文を出力します。
encapsulation key A cryptographic key produced by a KEM during key generation and used by the encapsulation algorithm.
カプセル化鍵(encapsulation key) KEMが鍵生成時に生成し、カプセル化アルゴリズムが使用する暗号鍵。
ephemeral key A cryptographic key that is generated for each execution of a cryptographic process (e.g., key establishment) and meets other requirements of the key type (e.g., unique to each message or session).
一時鍵(ephemeral key) 暗号処理(例:鍵確立)を実行するたびに生成され、その鍵種別に対する他の要件(例:メッセージごと、またはセッションごとに一意であること)を満たす暗号鍵。
hash function A function on arbitrarily long bit strings in which the length of the output is fixed. At a minimum, the hash function must be one-way and collision-resistant.
identifier A bit string that is associated with a person, device, or organization. It may be an identifying name or something more abstract (e.g., a string consisting of an IP address).
ハッシュ関数(hash function) 任意の長さのビット列に対する関数であり、出力の長さが固定であるもの。ハッシュ関数は、少なくとも一方向性と衝突耐性を備えていなければなりません。
識別子(identifier) 個人、デバイス、または組織に関連付けられたビット列。識別名の場合もあれば、より抽象的なもの(例:IPアドレスからなる文字列)の場合もあります。
key agreement A (pair-wise) key-establishment procedure in which the resultant secret keying material is a function of information contributed by both participants so that neither party can predetermine the value of the secret keying material independent of the contributions of the other party. Contrast with key transport.
鍵合意:(2者間の)鍵確立手順の一つで、結果として得られるシークレット鍵素材が両参加者の寄与する情報の関数となり、どちらの当事者も、相手の寄与とは無関係にシークレット鍵素材の値を事前に決定できないもの。鍵輸送と対比されます。
key combiner A function that takes multiple keys or shared secret values as input (possibly along with other information) and produces a single combined key.
鍵結合器:複数の鍵または共有シークレットの値を(場合によってはその他の情報とともに)入力として受け取り、結合された単一の鍵を生成する関数。
key confirmation A procedure that provides assurance to one party (i.e., key-confirmation recipient) that another party (i.e., key-confirmation provider) possesses the correct secret keying material and/or shared secret from which that secret keying material is derived.
鍵確認(key confirmation) 一方の当事者(すなわち鍵確認の受領者)に対し、もう一方の当事者(すなわち鍵確認の提供者)が、正しいシークレット鍵素材、およびそのシークレット鍵素材の導出元となる共有シークレットの両方またはいずれかを保有していることを保証する手順。
key-confirmation provider The party that provides assurance to the other party (i.e., the recipient) that the two parties have indeed established a shared secret key or other keying material.
鍵確認の提供者(key-confirmation provider) 両当事者が共有シークレット鍵またはその他の鍵素材を確かに確立したことを、相手の当事者(すなわち受領者)に保証する当事者。
key-confirmation recipient The party that receives assurance from the other party (i.e., the provider) that the two parties have indeed established a shared secret key or other keying material.
鍵確認の受領者(key-confirmation recipient) 両当事者が共有シークレット鍵またはその他の鍵素材を確かに確立したことについて、相手の当事者(すなわち提供者)から保証を受ける当事者。
key-derivation method A method used to derive keying material from initial shared secrets and possibly other information.
鍵導出方式(key-derivation method) 初期の共有シークレットと、場合によっては他の情報から、鍵素材を導出するために用いる方式。
key-derivation key A key used as an input to a key-derivation method to derive additional keying material.
鍵導出鍵(key-derivation key) 追加の鍵素材を導出するために、鍵導出方式への入力として用いる鍵。
key-encapsulation mechanism (KEM) A set of three cryptographic algorithms: \(\mathsf{KeyGen}\) (key generation), \(\mathsf{Encaps}\) (encapsulation), and \(\mathsf{Decaps}\) (decapsulation). These algorithms can be used by two parties to securely establish a shared secret key over a public channel.
鍵カプセル化機構(key-encapsulation mechanism、KEM) 3つの暗号アルゴリズム、すなわち\(\mathsf{KeyGen}\)(鍵生成)、\(\mathsf{Encaps}\)(カプセル化)、\(\mathsf{Decaps}\)(デカプセル化)の組。2者の当事者は、これらのアルゴリズムを用いて、公開通信路上で共有シークレット鍵を安全に確立できます。
key establishment A procedure that results in secret keying material that is shared among different parties. Key agreement, using a KEM, and key transport are all types of key establishment.
鍵確立(key establishment) 異なる当事者の間で共有されるシークレット鍵素材を得る手順。鍵合意、KEMの使用、および鍵転送は、いずれも鍵確立の一種です。
keying material A bit string such that any non-overlapping, contiguous segments of the string with required lengths can be used as secret keys, secret initialization vectors, and other secret parameters.
鍵素材(keying material) ビット列であって、その中の重なり合わない連続した必要な長さの区間を、いずれも秘密鍵、秘密の初期化ベクトル、その他の秘密パラメータとして使用できるもの。
key pair A set of two keys with the property that one key can be made public, while the other key must be kept private. In this publication, this could refer to either the (encapsulation key, decapsulation key) key pair of a KEM or the (encryption key, decryption key) key pair of a public-key encryption (PKE) scheme.
鍵ペア:一方の鍵は公開でき、他方の鍵は秘密にしておかなければならないという性質を持つ2つの鍵の組。本書では、KEMの(カプセル化鍵、デカプセル化鍵)の鍵ペア、または公開鍵暗号(PKE)方式の(暗号化鍵、復号鍵)の鍵ペアのいずれかを指す場合があります。
key transport A (pair-wise) key-establishment procedure whereby one party (i.e., the sender) selects a value for the secret keying material and then securely distributes the value to another party (i.e., the receiver). Contrast with key agreement.
鍵輸送:(2者間の)鍵確立手順の一つで、一方の当事者(すなわち送信者)がシークレット鍵素材の値を選択し、その値を他方の当事者(すなわち受信者)へ安全に配布するもの。鍵合意と対比されます。
message authentication code (MAC) A family of symmetric-key cryptographic algorithms that act on input data of arbitrary length to produce an output value of a specified length (i.e., the MAC of the input data). The MAC can be employed to authenticate the origin of the input data and/or provide data integrity protection.
メッセージ認証コード(MAC):任意の長さの入力データに作用して、指定された長さの出力値(すなわち入力データのMAC)を生成する共通鍵暗号アルゴリズムの一群。MACは、入力データの出所を認証する目的、および/またはデータの完全性を保護する目的で利用できます。
message authentication code (MAC) tag Data obtained from the output of a MAC algorithm (possibly by truncation) that can be used by an entity to securely verify the integrity and origin of the information used as input to the MAC algorithm.
メッセージ認証コード(MAC)タグ:MACアルゴリズムの出力から(場合によっては切り詰めて)得られるデータ。エンティティが、MACアルゴリズムへの入力として用いた情報の完全性と出所を安全に検証するために使用できます。
must Indicates a requirement of this recommendation that might not be testable by a CMVP testing lab.
must(しなければならない) 本推奨事項の要件のうち、CMVP試験機関が試験できない可能性のあるものを示します。
negligible Extremely small. Typically quantifies the probability of an undesirable event that might occur during the lifetime of a cryptosystem (including during attacks by computationally bounded adversaries).
無視できる(negligible) 極めて小さいこと。通常は、暗号システムの運用期間中(計算能力が制限された攻撃者による攻撃の間を含む)に起こりうる望ましくない事象の確率の大きさを表します。
party An individual (person), organization, device, or process. In this recommendation, there are typically two parties (e.g., Party A and Party B, Alice and Bob) that jointly perform the key-establishment process using a KEM.
当事者(party) 個人(人)、組織、デバイス、またはプロセス。本推奨事項では通常、2者の当事者(例:当事者Aと当事者B、AliceとBob)が、KEMを用いた鍵確立プロセスを共同で実行します。
post-quantum algorithm A cryptographic algorithm that is believed to be secure, even against adversaries who possess a cryptanalytically relevant quantum computer.
耐量子アルゴリズム:暗号解読上実用的な量子コンピューターを持つ攻撃者に対しても安全であると考えられている暗号アルゴリズム。
pseudorandom A process (or data produced by a process) whose outcome is deterministic yet also appears effectively random if the internal action of the process is hidden from observation. For cryptographic purposes, “effectively random” means “computationally indistinguishable from random within the limits of the intended security strength.”
疑似ランダム(pseudorandom) 結果が決定論的でありながら、内部動作が観測できない場合には実質的にランダムに見えるプロセス(またはプロセスが生成するデータ)。暗号の用途では、「実質的にランダム」とは「意図するセキュリティ強度の範囲内で、ランダムなものと計算量的に識別できない」ことを意味します。
public channel A communication channel between two honest parties that can be observed and compromised by third parties.
公開通信路(public channel) 2つの正直な当事者間の通信路であり、第三者によって観察され、侵害され得るもの。
quantum-vulnerable algorithm A cryptographic algorithm that is believed to be secure against adversaries who possess only a classical computer but is known to be insecure against adversaries who possess a cryptanalytically relevant quantum computer.
量子計算に脆弱なアルゴリズム(quantum-vulnerable algorithm) 古典コンピューターしか持たない攻撃者に対しては安全であると考えられていますが、暗号解読上重要な量子コンピューターを持つ攻撃者に対しては安全でないことが知られている暗号アルゴリズム。
security strength A number associated with the amount of work that is required to break a cryptographic algorithm or system.
セキュリティ強度(security strength) 暗号アルゴリズムまたは暗号システムを破るために必要な作業量に対応付けられた数値。
seed A bit string used as input to a pseudorandom process.
シード:擬似乱数的な処理への入力として用いられるビット列。
shall Used to indicate a requirement of this document that will be tested by a CMVP testing lab.
shall:CMVP試験機関によって試験される、本書の要件を示すために用います。
shared secret A secret value that has been computed during a key-establishment scheme, is known by all participating parties, and is used as input to a key-derivation method to produce keying material.
共有シークレット:鍵確立方式の中で計算され、参加するすべての当事者に知られ、鍵素材を生成する鍵導出方法への入力として用いられる秘密の値。
shared secret key A shared secret that can be used directly as keying material or as a symmetric key.
共有シークレット鍵(shared secret key) 鍵素材として、または共通鍵として直接使用できる共有シークレット。
should Used to indicate a strong recommendation but not a requirement of this document. Ignoring the recommendation could lead to undesirable results.
should:本書の要件ではありませんが、強い推奨を示すために用います。この推奨を無視すると、望ましくない結果を招くおそれがあります。
side-channel attack An attack enabled by the leakage of information from a deployed cryptosystem. Characteristics that could be exploited in a side-channel attack include timing, power consumption, and electromagnetic and acoustic emissions.
サイドチャネル攻撃:配備された暗号システムからの情報漏えいによって可能となる攻撃。サイドチャネル攻撃で悪用されうる特性には、処理時間、消費電力、電磁放射や音響放射があります。
static key A key that is intended for use for a relatively long period of time and is typically intended for use in many instances of a cryptographic key-establishment scheme. Contrast with ephemeral key.
静的鍵:比較的長期間の使用を意図した鍵で、通常は暗号鍵確立方式の多数のインスタンスでの使用を意図します。一時鍵と対比されます。
symmetric-key algorithm A cryptographic algorithm that uses the same secret key for an operation and its complement (e.g., encryption and decryption). Also called a secret-key algorithm.
共通鍵アルゴリズム(symmetric-key algorithm) ある操作とその逆の操作(例:暗号化と復号)に同じ秘密鍵を用いる暗号アルゴリズム。秘密鍵アルゴリズムとも呼ばれます。
trusted third party An entity other than the owner and verifier that is trusted by the owner, the verifier, or both to provide certain services.
信頼できる第三者(trusted third party) 所有者および検証者以外の主体であり、特定のサービスを提供するものとして、所有者、検証者、またはその両方から信頼されているもの。
Appendix C. Cryptographic Components
付録C. 暗号コンポーネント
Appendix C.1. Message Authentication Codes (MACs)
付録C.1. メッセージ認証コード(MAC)
A MAC algorithm defines a family of cryptographic functions that is parameterized by a symmetric key. It is computationally infeasible to determine the MAC of a newly formed \(\mathit{MAC\_Data}\) output value without knowledge of the \(\mathit{KC\_Key}\) value, even if one has seen the MACs corresponding to other \(\mathit{MAC\_Data}\) values that were computed using that same \(\mathit{KC\_Key}\) value.
MACアルゴリズムは、共通鍵でパラメータ化された暗号関数の族を定義します。新たに構成した \(\mathit{MAC\_Data}\) 出力値のMACを、\(\mathit{KC\_Key}\) 値を知らずに特定することは計算量的に不可能です。これは、他の \(\mathit{MAC\_Data}\) 値に対応するMACのうち、同じ \(\mathit{KC\_Key}\) 値を使って計算されたものを見たことがあっても変わりません。
The input to a MAC algorithm includes a symmetric key \(\mathit{KC\_Key}\) and a binary data string \(\mathit{MAC\_Data}\) that serves as the “message.” That is, a MAC computation is represented as \(\mathrm{MAC}(\mathit{KC\_Key}, \mathit{MAC\_Data})\). In this recommendation, a MAC algorithm is used if key confirmation is performed during key establishment (see Sec. 4.4).
MACアルゴリズムの入力には、共通鍵 \(\mathit{KC\_Key}\) と、「メッセージ」として機能するバイナリデータ列 \(\mathit{MAC\_Data}\) が含まれます。すなわち、MAC計算は \(\mathrm{MAC}(\mathit{KC\_Key}, \mathit{MAC\_Data})\) と表されます。本推奨事項では、鍵確立中に鍵確認を行う場合にMACアルゴリズムを使用します(第4.4節参照)。
When key confirmation requires the use of a MAC algorithm, it shall be an approved MAC algorithm (i.e., HMAC, AES-CMAC, or KMAC). HMAC is specified in SP 800-224 [35] and requires the use of an approved hash function. AES-CMAC is specified in SP 800-38B [36] for the AES block cipher algorithm specified in FIPS 197. KMAC is specified in SP 800-185 [37]. In addition, AES-GMAC (specified in [9]) is an approved MAC algorithm and may be used.
鍵確認にMACアルゴリズムを使う場合、承認済みMACアルゴリズム(HMAC、AES-CMAC、KMAC)のいずれかでなければなりません。HMACはSP 800-224 [35]で規定され、承認済みハッシュ関数の使用を必要とします。AES-CMACは、FIPS 197で規定されるAESブロック暗号についてSP 800-38B [36]で規定されています。KMACはSP 800-185 [37]で規定されています。さらに、[9]で規定されるAES-GMACも承認済みMACアルゴリズムであり、使用できます。
When a MAC tag (\(\mathit{MacTag}\)) is used for key confirmation, an entity shall compute the MAC tag on received or derived data using a MAC algorithm with a \(\mathit{KC\_Key}\) that is determined from a shared secret key. The MAC tag is sent to the other entity participating in the key-establishment scheme in order to provide assurance that the shared secret key or derived keying material was correctly computed. \(\mathit{MacTag}\) computation and verification are described below.
鍵確認にMACタグ(\(\mathit{MacTag}\))を使用する場合、エンティティは、共有シークレット鍵から決定される \(\mathit{KC\_Key}\) を用いるMACアルゴリズムで、受信データまたは導出データに対するMACタグを計算しなければなりません。共有シークレット鍵または導出した鍵素材が正しく計算されたことを保証するため、MACタグを鍵確立方式に参加する相手のエンティティへ送信します。\(\mathit{MacTag}\) の計算と検証について以下で説明します。
MAC Tag Computation for Key Confirmation. Key confirmation can be performed as one or more additional steps in a KEM scheme. The computation of a MAC tag is represented as follows:
鍵確認用MACタグの計算:鍵確認はKEM方式に1つ以上の追加手順を設けて実行できます。MACタグの計算は次のように表します。
To compute a MacTag:
MacTagの計算:
1. The agreed-upon MAC algorithm (see Table 1) is used with \(\mathit{KC\_Key}\) to compute the MAC on \(\mathit{MAC\_Data}\), where \(\mathit{KC\_Key}\) is a symmetric key, and \(\mathit{MAC\_Data}\) represents the input “message” data. The minimum length of \(\mathit{KC\_Key}\) is specified in Table 1.
1. 合意したMACアルゴリズム(表1参照)を \(\mathit{KC\_Key}\) とともに使用し、\(\mathit{MAC\_Data}\) に対するMACを計算します。ここで、\(\mathit{KC\_Key}\) は共通鍵であり、\(\mathit{MAC\_Data}\) は入力の「メッセージ」データを表します。\(\mathit{KC\_Key}\) の最小長は表1に規定されています。
\(\mathit{KC\_Key}\) is obtained from the the shared secret key, as specified in Sec. 4.4.2.
\(\mathit{KC\_Key}\) は、第4.4.2節に規定するとおり、共有シークレット鍵から取得します。
The output of the MAC algorithm \(\mathit{MacOutput}\) is a bit string whose length in bits is \(\mathit{MacOutputBits}\).
MACアルゴリズムの出力 \(\mathit{MacOutput}\) はビット列であり、そのビット長は \(\mathit{MacOutputBits}\) です。
Table 1. Approved MAC algorithms for key confirmation
表1. 鍵確認のために承認されたMACアルゴリズム
| MAC Algorithm | MacOutputBits | Permissible KC_Key Lengths (\(\mu\) bits) | Supported Security Strengths for Key Confirmation (\(s\) bits) |
| HMAC_SHA-256 | 256 | \(s \le \mu \le 512\) | \(128 \le s \le 256\) |
| HMAC_SHA-512/256 | 256 | ||
| HMAC_SHA-384 | 384 | ||
| HMAC_SHA-512 | 512 | ||
| HMAC_SHA3-256 | 256 | ||
| HMAC_SHA3-384 | 384 | ||
| HMAC_SHA3-512 | 512 | ||
| KMAC128 | \(\le 2^{2040} - 1\) | \(s = 128\) | |
| KMAC256 | \(128 \le s \le 256\) | ||
| AES-128-CMAC | 128 | \(\mu = 128\) | \(s = 128\) |
| AES-192-CMAC | 128 | \(\mu = 192\) | \(128 \le s \le 192\) |
| AES-256-CMAC | 128 | \(\mu = 256\) | \(128 \le s \le 256\) |
| AES-128-GMAC | 128 | \(\mu = 128\) | \(s = 128\) |
| AES-192-GMAC | 128 | \(\mu = 192\) | \(128 \le s \le 192\) |
| AES-256-GMAC | 128 | \(\mu = 256\) | \(128 \le s \le 256\) |
| MACアルゴリズム | MacOutputBits | 許容されるKC_Keyの長さ(\(\mu\) ビット) | 鍵確認でサポートされる安全性強度(\(s\) ビット) |
| HMAC_SHA-256 | 256 | \(s \le \mu \le 512\) | \(128 \le s \le 256\) |
| HMAC_SHA-512/256 | 256 | ||
| HMAC_SHA-384 | 384 | ||
| HMAC_SHA-512 | 512 | ||
| HMAC_SHA3-256 | 256 | ||
| HMAC_SHA3-384 | 384 | ||
| HMAC_SHA3-512 | 512 | ||
| KMAC128 | \(\le 2^{2040} - 1\) | \(s = 128\) | |
| KMAC256 | \(128 \le s \le 256\) | ||
| AES-128-CMAC | 128 | \(\mu = 128\) | \(s = 128\) |
| AES-192-CMAC | 128 | \(\mu = 192\) | \(128 \le s \le 192\) |
| AES-256-CMAC | 128 | \(\mu = 256\) | \(128 \le s \le 256\) |
| AES-128-GMAC | 128 | \(\mu = 128\) | \(s = 128\) |
| AES-192-GMAC | 128 | \(\mu = 192\) | \(128 \le s \le 192\) |
| AES-256-GMAC | 128 | \(\mu = 256\) | \(128 \le s \le 256\) |
2. The \(\mathit{MacOutput}\) bits are input to the truncation function \(T_{\mathit{MacTagBits}}\), which returns the leftmost (i.e., initial) bits of \(\mathit{MacOutput}\) to be used as the value of \(\mathit{MacTag}\). \(\mathit{MacTagBits}\) needs to be less than or equal to \(\mathit{MacOutputBits}\) long. When \(\mathit{MacTagBits}\) equals \(\mathit{MacOutputBits}\), \(T_{\mathit{MacTagBits}}\) acts as the identity function. The minimum value for \(\mathit{MacTagBits}\) is 64.
2. \(\mathit{MacOutput}\) のビット列を切り詰め関数 \(T_{\mathit{MacTagBits}}\) に入力します。この関数は \(\mathit{MacOutput}\) の左端(すなわち先頭)のビットを返し、それを \(\mathit{MacTag}\) の値として用います。\(\mathit{MacTagBits}\) の長さは \(\mathit{MacOutputBits}\) 以下である必要があります。\(\mathit{MacTagBits}\) が \(\mathit{MacOutputBits}\) と等しい場合、\(T_{\mathit{MacTagBits}}\) は恒等関数として働きます。\(\mathit{MacTagBits}\) の最小値は64です。
MacTag Verification for Key Confirmation. To verify a received \(\mathit{MacTag}\) (i.e., received during key confirmation), a new Mac tag \(\mathit{MacTag}'\) is computed using the values of \(\mathit{KC\_Key}\), \(\mathit{MacTagBits}\), and \(\mathit{MAC\_Data}\) generated by the recipient (as specified in Sec. 4.4.1). \(\mathit{MacTag}'\) is compared with the received \(\mathit{MacTag}\). If their values are equal, then it may be inferred that the same \(\mathit{KC\_Key}\), \(\mathit{MacTagBits}\), and \(\mathit{MAC\_Data}\) values were used in the two \(\mathit{MacTag}\) computations.
鍵確認におけるMacTagの検証。受信した \(\mathit{MacTag}\)(すなわち鍵確認中に受信したもの)を検証するため、新しいMACタグ \(\mathit{MacTag}'\) を、受信側が(第4.4.1節に規定するとおり)生成した \(\mathit{KC\_Key}\)、\(\mathit{MacTagBits}\)、および \(\mathit{MAC\_Data}\) の値を使って計算します。\(\mathit{MacTag}'\) を受信した \(\mathit{MacTag}\) と比較します。両者の値が等しければ、同じ \(\mathit{KC\_Key}\)、\(\mathit{MacTagBits}\)、および \(\mathit{MAC\_Data}\) の値が2つの \(\mathit{MacTag}\) 計算で使用されたと推定してよい。
Appendix C.2. Nonces
付録C.2. ノンス
A nonce is a time-varying value with a negligible chance of repeating. A decapsulator may be required to provide a public nonce that is used for key-confirmation purposes. This circumstance arises when the decapsulator’s public key is static.
ノンスは、再び出現する可能性が無視できるほど小さい、時間とともに変化する値です。デカプセル化側は、鍵確認に使用する公開ノンスの提供を求められる場合があります。これは、デカプセル化側の公開鍵が静的である場合に生じます。
A nonce may be composed of one or more of the following components, though other components may also be appropriate:
ノンスは、以下の構成要素のうち1つ以上から構成できますが、これら以外の構成要素も適切な場合があります。
1.A random bit string that is generated anew for each nonce using an approved ran-dom bit generator. A nonce containing a component of this type is called a random nonce.
1.承認済み乱数ビット生成器を用い、ノンスごとに新たに生成されるランダムなビット列。この種の構成要素を含むノンスをランダムノンスと呼びます。
2.A timestamp of sufficient resolution so that it is different each time it is used.
2.使用するたびに異なる値となる十分な分解能を持つタイムスタンプ。
3.A monotonically increasing sequence number.
3.単調増加するシーケンス番号。
4.A combination of a timestamp and a monotonically increasing sequence num-ber such that the sequence number is reset when and only when the timestamp changes. For example, a timestamp may show the date but not the time of day, so a sequence number is appended that will not repeat during a particular day.
4.タイムスタンプと単調増加するシーケンス番号の組み合わせであり、タイムスタンプが変化したとき、かつそのときに限り、シーケンス番号をリセットします。例えば、タイムスタンプが時刻を含まず日付だけを示す場合、その日に重複しないシーケンス番号を付加します。
When a nonce is required for key-confirmation purposes as specified in this recommen-dation, it should be a random nonce that contains a random bit string output from an approved random bit generator, where both the security strength supported by the in-stantiation of the random bit generator and the bit length of the random bit string are greater than or equal to the targeted security strength of the key-establishment scheme in which the nonce is used during key confirmation. When feasible, the bit length of the random bit string should be at least twice the targeted security strength. For details con-cerning the security strength supported by an instantiation of a random bit generator, see the SP 800-90 series of publications [6–8].
本勧告で規定する鍵確認のためにノンスが必要な場合、そのノンスは、承認済み乱数ビット生成器から出力されたランダムなビット列を含むランダムノンスであるべきです。また、乱数ビット生成器のインスタンス化がサポートする安全性強度とランダムビット列のビット長は、いずれも鍵確認でそのノンスを使用する鍵確立方式の目標安全性強度以上であるべきです。可能な場合、ランダムビット列のビット長は目標安全性強度の少なくとも2倍とすべきです。乱数ビット生成器のインスタンス化がサポートする安全性強度については、SP 800-90シリーズの刊行物[6–8]を参照すること。
As part of the proper implementation of this recommendation, system users and/or agents trusted to act on their behalf should determine whether the components selected for in-clusion in any required nonces meet their security requirements.
本勧告を適切に実装する一環として、システム利用者および/またはその代理として行動することを信頼されたエージェントは、必要なノンスに含める構成要素がセキュリティ要件を満たすかどうかを判断すべきです。
Appendix D. Changes From Draft SP 800-227
付録D. SP 800-227草案からの変更点
1.Section numbers have shifted due to reorganization.
1.再編成に伴い、節番号を変更しました。
2.Section 4.5 was added to address discussions from the NIST KEM workshop and writ-ten public comments about how the unique functionality of RSA allows for special procedures to achieve proof of possession that does not generally apply to KEMs.
2.第4.5節を追加しました。これは、NIST KEMワークショップでの議論と、RSA固有の機能により、KEMには一般に適用されない特別な手順で所有証明を実現できる点に関する書面によるパブリックコメントに対応するものです。
3.Toalign with existing requirements in SP800-56A and SP800-56B, additional require-ments were added to Sec. 4.1 and 4.2 for ephemeral and static KEM key-pairs, namely:
3.SP 800-56AおよびSP 800-56Bの既存要件との整合を図るため、一時KEM鍵ペアおよび静的KEM鍵ペアに関する追加要件を第4.1節と第4.2節に加えました。具体的には、次のとおりです。
•Additional shall statement in Sec. 4.2: Ephemeral key pairs shall be used in only one execution of key-establishment via a KEM and shall be destroyed as soon as possible after use.
•第4.2節に追加したshall文:一時鍵ペアは、KEMによる鍵確立の実行1回だけに使用し、使用後できる限り速やかに破棄しなければなりません。
•Additional must statement in Sec. 4.2: If an encapsulating party obtains the static encapsulation key of another party, it must have assurance of the other party’s ownership of the key before or during the execution of key-establishment. This assurance can be obtained from a trusted party (e.g., a certificate authority) or a combination of proof of possession and verification of real-world identity.
•第4.2節に追加したmust文:カプセル化側が他者の静的カプセル化鍵を取得する場合、鍵確立の実行前または実行中に、相手がその鍵を所有していることについての保証を得ていなければなりません。この保証は、信頼できる主体(例:認証局)から得るか、所有証明と実世界の本人確認を組み合わせて得ることができます。
4.In Sec. 4.6.2, the concatenation of inputs to hash functions was modified to be comma separated. Public comments noted that concatenation may not be appro-priate, depending on the protocol or context.
4.第4.6.2節では、ハッシュ関数への入力の連結表記をカンマ区切りに変更しました。パブリックコメントでは、プロトコルや状況によっては連結が適切でない場合があるとの指摘がありました。
5.Two examples were added to Sec. 5 (Sec. 5.2.4 and 5.2.5) to illustrate how to use KEMs to achieve authenticated key establishment. Additionally, existing examples were updated.
5.KEMを使って認証付き鍵確立を実現する方法を示すため、第5節に2つの例(第5.2.4節および第5.2.5節)を追加しました。また、既存の例も更新しました。
6.Section 4.3 was updated with guidelines on how to create keys that are smaller than the output KEM key. Public comments noted this as particularly relevant for ML-KEM, which outputs 256-bit keys at all security levels.
6.第4.3節を更新し、KEM出力より短い鍵を作成する方法に関する指針を追加しました。パブリックコメントでは、すべてのセキュリティレベルで256ビット鍵を出力するML-KEMにとって、特に関連性が高いとの指摘がありました。
7.A public comment noted that a “shall” requirement in Sec. 4.4 was overly restrictive in permitting KEM parameters of one security level to be used alongside lower secu-rity level protocols (e.g., running ML-KEM 768 at 128 bits of security). This has been updated accordingly.
7.パブリックコメントでは、第4.4節のshall要件が、あるセキュリティレベルのKEMパラメータを、それより低いセキュリティレベルのプロトコルと併用すること(例:128ビットのセキュリティでML-KEM 768を実行すること)を過度に制限しているとの指摘がありました。この点を踏まえて要件を更新しました。