NIST SP 800-90C 日本語訳
英語タイトル : Recommendation for Random Bit Generator (RBG) Constructions日本語タイトル : 乱数ビット生成器(RBG)の構成に関する勧告
公開日 : 2025-09-25
原文URL : https://csrc.nist.gov/pubs/sp/800/90/c/final
翻訳編集 : 自動生成(有志による非公式の日本語訳), 原文取得日 : 2026-09-27, 訳文 : 2006 / 2009 ブロック
[要約] SP 800-90C は、SP 800-90Aの決定論的乱数ビット生成器(DRBG)とSP 800-90Bのエントロピー源を用いる乱数ビット生成器(RBG)の実装構成を規定する勧告です。RBG1、RBG2、RBG3、RBGCの4種類のRBG構成を定め、暗号用途と非暗号用途の両方で高品質な乱数ビットを生成する仕組みを扱います。SP 800-90シリーズの3部のうちの1つで、DRBGメカニズムを規定するSP 800-90Aとエントロピー源の指針を示すSP 800-90Bを前提にしています。
NIST Special Publication 800
NIST特別刊行物800
NIST SP 800-90C
NIST SP 800-90C
Recommendation for Random Bit Generator (RBG) Constructions
乱数ビット生成器(RBG)の構成に関する勧告
Elaine Barker John Kelsey Kerry McKay Allen Roginsky Meltem Sönmez Turan
Elaine Barker、John Kelsey、Kerry McKay、Allen Roginsky、Meltem Sönmez Turan
This publication is available free of charge from: https://doi.org/10.6028/NIST.SP.800-90C
本書は無料で入手できます:https://doi.org/10.6028/NIST.SP.800-90C
NIST Special Publication 800
NIST Special Publication 800
NIST SP 800-90C
NIST SP 800-90C
Recommendation for Random Bit Generator (RBG) Constructions
乱数ビット生成器(RBG)の構成に関する勧告
Elaine Barker John Kelsey Kerry McKay Allen Roginsky* Meltem Sönmez Turan
Elaine Barker John Kelsey Kerry McKay Allen Roginsky* Meltem Sönmez Turan
Computer Security Division Information Technology Laboratory
コンピュータセキュリティ部門 情報技術研究所
*Former NIST employee; all work for this publication was done while at NIST.
*元NIST職員。本書に関するすべての作業はNIST在職中に行われました。
This publication is available free of charge from: https://doi.org/10.6028/NIST.SP.800-90C
本書は無料で入手できます:https://doi.org/10.6028/NIST.SP.800-90C
September 2025
2025年9月
[米国商務省の紋章。公的な標章のため、この非公式サイトには掲載していません。原本 PDF を参照してください。]
U.S. Department of Commerce Howard Lutnick, Secretary
米国商務省 Howard Lutnick長官
National Institute of Standards and Technology Craig Burkhardt, Acting Under Secretary of Commerce for Standards and Technology and Acting NIST Director
米国国立標準技術研究所(National Institute of Standards and Technology) Craig Burkhardt、商務省標準・技術担当次官代行兼NIST所長代行
Certain 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編第3551条以降、ならびに公法(P.L.)113-283に基づく法定責務に従い、NISTが策定しました。NISTは、連邦情報システムの最低要件を含む情報セキュリティ標準および指針の策定を担います。ただし、国家安全保障システムについては、そのシステムに関する政策権限を行使する適切な連邦当局者が明示的に承認しない限り、これらの標準および指針を適用してはなりません。本指針は、行政管理予算局(OMB)Circular 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
NIST技術シリーズの方針
Copyright, Use, and Licensing Statements
著作権、使用、およびライセンスに関する記述
NIST Technical Series Publication Identifier Syntax
NIST技術シリーズ刊行物の識別子構文
Publication History
刊行履歴
Approved by the NIST Editorial Review Board on 2025-09-03
2025年9月3日、NIST編集審査委員会により承認
How to Cite this NIST Technical Series Publication:
本NIST技術シリーズ刊行物の引用方法:
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
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
Author ORCID iDs
著者のORCID iD
Elaine Barker: 0000-0003-0454-0461
Elaine Barker: 0000-0003-0454-0461
John Kelsey: 0000-0002-3427-1744
John Kelsey: 0000-0002-3427-1744
Kerry McKay: 0000-0002-5956-587X
Kerry McKay: 0000-0002-5956-587X
Allen Roginsky: 0000-0003-2684-6736
Allen Roginsky: 0000-0003-2684-6736
Meltem Sönmez Turan: 0000-0002-1950-7130
Meltem Sönmez Turan: 0000-0002-1950-7130
Contact Information
連絡先
rbg_comments@nist.gov
rbg_comments@nist.gov
National Institute of Standards and Technology Attn: Computer Security Division, Information Technology Laboratory 100 Bureau Drive (Mail Stop 8930) Gaithersburg, MD 20899-8930
米国国立標準技術研究所 宛先:コンピューターセキュリティ部門、情報技術研究所 100 Bureau Drive(Mail Stop 8930)、Gaithersburg, MD 20899-8930
Additional Information
追加情報
Additional information about this publication is available at https://csrc.nist.gov/pubs/sp/800/90/c/final, including related content, potential updates, and document history.
本書に関する追加情報(関連コンテンツ、今後の更新に関する情報、文書履歴など)は、https://csrc.nist.gov/pubs/sp/800/90/c/final で入手できます。
All comments are subject to release under the Freedom of Information Act (FOIA).
すべてのコメントは、情報公開法(FOIA)に基づく公開の対象となります。
Abstract
要旨
The NIST Special Publication (SP) 800-90 series of documents supports the generation of high-quality random bits for cryptographic and non-cryptographic use. SP 800-90A, Recommendation for Random Number Generation Using Deterministic Random Bit Generators, specifies several deterministic random bit generator (DRBG) mechanisms based on cryptographic algorithms. SP 800-90B, Recommendation for the Entropy Sources Used for Random Bit Generation, provides guidelines for the development and validation of entropy sources. This document (SP 800-90C) specifies constructions for the implementation of random bit generators (RBGs) that include DRBG mechanisms as specified in SP 800-90A and that use entropy sources as specified in SP 800-90B. Constructions for four classes of RBGs — namely, RBG1, RBG2, RBG3, and RBGC — are specified in this document.
NIST Special Publication(SP)800-90シリーズは、暗号用途および非暗号用途に使う高品質な乱数ビットの生成を支援します。SP 800-90A「決定論的乱数ビット生成器を用いた乱数生成に関する勧告」は、暗号アルゴリズムに基づく複数の決定論的乱数ビット生成器(DRBG)メカニズムを規定します。SP 800-90B「乱数生成に用いるエントロピー源に関する勧告」は、エントロピー源の開発と検証に関する指針を示します。本書(SP 800-90C)は、SP 800-90Aで規定されるDRBGメカニズムを含み、SP 800-90Bで規定されるエントロピー源を使用する乱数ビット生成器(RBG)の実装構成を規定します。本書では、RBG1、RBG2、RBG3、RBGCの4種類のRBG構成を規定します。
Keywords
キーワード
deterministic random bit generator (DRBG); entropy; entropy source; random bit generator (RBG); randomness source; RBG1 construction; RBG2 construction; RBG3 construction; RBGC construction; subordinate DRBG (sub-DRBG).
決定論的乱数ビット生成器(DRBG);エントロピー;エントロピー源;乱数ビット生成器(RBG);乱数源;RBG1構成;RBG2構成;RBG3構成;RBGC構成;下位DRBG(sub-DRBG)。
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の責務には、連邦情報システムにおける国家安全保障関連以外の情報を費用対効果の高い方法で保護し、プライバシーを確保するための管理、運用、技術、物理的な標準および指針の策定が含まれます。Special Publication 800シリーズは、情報システムセキュリティに関するITLの研究、指針、普及活動、および産業界、政府、学術機関との協力活動を報告します。
Note to Readers
読者への注意
1.SP 800-90Ar1 requires a nonce to be used during DRBG instantiation that is either 1) a value with at least (security_strength/2) bits of entropy or 2) a value that is expected to repeat no more often than a (security_strength/2)-bit random string would be expected to repeat. However, SP 800-90C requires security_strength/2 bits of randomness to be obtained from a randomness source in place of a nonce in addition to the randomness required to establish a DRBG's security strength. Legacy implementations of DRBGs may continue to use a nonce in accordance with the Implementation Guidance for FIPS 140-3 and the Cryptographic Module Validation Program [FIPS_140IG].
1.SP 800-90Ar1では、DRBGのインスタンス化時にノンスを使用することが求められ、その値は、1)少なくとも(security_strength/2)ビットのエントロピーを持つ値、または2)(security_strength/2)ビットのランダム文字列が繰り返されると予想される頻度を超えては繰り返されない値でなければなりません。一方、SP 800-90Cでは、ノンスの代わりに、DRBGのセキュリティ強度を確立するために必要なランダム性に加えて、乱数源から(security_strength/2)ビットのランダム性を取得することを求めます。従来型のDRBG実装は、FIPS 140-3実装ガイダンスおよび暗号モジュール検証プログラム[FIPS_140IG]に従い、引き続きノンスを使用してもよいです。
2.SP 800-90Ar1 specified an optional request for prediction resistance when invoking the generation of pseudorandom bits by a DRBG (i.e., prediction resistance and generation could be accomplished in a single request). Instead, SP 800-90C requires two separate requests: a reseed request followed by a generate request. Legacy implementations of DRBGs may continue to request generation and prediction resistance in a single request in accordance with [FIPS_140IG].
2.SP 800-90Ar1では、DRBGによる疑似乱数ビット生成を呼び出す際に、予測耐性を要求するオプションの要求方式が規定されていました(すなわち、予測耐性と生成を1回の要求で実行できました)。これに対しSP 800-90Cでは、再シード要求の後に生成要求を行うという2つの独立した要求が必要です。従来型のDRBG実装は、[FIPS_140IG]に従い、生成と予測耐性を1回の要求で引き続き要求してもよいです。
3.SP 800-90Ar1 will be revised as SP 800-90Ar2 to address inconsistencies with SP 800-90C.
3.SP 800-90Ar1は、SP 800-90Cとの不整合に対処するため、SP 800-90Ar2として改訂される予定です。
4.Notices of additional material (e.g., additional vetted conditioning functions) may be posted at [SP800_90WebSite].
4.追加資料(追加の審査済みコンディショニング関数など)に関する告知は、[SP800_90WebSite]に掲載される場合があります。
5.Other random bit generation standards of interest include [AIS20], [AIS31], [BSIFunc], and [ISO_18031].
5.関心の対象となるその他の乱数ビット生成規格には、[AIS20]、[AIS31]、[BSIFunc]、[ISO_18031]があります。
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 infringement in the use of this publication.
本書の使用に際して特許侵害を回避するためのライセンスが不要であると、ITLが明示または黙示に表明するものではありません。
Table of Contents
目次
List of Tables
表一覧
List of Figures
図一覧
Acknowledgments
謝辞
The National Institute of Standards and Technology (NIST) gratefully acknowledges and appreciates contributions from Chris Celi and Hamilton Silberg (NIST); Darryl Buller, Aaron Kaufer, and Mike Boyle (National Security Agency); Werner Schindler, Matthias Peter, and Johannes Mittmann (Bundesamt für Sicherheit in der Informationstechnik); and the members of the Cryptographic Module User Forum (CMUF) for assistance in the development of this recommendation. NIST also thanks the many contributions from the public and private sectors.
米国国立標準技術研究所(NIST)は、本勧告の策定に協力したChris Celi氏およびHamilton Silberg氏(NIST)、Darryl Buller氏、Aaron Kaufer氏、Mike Boyle氏(米国国家安全保障局)、Werner Schindler氏、Matthias Peter氏、Johannes Mittmann氏(ドイツ連邦情報技術安全局)、ならびに暗号モジュールユーザーフォーラム(CMUF)の各メンバーに、心より謝意を表します。また、官民両部門から寄せられた多くの貢献にも感謝します。
1. Introduction and Purpose
1. 序論と目的
Cryptography and security applications make extensive use of random bits. However, the generation of random bits is challenging in many practical applications of cryptography. The National Institute of Standards and Technology (NIST) developed the Special Publication (SP) 800-90 series to support the generation of high-quality random bits for both cryptographic and non-cryptographic purposes. The SP 800-90 series consists of three parts:
暗号技術やセキュリティの用途では乱数ビットが広く使われます。しかし、暗号技術の多くの実用的な用途では乱数ビットの生成が困難です。米国国立標準技術研究所(NIST)は、暗号用途と非暗号用途の両方で高品質な乱数ビットの生成を支援するため、Special Publication(SP)800-90シリーズを策定しました。同シリーズは次の3部で構成されます。
1.SP 800-90A, Recommendation for Random Number Generation Using Deterministic Random Bit Generators [SP_800-90A], specifies several approved deterministic random bit generator (DRBG) mechanisms based on approved cryptographic algorithms that — once provided with seed material1 that contains sufficient randomness — can be used to generate random bits suitable for cryptographic applications.
1.SP 800-90A「決定論的乱数ビット生成器を用いた乱数生成に関する勧告」[SP_800-90A]は、承認済み暗号アルゴリズムに基づく複数の承認済み決定論的乱数ビット生成器(DRBG)メカニズムを規定します。これらのメカニズムは、十分なランダム性を含むシード材料1を与えれば、暗号用途に適した乱数ビットの生成に使用できます。
2.SP 800-90B, Recommendation for the Entropy Sources Used for Random Bit Generation [SP_800-90B], provides guidance for the development and validation of entropy sources, which are mechanisms that generate entropy from physical or non-physical noise sources and that can be used to generate the input for the seed material needed by a DRBG or for input to an RBG.
2.SP 800-90B「乱数生成に使用するエントロピー源に関する勧告」[SP_800-90B]は、物理または非物理のノイズ源からエントロピーを生成するメカニズムであるエントロピー源の開発と検証に関する指針を示します。エントロピー源は、DRBGに必要なシード材料の入力、またはRBGへの入力の生成に使用できます。
3.SP 800-90C, Recommendation for Random Bit Generator (RBG) Constructions, specifies constructions for random bit generators (RBGs) using 1) randomness sources (either entropy sources that comply with SP 800-90B or RBGs that comply with SP 800-90C) and 2) DRBGs that comply with SP 800-90A. Four classes of RBGs are specified in this document (see Sec. 4–7). SP 800-90C also provides high-level guidelines for testing RBGs for conformance to this recommendation.
3.SP 800-90C「乱数ビット生成器(RBG)の構成に関する勧告」は、1)SP 800-90Bに準拠するエントロピー源、またはSP 800-90Cに準拠するRBGのいずれかである乱数源と、2)SP 800-90Aに準拠するDRBGを用いたRBG構成を規定します。本書では4種類のRBGクラスを規定します(第4~7節を参照してください)。また、SP 800-90Cは、本勧告への適合性を確認するためのRBG試験に関する高水準の指針も示します。
Throughout this document, the phrase “this recommendation” refers to the aggregate of SP 800-90A, SP 800-90B, and SP 800-90C (the SP 800-90 series), while the phrase “this document” refers only to SP 800-90C.
本書で「本勧告」という語句はSP 800-90A、SP 800-90B、SP 800-90C(SP 800-90シリーズ)全体を指し、「本書」という語句はSP 800-90Cのみを指します。
The RBG constructions defined in this recommendation are based on two components: the entropy sources that generate true random variables (i.e., variables that may be biased, where each possible outcome does not need to have the same chance of occurring) and DRBGs that ensure that the outputs of the RBG are indistinguishable from the ideal distribution to a computationally bounded adversary.
本勧告で定義するRBG構成は、2つの要素に基づきます。すなわち、真の乱数変数(偏りがある可能性があり、すべての結果が同じ確率で生じる必要はない変数)を生成するエントロピー源と、計算能力に制限のある攻撃者に対してRBG出力を理想分布と識別不能にするDRBGです。
SP 800-90C has been developed in coordination with NIST’s Cryptographic Algorithm Validation Program (CAVP) and Cryptographic Module Validation Program (CMVP). The document uses “shall” and “must” to indicate requirements and “should” to indicate an important recommendation. The term “shall” is used when a requirement is testable by a testing lab during implementation validation using operational tests or a code review. The term “must” is used for requirements that may not be testable by the CAVP or CMVP. An example of such a requirement is one that demands certain actions and/or considerations from a system administrator. A CMVP review of the cryptographic module’s documentation can verify whether these requirements have been met. If the requirement is determined to be testable at a later time (e.g., after SP 800-90C is published and before it is revised), the CMVP will so indicate in the Implementation Guidance for FIPS 140-3 and the Cryptographic Module Validation Program [FIPS_140IG].
SP 800-90Cは、NISTの暗号アルゴリズム検証プログラム(CAVP)および暗号モジュール検証プログラム(CMVP)と連携して策定されました。本書では、要件を示すために「shall」と「must」を、重要な推奨事項を示すために「should」を用います。「shall」は、実装検証時に試験機関が運用試験またはコードレビューによって試験できる要件に用います。「must」はCAVPまたはCMVPでは試験できない場合がある要件に用います。システム管理者による特定の行動および/または考慮を求める要件がその例です。暗号モジュールの文書に対するCMVP審査で、こうした要件が満たされているかを確認できます。要件が後日(たとえばSP 800-90Cの刊行後、改訂前に)試験可能と判断された場合、CMVPはFIPS 140-3実装ガイダンスおよび暗号モジュール検証プログラム[FIPS_140IG]にその旨を示します。
1.1. Audience
1.1. 対象読者
The intended audience for this recommendation includes 1) developers who want to design and implement RBGs that can be validated by NIST’s CMVP and CAVP, 2) testing labs that are accredited to perform the validation tests and the evaluation of the RBG constructions, and 3) users who install RBGs in systems.
本勧告の対象読者は、1)NISTのCMVPおよびCAVPによる検証が可能なRBGを設計・実装する開発者、2)RBG構成の検証試験と評価を実施する認定試験機関、3)システムにRBGを導入する利用者です。
1.2. Document Organization
1.2. 本書の構成
This document is organized as follows:
本書の構成は次のとおりです。
•Section 2 provides background and preliminary information for understanding the remainder of the document.
•第2節では、本書の残りの部分を理解するための背景情報と予備知識を示します。
•Section 3 provides guidance on accessing and handling entropy sources, including the external conditioning of entropy-source output to reduce bias and obtain full entropy when needed.
•第3節では、エントロピー源の出力に偏りを減らすための外部コンディショニングや、必要に応じて完全エントロピーを得る方法を含め、エントロピー源へのアクセスとその処理に関する指針を示します。
•Sections 4, 5, 6, and 7 specify the RBG constructions, namely the RBG1, RBG2, RBG3, and RBGC constructions, respectively.
•第4節、第5節、第6節、第7節では、それぞれRBG1、RBG2、RBG3、RBGCの各RBG構成を規定します。
•Section 8 discusses health and implementation validation testing.
•第8節では、ヘルス試験と実装検証試験について説明します。
•The References contain a list of papers and publications cited in this document.
•参考文献には、本書で引用した論文および刊行物の一覧を示します。
The following informative appendices are also provided:
以下の参考情報付録も設けています。
•Appendix A provides discussions on entropy versus security strength, generating output using the RBG3(RS) construction, and computing platforms, as required by DRBG trees using the RBGC construction.
•付録Aでは、エントロピーとセキュリティ強度の違い、RBG3(RS)構成を用いた出力生成、およびRBGC構成を用いるDRBGツリーに必要な計算プラットフォームについて説明します。
•Appendix B provides an example of each RBG construction.
•付録Bでは、各RBG構成の例を示します。
•Appendix C provides a list of abbreviations, symbols, functions, and notations used in this document.
•付録Cでは、本書で使用する略語、記号、関数、および表記法の一覧を示します。
•Appendix D provides a glossary with definitions for terms used in this document.
•付録Dでは、本書で用いる用語の定義をまとめた用語集を示します。
2. General Information
2. 一般情報
2.1. RBG Security
2.1. RBGのセキュリティ
Ideal randomness sources generate identically distributed and independent uniform random bits that provide full-entropy outputs (i.e., one bit of entropy per output bit). Real-world RBGs are designed with a security goal of indistinguishability from the output of an ideal randomness source. That is, given some limits on an adversary’s data and computing power, it is expected that no adversary can reliably distinguish between RBG outputs and outputs from an ideal randomness source.
Consider an adversary that can perform \(2^{w}\) computations (typically, these are guesses of the RBG’s internal state) and is given an output sequence from either an RBG with a security strength of \(s\) bits (where \(s \ge w\)) or an ideal randomness source. It is expected that an adversary has no better probability of determining which source was used for its random bits than
where \(\varepsilon\) is negligible. In this recommendation, the size of the RBG output is limited to \(2^{64}\) output bits and \(\varepsilon \le 2^{-32}\). NIST Internal Report (IR) 8427 [NISTIR_8427] provides a justification for the selection of \(\varepsilon\).
理想的な乱数源は、同一の確率分布に従い互いに独立な一様乱数ビットを生成し、完全エントロピーの出力(すなわち出力ビット1ビットにつきエントロピー1ビット)を提供します。実世界のRBGは、その出力が理想的な乱数源の出力と識別不能であることをセキュリティ目標として設計されます。つまり、攻撃者のデータ量や計算能力に一定の制限を設けた場合、RBG出力と理想的な乱数源の出力を確実に見分けられる攻撃者はいないと期待されます。
\(2^{w}\) 回の計算(典型的にはRBGの内部状態の推測)を実行できる攻撃者に対し、セキュリティ強度 \(s\) ビット(ここで \(s \ge w\))のRBGまたは理想的な乱数源のいずれかから得られた出力系列が与えられる状況を考えます。このとき、攻撃者が乱数ビットの生成源を判定できる確率は、次の値を超えないと期待されます。
ここで \(\varepsilon\) は無視できるほど小さい。本勧告では、RBGの出力サイズを \(2^{64}\) 出力ビットまでに制限し、\(\varepsilon \le 2^{-32}\) とします。NIST内部報告書(IR)8427 [NISTIR_8427]は、\(\varepsilon\) の選択の根拠を示しています。
An RBG that has been designed to support a security strength of \(s\) bits is suitable for any application with a targeted security strength that does not exceed \(s\). An RBG that is compliant with this recommendation can support requests for output with a security strength of 128, 192, or 256 bits, except for an RBG3 construction (as described in Sec. 6), which can provide full-entropy output.2
セキュリティ強度 \(s\) ビットを支えるよう設計されたRBGは、目標とするセキュリティ強度が \(s\) を超えないアプリケーションに適しています。本勧告に準拠するRBGは、セキュリティ強度128、192、または256ビットの出力要求に対応できます。ただし、第6節で説明するRBG3構成は例外で、完全エントロピーの出力を提供できます。2
A bitstring with full entropy has an amount of entropy equal to its length. Full entropy bitstrings are important for cryptographic applications, as these bitstrings have ideal randomness properties and may be used for any cryptographic purpose. They may be truncated to any length such that the amount of entropy in the truncated bitstring is equal to its length. However, due to the difficulty of generating and testing full-entropy bitstrings, this recommendation assumes that a bitstring has full entropy if the amount of entropy per bit is at least \(1 - \varepsilon\), where \(\varepsilon\) is at most \(2^{-32}\).
完全エントロピーのビット列では、その長さと同じ量のエントロピーが含まれます。このようなビット列は理想的な乱数特性を持ち、あらゆる暗号用途に使用できるため、暗号アプリケーションで重要です。切り詰め後のビット列のエントロピー量がその長さと等しくなるように、任意の長さに切り詰めることができます。ただし、完全エントロピーのビット列を生成・試験するのは難しいため、本勧告では、1ビット当たりのエントロピー量が \(1 - \varepsilon\) 以上であれば、そのビット列は完全エントロピーを持つとみなします。ここで \(\varepsilon\) は最大で \(2^{-32}\) です。
2.2. RBG Constructions
2.2. RBG構成
A construction is a method of designing an RBG to accomplish a specific goal. Four classes of RBG constructions are defined in this document: RBG1, RBG2, RBG3, and RBGC (see Table 1). Each RBG includes a DRBG from SP 800-90A and is based on the use of a randomness source that is validated for compliance with SP 800-90B or SP 800-90C. Once instantiated (i.e., initialized with seed material), a DRBG can generate output at a security strength that does not exceed the DRBG’s instantiated security strength.
構成とは、特定の目標を達成するRBGを設計する方法です。本書ではRBG1、RBG2、RBG3、RBGCの4種類のRBG構成を定義します(表1を参照してください)。各RBGはSP 800-90AのDRBGを含み、SP 800-90BまたはSP 800-90Cへの適合性が検証された乱数源を使用します。インスタンス化(シード材料による初期化)後のDRBGは、インスタンス化時のDRBGのセキュリティ強度を超えない強度の出力を生成できます。
Table 1. RBG capabilities
表1. RBGの機能
| Construction | Internal Entropy Source | Available Randomness Source for Reseeding | Prediction Resistance | Full Entropy | Type of Randomness Source |
|---|---|---|---|---|---|
| RBG1 | No | No | No | No | RBG2(P) or RBG3 or Root RBGC construction |
| RBG2(P) | Yes | Yes | Optional | No | Physical entropy source |
| RBG2(NP) | Yes | Yes | Optional | No | Non-physical entropy source |
| RBG3(XOR) or RBG3(RS) | Yes | Yes | Yes | Yes | Physical entropy source |
| (Root) RBGC | Yes | Yes | Optional | No | RBG2 or RBG3 construction or Full-entropy source |
| (Non-root) RBGC | No | Yes | No | No | Parent RBGC construction |
| 構成 | 内部エントロピー源 | 再シードに利用可能な乱数源 | 予測耐性 | 完全エントロピー | 乱数源の種類 |
|---|---|---|---|---|---|
| RBG1 | なし | なし | なし | なし | RBG2(P)、RBG3、またはルート RBGC 構成 |
| RBG2(P) | あり | あり | 任意 | なし | 物理エントロピー源 |
| RBG2(NP) | あり | あり | 任意 | なし | 非物理エントロピー源 |
| RBG3(XOR) または RBG3(RS) | あり | あり | あり | あり | 物理エントロピー源 |
| (ルート)RBGC | あり | あり | 任意 | なし | RBG2 または RBG3 構成、あるいは完全エントロピー源 |
| (非ルート)RBGC | なし | あり | なし | なし | 親 RBGC 構成 |
In Table 1:
表1では、次のとおりとします。
•Column 1 lists the RBG constructions specified in this document.
•第1列は、本書で規定するRBG構成を示します。
•Column 2 indicates whether an entropy source is present within the construction.
•第2列は、その構成にエントロピー源が含まれるかを示します。
•Column 3 indicates whether the DRBG has an available randomness source for reseeding.
•第3列は、再シード用の乱数源をDRBGが利用できるかを示します。
•Column 4 indicates whether prediction resistance can be provided for the output of the RBG (see Sec. 2.4.2 for a discussion of prediction resistance).
•第4列は、RBGの出力に対して予測耐性を提供できるかを示します(予測耐性については第2.4.2節を参照してください)。
•Column 5 indicates whether full-entropy output can be provided by the RBG.
•第5列は、RBGが完全エントロピーの出力を提供できるかを示します。
•Column 6 indicates the types of randomness sources that are allowed for initializing the RBG construction.
•第6列は、RBG構成の初期化に使用できる乱数源の種類を示します。
An RBG1 construction does not have access to a randomness source after instantiation. It is instantiated once in its lifetime over a physically secure channel from an external RBG2(P), RBG3, or root RBGC construction with appropriate security properties. An RBG1 construction does not support reseeding requests, prediction resistance cannot be provided for the output, and the construction cannot provide output with full entropy. The construction can be used to initialize subordinate DRBGs (sub-DRBGs) (see Sec. 4).
RBG1構成は、インスタンス化後に乱数源へアクセスできません。そのライフサイクル中に一度だけ、適切なセキュリティ特性を持つ外部のRBG2(P)、RBG3、またはルートRBGC構成から、物理的に保護されたチャネルを介してインスタンス化されます。RBG1構成は再シード要求をサポートせず、出力に予測耐性を提供できず、完全エントロピーの出力も生成できません。この構成は、下位DRBG(sub-DRBG)の初期化に使用できます(第4節を参照してください)。
An RBG2 construction includes one or more entropy sources that are used to instantiate the DRBG and may (optionally) be used for reseeding if a reseed capability is implemented. Prediction resistance may be provided to the RBG output when reseeding is performed. The construction has two variants: an RBG2(P) construction uses a physical entropy source to provide entropy, while an RBG2(NP) construction uses a non-physical entropy source. An RBG2 construction cannot provide full-entropy output (see Sec. 5).
RBG2構成には1つ以上のエントロピー源が含まれ、これらはDRBGのインスタンス化に使用されます。再シード機能を実装する場合は、任意で再シードにも使用できます。再シードを実行すると、RBG出力に予測耐性を提供できる場合があります。RBG2には2つの種類があります。RBG2(P)構成は物理エントロピー源を用いてエントロピーを提供し、RBG2(NP)構成は非物理エントロピー源を用います。RBG2構成は完全エントロピーの出力を提供できません(第5節を参照してください)。
An RBG3 construction includes one or more physical entropy sources and is designed to provide an output with a security strength equal to the requested length of its output by producing outputs that have full entropy. Prediction resistance is provided for all outputs (see Sec. 6).
RBG3構成には1つ以上の物理エントロピー源が含まれます。完全エントロピーの出力を生成することで、要求された出力長と等しいセキュリティ強度の出力を提供するよう設計されています。すべての出力に予測耐性が提供されます(第6節を参照してください)。
There are two types of RBG3 constructions:
RBG3構成には次の2種類があります。
1.An RBG3(XOR) construction combines the output of one or more validated entropy sources with the output of an instantiated, approved DRBG using an exclusive-or (XOR) operation (see Sec. 6.4).
1.RBG3(XOR)構成は、1つ以上の検証済みエントロピー源の出力と、インスタンス化済みの承認されたDRBGの出力を排他的論理和(XOR)演算で結合します(第6.4節を参照してください)。
2.An RBG3(RS) construction uses one or more validated entropy sources to provide seed material for the DRBG by continuously reseeding.
2.RBG3(RS)構成は、継続的な再シードによって、1つ以上の検証済みエントロピー源をDRBGのシード材料の提供に使用します。
An RBGC construction (see Sec. 7) allows the use of a tree of RBGs that consists of only RBGC constructions on the same computing platform. The initial RBGC construction in the tree is called the root RBGC construction. The root accesses an initial randomness source for instantiation and reseeding. A non-root RBGC construction obtains seed material from its parent RBGC for instantiation but may obtain seed material for reseeding from the parent RBGC or a select set of other RBGC constructions on the same computing platform (see Sec. 7.1.2.2). Prediction resistance may be provided for the root RBGC but not for non-root RBGC constructions (see Sec. 7).
RBGC構成(第7節を参照)では、同一の計算プラットフォーム上にあるRBGC構成のみで構成されるRBGツリーを使用できます。ツリーの最初のRBGC構成をルートRBGC構成と呼びます。ルートはインスタンス化と再シードに使用する初期乱数源へアクセスします。ルート以外のRBGC構成は、インスタンス化のシード材料を親RBGCから取得しますが、再シード用のシード材料は親RBGC、または同一の計算プラットフォーム上にある選択された他のRBGC構成から取得してもよいです(第7.1.2.2節を参照してください)。ルートRBGCには予測耐性を提供できますが、ルート以外のRBGC構成には提供できません(第7節を参照してください)。
This document also provides procedures for acquiring entropy from an entropy source and conditioning the output to provide a bitstring with full entropy (see Sec. 3.2). SP 800-90A provides constructions for instantiating and reseeding DRBGs and requesting the generation of pseudorandom bitstrings [SP_800-90A].
本書では、エントロピー源からエントロピーを取得し、その出力をコンディショニングして完全エントロピーのビット列を提供する手順も示します(第3.2節を参照してください)。SP 800-90Aでは、DRBGのインスタンス化と再シード、および疑似乱数ビット列の生成要求のための構成を規定しています[SP_800-90A]。
All constructions in SP 800-90C are described in pseudocode as well as text. The pseudocode conventions are not intended to constrain real-world implementations but to provide a consistent notation to describe the constructions.
SP 800-90Cのすべての構成は、文章と疑似コードの両方で記述します。疑似コードの規約は、実世界の実装を制約する意図はなく、構成を一貫した表記法で説明するために用います。
For any of the specified processes, equivalent processes may be used. Two processes are equivalent if the same output is produced when the same values are input to each process (either as input parameters or as values made available during the process).
規定された各処理は、同等の処理に置き換えてもよいです。同等の処理とは、同一の値(入力パラメーターまたは処理中に利用可能となる値)を与えた場合に、同じ出力を生成する処理をいいます。
By convention and unless otherwise specified, integers are unsigned 32-bit values. When used as bitstrings, they are represented in the big-endian format.
特に指定がない限り、整数は符号なし32ビット値とします。ビット列として使用する場合は、ビッグエンディアン形式で表します。
2.3. Sources of Randomness for an RBG
2.3. RBGの乱数源
The RBG constructions specified in this document are based on the use of validated entropy sources — mechanisms that provide entropy for an RBG. Some RBG constructions access these entropy sources directly to obtain entropy. Other constructions fulfill their entropy requirements by accessing another RBG as a randomness source, in which case the RBG used as a randomness source may include an entropy source or have a predecessor RBG that includes an entropy source.
本書で規定するRBG構成は、RBGにエントロピーを提供するメカニズムである検証済みエントロピー源の使用に基づきます。一部のRBG構成は、エントロピーを得るためにエントロピー源へ直接アクセスします。他の構成は、別のRBGに乱数源としてアクセスすることでエントロピー要件を満たします。この場合、乱数源として使用するRBG自体にエントロピー源が含まれているか、その先行RBGにエントロピー源が含まれていることがあります。
SP 800-90B provides guidance for the development and validation of entropy sources [SP_800-90B]. Validated entropy sources (i.e., entropy sources that have been successfully validated by the CMVP as complying with SP 800-90B) reliably provide fixed-length outputs and a specified minimum amount of entropy for each output (e.g., each 8-bit output has been validated as providing at least five bits of entropy).3
SP 800-90Bは、エントロピー源の開発および検証に関する指針を示します[SP_800-90B]。検証済みエントロピー源(すなわち、SP 800-90Bへの適合性についてCMVPの検証に合格したエントロピー源)は、固定長の出力と、各出力に対して指定された最小量のエントロピーを安定して提供します(たとえば、8ビット出力ごとに少なくとも5ビットのエントロピーを提供することが検証されています)。3
One or more validated, independent entropy sources may be used to provide entropy for instantiating and reseeding the DRBGs in RBG2, RBG3, and (root) RBGC constructions or used by an RBG3 construction to generate output upon request by a consuming application. Appropriate validated RBGs may be used to provide seed material for RBG1 and (non-root) RBGC constructions.
1つ以上の独立した検証済みエントロピー源を用いて、RBG2、RBG3、または(ルート)RBGC構成のDRBGをインスタンス化・再シードするためのエントロピーを提供できます。また、RBG3構成を使用するアプリケーションから要求を受けた際に出力を生成するためにも使用できます。適切な検証済みRBGを用いて、RBG1および(ルート以外の)RBGC構成にシード材料を提供してもよいです。
Entropy sources may be classified as either physical or non-physical. An entropy source is a physical entropy source if the primary noise source within the entropy source is physical — that is, the entropy source uses a dedicated hardware design to provide entropy (e.g., from ring oscillators, thermal noise, shot noise, jitter, or metastability). Similarly, a validated entropy source is a non-physical entropy source if the primary noise source within the entropy source is non-physical — that is, entropy is provided by system data (e.g., system time or the entropy present in the RAM data) or human interaction (e.g., mouse movements). The entropy source type (i.e., physical or non-physical) is certified during entropy source validation (see [FIPS_140IG], Annex D.J4).
エントロピー源は、物理または非物理に分類できます。エントロピー源内の主要なノイズ源が物理現象である場合、そのエントロピー源は物理エントロピー源です。つまり、リングオシレーター、熱雑音、ショット雑音、ジッター、メタステビリティなどからエントロピーを得る専用ハードウェア設計を使用します。これと同様に、主要なノイズ源が非物理的な場合、検証済みエントロピー源は非物理エントロピー源です。システム時刻やRAM内のデータに含まれるエントロピーなどのシステムデータ、またはマウス操作などの人間の操作によってエントロピーを得ます。エントロピー源の検証時に、その種類(物理または非物理)が認証されます([FIPS_140IG]付属書D.J4を参照してください)。
This recommendation assumes that the entropy produced by a validated physical entropy source is generally more reliable than the entropy produced by a validated non-physical entropy source since non-physical entropy sources are typically influenced by human actions or network events, the unpredictability of which is difficult to accurately quantify.
本勧告では、検証済みの物理エントロピー源が生成するエントロピーは、検証済みの非物理エントロピー源が生成するものより一般に信頼性が高いと仮定します。非物理エントロピー源は通常、人間の行動またはネットワークイベントの影響を受け、その予測不能性を正確に定量化するのが難しいためです。
An implementation could be designed to use a combination of physical and non-physical entropy sources. When requests are made to these sources, bitstring outputs may be concatenated until the amount of entropy in the concatenated bitstring meets or exceeds the request. Two methods are provided for counting the entropy provided in the concatenated bitstring:
実装では、物理エントロピー源と非物理エントロピー源を組み合わせてもよいです。これらの源に要求を出し、連結したビット列のエントロピー量が要求値以上になるまで出力を連結します。連結したビット列に含まれるエントロピーの数え方として、次の2つの方式を示します。
Method 1 (physical only): The RBG implementation includes one or more independent, validated physical entropy sources; one or more validated non-physical entropy sources may also be included in the implementation. Only the entropy in a bitstring that is provided from physical entropy sources is counted toward fulfilling the amount of entropy requested in an entropy request. Any entropy in a bitstring that is provided by a non-physical entropy source is not counted, even if bitstrings produced by the non-physical entropy source are included in the concatenated bitstring that is used by the RBG.
方式1(物理源のみを算入):RBG実装に1つ以上の独立した検証済み物理エントロピー源を含めます。実装に1つ以上の検証済み非物理エントロピー源を含めてもよいです。エントロピー要求を満たす量として数えるのは、物理エントロピー源が提供したビット列内のエントロピーだけです。RBGが使用する連結ビット列に非物理エントロピー源の出力が含まれていても、そのビット列内のエントロピーは数えません。
Method 2 (non-physical inclusive): The RBG implementation includes one or more independent, validated non-physical entropy sources; one or more independent, validated physical entropy sources may also be included in the implementation. The entropy from both non-physical entropy sources and (if present) physical entropy sources is counted when fulfilling an entropy request.
Example: Let \(\mathit{pes}_i\) be the \(i^{\text{th}}\) output of a physical entropy source, and let \(\mathit{npes}_j\) be the \(j^{\text{th}}\) output of a non-physical entropy source. If an implementation consists of one physical and one non-physical entropy source, and a request has been made for 128 bits of entropy, the concatenated bitstring might be something like:
方式2(非物理源を含めて算入):RBG実装に1つ以上の独立した検証済み非物理エントロピー源を含めます。実装に1つ以上の独立した検証済み物理エントロピー源を含めてもよいです。エントロピー要求を満たす際は、非物理エントロピー源と(存在する場合は)物理エントロピー源の両方からのエントロピーを数えます。
例:\(\mathit{pes}_i\) を物理エントロピー源の \(i^{\text{番目}}\) の出力、\(\mathit{npes}_j\) を非物理エントロピー源の \(j^{\text{番目}}\) の出力とします。実装が物理エントロピー源1つと非物理エントロピー源1つからなり、128ビットのエントロピーを要求した場合、連結ビット列は次のようになることがあります。
which is the concatenated output of the physical and non-physical entropy sources.
これは、物理エントロピー源と非物理エントロピー源の出力を連結したものです。
According to Method 1, only the entropy in \(\mathit{pes}_1\), \(\mathit{pes}_2\), ..., \(\mathit{pes}_n\) would be counted toward fulfilling the 128-bit entropy request. Any entropy in \(\mathit{npes}_1\), ..., \(\mathit{npes}_m\) is not counted, even though it may be used.
方式1では、\(\mathit{pes}_1\)、\(\mathit{pes}_2\)、…、\(\mathit{pes}_n\) に含まれるエントロピーだけを、128ビットのエントロピー要求を満たす量として数えます。\(\mathit{npes}_1\)、…、\(\mathit{npes}_m\) に含まれるエントロピーは、使用されていたとしても数えません。
According to Method 2, all of the entropy in \(\mathit{pes}_1\), \(\mathit{pes}_2\), ..., \(\mathit{pes}_n\) and in \(\mathit{npes}_1\), \(\mathit{npes}_2\), ..., \(\mathit{npes}_m\) is counted.
方式2では、\(\mathit{pes}_1\)、\(\mathit{pes}_2\)、…、\(\mathit{pes}_n\)および\(\mathit{npes}_1\)、\(\mathit{npes}_2\)、…、\(\mathit{npes}_m\)に含まれるエントロピーをすべて算入します。
When multiple entropy sources are used, there is no requirement regarding the order in which the entropy sources are accessed or the number of times that each entropy source is accessed to fulfill an entropy request. For example, if two physical entropy sources are used, a request could be fulfilled by only one of the entropy sources because entropy is not available at the time of the request from the other entropy source. However, the Method 1 or Method 2 criteria for counting entropy still applies, provided that the entropy sources are independent.
複数のエントロピー源を使用する場合、エントロピー要求を満たすために各源へアクセスする順序やアクセス回数に関する要件はありません。たとえば、2つの物理エントロピー源を使用しているとき、一方の源から要求時にエントロピーを取得できなければ、もう一方の源だけで要求を満たしてもよいです。ただし、エントロピー源が互いに独立している場合は、エントロピーの算入に方式1または方式2の基準を引き続き適用します。
2.4. Deterministic Random Bit Generators (DRBGs)
2.4. 決定論的乱数ビット生成器(DRBG)
Approved DRBGs are specified in SP 800-90A [SP_800-90A]. A DRBG includes instantiate, generate, and health-testing functions and may also include reseed and uninstantiate functions. The instantiation of a DRBG involves acquiring sufficient randomness to initialize the DRBG to support a targeted security strength and establish the internal state, which includes the secret information for operating the DRBG. The generate function produces output upon request and updates the internal state. Health testing is used to determine whether the DRBG continues to operate correctly. Reseeding introduces fresh randomness into the DRBG’s internal state and is used to recover from a potential (or actual) compromise (see Sec. 2.4.2). An uninstantiate function is used to terminate a DRBG instantiation and destroy the information in its internal state.
承認済みDRBGはSP 800-90A [SP_800-90A]で規定されています。DRBGにはインスタンス化、生成、ヘルス試験の各関数が含まれ、再シードおよびインスタンス解除関数を含む場合もあります。DRBGのインスタンス化では、目標とするセキュリティ強度を支えられるように十分な乱数を取得してDRBGを初期化し、DRBGの動作に必要な秘密情報を含む内部状態を確立します。生成関数は要求に応じて出力を生成し、内部状態を更新します。ヘルス試験では、DRBGが正常に動作し続けているかを確認します。再シードは新たな乱数をDRBGの内部状態に導入し、侵害の可能性または実際の侵害からの回復に使用されます(第2.4.2節を参照してください)。インスタンス解除関数はDRBGのインスタンス化を終了し、内部状態の情報を破棄します。
2.4.1. DRBG Instantiations
2.4.1. DRBGのインスタンス化
A DRBG implementation consists of the software, hardware, and/or firmware that are used to implement a DRBG design. The same implementation can be used to create multiple (logical) “copies” of the same DRBG (e.g., for different purposes) without replicating the software, hardware, or firmware. Each “copy” is a separate instantiation of the DRBG with its own internal state that is accessed via a state handle (e.g., a pointer) that is unique to that instantiation (see Fig. 1). Each instantiation may be considered a different DRBG, even though it uses the same software, hardware, or firmware.
DRBG実装とは、DRBG設計を実装するために使用するソフトウェア、ハードウェア、および/またはファームウェアです。同じ実装を使って、ソフトウェア、ハードウェア、ファームウェアを複製することなく、同じDRBGの複数の論理的な「コピー」(用途ごとに分ける場合など)を作成できます。各「コピー」は独立したDRBGインスタンス化であり、それぞれ固有の内部状態を持ちます。その状態には、インスタンス化ごとに一意な状態ハンドル(ポインターなど)を介してアクセスします(図1を参照してください)。同じソフトウェア、ハードウェア、またはファームウェアを使用していても、それぞれのインスタンス化を別個のDRBGと見なしてもよいです。
図1. DRBGのインスタンス化。上部にstate handle 1とstate handle 2という2つの入力があり、それぞれ下向きの矢印でDRBG Implementation(DRBG実装)の枠に入る。枠内では、state handle 1からの矢印がInternal State 1(内部状態1)の箱に、state handle 2からの矢印が隣接するInternal State 2(内部状態2)の箱に入る。Internal State 1とInternal State 2からの矢印はDRBG Codeの箱に合流する。DRBG Codeからの矢印はDRBG Implementationの枠の下へ出て、DRBG output(DRBG出力)に至る。
Fig. 1. DRBG instantiations
図1. DRBGのインスタンス化
Each DRBG instantiation is initialized with input from some randomness source that establishes the security strengths that can be supported by the DRBG. During this process, an optional but recommended personalization string may also be used to differentiate between instantiations in addition to the output of the randomness source. The personalization string could, for example, include information particular to the instantiation or contain entropy collected during system activity (e.g., from a non-validated entropy source). An implementation should allow the use of a personalization string. More information on personalization strings is provided in [SP_800-90A].
各DRBGインスタンス化は、DRBGがサポートできるセキュリティ強度を確立するため、何らかの乱数源からの入力で初期化します。この処理では、乱数源の出力に加え、インスタンス化同士を区別するために、任意だが推奨されるパーソナライゼーション文字列を使用してもよいです。この文字列には、たとえば、そのインスタンス化に固有の情報や、システム動作中に収集したエントロピー(未検証エントロピー源からのものなど)を含めることができます。実装はパーソナライゼーション文字列の使用を可能にすべきです。詳細は[SP_800-90A]を参照してください。
A DRBG may be implemented to accept additional input during operation from the randomness source (e.g., to reseed the DRBG) and/or additional input from inside or outside of the cryptographic module that contains the DRBG. This additional input could, for example, include information particular to a request for generation or reseeding or could contain entropy collected during system activity (e.g., from a validated or non-validated entropy source).5 A capability to handle additional input is recommended for an implementation.
DRBGは、動作中に乱数源から追加入力(DRBGの再シードなど)を受け入れるよう実装してもよいです。また、DRBGを含む暗号モジュールの内外から追加入力を受け入れてもよいです。この追加入力には、生成または再シードの要求に固有の情報や、システム動作中に収集したエントロピー(検証済みまたは未検証のエントロピー源から得たものなど)を含めることができます。5実装には、追加入力を処理する機能を備えることが推奨されます。
2.4.2. Reseeding, Prediction Resistance, and Compromise Recovery
2.4.2. 再シード、予測耐性、および侵害からの回復
Under some circumstances, the internal state of an RBG (containing the RBG’s secret information) could be leaked to an adversary. This might happen as the result of a side-channel attack or a serious compromise of the computer on which the DRBG runs and may not be detected by the DRBG or any consuming application.
状況によっては、RBGの秘密情報を含む内部状態が攻撃者に漏えいするおそれがあります。たとえばサイドチャネル攻撃、またはDRBGが動作するコンピューターへの重大な侵害によって漏えいする可能性があり、DRBGや出力を利用するアプリケーションがそれを検出できない場合があります。
In order to limit damage due to a compromised state, all DRBGs in SP 800-90A are designed with backtracking resistance — that is, learning the DRBG’s current internal state does not provide knowledge of previous outputs. Since all RBGs in SP 800-90C are based on the use of the DRBGs in SP 800-90A, the RBGs specified in this document also inherit this property.
侵害された状態による被害を抑えるため、SP 800-90AのDRBGはすべてバックトラッキング耐性を備えます。つまり、現在のDRBG内部状態を知っても、それ以前の出力は分かりません。SP 800-90CのRBGはすべてSP 800-90AのDRBGを使用するため、本書で規定するRBGもこの特性を引き継ぎます。
DRBGs with a reseed capability and access to an appropriate randomness source may be reseeded at any time to allow for recovery from a potential compromise. An adversary who knows the internal state of the DRBG before the reseed but who does not learn the seed material used for the reseed knows nothing about its internal state after the reseed. Reseeding allows a DRBG to recover from a leak of its internal state.
再シード機能を持ち、適切な乱数源にアクセスできるDRBGは、侵害の可能性から回復するため、いつでも再シードできます。再シード前のDRBG内部状態を知っている攻撃者でも、再シードに用いたシード材料を知らなければ、再シード後の内部状態について何も知ることはできません。再シードにより、DRBGは内部状態の漏えいから回復できます。
In order to reseed a DRBG at a security strength of \(s\) bits, new seed material is provided to the DRBG from either an entropy source or an RBG. If the seed material is provided by an entropy source, it must contain at least \(s\) bits of min-entropy. If the seed material is provided by an RBG, the RBG must support a security strength of at least \(s\) bits, and the seed material must be at least \(s\) bits long. Seed material from an entropy source will always be unpredictable; seed material from an RBG will be unpredictable if that RBG has not been compromised.
セキュリティ強度\(s\)ビットのDRBGを再シードするには、エントロピー源またはRBGから新しいシード材料をDRBGに与えます。エントロピー源から与える場合、シード材料は少なくとも\(s\)ビットの最小エントロピーを含まなければなりません。RBGから与える場合、そのRBGは少なくとも\(s\)ビットのセキュリティ強度をサポートし、シード材料の長さは少なくとも\(s\)ビットでなければなりません。エントロピー源からのシード材料は常に予測不能です。RBGからのシード材料は、そのRBGが侵害されていなければ予測不能です。
A DRBG output is said to have prediction resistance when the DRBG is reseeded with at least \(s\) bits of min-entropy immediately before the output is generated by the DRBG. The entropy for this reseeding process needs to be provided by either an entropy source or an RBG3 construction for prediction resistance to be provided.
DRBGが出力を生成する直前に、少なくとも\(s\)ビットの最小エントロピーで再シードされている場合、そのDRBG出力は予測耐性を持つといいます。予測耐性を実現する再シード用エントロピーは、エントロピー源またはRBG3構成から提供する必要があります。
When a target DRBG is reseeded using another DRBG as a randomness source, the target DRBG is not guaranteed to have prediction resistance. If the source and target DRBGs are both compromised, then reseeding the target DRBG from the other DRBG will allow the adversary to know the target DRBG’s internal state. However, it is often a good idea to reseed a target DRBG from a source DRBG. If the source DRBG was not compromised, then the target DRBG’s state will be unknown to the adversary after the reseed.
あるDRBG(対象DRBG)を別のDRBG(乱数源)を用いて再シードしても、対象DRBGに予測耐性があるとは保証されません。乱数源と対象DRBGの両方が侵害されている場合、別のDRBGから対象DRBGへ再シードすると、攻撃者は対象DRBGの内部状態を知ることになります。しかし、乱数源DRBGから対象DRBGへ再シードすることは、多くの場合、望まれます。乱数源DRBGが侵害されていなければ、再シード後の対象DRBGの状態は攻撃者に知られません。
The RBG3 construction provides prediction resistance for its outputs so that every output has full entropy. The RBG2 construction can provide prediction resistance on its outputs when reseeding is supported. The RBG1 construction never provides prediction resistance since it cannot be reseeded. Prediction resistance may be provided for the root RBGC construction but not for any subsequent non-root RBGC construction. However, subsequent RBGC constructions can (and generally should) be reseeded periodically.
RBG3構成は出力に予測耐性を提供し、すべての出力が完全エントロピーとなります。RBG2構成は、再シードがサポートされている場合、出力に予測耐性を提供できます。RBG1構成は再シードできないため、予測耐性を提供しません。ルートRBGC構成は予測耐性を提供できますが、それ以降のルート以外のRBGC構成は提供できません。ただし、後続のRBGC構成は定期的に再シードでき、通常はそうすべきです。
The RBG1, RBG2, and RBGC constructions provide output with a security strength that depends on the security strength of the DRBG instantiation within the RBG and the length of the output. These constructions do not provide output with full entropy and must not be used by applications that require a higher security strength than has been instantiated in the DRBG of the construction. See Appendix A.1 for a discussion of entropy versus security strength.
RBG1、RBG2、およびRBGC構成が提供する出力のセキュリティ強度は、RBG内のDRBGインスタンス化のセキュリティ強度と出力長によって決まります。これらの構成は完全エントロピーの出力を提供せず、構成内のDRBGでインスタンス化されたセキュリティ強度を超える強度を必要とするアプリケーションで使用してはなりません。エントロピーとセキュリティ強度の違いについては付録A.1を参照してください。
Although reseeding provides fresh randomness that is incorporated into an already instantiated DRBG at a security strength of \(s\) bits, the reseed process does not increase the DRBG’s security strength. For example, a reseed of a DRBG that has been instantiated to support a security strength of 128 bits does not increase the DRBG’s security strength to 256 bits when reseeding with 128 bits of fresh entropy.
再シードにより、セキュリティ強度\(s\)ビットでインスタンス化済みのDRBGに新たな乱数が取り込まれますが、再シードによってDRBGのセキュリティ強度が上がるわけではありません。たとえば、128ビットのセキュリティ強度をサポートするようインスタンス化したDRBGに、128ビットの新たなエントロピーを用いて再シードしても、セキュリティ強度は256ビットにはなりません。
2.5. RBG Security Boundaries
2.5. RBGのセキュリティ境界
An RBG exists within a conceptual RBG security boundary that should be defined with respect to one or more threat models that include an assessment of the applicability of an attack and the potential harm caused by the attack. The RBG security boundary must be designed to assist in the mitigation of these threats using physical or logical mechanisms or both.
RBGは概念上のRBGセキュリティ境界内に存在します。この境界は、攻撃の適用可能性と攻撃によって生じる潜在的な損害を評価する1つ以上の脅威モデルに基づいて定義するとよいです。セキュリティ境界は、物理的手段、論理的手段、またはその両方を使って脅威の緩和を支援するよう設計しなければなりません。
The primary components of an RBG are a randomness source, a DRBG, and health tests for the RBG. RBG input (e.g., entropy bits and a personalization string during instantiation) shall enter an RBG only as specified in the functions described in Sec. 2.8. The security boundary of a DRBG is discussed in [SP_800-90A], and the security boundary for an entropy source is discussed in [SP_800-90B]. Both the entropy source and the DRBG contain their own health tests within their respective security boundaries.
RBGの主要な構成要素は、乱数源、DRBG、およびRBGのヘルス試験です。RBGへの入力(インスタンス化時のエントロピービットやパーソナライゼーション文字列など)は、第2.8節で説明する関数に規定された方法でのみRBGに入力しなければなりません。DRBGのセキュリティ境界は[SP_800-90A]で、エントロピー源のセキュリティ境界は[SP_800-90B]で説明されています。エントロピー源とDRBGは、それぞれのセキュリティ境界内に独自のヘルス試験を備えます。
Figure 2 shows an example RBG implemented within a FIPS-140-validated cryptographic module. In this figure, the RBG security boundary is completely contained within the cryptographic module boundary. The data input may be a personalization string or additional input (see Sec. 2.4.1). The data output is status information and possibly random bits or a state handle. Within the RBG security boundary of the figure are an entropy source and a DRBG, each with its own conceptual security boundary. An entropy-source security boundary includes a noise source, health tests, and (optionally) a conditioning component. A DRBG security boundary contains the chosen DRBG, memory for the internal state, and health tests. An RBG security boundary contains health tests and an (optional) external conditioning function. The RBG2 and RBG3 constructions in Sec. 5 and 6, respectively, use this model.
図2は、FIPS 140検証済み暗号モジュール内に実装されたRBGの例を示します。この図では、RBGのセキュリティ境界全体が暗号モジュールの境界内にあります。データ入力は、パーソナライゼーション文字列または追加入力です(第2.4.1節を参照してください)。データ出力は状態情報と、場合によっては乱数ビットまたは状態ハンドルです。図のRBGセキュリティ境界内には、それぞれ独自の概念的なセキュリティ境界を持つエントロピー源とDRBGがあります。エントロピー源のセキュリティ境界には、ノイズ源、ヘルス試験、および任意のコンディショニング要素が含まれます。DRBGのセキュリティ境界には、選択したDRBG、内部状態用メモリー、およびヘルス試験が含まれます。RBGのセキュリティ境界には、ヘルス試験と任意の外部コンディショニング関数が含まれます。第5節および第6節のRBG2構成とRBG3構成は、それぞれこのモデルを使用します。
図2. 暗号モジュール内のRBGセキュリティ境界の例。太い黒枠の下にCryptographic Module Boundary(暗号モジュール境界)というラベルがあり、その中に、下にRBG Security Boundary(RBGセキュリティ境界)というラベルが付いた緑枠の箱がある。左のData input(データ入力)から緑枠へ矢印が入り、緑枠から右のData Output(データ出力)へ矢印が出る。緑枠の中には、Health Tests(ヘルス試験)、Noise Source(ノイズ源)、Opt. Cond. Function(任意のコンディショニング関数)を含むEntropy Source Security Boundary(エントロピー源セキュリティ境界)の箱、RBG Health Tests(RBGヘルス試験)の箱、Opt. Ext. Cond. Function(任意の外部コンディショニング関数)の箱、DRBG、Health Tests、Memory: Internal state(メモリー:内部状態)を含むDRBG Security Boundary(DRBGセキュリティ境界)の箱がある。
Fig. 2. Example of an RBG security boundary within a cryptographic module
図2. 暗号モジュール内のRBGセキュリティ境界の例
In the case of the RBG1 construction in Sec. 4, the security boundary containing the DRBG does not include a randomness source (shown as an entropy source in Fig. 2). For an RBGC construction, the security boundary is the computing platform on which the tree of DRBGs is used.
第4節のRBG1構成では、DRBGを含むセキュリティ境界に乱数源(図2ではエントロピー源として表示)は含まれません。RBGC構成では、DRBGツリーを使用する計算プラットフォームがセキュリティ境界となります。
A cryptographic primitive (e.g., an approved hash function or block cipher) used by an RBG may be used by other applications within the same cryptographic module. However, these other applications shall not modify or reveal the RBG’s output, intermediate values, or internal state.
RBGが使用する暗号プリミティブ(承認済みハッシュ関数やブロック暗号など)は、同じ暗号モジュール内の他のアプリケーションも使用できます。ただし、そうした他のアプリケーションは、RBGの出力、中間値、または内部状態を変更も開示もしてはなりません。
2.6. Assumptions and Assertions
2.6. 前提および表明
The RBG constructions in SP 800-90C are based on the use of validated entropy sources and the following assumptions and assertions for properly functioning entropy sources:
SP 800-90CのRBG構成は、適切に機能するエントロピー源について、検証済みエントロピー源の使用と、以下の前提および表明に基づきます。
1.An entropy source is independent of another entropy source if their security boundaries do not overlap (e.g., they reside in separate cryptographic modules, or one is a physical entropy source, and the other is a non-physical entropy source).
1.あるエントロピー源のセキュリティ境界が別のエントロピー源の境界と重なっていない場合(別々の暗号モジュールに存在する場合、または一方が物理エントロピー源でもう一方が非物理エントロピー源である場合など)、両者は独立しています。
2.Entropy sources that have been validated for conformance to SP 800-90B are used to provide seed material for seeding and reseeding a DRBG or providing entropy for an RBG3 construction. The output of non-validated entropy sources is only used in a personalization string or as additional input.
2.SP 800-90Bへの適合性が検証されたエントロピー源は、DRBGのシードおよび再シード用のシード材料、またはRBG3構成に提供するエントロピーの生成に使用します。未検証エントロピー源の出力は、パーソナライゼーション文字列または追加入力としてのみ使用します。
The following assumptions and assertions pertain to the use of validated entropy sources for providing entropy bits:
検証済みエントロピー源からエントロピービットを得る際は、次の前提および表明を適用します。
3. An entropy source or DRBG is assumed to output no more than \(2^{64}\) bits. In the case of an RBG1 construction with one or more subordinate DRBGs, the output limit applies to the total output provided by the RBG1 construction and its subordinate DRBGs.
3. エントロピー源またはDRBGの出力は最大\(2^{64}\)ビットであると仮定します。1つ以上の下位DRBGを持つRBG1構成では、出力上限はRBG1構成とその下位DRBGが提供する出力の合計に適用します。
4. Each entropy-source output is assumed to have a fixed length \(\mathit{ES\_len}\) (in bits).
4. 各エントロピー源の出力は固定長\(\mathit{ES\_len}\)(ビット単位)を持つと仮定します。
5. Each entropy-source output is assumed to contain at least a known amount of entropy, denoted as \(\mathit{ES\_entropy}\), that was assessed during entropy-source implementation validation. See [SP_800-90B] for entropy estimation.
5. 各エントロピー源の出力には、エントロピー源の実装検証時に評価された、既知量以上のエントロピー(\(\mathit{ES\_entropy}\)で表す)が含まれると仮定します。エントロピーの推定については[SP_800-90B]を参照してください。
6.Each entropy source has been characterized as either a physical entropy source or a non-physical entropy source upon successful validation.
6.検証に合格すると、各エントロピー源は物理または非物理のいずれかに分類されます。
7. The outputs from a single entropy source can be concatenated. The entropy of the resultant bitstring is the sum of the entropy from each entropy-source output. For example, if \(m\) outputs are concatenated, then the length of the bitstring is \(m \times \mathit{ES\_len}\) bits, and the entropy for that bitstring is assumed to be \(m \times \mathit{ES\_entropy}\) bits. This is a consequence of the model of entropy used in [SP_800-90B].
7. 単一のエントロピー源からの複数の出力を連結できます。連結後のビット列のエントロピー量は、各出力のエントロピー量の合計となります。たとえば\(m\)個の出力を連結すると、ビット列の長さは\(m \times \mathit{ES\_len}\)ビットとなり、そのビット列のエントロピー量は\(m \times \mathit{ES\_entropy}\)ビットと仮定します。これは[SP_800-90B]で採用されるエントロピーモデルによります。
8. The output of multiple independent entropy sources can be concatenated in an RBG. The entropy in the resultant bitstring is the sum of the entropy in each independent entropy-source output that is contributing to the entropy in the bitstring (see Methods 1 and 2 in Sec. 2.3). For example, suppose that the outputs from independent physical entropy sources A and B and non-physical entropy source C are concatenated. The length of the concatenated bitstring is the sum of the lengths of the component bitstrings (e.g., \(\mathit{ES\_len}_A + \mathit{ES\_len}_B + \mathit{ES\_len}_C\)).
8. RBGでは、複数の独立したエントロピー源からの出力を連結できます。連結後のビット列のエントロピー量は、そのビット列のエントロピーに寄与する各独立エントロピー源の出力に含まれるエントロピー量の合計です(第2.3節の方式1および方式2を参照)。たとえば、独立した物理エントロピー源AおよびBと、非物理エントロピー源Cからの出力を連結するとします。連結ビット列の長さは、構成する各ビット列の長さの合計(たとえば\(\mathit{ES\_len}_A + \mathit{ES\_len}_B + \mathit{ES\_len}_C\))となります。
• Using Method 1 (physical only) in Sec. 2.3, the amount of entropy in the concatenated bitstring is \(\mathit{ES\_entropy}_A + \mathit{ES\_entropy}_B\).
• 第2.3節の方式1(物理源のみ)を用いる場合、連結ビット列内のエントロピー量は\(\mathit{ES\_entropy}_A + \mathit{ES\_entropy}_B\)となります。
• Using Method 2 (non-physical inclusive) in Sec. 2.3, the amount of entropy in the concatenated bitstring is the sum of all entropy in the bitstrings (i.e., \(\mathit{ES\_entropy}_A + \mathit{ES\_entropy}_B + \mathit{ES\_entropy}_C\)).
• 第2.3節の方式2(非物理源を含む)を用いる場合、連結ビット列内のエントロピー量は、ビット列内のすべてのエントロピーの合計(すなわち\(\mathit{ES\_entropy}_A + \mathit{ES\_entropy}_B + \mathit{ES\_entropy}_C\))となります。
9.Under certain conditions, the output of one or more entropy sources can be externally conditioned to provide full-entropy output. See Sec. 3.2.2.2, 6.4, and 7 for the use of this assumption and [NISTIR_8427] for the rationale.
9.一定の条件下では、1つ以上のエントロピー源の出力を外部でコンディショニングし、完全エントロピーの出力を得られます。この前提は第3.2.2.2節、第6.4節、および第7節で使用します。[NISTIR_8427]に根拠を示します。
10.When entropy is requested, the entropy source is assumed to respond as follows:
10.エントロピーを要求された場合、エントロピー源は次のように応答すると仮定します。
• If the entropy source provides the requested amount of entropy, a \(\mathit{status}\) indication of success is returned along with a bitstring that contains the requested amount of entropy.
• エントロピー源が要求量のエントロピーを提供する場合、要求量のエントロピーを含むビット列とともに、成功を示す\(\mathit{status}\)を返します。
• If the entropy source detects a failure of the primary noise source (e.g., an error from which it cannot recover), the entropy source returns a \(\mathit{status}\) indicating a failure. Other output is not provided.
• エントロピー源が主要なノイズ源の障害(回復できないエラーなど)を検出した場合、障害を示す\(\mathit{status}\)を返します。その他の出力は提供しません。
• If the entropy source indicates an error other than failure (e.g., entropy cannot be obtained in a timely manner, or there is an intermittent problem), the entropy source returns a \(\mathit{status}\) indicating that the entropy source cannot provide output at this time. Other output is not provided.
• エントロピー源が障害以外のエラー(エントロピーを適時に取得できない、断続的な問題があるなど)を示した場合、その時点では出力を提供できないことを示す\(\mathit{status}\)を返します。その他の出力は提供しません。
The following assumptions and assertions pertain to the use of DRBGs and the RBG constructions:
DRBGおよびRBG構成の使用について、次の前提および表明を適用します。
11. Full entropy bits can be extracted from the output of a DRBG specified in [SP_800-90A] (e.g., a hash function or block cipher) when the amount of fresh entropy inserted into the algorithm exceeds the number of bits that are extracted by at least 64 bits. In particular, for a DRBG that has been instantiated at a security strength of \(s\) bits, \(s\) full-entropy bits can be extracted from the output of that DRBG when at least \(s + 64\) bits of fresh entropy are inserted into the DRBG immediately before the output is generated (see [NISTIR_8427] for details).
11. [SP_800-90A]で規定されたDRBG(ハッシュ関数やブロック暗号など)の出力から完全エントロピービットを抽出できるのは、アルゴリズムに新たに投入したエントロピー量が、抽出するビット数を少なくとも64ビット上回る場合です。特に、セキュリティ強度\(s\)ビットでインスタンス化されたDRBGでは、\(s\)ビットの完全エントロピービットをそのDRBGの出力から抽出できます。ただし、出力生成の直前に少なくとも\(s + 64\)ビットの新たなエントロピーをDRBGに投入する場合に限ります(詳細は[NISTIR_8427]を参照)。
Instantiating a DRBG with security strength \(s\) from an entropy source (e.g., the entropy source for the DRBG in an RBG2 or RBG3 construction or the initial randomness source for the DRBG in a root RBGC construction) requires at least \(3s/2\) bits of min-entropy.6 Instantiating a DRBG from another RBG (e.g., the DRBG in an RBG1, RBG1 sub-DRBG, or any non-root RBGC construction) requires at least \(3s/2\) bits of seed material and requires that the DRBG providing the seed material supports at least an \(s\)-bit security strength.
セキュリティ強度\(s\)のDRBGをエントロピー源(RBG2またはRBG3構成のDRBG用エントロピー源、またはルートRBGC構成のDRBGに対する初期乱数源など)からインスタンス化するには、少なくとも\(3s/2\)ビットの最小エントロピーが必要です。6 別のRBGからDRBG(RBG1、RBG1の下位DRBG、またはルート以外のRBGC構成のDRBGなど)をインスタンス化するには、少なくとも\(3s/2\)ビットのシード材料が必要であり、シード材料を提供するDRBGは少なくとも\(s\)ビットのセキュリティ強度をサポートしなければなりません。
12.One or more of the constructions provided herein are used in the design of an RBG.
12.本書に示す構成の1つ以上を、RBGの設計に使用します。
13.All components of an RBG2 and RBG3 construction (as specified in Sec. 5 and 6) reside within the same security boundary.
13.RBG2およびRBG3構成(第5節および第6節に規定)のすべての構成要素は、同一のセキュリティ境界内に存在します。
14.All RBGC constructions in a DRBG tree reside on the same computing platform.
14.DRBGツリー内のすべてのRBGC構成は、同一の計算プラットフォーム上に存在します。
15.The DRBGs specified in [SP_800-90A] are assumed to meet their explicit security claims (e.g., backtracking resistance or claimed security strength).
15.[SP_800-90A]で規定されるDRBGは、明示されたセキュリティ上の主張(バックトラッキング耐性や主張されたセキュリティ強度など)を満たすと仮定します。
16.A sub-DRBG is considered to be part of the RBG1 construction that initializes it.
16.下位DRBGは、それを初期化するRBG1構成の一部と見なします。
17.The RBG1 construction and its sub-DRBGs reside within the same security boundary.
17.RBG1構成およびその下位DRBGは、同一のセキュリティ境界内に存在します。
2.7. General Implementation and Use Requirements and Recommendations
2.7. 実装および使用に関する一般要件と推奨事項
When implementing the RBG constructions specified in this recommendation, an implementation:
本勧告で規定するRBG構成を実装する場合、実装は次の事項を満たします。
1.Shall destroy intermediate values before exiting the function or routine in which they are used,
1.中間値が使用される関数またはルーチンを終了する前に、それらの中間値を破棄しなければなりません。
2.Shall employ an “atomic” generate operation whereby a generate request is completed before using any of the requested bits, and
2.「アトミックな」生成操作を採用します。この操作では、生成要求を完了してから、要求されたビットを使用します。さらに、
3.Should be implemented with the capability to support a security strength of 256 bits or to provide full-entropy output.
3.セキュリティ強度256ビットをサポートする機能、または完全エントロピー出力を提供する機能を備えるよう実装するとよいです。
When using RBGs, the user or application requesting the generation of random or pseudorandom bits should request only the number of bits required for a specific immediate purpose rather than generating bits to be stored for future use. Since, in most cases, the bits are intended to be secret, the stored bits (if not properly protected) are potentially vulnerable to exposure, thus defeating the requirement for secrecy.
RBGを使用する場合、乱数または疑似乱数ビットの生成を要求する利用者またはアプリケーションは、将来の使用に備えてビットを生成・保存するのではなく、その時点の特定の目的に必要なビット数だけを要求するとよいです。多くの場合、ビットは秘密情報として使われるため、保存したビットを適切に保護しなければ漏えいのおそれがあり、秘密保持の要件が損なわれます。
2.8. General Function Calls
2.8. 一般的な関数呼び出し
Functions used within this document for accessing the DRBGs, the entropy sources, and the RBG3 constructions are identified in Fig. 3.
本書でDRBG、エントロピー源、およびRBG3構成へアクセスするために使用する関数を図3に示します。
Fig. 3. General function calls
図3. 一般的な関数呼び出し
Each function returns a status code that must be checked (e.g., a status of success or failure by the function).
各関数はステータスコードを返すため、必ず確認しなければなりません(関数の成功または失敗を示すステータスなど)。
•If the status code indicates a success, then additional information may also be returned, such as a state handle from an instantiate function or the bits that were requested to be generated during a generate function.
•ステータスコードが成功を示す場合、インスタンス化関数の状態ハンドルや、生成関数で生成を要求したビットなど、追加情報も返されることがあります。
•If the status code indicates the failure of an RBG component, then any other output returned shall be considered invalid.
•ステータスコードがRBG構成要素の障害を示す場合、返されたその他の出力はすべて無効として扱わなければなりません。
A distinction between a function within a DRBG or RBG and the request for the execution of that function by a requesting entity (e.g., an application) is needed for clarity. The requesting entity may not include an implementation of the function itself but needs to be able to request the DRBG or RBG to execute that function to obtain random values for its use. As used in this document, the request needs to provide some or all of the input needed for the associated function. Relevant information output by that function needs to be returned in response to the request.
明確にするため、DRBGまたはRBG内の関数と、その関数の実行を要求する主体(アプリケーションなど)からの要求とを区別する必要があります。要求主体は関数自体の実装を含まない場合もありますが、利用する乱数値を得るため、DRBGまたはRBGにその関数の実行を要求できなければなりません。本書でいう要求には、関連関数が必要とする入力の一部またはすべてを指定する必要があります。関数から得られる関連情報は、要求への応答として返す必要があります。
2.8.1. DRBG Functions
2.8.1. DRBG関数
[SP_800-90A] specifies several functions within a DRBG that indicate the input and output parameters and other implementation details. In some cases, some of the input parameters identified in SP 800-90A may be omitted, and some output information may not be returned (e.g., because the requested information was not generated).
[SP_800-90A]は、入力・出力パラメーターやその他の実装詳細を示す、DRBG内の複数の関数を規定しています。場合によっては、SP 800-90Aで特定された入力パラメーターの一部を省略したり、出力情報の一部を返さなかったりすることがあります(要求された情報が生成されなかった場合など)。
At least two functions are required in a DRBG:
DRBGには少なくとも2つの関数が必要です。
1.An instantiate function that seeds the DRBG using the output of a randomness source and other optional input (see Sec. 2.8.1.1) and
1.乱数源の出力とその他の任意入力を用いてDRBGにシードを与えるインスタンス化関数(第2.8.1.1節を参照してください)。
2.A generate function that produces output for use by a consuming application (see Sec. 2.8.1.2).
2.利用側アプリケーションで使用する出力を生成する生成関数(第2.8.1.2節を参照してください)。
A DRBG may also support a reseed function (see Sec. 2.8.1.3).
DRBGは、再シード関数をサポートする場合もあります(第2.8.1.3節を参照してください)。
A Get_randomness_source_input call is used in [SP_800-90A] to request output from a randomness source during instantiation and reseeding (see Sec. 2.8.1.4). The behavior of this function is specified in this document based on the type of randomness source(s) used and the RBG construction.
[SP_800-90A]では、インスタンス化および再シード中に乱数源からの出力を要求するため、Get_randomness_source_input呼び出しを使用します(第2.8.1.4節を参照してください)。この関数の動作は、使用する乱数源の種類とRBG構成に基づき、本書で規定します。
SP 800-90C does not explicitly discuss the use of the DRBG_Uninstantiate function specified in [SP_800-90A] but may be required by an implementation.
SP 800-90Cは、[SP_800-90A]で規定されるDRBG_Uninstantiate関数の使用を明示的に説明していませんが、実装で必要になる場合があります。
2.8.1.1. DRBG Instantiation
2.8.1.1. DRBGのインスタンス化
A DRBG is instantiated prior to the generation of pseudorandom bits at the highest security strength to be supported by the DRBG instantiation using the following function:
DRBGインスタンス化でサポートする最大のセキュリティ強度で疑似乱数ビットを生成する前に、次の関数でDRBGをインスタンス化します。
図4. DRBG_Instantiate関数。requested_instantiation_security_strengthと(Optional) personalization string(任意のパーソナライゼーション文字列)の2つの入力が矢印でDRBG_Instantiateの箱に入る。箱からは2本の矢印が出力statusとstate_handleへ出る。
Fig. 4. \(\mathbf{DRBG\_Instantiate}\) function
図4. \(\mathbf{DRBG\_Instantiate}\)関数
The \(\mathbf{DRBG\_Instantiate}\) function (shown in Fig. 4) is used to instantiate a DRBG at the \(\mathit{requested\_instantiation\_security\_strength}\) using the output of a randomness source7 and an optional but strongly recommended \(\mathit{personalization\_string}\) to create a seed (see Sec. 2.4.1). Details about the \(\mathbf{DRBG\_Instantiate}\) function are provided in [SP_800-90A].
\(\mathbf{DRBG\_Instantiate}\)関数(図4を参照)は、\(\mathit{requested\_instantiation\_security\_strength}\)でDRBGをインスタンス化するために使用します。その際、乱数源7の出力と、任意だが強く推奨される\(\mathit{personalization\_string}\)を用いてシードを作成します(第2.4.1節を参照)。\(\mathbf{DRBG\_Instantiate}\)関数の詳細は[SP_800-90A]に示されています。
If the \(\mathit{status}\) code returned for the \(\mathbf{DRBG\_Instantiate}\) function indicates a success (i.e., the DRBG has been instantiated at the requested security strength), a state handle may8 be returned to indicate the particular DRBG instance (e.g., pointing to the internal state to be used by this instance). When provided by the \(\mathbf{DRBG\_Instantiate}\) function, the state handle is used in subsequent calls to the DRBG (e.g., during a \(\mathbf{DRBG\_Generate}\) call) to reference the internal state information for the instantiation. The information in the internal state includes the security strength of the instantiation and other information that changes during DRBG execution (see [SP_800-90A] for each DRBG design).
\(\mathit{status}\)コード(\(\mathbf{DRBG\_Instantiate}\)関数について返されたもの)が成功を示す場合(すなわち、要求されたセキュリティ強度でDRBGがインスタンス化された場合)、特定のDRBGインスタンスを示す状態ハンドルが返されることがある8(たとえば、そのインスタンスが使用する内部状態を指すもの)。\(\mathbf{DRBG\_Instantiate}\)関数が状態ハンドルを返す場合、その後のDRBG呼び出し(\(\mathbf{DRBG\_Generate}\)呼び出しなど)でこれを使用し、そのインスタンス化の内部状態情報を参照します。内部状態の情報には、インスタンス化のセキュリティ強度と、DRBGの実行中に変化するその他の情報が含まれます(各DRBG設計については[SP_800-90A]を参照)。
When the DRBG has been instantiated at the requested security strength, the DRBG will operate at that security strength even if the security strength requested in subsequent \(\mathbf{DRBG\_Generate}\) calls (see Sec. 2.8.1.2) is less than the instantiated security strength. For example, if a DRBG has been instantiated at a security strength of 256 bits, all output will be generated at that strength even when a request is received to generate bits at a strength of 128 bits.
DRBGは要求されたセキュリティ強度でインスタンス化されると、その後の\(\mathbf{DRBG\_Generate}\)呼び出し(第2.8.1.2節を参照)で要求されるセキュリティ強度がインスタンス化時のセキュリティ強度より低くても、インスタンス化時のセキュリティ強度で動作します。たとえば、256ビットのセキュリティ強度でインスタンス化されたDRBGは、128ビットの強度でのビット生成を要求された場合でも、すべての出力を256ビットの強度で生成します。
If the \(\mathit{status}\) code indicates an error and an implementation is designed to return a state handle, an invalid state handle (e.g., \(\mathit{Null}\)) is returned.
\(\mathit{status}\)コードがエラーを示し、実装が状態ハンドルを返す設計である場合、無効な状態ハンドル(\(\mathit{Null}\)など)を返します。
The \(\mathbf{DRBG\_Instantiate}\) function is requested by an application using a \(\mathbf{DRBG\_Instantiate\_request}\):
\(\mathbf{DRBG\_Instantiate}\)関数は、アプリケーションが次の\(\mathbf{DRBG\_Instantiate\_request}\)を使って要求します。
As shown in Fig. 5, a \(\mathbf{DRBG\_Instantiate\_request}\) received by a DRBG results in the execution of the DRBG’s instantiate function, providing the input parameters for that function. The \(\mathbf{DRBG\_Instantiate}\) function within the DRBG then obtains \(\mathit{seed\_material}\) from the randomness sources, instantiates a DRBG, and returns the \(\mathit{status}\) of the process and (if there is no error) a \(\mathit{state\_handle}\) for the internal state to the application.
図5に示すとおり、DRBGが\(\mathbf{DRBG\_Instantiate\_request}\)を受け取ると、DRBGのインスタンス化関数が実行され、その関数の入力パラメーターが渡されます。DRBG内の\(\mathbf{DRBG\_Instantiate}\)関数は、乱数源から\(\mathit{seed\_material}\)を取得してDRBGをインスタンス化し、処理の\(\mathit{status}\)と、エラーがない場合は内部状態を示す\(\mathit{state\_handle}\)をアプリケーションに返します。
図5. DRBG_Instantiate要求。DRBGという箱の中にDRBG_Instantiate、DRBG_Generate、DRBG_Reseedの各関数があり、DRBG_GenerateとDRBG_Reseedは灰色で示されている。右のApplication(アプリケーション)からDRBG_InstantiateへDRBG_Instantiate_requestという矢印が、DRBG_InstantiateからApplicationへstatus, state_handleという矢印が向かう。DRBG_Instantiateから左のRandomness Source(s)(乱数源)へRandomness request(乱数要求)という矢印が、Randomness Source(s)からDRBG_Instantiateへseed_materialという矢印が向かう。
Fig. 5. DRBG_Instantiate request
図5. DRBG_Instantiate要求
2.8.1.2. DRBG Generation Request
2.8.1.2. DRBGの生成要求
Pseudorandom bits are generated after DRBG instantiation using the following function:
DRBGのインスタンス化後、次の関数を使って疑似乱数ビットを生成します。
図6. DRBG_Generate関数。state_handle、requested_number_of_bits、requested_security_strength、(Optional) additional_input(任意の追加入力)の4つの入力が矢印でDRBG_Generateの箱に入る。箱からは2本の矢印が出力statusとreturned_bitsへ出る。
Fig. 6. \(\mathbf{DRBG\_Generate}\) function
図6. \(\mathbf{DRBG\_Generate}\)関数
The \(\mathbf{DRBG\_Generate}\) function (shown in Fig. 6) is used to generate a specified number of bits. If a suitable \(\mathit{state\_handle}\) is provided during instantiation, it is included as input to indicate the DRBG instance to be used. The number of bits to be returned and the security strength that the DRBG needs to support for generating the bitstring are provided with (optional) additional input. As stated in Sec. 2.4.1, the ability to accept additional input is recommended.
\(\mathbf{DRBG\_Generate}\)関数(図6を参照)は、指定された数のビットを生成するために使用します。インスタンス化時に適切な\(\mathit{state\_handle}\)が与えられた場合は、使用するDRBGインスタンスを示すため、これを入力に含めます。返すビット数と、ビット列の生成でDRBGがサポートする必要のあるセキュリティ強度は、(任意の)追加入力とともに指定します。第2.4.1節で述べたとおり、追加入力を受け入れる機能が推奨されます。
The \(\mathbf{DRBG\_Generate}\) function returns status information — either an indication of success or an error. If the returned status code indicates a success, the generated bits are returned.
\(\mathbf{DRBG\_Generate}\)関数は、成功またはエラーのいずれかを示すステータス情報を返します。返されたステータスコードが成功を示す場合、生成したビットを返します。
• If \(\mathit{requested\_number\_of\_bits}\) is equal to or greater than the instantiated security strength, the security strength that the \(\mathit{returned\_bits}\) can support (if used as a key) is:
• \(\mathit{requested\_number\_of\_bits}\)がインスタンス化時のセキュリティ強度以上である場合、\(\mathit{returned\_bits}\)が(鍵として使用するときに)サポートできるセキュリティ強度は次のとおりです。
where \(\mathit{ss\_key}\) is the security strength of the key.
ここで\(\mathit{ss\_key}\)は鍵のセキュリティ強度です。
• If the \(\mathit{requested\_number\ of\ bits}\) is less than the instantiated security strength, and the \(\mathit{returned\_bits}\) are to be used as a key, the key is capable of supporting a security strength of:
• \(\mathit{requested\_number\ of\ bits}\)がインスタンス化時のセキュリティ強度より小さく、\(\mathit{returned\_bits}\)を鍵として使用する場合、その鍵がサポートできるセキュリティ強度は次のとおりです。
•If the output is used to form multiple keys, the security strength that can be supported by each key is:
•出力から複数の鍵を生成する場合、各鍵がサポートできるセキュリティ強度は次のとおりです。
If the status code indicates an error, the \(\mathit{returned\_bits}\) consists of a \(\mathit{Null}\) bitstring. An example of a condition in which an error indication may be returned is a request for a security strength that exceeds the instantiated security strength for the DRBG.
ステータスコードがエラーを示す場合、\(\mathit{returned\_bits}\)は\(\mathit{Null}\)ビット列となります。エラーが返されることがある条件の例として、DRBGのインスタンス化時のセキュリティ強度を超えるセキュリティ強度が要求された場合があります。
Details about the \(\mathbf{DRBG\_Generate}\) function are provided in [SP_800-90A].
\(\mathbf{DRBG\_Generate}\)関数の詳細は[SP_800-90A]に示されています。
The \(\mathbf{DRBG\_Generate}\) function is requested by an application using a \(\mathbf{DRBG\_Generate\_request}\):
\(\mathbf{DRBG\_Generate}\)関数は、アプリケーションが次の\(\mathbf{DRBG\_Generate\_request}\)を使って要求します。
As shown in Fig. 7, a \(\mathbf{DRBG\_Generate\_request}\) received by a DRBG results in the execution of the DRBG’s \(\mathbf{DRBG\_Generate}\) function, providing the input parameters for that function. The \(\mathbf{DRBG\_Generate}\) function generates the requested number of bits and returns the \(\mathit{status}\) of the process and (if there is no error) the newly generated bits.
図7に示すとおり、DRBGが\(\mathbf{DRBG\_Generate\_request}\)を受け取ると、DRBGの\(\mathbf{DRBG\_Generate}\)関数が実行され、その関数の入力パラメーターが渡されます。\(\mathbf{DRBG\_Generate}\)関数は要求された数のビットを生成し、処理の\(\mathit{status}\)と、エラーがない場合は新たに生成したビットを返します。
図7. DRBG_Generate_request。DRBGという箱の中にDRBG_Instantiate、DRBG_Generate、DRBG_Reseedがあり、DRBG_InstantiateとDRBG_Reseedは灰色で示されている。右のApplication(アプリケーション)からDRBG_GenerateへDRBG_Generate_requestという矢印が、DRBG_GenerateからApplicationへstatus, returned_bitsという矢印が向かう。
Fig. 7. DRBG_Generate_request
図7. DRBG_Generate_request
2.8.1.3. DRBG Reseed
2.8.1.3. DRBGの再シード
The reseeding of a DRBG instantiation is intended to insert additional randomness into that DRBG instantiation (e.g., to recover from a possible compromise or to provide prediction resistance). This is accomplished using the following function:9
DRBGインスタンス化の再シードは、そのDRBGインスタンス化に追加のランダム性を挿入することを目的とします(侵害された可能性がある状態からの回復や予測耐性の提供など)。これは次の関数を使って実行します。9
図8. DRBG_Reseed関数。state_handleと(Optional) additional_input(任意の追加入力)の2つの入力が矢印でDRBG_Reseedの箱に入る。箱からは1本の矢印が出力statusへ出る。
Fig. 8. \(\mathbf{DRBG\_Reseed}\) function
図8. \(\mathbf{DRBG\_Reseed}\)関数
A \(\mathbf{DRBG\_Reseed}\) function (shown in Fig. 8) is used to acquire at least \(s\) bits of fresh randomness for the DRBG instance indicated by the state handle (or the only instance if no state handle has been provided), where \(s\) is the security strength of the DRBG to be reseeded.10 In addition to the seed material provided from the DRBG’s randomness sources during reseeding, optional \(\mathit{additional\_input}\) may be incorporated into the reseed process. As discussed in Sec. 2.4.1, the capability for handling and using additional input is recommended. Details about the \(\mathbf{DRBG\_Reseed}\) function are provided in [SP_800-90A].
\(\mathbf{DRBG\_Reseed}\)関数(図8を参照)は、状態ハンドルが示すDRBGインスタンス(状態ハンドルが与えられていない場合は唯一のインスタンス)のために、新鮮な乱数を少なくとも\(s\)ビット取得するために使用します。ここで\(s\)は再シード対象のDRBGのセキュリティ強度です。10 再シード中にDRBGの乱数源から提供されるシード材料に加えて、任意の\(\mathit{additional\_input}\)を再シード処理に取り込んでもよいです。第2.4.1節で述べたとおり、追加入力を処理して使用する機能が推奨されます。\(\mathbf{DRBG\_Reseed}\)関数の詳細は[SP_800-90A]に示されています。
An indication of the \(\mathit{status}\) is returned.
\(\mathit{status}\)を示す情報を返します。
The \(\mathbf{DRBG\_Reseed}\) function is requested by an application using a \(\mathbf{DRBG\_Reseed\_request}\):
\(\mathbf{DRBG\_Reseed}\)関数は、アプリケーションが次の\(\mathbf{DRBG\_Reseed\_request}\)を使って要求します。
As shown in Fig. 9, a \(\mathbf{DRBG\_Reseed\_request}\) received by a DRBG results in the execution of the DRBG’s \(\mathbf{DRBG\_Reseed}\) function, providing the input parameters for that function. The \(\mathbf{DRBG\_Reseed}\) function then obtains \(\mathit{seed\_material}\) from a randomness source, reseeds the DRBG instantiation, and returns the \(\mathit{status}\) of the process to the application.
図9に示すとおり、DRBGが\(\mathbf{DRBG\_Reseed\_request}\)を受け取ると、DRBGの\(\mathbf{DRBG\_Reseed}\)関数が実行され、その関数の入力パラメーターが渡されます。\(\mathbf{DRBG\_Reseed}\)関数は乱数源から\(\mathit{seed\_material}\)を取得してDRBGのインスタンス化を再シードし、処理の\(\mathit{status}\)をアプリケーションに返します。
10 The value of \(s\) may be available in the DRBG’s internal state [SP_800-90A].
10 \(s\)の値はDRBGの内部状態から取得できる場合があります[SP_800-90A]。
図9. DRBG_Reseed_request。DRBGという箱の中にDRBG_Instantiate、DRBG_Generate、DRBG_Reseedがあり、DRBG_InstantiateとDRBG_Generateは灰色で示されている。右のApplication(アプリケーション)からDRBG_ReseedへDRBG_Reseed_requestという矢印が、DRBG_ReseedからApplicationへstatusという矢印が向かう。DRBG_Reseedから左のRandomness Source(s)(乱数源)へRandomness request(乱数要求)という矢印が、Randomness Source(s)からDRBG_Reseedへseed_materialという矢印が向かう。
Fig. 9. DRBG_Reseed_request
図9. DRBG_Reseed_request
2.8.1.4. Get_randomness_source_input Call
2.8.1.4. Get_randomness_source_input呼び出し
In [SP_800-90A], a Get_randomness_source_input call is used in the DRBG_Instantiate function and DRBG_Reseed function to indicate when a randomness source needs to be accessed to obtain seed material. SP 800-90C provides guidelines on how the Get_randomness_source_input call is to be implemented based on various situations (e.g., the randomness source or the RBG construction used). Sections 3.2.2, 4, 5, 6, and 7 provide instructions for obtaining input from a randomness source when the Get_randomness_source_input call is encountered in SP 800-90A.
[SP_800-90A]では、DRBG_Instantiate関数およびDRBG_Reseed関数でGet_randomness_source_input呼び出しを使用し、シード材料取得のため乱数源にアクセスする必要があることを示します。SP 800-90Cでは、乱数源や使用するRBG構成など状況に応じて、この呼び出しをどのように実装するか指針を示します。[SP_800-90A]のGet_randomness_source_input呼び出しに遭遇した際に乱数源から入力を取得する手順は、第3.2.2節、第4節、第5節、第6節、および第7節で説明します。
2.8.2. Interfacing With Entropy Sources
2.8.2. エントロピー源とのインターフェース
A single entropy source request may not be sufficient to obtain the entropy required for seeding and reseeding a DRBG or for providing input for the exclusive-or operation in an RBG3(XOR) construction (see Sec. 6.4.1). SP 800-90C uses the term \(\mathbf{Get\_entropy\_bitstring}\) to identify the process of obtaining the required entropy from one or more entropy sources. For convenience in describing the RBG constructions, this process is represented as a function whose input includes an indication of the amount of entropy that is needed from the entropy sources and whose output includes a status report on the success or failure of the process. If the process is successful, a bitstring containing the requested entropy is produced (see Fig. 10). The \(\mathbf{Get\_entropy\_bitstring}\) function is invoked herein as:
DRBGのシードおよび再シードに必要なエントロピー、またはRBG3(XOR)構成の排他的論理和演算への入力に必要なエントロピーを得るには、エントロピー源への1回の要求では不十分な場合があります(第6.4.1節を参照)。SP 800-90Cでは、1つ以上のエントロピー源から必要なエントロピーを取得する処理を\(\mathbf{Get\_entropy\_bitstring}\)という用語で表します。RBG構成を説明しやすくするため、この処理を関数として表します。その入力にはエントロピー源から必要とするエントロピー量の指定を含み、出力には処理の成功または失敗を示すステータス報告を含みます。処理が成功すれば、要求されたエントロピーを含むビット列が生成されます(図10を参照)。本書では\(\mathbf{Get\_entropy\_bitstring}\)関数を次のように呼び出します。
where \(\mathit{bits\_of\_entropy}\) is the amount of entropy requested for return in the \(\mathit{entropy\_bitstring}\), \(\mathit{counting\_method}\) is the method to be used for counting entropy in the entropy sources (see Sec. 2.3), \(\mathit{entropy\_source\_ID}\) is an optional parameter that indicates the specific entropy source to be used, and \(\mathit{status}\) indicates whether the request has been satisfied.
ここで、\(\mathit{bits\_of\_entropy}\)は\(\mathit{entropy\_bitstring}\)として返すよう要求するエントロピーの量、\(\mathit{counting\_method}\)はエントロピー源のエントロピーを数える方法(第2.3節を参照)、\(\mathit{entropy\_source\_ID}\)は使用する特定のエントロピー源を示す任意のパラメーター、\(\mathit{status}\)は要求が満たされたかどうかを示します。
図10. Get_entropy_bitstring関数。bits_of_entropy、counting_method、(Optional) entropy_source_ID(任意)の3つの入力が矢印でGet_entropy_bitstringの箱に入り、箱からは出力statusとentropy_bitstringへ2本の矢印が出る。箱の上にはEntropy Source(s)(エントロピー源)の箱がある。Get_entropy_bitstringからEntropy Source(s)へ上向きにGetEntropy (bits_of_entropy, counting_method, entropy_source_ID)という矢印が、Entropy Source(s)からGet_entropy_bitstringへ下向きにstatus, entropy_bitstringという矢印が向かう。
Fig. 10. \(\mathbf{Get\_entropy\_bitstring}\) function
図10. \(\mathbf{Get\_entropy\_bitstring}\)関数
The \(\mathbf{Get\_entropy\_bitstring}\) process requests entropy from any available validated entropy sources or the entropy source identified by \(\mathit{entropy\_source\_ID}\) (if present). Acquiring entropy from non-validated entropy sources is handled separately (e.g., by a different process) to avoid misuse. See Sec. 3.1 for additional discussion about the \(\mathbf{Get\_entropy\_bitstring}\) process.
\(\mathbf{Get\_entropy\_bitstring}\)処理は、利用可能な検証済みエントロピー源、または\(\mathit{entropy\_source\_ID}\)が指定されている場合はそのIDで示される源に、エントロピーを要求します。未検証エントロピー源からの取得は、誤用を避けるため別途(異なる処理などで)扱います。\(\mathbf{Get\_entropy\_bitstring}\)処理については第3.1節を参照してください。
2.8.3. Interfacing With an RBG3 Construction
2.8.3. RBG3構成とのインターフェース
An RBG3 construction requires functions to instantiate its DRBG (see Sec. 2.8.3.1) and request the generation of full-entropy bits (see Sec. 2.8.3.2). The functions needed to access the DRBG itself are provided in Sec. 2.8.1.
RBG3構成には、DRBGをインスタンス化する関数(第2.8.3.1節を参照)と、完全エントロピービットの生成を要求する関数(第2.8.3.2節を参照)が必要です。DRBG自体にアクセスする関数は第2.8.1節に示します。
2.8.3.1. Instantiating a DRBG Within an RBG3 Construction
2.8.3.1. RBG3構成内でのDRBGのインスタンス化
The security strength of the DRBG within an RBG3 construction shall be the highest security strength that can be supported by the DRBG design (see Sec. 6).
RBG3構成内のDRBGのセキュリティ強度は、DRBG設計でサポート可能な最大の強度でなければなりません(第6節を参照してください)。
The instantiate functions for the DRBG within the RBG3 constructions use the following functions:
RBG3構成内のDRBGのインスタンス化関数は、次の関数を使用する:
and
および
図11. RBG3のインスタンス化関数。(Optional) requested_security_strengthと(Optional) personalization_string(いずれも任意)の2つの入力が矢印で、RBG3(XOR)_DRBG_Instantiate or RBG3(RS)_DRBG_Instantiateと記された箱に入る。箱からは2本の矢印が出力statusとstate_handleへ出る。
Fig. 11. RBG3 instantiate function
図11. RBG3のインスタンス化関数
The instantiate function of the RBG3 construction (shown in Fig. 11) will result in the execution of the DRBG’s instantiate function (provided in Sec. 2.8.1.1). A \(\mathit{requested\_security\_strength}\) may optionally be provided as an input parameter to indicate the minimum security strength to be supported by the DRBG within the RBG3 construction. An optional but recommended \(\mathit{personalization\_string}\) (see Sec. 2.4.1) may be provided as an input parameter. If included as input to the RBG3 instantiation function, the \(\mathit{personalization\_string}\) is passed to the DRBG that is instantiated by the instantiate function (see Sec. 6.4.1.1 and 6.5.1.1).
RBG3構成のインスタンス化関数(図11を参照)を実行すると、DRBGのインスタンス化関数(第2.8.1.1節に記載)が実行されます。\(\mathit{requested\_security\_strength}\)を任意の入力パラメーターとして指定し、RBG3構成内のDRBGがサポートする最小セキュリティ強度を示してもよいです。任意だが推奨される\(\mathit{personalization\_string}\)(第2.4.1節を参照)も、入力パラメーターとして指定できます。RBG3インスタンス化関数への入力に含めた場合、\(\mathit{personalization\_string}\)はインスタンス化関数がインスタンス化するDRBGに渡されます(第6.4.1.1節および第6.5.1.1節を参照)。
If the returned status code indicates a success, a state handle may be returned to indicate the DRBG instance that is to be used by the construction (e.g., the state handle points to the internal state used by this instance of the DRBG within the RBG3 construction). If multiple instances of the DRBG are used (in addition to the DRBG instance used by the RBG3 construction), a separate state handle is returned for each instance. When provided, the state handle is used in subsequent calls to that RBG (e.g., during a call to the RBG3 generate function; see Sec. 2.8.3.2) or when accessing the DRBG directly (e.g., during a reseed of the DRBG; see Sec. 6.4.1.4). If the status code indicates an error (e.g., entropy is not currently available or the entropy source has failed), an invalid (e.g., \(\mathit{Null}\)) state handle is returned.
返されたステータスコードが成功を示す場合、構成で使用するDRBGインスタンスを示す状態ハンドルが返されることがあります(たとえば、状態ハンドルはRBG3構成内のこのDRBGインスタンスが使用する内部状態を指す)。RBG3構成が使用するDRBGインスタンスに加えて、複数のDRBGインスタンスを使用する場合、各インスタンスに対して個別の状態ハンドルを返します。状態ハンドルが返された場合、その後のRBG呼び出し(RBG3生成関数の呼び出しなど。第2.8.3.2節を参照)やDRBGへの直接アクセス(DRBGの再シードなど。第6.4.1.4節を参照)に使用します。ステータスコードがエラーを示す場合(エントロピーを現在取得できない、エントロピー源が障害を起こしたなど)、無効な状態ハンドル(\(\mathit{Null}\)など)を返します。
The instantiation of the DRBG within an RBG3(XOR) or RBG3(RS) construction is requested by an application using an \(\mathbf{Instantiate\_RBG3\_DRBG\_request}\):
アプリケーションは、次の\(\mathbf{Instantiate\_RBG3\_DRBG\_request}\)を使ってRBG3(XOR)構成またはRBG3(RS)構成内のDRBGのインスタンス化を要求します。
Both the \(\mathit{requested\_security\_strength}\) and a \(\mathit{personalization\_string}\) are optional in the \(\mathbf{Instantiate\_RBG3\_DRBG\_request}\). An \(\mathbf{Instantiate\_RBG3\_DRBG\_request}\) received by an RBG3 construction results in the execution of the DRBG’s instantiate function, as shown in Fig. 12.
\(\mathit{requested\_security\_strength}\)と\(\mathit{personalization\_string}\)は、\(\mathbf{Instantiate\_RBG3\_DRBG\_request}\)ではどちらも任意です。RBG3構成が\(\mathbf{Instantiate\_RBG3\_DRBG\_request}\)を受け取ると、図12に示すようにDRBGのインスタンス化関数が実行されます。
If no error is detected in the request, the \(\mathbf{Instantiate\_RBG3\_DRBG}\) function obtains \(\mathit{seed\_material}\) from the entropy source(s), instantiates the DRBG, and returns the \(\mathit{status}\) of the process and (possibly) a \(\mathit{state\_handle}\) for the internal state to the application.
要求でエラーが検出されなければ、\(\mathbf{Instantiate\_RBG3\_DRBG}\)関数はエントロピー源から\(\mathit{seed\_material}\)を取得してDRBGをインスタンス化し、処理の\(\mathit{status}\)と、場合によっては内部状態を示す\(\mathit{state\_handle}\)をアプリケーションに返します。
図12. RBG3(XOR)またはRBG3(RS)のインスタンス化要求。RBG3という箱の中に、Entropy Source(s)(エントロピー源)と、DRBG_Instantiate、DRBG_Generate、DRBG_Reseedを含むDRBGという箱があり、DRBG_GenerateとDRBG_Reseedは灰色で示されている。RBG3の外、右にあるApplication(アプリケーション)からDRBG_InstantiateへRBG3_Instantiate_requestという矢印が向かい、RBG3の外では実線、中では破線である。DRBG_InstantiateからApplicationへstatus, (state_handle)という矢印が向かい、同様にRBG3の中では破線、外では実線である。DRBG_InstantiateからEntropy Source(s)へEntropy request(エントロピー要求)という矢印が、Entropy Source(s)からDRBG_Instantiateへseed_materialという矢印が向かう。
Fig. 12. RBG3(XOR) or RBG3(RS) instantiation request
図12. RBG3(XOR)またはRBG3(RS)のインスタンス化要求
In the case of the RBG3 construction, the (optional) \(\mathit{requested\_security\_strength}\) parameter in the \(\mathbf{Instantiate\_RBG3\_DRBG\_request}\) should be interpreted as the minimum security strength that is required by the consuming application if entropy-source failures are undetected. Therefore, if the \(\mathit{requested\_security\_strength}\) parameter is provided as input, it is compared to the value of the highest security strength that can be supported by the DRBG. If the \(\mathit{requested\_security\_strength}\) exceeds the security strength that can be supported by the DRBG, then an error indication is returned as the \(\mathit{status}\) in response to the \(\mathbf{Instantiate\_RBG3\_DRBG\_request}\).
RBG3構成では、(任意の)\(\mathit{requested\_security\_strength}\)パラメーターが\(\mathbf{Instantiate\_RBG3\_DRBG\_request}\)にある場合、エントロピー源の障害が検出されないときに出力を利用するアプリケーションが必要とする最小セキュリティ強度として解釈するとよい。したがって、\(\mathit{requested\_security\_strength}\)パラメーターが入力として指定された場合、DRBGがサポート可能な最大セキュリティ強度の値と比較します。\(\mathit{requested\_security\_strength}\)がDRBGでサポート可能なセキュリティ強度を超える場合、エラーを示す情報を\(\mathit{status}\)として返し、\(\mathbf{Instantiate\_RBG3\_DRBG\_request}\)への応答とします。
If no error is detected in the request, the \(\mathbf{Instantiate\_RBG3\_DRBG}\) function obtains \(\mathit{seed\_material}\) from the entropy sources, instantiates the DRBG, and returns the \(\mathit{status}\) of the process and (possibly) a \(\mathit{state\_handle}\) for the internal state to the application.
要求でエラーが検出されなければ、\(\mathbf{Instantiate\_RBG3\_DRBG}\)関数はエントロピー源から\(\mathit{seed\_material}\)を取得してDRBGをインスタンス化し、処理の\(\mathit{status}\)と、場合によっては内部状態を示す\(\mathit{state\_handle}\)をアプリケーションに返します。
2.8.3.2. Generation Using an RBG3 Construction
2.8.3.2. RBG3構成を使用した生成
The RBG3(XOR) and RBG3(RS) generate function calls are essentially the same, but the function designs are very different (see Sec. 6.4 for the \(\mathbf{RBG3(XOR)\_Generate}\) function and Sec. 6.5 for the \(\mathbf{RBG3(RS)\_Generate}\) function):
RBG3(XOR)およびRBG3(RS)の生成関数呼び出しは基本的に同じですが、関数の設計は大きく異なる(\(\mathbf{RBG3(XOR)\_Generate}\)関数については第6.4節、\(\mathbf{RBG3(RS)\_Generate}\)関数については第6.5節を参照してください)。
and
および
図13. RBG3の生成関数。state_handle、requested_number_of_bits、(Optional) additional_input(任意の追加入力)の3つの入力が矢印で、RBG3(XOR)_Generate OR RBG3(RS)_Generateと記された箱に入る。箱からは2本の矢印が出力statusとreturned_bitsへ出る。
Fig. 13. RBG3 generate functions
図13. RBG3の生成関数
The RBG3 generate functions are requested to use the DRBG indicated by the \(\mathit{state\_handle}\) to generate the \(\mathit{requested\_number\_of\_bits}\) using any (optional) \(\mathit{additional\_input}\) provided. If the returned \(\mathit{status}\) code from the \(\mathbf{RBG3(XOR)\_Generate}\) or \(\mathbf{RBG3(RS)\_Generate}\) function indicates a success, a bitstring that contains the newly generated bits is also returned. If the status code indicates an error (e.g., the entropy source has failed), a \(\mathit{Null}\) bitstring is returned as the \(\mathit{returned\_bits}\).
RBG3の生成関数は、\(\mathit{state\_handle}\)が示すDRBGを使用して\(\mathit{requested\_number\_of\_bits}\)で示されるビット数を生成するよう要求され、その際に指定された\(\mathit{additional\_input}\)(任意)があればそれを用います。返された\(\mathit{status}\)コードについて、\(\mathbf{RBG3(XOR)\_Generate}\)関数または\(\mathbf{RBG3(RS)\_Generate}\)関数からのものが成功を示す場合、新たに生成したビットを含むビット列も返します。ステータスコードがエラーを示す場合(エントロピー源の障害など)、\(\mathit{Null}\)ビット列を\(\mathit{returned\_bits}\)として返します。
The generation of random bits by an RBG3 construction is requested using the following:
RBG3構成による乱数ビットの生成は、次の関数で要求します。
If a suitable \(\mathit{state\_handle}\) was provided during instantiation (e.g., returned in response to an \(\mathbf{Instantiate\_RBG3\_DRBG\_request}\) within an RBG3 instantiate function; see Sec. 2.8.3.1), it is included in the \(\mathbf{RBG3\_Generate\_request}\).
インスタンス化時に適切な\(\mathit{state\_handle}\)が与えられている場合(RBG3インスタンス化関数内の\(\mathbf{Instantiate\_RBG3\_DRBG\_request}\)への応答として返されたものなど。第2.8.3.1節を参照)、これを\(\mathbf{RBG3\_Generate\_request}\)に含めます。
図14. 一般化したRBG3生成処理。RBG3という箱の中に、Entropy Source(s)(エントロピー源)、DRBG_Instantiate(灰色)、DRBG_Generate、DRBG_Reseed?を含むDRBGという箱、(RBG3 generate process)(RBG3生成処理)と記された破線の箱がある。破線の箱はDRBG_GenerateとDRBG_Reseed?を含むDRBGの箱の下部を囲む。RBG3の外、右にあるApplication(アプリケーション)から破線の箱へRBG3_Generate_requestという矢印が、破線の箱からApplicationへstatus, returned_bitsという矢印が向かう。破線の箱からEntropy Source(s)へEntropy request(エントロピー要求)という矢印が、Entropy Source(s)から破線の箱へrandom bits(ランダムビット)という矢印が向かう。
Fig. 14. Generic RBG3 generation process
図14. 一般化したRBG3生成処理
As shown in Fig. 14, an RBG3 generate request received by an RBG3 construction results in the execution of the RBG’s generate function, providing the input parameters for that function. The entropy source is accessed, the requested number of bits are generated, and the \(\mathit{status}\) of the process and the newly generated bits are returned to the application. The RBG3 generate process for the RBG3(XOR) and RBG3(RS) construction are provided in Sec. 6.4 and 6.5, respectively.
図14に示すとおり、RBG3構成が生成要求を受け取ると、入力パラメーターを渡してRBGの生成関数が実行されます。エントロピー源にアクセスし、要求された数のビットを生成した後、処理の\(\mathit{status}\)と新たに生成したビットをアプリケーションに返します。RBG3(XOR)構成およびRBG3(RS)構成の生成処理は、それぞれ第6.4節および第6.5節に示します。
3. Accessing Entropy Source Output
3. エントロピー源の出力へのアクセス
The security provided by an RBG is based on the use of validated entropy sources. Section 3.1 discusses the use of the Get_entropy_bitstring process to request entropy from one or more entropy sources. Section 3.2 discusses the conditioning of the output of one or more entropy sources before further use by an RBG.
RBGが提供するセキュリティは、検証済みエントロピー源の使用に基づきます。第3.1節では、1つ以上のエントロピー源からエントロピーを要求するGet_entropy_bitstring処理について説明します。第3.2節では、RBGでさらに使用する前に、1つ以上のエントロピー源の出力をコンディショニングする方法について説明します。
3.1. Get_entropy_bitstring Process
3.1. Get_entropy_bitstring処理
The Get_entropy_bitstring process introduced in Sec. 2.8.2 obtains entropy from one or more validated entropy sources in whatever manner is required (e.g., polling the entropy sources, waiting for an entropy source to provide output, or extracting bits that contain entropy from a pool of collected bits). The method for counting entropy from one or more entropy sources is indicated as an input parameter. An optional input parameter (when used) indicates a particular entropy source that is to be used.
第2.8.2節で導入したGet_entropy_bitstring処理は、必要な方法(エントロピー源へのポーリング、出力提供までの待機、収集済みビットのプールからエントロピーを含むビットの抽出など)で1つ以上の検証済みエントロピー源からエントロピーを取得します。1つ以上のエントロピー源からのエントロピー算入方式は入力パラメーターで指定します。任意の入力パラメーターを指定した場合、使用する特定のエントロピー源を示します。
In many cases, the Get_entropy_bitstring process will need to query an entropy source (or a set of entropy sources) multiple times to obtain the amount of entropy requested. The details of the process are not specified in this document but are left to the developer to implement appropriately for the selected entropy sources. However, the behavior of the Get_entropy_bitstring process includes the following:
多くの場合、要求された量のエントロピーを得るため、Get_entropy_bitstring処理ではエントロピー源(または複数の源)に複数回問い合わせる必要があります。処理の詳細は本書で規定せず、選択したエントロピー源に応じて開発者が適切に実装します。ただし、Get_entropy_bitstring処理は次のように動作します。
1.The Get_entropy_bitstring process shall only be used to access one or more validated entropy sources. Any non-validated entropy sources shall be accessed by a separate process to avoid possible misuse.
1.Get_entropy_bitstring処理は、検証済みエントロピー源へのアクセスにのみ使用しなければなりません。未検証エントロピー源へのアクセスは、誤用の可能性を避けるため別の処理で行わなければなりません。
2.Each validated entropy source shall be independent of all other validated or non-validated entropy sources used by the RBG.
2.各検証済みエントロピー源は、RBGが使用する他のすべての検証済みまたは未検証エントロピー源から独立していなければなりません。
3.The output produced from multiple entropy-source calls to a single validated entropy source or by calls to multiple independent, validated entropy sources shall be concatenated into a single bitstring. The entropy in the bitstring is the sum of the entropy provided by the validated entropy sources that are to be credited for contributing entropy to the process. For Method 1 (see Sec. 2.3), only entropy contributed by one or more validated physical entropy sources is counted. For Method 2, the entropy from all validated entropy sources is counted.
3.単一の検証済みエントロピー源への複数回の呼び出し、または複数の独立した検証済みエントロピー源への呼び出しで得られた出力は、1つのビット列に連結しなければなりません。ビット列内のエントロピー量は、処理への寄与が算入される検証済みエントロピー源から提供されたエントロピー量の合計です。方式1(第2.3節を参照)では、1つ以上の検証済み物理エントロピー源が寄与したエントロピーのみを数えます。方式2では、すべての検証済みエントロピー源からのエントロピーを数えます。
4. If a failure is reported during the \(\mathbf{Get\_entropy\_bitstring}\) process by any physical or non-physical entropy source whose entropy is counted toward fulfilling an entropy request, the \(\mathbf{Get\_entropy\_bitstring}\) process shall behave as follows:11
4. エントロピー要求を満たす量として算入される物理または非物理エントロピー源のいずれかが、\(\mathbf{Get\_entropy\_bitstring}\)処理中に障害を報告した場合、\(\mathbf{Get\_entropy\_bitstring}\)処理は次のように動作しなければなりません。11
a. Method 1 is used for counting the entropy from one or more physical entropy sources:
a. 方式1では、1つ以上の物理エントロピー源からのエントロピーを次のように算入します。
1) If a physical entropy source reports a failure, the error shall be reported to the consuming application as soon as possible. Any entropy collected by the failed entropy source during the execution of the Get_entropy_bitstring process in which the error is reported shall not be used. Entropy provided by a “healthy” entropy source may be used if the entropy can be distinguished from the output of the failed entropy source. The failed entropy source shall not be accessed to obtain entropy until the condition that caused the failure has been corrected and operational tests have been successfully passed.
1)物理エントロピー源が障害を報告した場合、できるだけ早く利用側アプリケーションにエラーを報告しなければなりません。エラーを報告したGet_entropy_bitstring処理の実行中に、障害を起こしたエントロピー源が収集したエントロピーは使用してはなりません。「正常な」エントロピー源からのエントロピーは、障害を起こした源の出力と区別できる場合に使用してもよいです。障害の原因が是正され、運用試験に合格するまで、障害を起こしたエントロピー源にアクセスしてエントロピーを取得してはなりません。
If multiple physical entropy sources are used, the report shall identify the entropy source that reported the failure.
複数の物理エントロピー源を使用する場合、障害を報告したエントロピー源を報告で特定しなければなりません。
2) If a non-physical entropy source reports a failure, the failure should be reported to the consuming application along with a notification of the entropy source that failed. The RBG operation may continue.
2)非物理エントロピー源が障害を報告した場合、障害を報告したエントロピー源を知らせる通知とともに、利用側アプリケーションへ報告するとよいです。RBGの処理は継続してもよいです。
3) If all physical entropy sources report failures, the RBG operation shall be terminated (i.e., stopped). The RBG must not be returned to normal operation until at least one validated physical entropy source has had its failure corrected and its operational tests have been successfully passed. The output of other entropy sources that have not successfully passed operational tests shall not be used.
3)すべての物理エントロピー源が障害を報告した場合、RBGの処理を終了(停止)しなければなりません。少なくとも1つの検証済み物理エントロピー源について障害を是正し、運用試験に合格するまで、RBGを通常運転に戻してはなりません。運用試験に合格していない他のエントロピー源の出力を使用してはなりません。
4) If any physical entropy source is still “healthy” (e.g., the entropy source has not reported a failure), the RBG operations may continue using any healthy physical entropy source.
4)物理エントロピー源が1つでも「正常」(障害を報告していないなど)であれば、正常な物理エントロピー源を使用してRBGの処理を継続してもよいです。
b. Method 2 in Sec. 2.3 is used to count the entropy from one or more non-physical and/or physical entropy sources:
b. 第2.3節の方式2では、1つ以上の非物理および/または物理エントロピー源からのエントロピーを次のように算入します。
1) A failure from any entropy source shall be reported to the consuming application. If multiple entropy sources are used, the report shall identify the entropy source that reported the failure. This failed entropy source shall not be accessed to obtain entropy until the condition that caused the failure has been corrected and operational tests have been successfully passed.
1)いずれかのエントロピー源が障害を報告した場合、利用側アプリケーションに報告しなければなりません。複数のエントロピー源を使用する場合、障害を報告したエントロピー源を報告で特定しなければなりません。障害の原因が是正され、運用試験に合格するまで、障害を起こしたエントロピー源にアクセスしてエントロピーを取得してはなりません。
2) If all entropy sources have reported failures, the RBG operation shall be terminated. The RBG must not be returned to normal operation until the conditions that caused the failures have been corrected and operational tests have been successfully passed.
2)すべてのエントロピー源が障害を報告した場合、RBGの処理を終了しなければなりません。障害の原因が是正され、運用試験に合格するまで、RBGを通常運転に戻してはなりません。
3) If any physical or non-physical entropy source is still “healthy” (e.g., the entropy source has not reported a failure), RBG operations may continue using any healthy entropy sources.
3)物理または非物理エントロピー源が1つでも「正常」(障害を報告していないなど)であれば、正常なエントロピー源を使ってRBGの処理を継続してもよいです。
5.The Get_entropy_bitstring process shall not provide output for RBG operations unless the bitstring contains sufficient entropy to fulfill the entropy request.
5.エントロピー要求を満たすのに十分なエントロピーがビット列に含まれていない限り、Get_entropy_bitstring処理はRBGの処理に出力を提供してはなりません。
3.2. External Conditioning
3.2. 外部コンディショニング
Entropy bits produced by one or more entropy sources are required for seeding and reseeding the DRBG in the RBG constructions specified in this document. Whether or not entropy-source output was conditioned within a validated entropy source prior to output, the entropy provided by the validated entropy sources may need to be conditioned prior to subsequent use by the RBG. For example:
本書で規定するRBG構成では、DRBGのシードおよび再シードに1つ以上のエントロピー源が生成するエントロピービットが必要です。検証済みエントロピー源が出力前に内部でコンディショニングしているかどうかにかかわらず、エントロピー源から提供されたエントロピーは、RBGでさらに使用する前にコンディショニングが必要な場合があります。例を以下に示します。
•The entropy source(s) within an RBG2 or RBG3 construction (see Sec. 5 or 6, respectively) is used to seed and reseed its DRBG. The entropy source(s) may, for example, produce bitstrings that are too long for the specific DRBG implementation.
•RBG2またはRBG3構成内のエントロピー源(それぞれ第5節または第6節を参照)は、そのDRBGのシードおよび再シードに使用します。エントロピー源は、特定のDRBG実装で扱うには長すぎるビット列を生成する場合があります。
•Seed material with full entropy is required when the CTR_DRBG is implemented without a derivation function and the entropy source(s) is used for seeding and reseeding the DRBG. If the entropy source(s) does not provide full-entropy output, the output needs to be conditioned prior to subsequent use by the DRBG to obtain full-entropy input for the DRBG.
•CTR_DRBGを導出関数なしで実装し、エントロピー源をDRBGのシードおよび再シードに使用する場合は、完全エントロピーを持つシード材料が必要です。エントロピー源が完全エントロピーの出力を提供しない場合は、DRBGがその出力を以降に使用する前に、出力に条件付けを行って、DRBGへの完全エントロピーの入力を得る必要があります。
•When the root RBGC construction in a DRBG tree uses a full-entropy source as its initial randomness source (see Sec. 7), the output from the entropy source may need to be conditioned to provide a full-entropy bitstring for seeding and reseeding the root (i.e., the entropy source itself may not provide full-entropy output).
•DRBGツリーのルートRBGC構成が、完全エントロピー源を初期乱数源として使用する場合(第7節を参照)、ルートのシードおよび再シード用の完全エントロピーのビット列を得るために、エントロピー源の出力に条件付けが必要となる場合があります(すなわち、エントロピー源自体は完全エントロピーの出力を提供しない場合があります)。
•If both physical and non-physical entropy sources are used to provide seed material, the entropy within the concatenated bitstring produced by these sources may not be distributed uniformly throughout the bitstring.
•物理および非物理エントロピー源の両方をシード材料の提供に使用する場合、それらの源が生成する連結ビット列内でエントロピーが一様に分布しないことがあります。
Since this conditioning is performed outside of an entropy source, the output is said to be externally conditioned. The conditioning function operates on a bitstring that is produced by the \(\mathbf{Get\_entropy\_bitstring}\) process to produce an \(\mathit{entropy\_bitstring}\). Reasons to perform conditioning might include:
このコンディショニングはエントロピー源の外部で行うため、その出力は外部コンディショニングされたものと呼びます。コンディショニング関数は、\(\mathbf{Get\_entropy\_bitstring}\)処理で生成したビット列を処理して\(\mathit{entropy\_bitstring}\)を生成します。コンディショニングを行う理由としては、次のものがあります。
• Reducing the bias in the \(\mathit{entropy\_bitstring}\),
• \(\mathit{entropy\_bitstring}\)内の偏りを減らします。
• Distributing entropy uniformly across the \(\mathit{entropy\_bitstring}\),
• \(\mathit{entropy\_bitstring}\)全体にエントロピーを一様に分布させる。
• Reducing the length of the \(\mathit{entropy\_bitstring}\) and compressing the entropy into a smaller bitstring, and/or
• \(\mathit{entropy\_bitstring}\)の長さを短縮し、エントロピーをより短いビット列に圧縮する、および/または
•Ensuring the availability of full-entropy bits.
•完全エントロピービットを利用可能にします。
When external conditioning is performed, a vetted conditioning function listed in [SP_800-90B] shall be used. Additional vetted conditioning functions may be approved in the future (see [SP800_90WebSite]).
外部コンディショニングを行う場合、[SP_800-90B]に記載された審査済みコンディショニング関数を使用しなければなりません。今後、審査済みコンディショニング関数が追加で承認される場合があります([SP800_90WebSite]を参照してください)。
The conditioning functions operate on bitstrings that are obtained using the \(\mathbf{Get\_entropy\_bitstring}\) process (see Section 3.1) to obtain an \(\mathit{entropy\_bitstring}\) from one or more entropy sources.
コンディショニング関数は、\(\mathbf{Get\_entropy\_bitstring}\)処理(第3.1節を参照)を用いて得られたビット列を処理します。この処理は、1つ以上のエントロピー源から\(\mathit{entropy\_bitstring}\)を取得するためのものです。
The following format is used in Sec. 3.2.2 for a conditioning function call:
第3.2.2節では、コンディショニング関数を次の形式で呼び出します。
where the \(\mathit{input\_parameters}\) for the selected conditioning function are discussed in Sec. 3.2.1.2 and 3.2.1.3, and \(\mathit{conditioned\_output\_block}\) is the output returned by the conditioning function. The length of the \(\mathit{conditioned\_output\_block}\) is the length of the output block of the conditioning function used and indicated as \(\mathit{output\_len}\) in subsequent sections.
ここで、選択したコンディショニング関数の\(\mathit{input\_parameters}\)については第3.2.1.2節および第3.2.1.3節で説明し、\(\mathit{conditioned\_output\_block}\)はコンディショニング関数が返す出力です。\(\mathit{conditioned\_output\_block}\)の長さは、使用したコンディショニング関数の出力ブロック長であり、以降の節では\(\mathit{output\_len}\)で示します。
3.2.1.1. Keys Used in External Conditioning Functions
3.2.1.1. 外部コンディショニング関数で使用する鍵
The \(\mathbf{HMAC}\), \(\mathbf{CMAC}\), and \(\mathbf{CBC\text{-}MAC}\) vetted conditioning functions require the input of a \(\mathit{Key}\) of a specific length (\(\mathit{keylen}\)), depending on the conditioning function and its primitive. Unlike other cryptographic applications, keys used in these external conditioning functions do not require secrecy to accomplish their purpose, so they may be hard-coded, fixed, or all zeros.
\(\mathbf{HMAC}\)、\(\mathbf{CMAC}\)、および\(\mathbf{CBC\text{-}MAC}\)の審査済みコンディショニング関数は、\(\mathit{Key}\)の入力を必要とし、その長さ(\(\mathit{keylen}\))は関数とそのプリミティブに応じて定まります。他の暗号アプリケーションとは異なり、これらの外部コンディショニング関数で使用する鍵は目的を達成するうえで秘匿する必要がないため、ハードコード、固定値、または全ゼロ値でよい。
For the \(\mathbf{CMAC}\) and \(\mathbf{CBC\text{-}MAC}\) conditioning functions, the length of the key shall be an approved key length for the block cipher used (e.g., \(\mathit{keylen} = 128\), 192, or 256 bits for AES).
\(\mathbf{CMAC}\)および\(\mathbf{CBC\text{-}MAC}\)のコンディショニング関数では、鍵長は使用するブロック暗号で承認された鍵長でなければなりません(AESの\(\mathit{keylen} = 128\)、192、または256ビットなど)。
For the \(\mathbf{HMAC}\) conditioning function, the length of the key shall be equal to the length of the hash function’s output (i.e., \(\mathit{output\_len}\)).
\(\mathbf{HMAC}\)コンディショニング関数では、鍵長はハッシュ関数の出力長(すなわち\(\mathit{output\_len}\))と等しくなければなりません。
Table 2. Key lengths for the hash-based conditioning functions
表2. ハッシュ関数ベースのコンディショニング関数に用いる鍵長
| Hash Function | Length of the output (\(\mathrm{output\_len}\)) |
| and key (\(\mathrm{keylen}\)) | |
| SHA-256, SHA-512/256, SHA3-256 | 256 |
| SHA-384, SHA3-384 | 384 |
| SHA-512, SHA3-512 | 512 |
| ハッシュ関数 | 出力長(\(\mathrm{output\_len}\)) |
| および鍵長(\(\mathrm{keylen}\)) | |
| SHA-256、SHA-512/ | 256 |
| SHA-384、SHA3-384 | 384 |
| SHA-512、SHA3-512 | 512 |
Using randomly chosen keys (e.g., by obtaining bits directly from the entropy source and inserting them into the key or by providing entropy-source bits to a conditioning function with a fixed key to derive the new key) may provide some additional security in case the input is more predictable than expected. Any entropy used to randomize the key shall not be used for any other purpose.
ランダムに選んだ鍵を使用すると、入力が予想より予測しやすい場合にセキュリティを追加できることがあります(エントロピー源からビットを直接得て鍵に入れる方法や、固定鍵を用いるコンディショニング関数にエントロピー源のビットを渡して新しい鍵を導出する方法など)。鍵をランダム化するために使用したエントロピーは、他の目的に使用してはなりません。
3.2.1.2. Hash Function-Based Conditioning Functions
3.2.1.2. ハッシュ関数ベースのコンディショニング関数
Conditioning functions may be based on approved hash functions. One of the following calls shall be used for external conditioning when the conditioning function is based on a hash function:
コンディショニング関数には承認済みハッシュ関数を使用できます。ハッシュ関数ベースのコンディショニング関数で外部コンディショニングを行う場合、次のいずれかの呼び出しを使用しなければなりません。
1.Using an approved hash function (as specified in [FIPS_180] or [FIPS_202]) directly:
1.承認済みハッシュ関数([FIPS_180]または[FIPS_202]で規定)を直接使用します。
where the hash function operates on the \(\mathit{entropy\_bitstring}\) provided as input.
ここで、ハッシュ関数は入力として与えられた\(\mathit{entropy\_bitstring}\)を処理します。
2. Using \(\mathrm{HMAC}\) (as specified in [SP_800_224]) with an approved hash function:
2. 承認済みハッシュ関数を用いた\(\mathrm{HMAC}\)([SP_800_224]で規定)を使用します。
where \(\mathrm{HMAC}\) operates on the \(\mathit{entropy\_bitstring}\) using a \(\mathit{Key}\) that is determined as specified in Sec. 3.2.1.1.
ここで、\(\mathrm{HMAC}\)は、\(\mathit{entropy\_bitstring}\)を、第3.2.1.1節の規定に従って決定した\(\mathit{Key}\)を使用して処理します。
In both cases, the length of the conditioned output is equal to the length of the output block of the selected hash function (i.e., \(\mathit{output\_len}\)).
いずれの場合も、コンディショニング後の出力長は、選択したハッシュ関数の出力ブロック長(すなわち\(\mathit{output\_len}\))と等しい。
3. Using \(\mathbf{Hash\_df}\), as specified in SP 800-90A:
3. SP 800-90Aで規定される\(\mathbf{Hash\_df}\)を使用します。
where the derivation function operates on the \(\mathit{entropy\_bitstring}\) provided as input to produce a bitstring of \(\mathit{output\_len}\) bits.
ここで、導出関数は入力として与えられた\(\mathit{entropy\_bitstring}\)を処理し、\(\mathit{output\_len}\)ビットのビット列を生成します。
3.2.1.3. Block Cipher-Based Conditioning Functions
3.2.1.3. ブロック暗号ベースのコンディショニング関数
Conditioning functions may be based on approved block ciphers. TDEA shall not be used as the block cipher.
コンディショニング関数には承認済みブロック暗号を使用できます。ブロック暗号にTDEAを使用してはなりません。
For block-cipher-based conditioning functions, one of the following calls shall be used for external conditioning:
ブロック暗号ベースのコンディショニング関数で外部コンディショニングを行う場合、次のいずれかの呼び出しを使用しなければなりません。
1. Using \(\mathrm{CMAC}\) (as specified in [SP_800-38B]) with an approved block cipher:
1. 承認済みブロック暗号を用いた\(\mathrm{CMAC}\)([SP_800-38B]で規定)を使用します。
where \(\mathrm{CMAC}\) operates on the \(\mathit{entropy\_bitstring}\) using a \(\mathit{Key}\) that is determined as specified in Sec. 3.2.1.1.
ここで、\(\mathrm{CMAC}\)は、\(\mathit{entropy\_bitstring}\)を、第3.2.1.1節の規定に従って決定した\(\mathit{Key}\)を使用して処理します。
2. Using \(\mathrm{CBC\text{-}MAC}\) (specified in [SP_800-90B]) with an approved block cipher:
2. 承認済みブロック暗号を用いた\(\mathrm{CBC\text{-}MAC}\)([SP_800-90B]で規定)を使用します。
where \(\mathrm{CBC\text{-}MAC}\) operates on the \(\mathit{entropy\_bitstring}\) using a \(\mathit{Key}\) that is determined as specified in Sec. 3.2.1.1.
ここで、\(\mathrm{CBC\text{-}MAC}\)は、\(\mathit{entropy\_bitstring}\)を、第3.2.1.1節の規定に従って決定した\(\mathit{Key}\)を使用して処理します。
\(\mathrm{CBC\text{-}MAC}\) shall only be used as an external conditioning function under the following conditions:
\(\mathrm{CBC\text{-}MAC}\)を外部コンディショニング関数として使用できるのは、次の条件を満たす場合に限ります。
1. The length of the input is an integer that is a multiple of the size of the block cipher (e.g., a multiple of 128 bits for AES). No padding is done by \(\mathrm{CBC\text{-}MAC}\) itself.12
1. 入力長はブロック暗号のブロックサイズの整数倍です(AESでは128ビットの整数倍など)。\(\mathrm{CBC\text{-}MAC}\)自体はパディングを行いません。12
2. If the \(\mathrm{CBC\text{-}MAC}\) conditioning function is used for the external conditioning of an entropy source output for \(\mathrm{CTR\_DRBG}\) instantiation or reseeding:
2. \(\mathrm{CBC\text{-}MAC}\)コンディショニング関数を、\(\mathrm{CTR\_DRBG}\)のインスタンス化または再シードに用いるエントロピー源の出力の外部コンディショニングに使用する場合は、次の条件も満たします。
•A personalization string shall not be used during instantiation.
•インスタンス化時にパーソナライゼーション文字列を使用してはなりません。
•Additional input shall not be used during the reseeding of the CTR_DRBG but may be used during the generate process.
•CTR_DRBGの再シード時に追加入力を使用してはなりません。ただし、生成処理では使用してもよいです。
CBC-MAC is not approved for any use other than in an RBG.
CBC-MACはRBG内での使用以外、いかなる用途にも承認されていません。
3. Using the \(\mathbf{Block\_cipher\_df}\) as specified in [SP_800-90A] with an approved block cipher:
3. 承認済みブロック暗号を用い、[SP_800-90A]で規定される\(\mathbf{Block\_cipher\_df}\)を使用します。
where \(\mathbf{Block\_cipher\_df}\) operates on the \(\mathit{entropy\_bitstring}\) using a key that is specified within the function, and the \(\mathit{block\_length}\) is defined for the block cipher (e.g., 128 for AES).
ここで、\(\mathbf{Block\_cipher\_df}\)は、関数内で指定された鍵を使用して\(\mathit{entropy\_bitstring}\)を処理します。\(\mathit{block\_length}\)はブロック暗号ごとに定められています(AESでは128など)。
In all three cases, the length of the conditioned output is equal to the length of the output block (e.g., 128 bits for AES).
3つの方式すべてで、コンディショニング後の出力長は出力ブロック長と等しい(AESでは128ビットなど)。
3.2.2. Using a Vetted Conditioning Function
3.2.2. 審査済みコンディショニング関数の使用
There are several cases in which the use of an external conditioning function is required to prepare the entropy-source output for use by a DRBG mechanism. Either the procedure in Section 3.2.2.1 or 3.2.2.2 shall be used for external conditioning. The procedure in Section 3.2.2.1 obtains entropy from one or more entropy sources and subsequently processes it using an external conditioning function when full-entropy output is not required from the conditioning function (e.g., the conditioning function is used to compress the entropy into a shorter bitstring or to distribute the entropy across the output). Section 3.2.2.2 provides a procedure for obtaining full entropy from the entropy source(s) when needed. When full entropy is not required, either procedure may be used.
DRBGメカニズムで使用するためにエントロピー源の出力を準備する際、外部コンディショニング関数が必要となる場合があります。外部コンディショニングには、第3.2.2.1節または第3.2.2.2節のいずれかの手順を使用しなければなりません。第3.2.2.1節の手順では、1つ以上のエントロピー源からエントロピーを取得し、コンディショニング関数の出力に完全エントロピーが不要な場合(エントロピーをより短いビット列に圧縮する、または出力全体に分布させるなど)に外部コンディショニング関数で処理します。第3.2.2.2節の手順では、必要な場合にエントロピー源から完全エントロピーを得ます。完全エントロピーが不要な場合は、どちらの手順を使用してもよいです。
3.2.2.1. External Conditioning When Full Entropy is Not Required
3.2.2.1. 完全エントロピーが不要な場合の外部コンディショニング
The \(\mathbf{Get\_conditioned\_input}\) procedure specified below iteratively requests entropy from the \(\mathbf{Get\_entropy\_bitstring}\) process (represented as a \(\mathbf{Get\_entropy\_bitstring}\) procedure; see Sec. 2.8.2 and 3.1) and distributes the entropy in the newly acquired \(\mathit{entropy\_bitstring}\) across the conditioning function’s output block. The output of the \(\mathbf{Get\_conditioned\_input}\) procedure is the concatenation of the conditioning function output blocks. The entire output of the
以下に示す\(\mathbf{Get\_conditioned\_input}\)手順は、\(\mathbf{Get\_entropy\_bitstring}\)処理(\(\mathbf{Get\_entropy\_bitstring}\)手順として表します。第2.8.2節および第3.1節を参照)に繰り返しエントロピーを要求し、新たに取得した\(\mathit{entropy\_bitstring}\)内のエントロピーをコンディショニング関数の出力ブロック全体に分布させる。\(\mathbf{Get\_conditioned\_input}\)手順の出力は、コンディショニング関数の出力ブロックを連結したものです。この手順の出力全体は
12 Any padding required could be done before submitting the \(\mathit{entropy\_bitstring}\) to the CBC-MAC function.
12 CBC-MAC関数へ\(\mathit{entropy\_bitstring}\)を渡す前に、必要なパディングを行ってもよいです。
\(\mathbf{Get\_conditioned\_input}\) procedure shall be provided as input to the DRBG mechanism (i.e., the output of the \(\mathbf{Get\_conditioned\_input}\) function shall not be truncated).
\(\mathbf{Get\_conditioned\_input}\)手順の出力はDRBGメカニズムへの入力として与えなければなりません(すなわち、\(\mathbf{Get\_conditioned\_input}\)関数の出力を切り詰めてはならない)。
Let \(\mathit{output\_len}\) be the length of the conditioning function’s output block.
\(\mathit{output\_len}\)をコンディショニング関数の出力ブロック長とします。
\(\mathbf{Get\_conditioned\_input}\):
\(\mathbf{Get\_conditioned\_input}\):
Input:
入力:
1. \(n\): The amount of entropy to be obtained.
1. \(n\):取得するエントロピー量。
2. \(\mathit{counting\_method}\): The counting method to be used (i.e., either Method 113 or Method 2,14 as described in Sec. 2.3).
2. \(\mathit{counting\_method}\):使用する算入方式(すなわち、第2.3節に記載の方式113または方式214)。
3. \(\mathit{target\_entropy\_source}\): An optional parameter that indicates the specific entropy source to be queried. If the \(\mathit{target\_entropy\_source}\) is not indicated, output is to be obtained from any validated entropy sources producing output that have not reported a failure.
3. \(\mathit{target\_entropy\_source}\):問い合わせる特定のエントロピー源を示す任意パラメーター。\(\mathit{target\_entropy\_source}\)を指定しない場合、障害を報告しておらず、出力を提供している任意の検証済みエントロピー源から出力を取得します。
Output:
出力:
1. \(\mathit{status}\): The status returned from the \(\mathbf{Get\_conditioned\_input}\) process.
1. \(\mathit{status}\):\(\mathbf{Get\_conditioned\_input}\)処理が返すステータス。
2. \(\mathit{Conditioned\_entropy\_bitstring}\): A bitstring containing conditioned entropy or the \(\mathit{Null}\) string.
2. \(\mathit{Conditioned\_entropy\_bitstring}\):コンディショニング済みエントロピーを含むビット列、または\(\mathit{Null}\)文字列。
Process:
処理:
1. \(v = \lceil n/\mathit{output\_len} \rceil\).
1. \(v = \lceil n/\mathit{output\_len} \rceil\)。
2. \(w = \lceil n/v \rceil\).
2. \(w = \lceil n/v \rceil\)。
3. \(\mathit{Conditioned\_entropy\_bitstring}\) = the \(\mathit{Null}\) string.
3. \(\mathit{Conditioned\_entropy\_bitstring}\) = \(\mathit{Null}\)文字列。
4. For \(i = 1, \ldots, v\)
4. \(i = 1, \ldots, v\)について繰り返します。
4.1 \((\mathit{status}, \mathit{entropy\_bitstring}) = \mathbf{Get\_entropy\_bitstring}(w, \mathit{counting\_method}, \mathit{target\_entropy\_source})\).
4.1 \((\mathit{status}, \mathit{entropy\_bitstring}) = \mathbf{Get\_entropy\_bitstring}(w, \mathit{counting\_method}, \mathit{target\_entropy\_source})\)。
4.2 If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Null})\).
4.2 \((\mathit{status} \ne \mathrm{SUCCESS})\)の場合、\((\mathit{status}, \mathit{Null})\)を返します。
4.3 \(\mathit{conditioned\_output\_block} = \mathbf{Conditioning\_function}(\mathit{input\_parameters})\).
4.3 \(\mathit{conditioned\_output\_block} = \mathbf{Conditioning\_function}(\mathit{input\_parameters})\)。
4.4 \(\mathit{Conditioned\_entropy\_bitstring} = \mathit{Conditioned\_entropy\_bitstring} \parallel \mathit{conditioned\_output\_block}\).
4.4 \(\mathit{Conditioned\_entropy\_bitstring} = \mathit{Conditioned\_entropy\_bitstring} \parallel \mathit{conditioned\_output\_block}\)。
5. Return \((\mathrm{SUCCESS}, \mathit{Conditioned\_entropy\_bitstring})\).
5. \((\mathrm{SUCCESS}, \mathit{Conditioned\_entropy\_bitstring})\)を返します。
Step 1 determines the number of output blocks (\(v\)) required to hold the requested amount of entropy.
手順1では、要求されたエントロピー量を格納するために必要な出力ブロック数(\(v\))を決定します。
Step 2 determines the amount of entropy (\(w\)) that will be requested for each of the \(v\) output blocks.
手順2では、要求するエントロピー量(\(w\))を、\(v\)個の出力ブロックのそれぞれについて決定します。
Step 3 sets the bitstring into which conditioned output will be collected (i.e., \(\mathit{Conditioned\_entropy\_bitstring}\)) to the \(\mathit{Null}\) string.
手順3では、コンディショニング後の出力を格納するビット列(すなわち\(\mathit{Conditioned\_entropy\_bitstring}\))を\(\mathit{Null}\)文字列に設定します。
Step 4 is iterated \(v\) times to obtain and condition the requested amount of entropy for each output block of the conditioning function.
手順4を\(v\)回繰り返し、コンディショニング関数の各出力ブロックに要求された量のエントロピーを取得してコンディショニングします。
• Step 4.1 requests \(w\) bits of entropy from the entropy sources using the \(\mathbf{Get\_entropy\_bitstring}\) call (see Sec. 2.8.2 and 3.1) and indicates the method to be used for counting entropy (i.e., Method 115 or Method 216 in Sec. 2.3) and (if provided as input) the only entropy source to be used (indicated by the \(\mathit{target\_entropy\_source}\) input parameter).
• 手順4.1では、\(w\)ビットのエントロピーを、\(\mathbf{Get\_entropy\_bitstring}\)呼び出し(第2.8.2節および第3.1節を参照)を使用してエントロピー源に要求します。また、エントロピーの算入に用いる方式(すなわち第2.3節の方式115または方式216)と、入力として与えられている場合は使用する唯一のエントロピー源(\(\mathit{target\_entropy\_source}\)入力パラメーターで示す)を指定します。
• Step 4.2 checks whether the \(\mathit{status}\) returned in step 4.1 indicated a success. If the \(\mathit{status}\) did not indicate a success, the \(\mathit{status}\) is returned with a \(\mathit{Null}\) string as the \(\mathit{Conditioned\_entropy\_bitstring}\).
• 手順4.2では、手順4.1が返した\(\mathit{status}\)が成功を示したか確認します。\(\mathit{status}\)が成功を示さなかった場合、その\(\mathit{status}\)を、\(\mathit{Null}\)文字列を\(\mathit{Conditioned\_entropy\_bitstring}\)として添えて返します。
• Step 4.3 invokes the conditioning function for processing the \(\mathit{entropy\_bitstring}\) obtained from step 4.1 to distribute the entropy throughout the conditioning function’s output block. The \(\mathit{input\_parameters}\) for the selected \(\mathbf{Conditioning\_function}\) are specified in Sec. 3.2.1.2 and 3.2.1.3 or at [SP800_90WebSite], depending on the conditioning function used.
• 手順4.3では、コンディショニング関数を呼び出して手順4.1で得た\(\mathit{entropy\_bitstring}\)を処理し、エントロピーをコンディショニング関数の出力ブロック全体に分布させる。\(\mathit{input\_parameters}\)は、選択した\(\mathbf{Conditioning\_function}\)について、使用するコンディショニング関数に応じて、第3.2.1.2節および第3.2.1.3節、または[SP800_90WebSite]で規定します。
• Step 4.4 concatenates the \(\mathit{conditioned\_output\_block}\) from step 4.3 to the \(\mathit{Conditioned\_entropy\_bitstring}\).
• 手順4.4では、手順4.3で得た\(\mathit{conditioned\_output\_block}\)を\(\mathit{Conditioned\_entropy\_bitstring}\)に連結します。
• If all of the requested entropy has not been obtained and conditioned, then go to step 4.1 with an updated value of \(v\).
• 要求されたエントロピーがすべて取得・コンディショニングされていない場合は、\(v\)の値を更新して手順4.1に戻ります。
Step 5 returns a \(\mathit{status}\) of SUCCESS and the value of \(\mathit{Conditioned\_entropy\_bitstring}\).
手順5では、\(\mathit{status}\)としてSUCCESSを返し、あわせて\(\mathit{Conditioned\_entropy\_bitstring}\)の値を返します。
3.2.2.2. Conditioning Function to Obtain Full-Entropy Bitstrings
3.2.2.2. 完全エントロピーのビット列を得るためのコンディショニング関数
The \(\mathbf{Get\_conditioned\_full\_entropy\_input}\) procedure specified below produces a bitstring with full entropy using a vetted conditioning function whenever a bitstring with full entropy is required. This process is unnecessary if full-entropy output is provided by the entropy sources.
以下に示す\(\mathbf{Get\_conditioned\_full\_entropy\_input}\)手順は、完全エントロピーのビット列が必要な場合、審査済みコンディショニング関数を用いて完全エントロピーのビット列を生成します。エントロピー源が完全エントロピー出力を提供する場合、この処理は不要です。
The approach used by this procedure is to acquire sufficient entropy from the entropy sources to iteratively produce \(\mathit{output\_len}\) bits with full entropy in the conditioning function’s output block, where \(\mathit{output\_len}\) is the length of the output block. The amount of entropy required for each use of the conditioning function is \(\mathit{output\_len} + 64\) bits (see item 11 in Sec. 2.6). This process is repeated until the requested number of full-entropy bits has been produced.
この手順では、エントロピー源から十分なエントロピーを取得し、完全エントロピーを持つ\(\mathit{output\_len}\)ビットをコンディショニング関数の出力ブロック内に反復して生成します。ここで\(\mathit{output\_len}\)は出力ブロックの長さです。コンディショニング関数を1回使用するごとに必要なエントロピー量は\(\mathit{output\_len} + 64\)ビットです(第2.6節の項目11を参照)。要求された数の完全エントロピービットが生成されるまで、この処理を繰り返します。
The \(\mathbf{Get\_conditioned\_full\_entropy\_input}\) procedure obtains entropy from either 1) a designated entropy source (if a specific entropy source is identified as the \(\mathit{target\_entropy\_source}\)) or 2) any available entropy source using the \(\mathbf{Get\_entropy\_bitstring}\) process (represented as a \(\mathbf{Get\_entropy\_bitstring}\) procedure; see Sec. 2.8.2 and 3.1) and conditions the newly acquired \(\mathit{entropy\_bitstring}\) to provide an \(n\)-bit string with full entropy.
\(\mathbf{Get\_conditioned\_full\_entropy\_input}\)手順では、1)指定されたエントロピー源(特定のエントロピー源が\(\mathit{target\_entropy\_source}\)として指定されている場合)、または2)\(\mathbf{Get\_entropy\_bitstring}\)処理(\(\mathbf{Get\_entropy\_bitstring}\)手順として表します。第2.8.2節および第3.1節を参照)を用いて利用可能な任意のエントロピー源からエントロピーを取得し、新たに取得した\(\mathit{entropy\_bitstring}\)をコンディショニングして、完全エントロピーを持つ\(n\)ビット文字列を生成します。
\(\mathbf{Get\_conditioned\_full\_entropy\_input}\):
\(\mathbf{Get\_conditioned\_full\_entropy\_input}\):
Input:
入力:
1. \(n\): The amount of entropy to be obtained.
1. \(n\):取得するエントロピー量。
2. \(\mathit{counting\_method}\): The counting method to be used (i.e., either Method 1 or Method 2, as described in Sec. 2.3).
2. \(\mathit{counting\_method}\):使用する算入方式(すなわち、第2.3節に記載の方式1または方式2のいずれか)。
3. \(\mathit{target\_entropy\_source}\): An optional parameter that indicates the specific entropy source to be queried. If the \(\mathit{target\_entropy\_source}\) is not indicated, output is to be obtained from any validated entropy source producing output that has not reported a failure.
3. \(\mathit{target\_entropy\_source}\):問い合わせる特定のエントロピー源を示す任意パラメーター。\(\mathit{target\_entropy\_source}\)を指定しない場合、障害を報告していない検証済みエントロピー源のうち、出力を生成している任意のものから出力を取得します。
Output:
出力:
1. \(\mathit{status}\): The status returned from the \(\mathbf{Get\_conditioned\_full\_entropy\_input}\) process.
1. \(\mathit{status}\):\(\mathbf{Get\_conditioned\_full\_entropy\_input}\)処理が返すステータス。
2. \(\mathit{Full\_entropy\_bitstring}\): An \(n\)-bit string with full entropy or the \(\mathit{Null}\) string.
2. \(\mathit{Full\_entropy\_bitstring}\):完全エントロピーを持つ\(n\)ビット文字列、または\(\mathit{Null}\)文字列。
Process:
処理:
1. \(\mathit{temp} = \text{the } \mathit{Null} \text{ string}\).
1. \(\mathit{temp} = \text{} \mathit{Null} \text{文字列}\)。
2. \(\mathit{ctr} = 0\).
2. \(\mathit{ctr} = 0\)。
3. While \(\mathit{ctr} < n\), do
3. \(\mathit{ctr} < n\)の間、以下を実行します。
3.1 \((\mathit{status}, \mathit{entropy\_bitstring}) = \mathbf{Get\_entropy\_bitstring}(\mathit{output\_len} + 64, \mathit{counting\_method}, \mathit{target\_entropy\_source})\).
3.1 \((\mathit{status}, \mathit{entropy\_bitstring}) = \mathbf{Get\_entropy\_bitstring}(\mathit{output\_len} + 64, \mathit{counting\_method}, \mathit{target\_entropy\_source})\)。
3.2 If (\(\mathit{status} \ne \mathrm{SUCCESS}\)), then return \((\mathit{status}, \mathit{Null})\).
3.2 (\(\mathit{status} \ne \mathrm{SUCCESS}\))の場合、\((\mathit{status}, \mathit{Null})\)を返します。
3.3 \(\mathit{conditioned\_output\_block} = \mathbf{Conditioning\_function}(\mathit{input\_parameters})\).
3.3 \(\mathit{conditioned\_output\_block} = \mathbf{Conditioning\_function}(\mathit{input\_parameters})\)。
3.4 \(\mathit{temp} = \mathit{temp} \parallel \mathit{conditioned\_output\_block}\).
3.4 \(\mathit{temp} = \mathit{temp} \parallel \mathit{conditioned\_output\_block}\)。
3.5 \(\mathit{ctr} = \mathit{ctr} + \mathit{output\_len}\).
3.5 \(\mathit{ctr} = \mathit{ctr} + \mathit{output\_len}\)。
4. \(\mathit{Full\_entropy\_bitstring} = \mathbf{leftmost}(\mathit{temp}, n)\).
4. \(\mathit{Full\_entropy\_bitstring} = \mathbf{leftmost}(\mathit{temp}, n)\)。
5. Return \((\mathrm{SUCCESS}, \mathit{Full\_entropy\_bitstring})\).
5. \((\mathrm{SUCCESS}, \mathit{Full\_entropy\_bitstring})\)を返します。
Steps 1 and 2 initialize the temporary bitstring (\(\mathit{temp}\)) for storing the full-entropy bitstring being assembled and the counter (\(\mathit{ctr}\)) that counts the number of full-entropy bits produced.
手順1と2では、組み立て中の完全エントロピー・ビット列を格納する一時ビット列(\(\mathit{temp}\))と、生成した完全エントロピービット数を数えるカウンター(\(\mathit{ctr}\))を初期化します。
Step 3 obtains and processes the entropy for each iteration.
手順3では、各反復でエントロピーを取得して処理します。
• Step 3.1 requests \(\mathit{output\_len} + 64\) bits of entropy from the validated entropy sources using the indicated method (i.e., Method 1 or Method 2) for counting entropy and (if present)
• 手順3.1では、検証済みエントロピー源に\(\mathit{output\_len} + 64\)ビットのエントロピーを要求します。その際、指示されたエントロピー算入方式(方式1または方式2)を用い、(指定されている場合は)
using only the entropy source identified as the \(\mathit{target\_entropy\_source}\). If the entropy source to be used is not identified, the entropy is to be obtained from all available entropy sources that have not reported a failure.
\(\mathit{target\_entropy\_source}\)で特定されたエントロピー源のみを使用します。使用するエントロピー源が特定されていない場合、障害を報告していない利用可能なすべてのエントロピー源からエントロピーを取得します。
• Step 3.2 checks whether the \(\mathit{status}\) returned in step 3.1 indicated a success. If the \(\mathit{status}\) did not indicate a success, the \(\mathit{status}\) is returned along with a \(\mathit{Null}\) bitstring as the \(\mathit{Full\_entropy\_bitstring}\).
• 手順3.2では、手順3.1から返された\(\mathit{status}\)が成功を示すか確認します。\(\mathit{status}\)が成功を示していなければ、その\(\mathit{status}\)とともに\(\mathit{Null}\)ビット列を\(\mathit{Full\_entropy\_bitstring}\)として返します。
• Step 3.3 invokes the conditioning function for processing the \(\mathit{entropy\_bitstring}\) obtained from step 3.1. The \(\mathit{input\_parameters}\) for the selected \(\mathbf{Conditioning\_function}\) are specified in Sec. 3.2.1.2 or 3.2.1.3 or at [SP800_90WebSite], depending on the conditioning function used.
• 手順3.3では、手順3.1で得た\(\mathit{entropy\_bitstring}\)を処理するため、コンディショニング関数を呼び出します。\(\mathit{input\_parameters}\)は、選択した\(\mathbf{Conditioning\_function}\)に対するものであり、使用するコンディショニング関数に応じて、第3.2.1.2節、第3.2.1.3節、または[SP800_90WebSite]で規定します。
• Step 3.4 concatenates the \(\mathit{conditioned\_output\_block}\) received in step 3.3 to the temporary bitstring (\(\mathit{temp}\)).
• 手順3.4では、手順3.3で得た\(\mathit{conditioned\_output\_block}\)を一時ビット列(\(\mathit{temp}\))に連結します。
•Step 3.5 increments the counter for the number of full-entropy bits that have been produced so far.
•手順3.5では、これまでに生成した完全エントロピービット数を数えるカウンターを増分します。
• If less than \(n\) full-entropy bits have been produced, repeat the process starting at step 3.1.
• 生成した完全エントロピービットが\(n\)ビット未満の場合、手順3.1から処理を繰り返します。
Step 4 truncates the full-entropy bitstring to \(n\) bits.
手順4では、完全エントロピー・ビット列を\(n\)ビットに切り詰めます。
• Step 5 returns an \(n\)-bit full-entropy bitstring as the \(\mathit{Full\_entropy\_bitstring}\).
• 手順5では、\(n\)ビットの完全エントロピー・ビット列を\(\mathit{Full\_entropy\_bitstring}\)として返します。
4. RBG1 Construction Based on RBGs With Physical Entropy Sources
4. 物理エントロピー源を持つRBGに基づくRBG1構成
An RBG1 construction provides a source of cryptographic random bits from a device that has no internal randomness source. Its security depends entirely on its DRBG being instantiated securely from an RBG that resides outside of the device and has access to a physical entropy source.
RBG1構成は、内部乱数源を持たないデバイスに暗号用乱数ビット源を提供します。そのセキュリティは、デバイス外部にあり、物理エントロピー源へアクセスできるRBGから、DRBGを安全にインスタンス化することに全面的に依存します。
The DRBG in an RBG1 construction is instantiated (i.e., seeded) only once using either an RBG2(P) construction (see Sec. 5), an RBG3 construction (see Sec. 6), or (under certain conditions) the root of an RBGC tree (see Sec. 7). Since a randomness source is not available after DRBG instantiation, the DRBG within an RBG1 construction cannot be reseeded (e.g., prediction resistance and recovery from a compromise cannot be provided).
RBG1構成内のDRBGは、RBG2(P)構成(第5節を参照)、RBG3構成(第6節を参照)、または一定の条件下でRBGCツリーのルート(第7節を参照)のいずれかを用いて、一度だけインスタンス化(シードを設定)します。DRBGのインスタンス化後は乱数源を利用できないため、RBG1構成内のDRBGは再シードできません(たとえば予測耐性や侵害からの回復を提供できません)。
An RBG1 construction may be useful for constrained devices in which an entropy source cannot be implemented or in any device in which access to a suitable source of randomness is not available after instantiation. Since the DRBG within an RBG1 construction cannot be reseeded, the use of the DRBG is limited to the DRBG’s seedlife (see [SP_800-90A]).
RBG1構成は、エントロピー源を実装できない制約デバイスや、インスタンス化後に適切な乱数源へアクセスできないデバイスで有用な場合があります。RBG1構成内のDRBGは再シードできないため、使用期間はDRBGのseedlife(シード有効期間)に限られます([SP_800-90A]を参照してください)。
Optionally, subordinate DRBGs (i.e., sub-DRBGs) may be implemented for implementations that use flash memory for the internal state (e.g., when the number of write operations to the memory is limited, resulting in short device lifetimes) or when there is a need to use different DRBG instantiations for different purposes (see Sec. 4.2).
任意で、内部状態にフラッシュメモリーを使う実装(書き込み回数の制限によりデバイス寿命が短くなる場合など)や、用途ごとに異なるDRBGインスタンスを使う必要がある実装では、下位DRBG(sub-DRBG)を実装してもよいです(第4.2節を参照してください)。
As shown in Fig. 15, an RBG1 construction consists of a DRBG contained within a DRBG security boundary in one cryptographic module and an RBG (serving as a randomness source) contained within a separate cryptographic module from that of the RBG1 construction. For convenience and clarity, the DRBG within the RBG1 construction will sometimes be referred to as \(\mathrm{DRBG}_1\). The required health tests are not shown in the figure.
図15に示すとおり、RBG1構成は、ある暗号モジュール内のDRBGセキュリティ境界に含まれるDRBGと、RBG1構成とは別の暗号モジュール内にあるRBG(乱数源として機能する)で構成されます。便宜上、また明確にするため、RBG1構成内のDRBGを\(\mathrm{DRBG}_1\)と呼ぶことがあります。必須のヘルス試験は図に示していません。
図15. RBG1構成の一般的な構造。Cryptographic Module(暗号モジュール)と記された箱が2つある。左の箱にはRBG Security Boundary(RBGセキュリティ境界)と記された赤枠があり、その中にRBGの箱とRandomness Source(乱数源)というラベルがある。右の箱にはDRBG Security Boundary(DRBGセキュリティ境界)と記された赤枠があり、その中にDRBG1の箱とRBG1というラベルがある。DRBG1からRBGへRequest randomness(乱数要求)という矢印が、RBGからDRBG1へseed_materialという矢印が向かい、seed_materialの矢印をPhysically Secure Channel(物理的に保護されたチャネル)と記された赤い矢印が下から指す。上のExternally provided input(外部から与えられる入力)から破線の矢印がDRBG1の上辺に、下のInternally provided input(内部で与えられる入力)から破線の矢印がDRBG1の下辺に入る。右のApplication(アプリケーション)からDRBG1へRequestという矢印が、DRBG1からApplicationへOutput(出力)という矢印が向かい、後者はモジュール内では実線、外では破線である。
Fig. 15. Generic structure of the RBG1 construction
図15. RBG1構成の一般的な構造
The RBG for instantiating \(\mathrm{DRBG}_1\) must be either 1) an RBG2(P) construction that supports a reseed request from the RBG1 construction (see Sec. 5), 2) an RBG3 construction (see Sec. 6), or 3) the root of a tree of RBGC constructions with an RBG3 construction or a physical full-entropy source as the initial randomness source (see Sec. 7). The root is immediately reseeded before generating the seed material. A physically secure channel between the randomness source and \(\mathrm{DRBG}_1\) is used to securely transport the seed material required for DRBG instantiation. An optional recommended personalization string and optional additional input may be provided from within the DRBG’s cryptographic module or from outside of that module (see Sec. 2.4.1).
\(\mathrm{DRBG}_1\)のインスタンス化に使用するRBGは、次のいずれかでなければなりません。1)RBG1構成からの再シード要求をサポートするRBG2(P)構成(第5節を参照)、2)RBG3構成(第6節を参照)、または3)RBG3構成もしくは物理的な完全エントロピー源を初期乱数源とするRBGC構成ツリーのルート(第7節を参照)。ルートは、シード材料を生成する直前に再シードします。乱数源と\(\mathrm{DRBG}_1\)の間では物理的に保護されたチャネルを使用し、DRBGのインスタンス化に必要なシード材料を安全に転送します。任意だが推奨されるパーソナライゼーション文字列と任意の追加入力は、DRBGの暗号モジュール内から、またはそのモジュールの外部から与えてよい(第2.4.1節を参照)。
An external conditioning function is not needed for this design because the output of the RBG used as the randomness source has already been cryptographically processed. The output from an RBG1 construction may be used within the cryptographic module (e.g., to seed a sub-DRBG, as specified in Sec. 4.3) or by an application outside of the RBG1 security boundary. The security strength of the output produced by the RBG1 construction is the minimum of the security strengths provided by the DRBG within the construction and the RBG used as the randomness source to seed the DRBG. Examples of RBG1 and sub-DRBG constructions are provided in Appendices B.2 and B.3, respectively.
この設計では外部コンディショニング関数は不要です。乱数源として使用するRBGの出力は、すでに暗号学的に処理されているためです。RBG1構成の出力は、暗号モジュール内(例:第4.3節で規定するsub-DRBGへのシードとして)でも、RBG1のセキュリティ境界外のアプリケーションでも利用できます。RBG1構成が生成する出力のセキュリティ強度は、構成内のDRBGと、そのDRBGへのシードに使う乱数源RBGが提供するセキュリティ強度の小さい方です。RBG1構成とsub-DRBG構成の例は、それぞれ付録B.2とB.3に示します。
4.1. Conceptual Interfaces
4.1. 概念インターフェース
Interfaces to the DRBG within an RBG1 construction include requests for instantiating the DRBG and generating pseudorandom bits (see Sec. 4.2.1 and 4.2.2, respectively). A reseed of the RBG1 construction cannot be performed because the randomness source is not available after instantiation.
RBG1構成内のDRBGへのインターフェースには、DRBGのインスタンス化要求と擬似乱数ビットの生成要求が含まれます(それぞれ第4.2.1節および第4.2.2節参照)。インスタンス化後は乱数源を利用できないため、RBG1構成の再シードは実行できません。
4.1.1. Instantiating the DRBG in the RBG1 Construction
4.1.1. RBG1構成におけるDRBGのインスタンス化
The DRBG within the RBG1 construction (\(\mathrm{DRBG}_1\)) may be instantiated by an application at any security strength possible for the DRBG design using the \(\mathbf{DRBG\_Instantiate\_request}\) discussed in Sec. 2.8.1.1:
RBG1構成内のDRBG(\(\mathrm{DRBG}_1\))は、第2.8.1.1節で説明する\(\mathbf{DRBG\_Instantiate\_request}\)を使用し、DRBG設計で実現可能な任意のセキュリティ強度でアプリケーションがインスタンス化してよい:
The \(\mathbf{DRBG\_Instantiate\_request}\) received by \(\mathrm{DRBG}_1\) from an application shall result in the execution of the \(\mathbf{DRBG\_Instantiate}\) function within \(\mathrm{DRBG}_1\) (see Sec. 2.8.1.1):
アプリケーションから\(\mathbf{DRBG\_Instantiate\_request}\)を\(\mathrm{DRBG}_1\)が受け取った場合、その結果として\(\mathbf{DRBG\_Instantiate}\)関数が\(\mathrm{DRBG}_1\)内で実行されなければならない(第2.8.1.1節を参照):
The \(\mathit{status}\) returned by the \(\mathbf{DRBG\_Instantiate}\) function shall be returned to the requesting application in response to the \(\mathbf{DRBG\_Instantiate\_request}\). \(\mathit{RBG1\_DRBG1\_state\_handle}\) is the state handle for \(\mathrm{DRBG}_1\)’s internal state; the state handle may be \(\mathit{Null}\).
\(\mathit{status}\)は、\(\mathbf{DRBG\_Instantiate}\)関数が返したものを、\(\mathbf{DRBG\_Instantiate\_request}\)に対する応答として要求元アプリケーションに返さなければなりません。\(\mathit{RBG1\_DRBG1\_state\_handle}\)は、\(\mathrm{DRBG}_1\)の内部状態を示す状態ハンドルです。この状態ハンドルは\(\mathit{Null}\)でもよいです。
The \(\mathbf{DRBG\_Instantiate}\) function within \(\mathrm{DRBG}_1\) shall use an external RBG (i.e., the randomness source) to obtain the \(\mathit{seed\_material}\) necessary for establishing the DRBG’s security strength.
\(\mathbf{DRBG\_Instantiate}\)関数(\(\mathrm{DRBG}_1\)内のもの)は、DRBGのセキュリティ強度を確立するために必要な\(\mathit{seed\_material}\)を取得するため、外部RBG(すなわち乱数源)を使用しなければなりません。
In SP 800-90A, the \(\mathbf{DRBG\_Instantiate}\) function specifies the use of a \(\mathbf{Get\_randomness\_source\_input}\) call to obtain seed material from the randomness source for instantiation (see Sec. 2.8.1.4 in this document and [SP_800-90A]). For an RBG1 construction, an approved external RBG2(P), RBG3, or root RBGC construction must be used as the randomness source (see Sec. 5, 6, and 7, respectively).
SP 800-90Aでは、\(\mathbf{DRBG\_Instantiate}\)関数により、インスタンス化に必要なシード材料を乱数源から取得するため\(\mathbf{Get\_randomness\_source\_input}\)呼び出しを行うよう規定されています(本書第2.8.1.4節および[SP_800-90A]参照)。RBG1構成では、承認された外部RBG2(P)、RBG3、またはRBGCルート構成を乱数源として使用しなければなりません(それぞれ第5、6、7節参照)。
If the randomness source is an RBG2(P) construction (see Fig. 16), the RBG2(P) construction must be reseeded using its internal entropy source(s) before generating bits to be provided to \(\mathrm{DRBG}_1\). The \(\mathbf{Get\_randomness\_source\_input}\) call in the \(\mathbf{DRBG\_Instantiate}\) function of \(\mathrm{DRBG}_1\) shall be replaced by a reseed request followed by a generate request to the RBG2(P) construction that is serving as the randomness source (see steps 1a and 2a below).
乱数源がRBG2(P)構成(図16参照)の場合、RBG2(P)構成は、\(\mathrm{DRBG}_1\)に提供するビットを生成する前に、内部エントロピー源を用いて再シードしなければなりません。\(\mathbf{Get\_randomness\_source\_input}\)呼び出しは、\(\mathbf{DRBG\_Instantiate}\)関数内のもので、\(\mathrm{DRBG}_1\)については、乱数源として機能するRBG2(P)構成への再シード要求と、それに続く生成要求に置き換えなければなりません(以下の手順1aおよび2a参照)。
図16. 乱数源としてRBG2(P)構成を使用するインスタンス化。Cryptographic Module(暗号モジュール)と記された箱が2つあり、それぞれに赤枠がある。左の赤枠にはRBG2(P) Construction (with DRBGR)とRandomness Source(乱数源)というラベルが、右の赤枠にはRBG1's DRBG (DRBG1)とRBG1というラベルがある。両者の間には上から順に、DRBG1からRBG2(P) ConstructionへのDRBG_Reseed_requestという矢印、RBG2(P) ConstructionからDRBG1へのstatusという矢印、DRBG1からRBG2(P) ConstructionへのDRBG_Generate_requestという矢印、RBG2(P) ConstructionからDRBG1へのstatus, seed_materialという矢印がある。右のApplication(アプリケーション)からDRBG1へDRBG_Instantiate_requestという矢印が、DRBG1からApplicationへstatus, (state_handle)という矢印が向かう。
Fig. 16. Instantiation using an RBG2(P) construction as a randomness source
図16. 乱数源としてRBG2(P)構成を使用するインスタンス化
If the randomness source is an RBG3 construction (as shown in Fig. 17), the \(\mathbf{Get\_randomness\_source\_input}\) call in the \(\mathbf{DRBG\_Instantiate}\) function of \(\mathrm{DRBG}_1\) shall be replaced by the appropriate call to the RBG3 generate function (see Sec. 2.8.3.2, 6.4.1.2, and 6.5.1.2 and steps 1b and 2b below).
乱数源がRBG3構成(図17参照)の場合、\(\mathbf{Get\_randomness\_source\_input}\)呼び出しは、\(\mathbf{DRBG\_Instantiate}\)関数内のもので、\(\mathrm{DRBG}_1\)については、RBG3生成関数への適切な呼び出しに置き換えなければなりません(第2.8.3.2、6.4.1.2および6.5.1.2節ならびに以下の手順1bおよび2b参照)。
図17. 乱数源としてRBG3(XOR)構成またはRBG3(RS)構成を使用するインスタンス化。Cryptographic Module(暗号モジュール)と記された箱が2つあり、それぞれに赤枠がある。左の赤枠にはRBG3(…) Construction (with DRBGR)とRandomness Source(乱数源)というラベルが、右の赤枠にはDRBG1とRBG1というラベルがある。DRBG1からRBG3(…) ConstructionへRBG3_Generate_requestという矢印が、RBG3(…) ConstructionからDRBG1へstatus, seed_materialという矢印が向かう。右のApplication(アプリケーション)からDRBG1へDRBG_Instantiate_requestという矢印が、DRBG1からApplicationへstatus, (state_handle)という矢印が向かう。
Fig. 17. Instantiation using an RBG3(XOR) or RBG3(RS) construction as a randomness source
図17. 乱数源としてRBG3(XOR)構成またはRBG3(RS)構成を使用するインスタンス化
If the randomness source for RBG1 is the root of a tree of RBGC constructions (see Fig. 18), its initial randomness source must be an RBG3 construction or a physical full-entropy source (see Sec. 7) that is used to reseed the root before the root generates seed material for the RBG1 construction. The \(\mathbf{Get\_randomness\_source\_input}\) call in the \(\mathbf{DRBG\_Instantiate}\) function of \(\mathrm{DRBG}_1\) shall be replaced by a reseed request and a generate request that is sent to the root RBGC construction (see Sec. 7.2.1.2).
RBG1の乱数源がRBGC構成ツリーのルート(図18参照)である場合、初期乱数源はRBG3構成または物理的な完全エントロピー源(第7節参照)でなければなりません。これは、ルートがRBG1構成用のシード材料を生成する前にルートを再シードするために用いられます。\(\mathbf{Get\_randomness\_source\_input}\)呼び出しは、\(\mathbf{DRBG\_Instantiate}\)関数内のもので、\(\mathrm{DRBG}_1\)については、RBGCルート構成に送る再シード要求および生成要求に置き換えなければなりません(第7.2.1.2節参照)。
図18:乱数源としてRBGC構成ツリーのルートを使用するインスタンス化。左上のCryptographic Module(暗号モジュール)と記された箱にInitial Randomness Source (RBG3 or Full-Entropy Source)(初期乱数源:RBG3または完全エントロピー源)がある。その下の2つ目のCryptographic Moduleには赤枠があり、その中にRoot RBGC Construction (with DRBGR)とRandomness Source(乱数源)というラベルがある。Initial Randomness SourceとRoot RBGC Constructionは両端に矢じりのある2本の縦線で結ばれ、それぞれDRBG_Generate_request、status, seed_materialと記されている。右の3つ目のCryptographic Moduleには赤枠があり、その中にRBG1's DRBG (DRBG1)とRBG1というラベルがある。Root RBGC ConstructionとDRBG1の間には上から順に、DRBG1からRoot RBGC ConstructionへのDRBG_Reseed_requestという矢印、Root RBGC ConstructionからDRBG1へのstatusという矢印、DRBG1からRoot RBGC ConstructionへのDRBG_Generate_requestという矢印、Root RBGC ConstructionからDRBG1へのstatus, seed_materialという矢印がある。右のApplication(アプリケーション)からDRBG1へDRBG_Instantiate_requestという矢印が、DRBG1からApplicationへstatus, (state_handle)という矢印が向かう。
Fig. 18: Instantiation using the root of a tree of RBGC constructions as a randomness source
図18:乱数源としてRBGC構成ツリーのルートを使用するインスタンス化
Let \(\mathrm{DRBG}_1\) be the DRBG to be instantiated within the RBG1 construction, and let \(\mathrm{DRBG}_R\) be the DRBG used within the randomness source (i.e., an RBG2(P), RBG3, or RBGC construction). Let \(s\) be the security strength to be instantiated for \(\mathrm{DRBG}_1\). \(\mathbf{DRBG\_Reseed\_request}\) and \(\mathbf{DRBG\_Generate\_request}\) are used by an application to request the generation and reseed of the DRBG within the randomness source (i.e., \(\mathrm{DRBG}_R\)). Let \(\mathit{DRBG_{R}\_state\_handle}\) be the state handle for \(\mathrm{DRBG}_R\). Let \(\mathit{keylen}\) be the length of the key used by the cryptographic primitive, and let \(\mathit{output\_len}\) be the length of the cryptographic primitive’s output block.
\(\mathrm{DRBG}_1\)をRBG1構成内でインスタンス化するDRBGとし、\(\mathrm{DRBG}_R\)を乱数源(すなわちRBG2(P)、RBG3またはRBGC構成)内で使用するDRBGとします。\(s\)を\(\mathrm{DRBG}_1\)に設定するセキュリティ強度とします。\(\mathbf{DRBG\_Reseed\_request}\)と\(\mathbf{DRBG\_Generate\_request}\)は、アプリケーションが乱数源内のDRBG(すなわち\(\mathrm{DRBG}_R\))に生成および再シードを要求するために用います。\(\mathit{DRBG_{R}\_state\_handle}\)を\(\mathrm{DRBG}_R\)の状態ハンドルとします。\(\mathit{keylen}\)を暗号プリミティブで使用する鍵の長さとし、\(\mathit{output\_len}\)を暗号プリミティブの出力ブロック長とします。
Upon receiving the instantiation request from the application, \(\mathrm{DRBG}_1\) is instantiated as follows:
アプリケーションからインスタンス化要求を受け取ると、\(\mathrm{DRBG}_1\)は次のとおりインスタンス化される:
1. When an RBG1 construction is instantiating a \(\mathrm{CTR\_DRBG}\) without a derivation function, \(\mathit{keylen} + \mathit{output\_len}\) bits shall be obtained from the randomness source as follows:
1. RBG1構成が導出関数なしの\(\mathrm{CTR\_DRBG}\)をインスタンス化する場合、\(\mathit{keylen} + \mathit{output\_len}\)ビットを乱数源から次のように取得しなければならない:
a. If the randomness source is an RBG2(P) or root RBGC construction (see Fig. 16 and Fig. 18, respectively), the \(\mathbf{Get\_randomness\_source\_input}\) call in the \(\mathbf{DRBG\_Instantiate}\) function of \(\mathrm{DRBG}_1\) is replaced by a request to reseed \(\mathrm{DRBG}_R\) (i.e., the DRBG within the RBG2(P) or root RBGC construction) and followed by a request to generate bits:
a. 乱数源がRBG2(P)構成またはRBGCルート構成(それぞれ図16および図18参照)の場合、\(\mathbf{Get\_randomness\_source\_input}\)呼び出しは、\(\mathbf{DRBG\_Instantiate}\)関数内のもので、\(\mathrm{DRBG}_1\)については、\(\mathrm{DRBG}_R\)(すなわちRBG2(P)構成またはRBGCルート構成内のDRBG)への再シード要求に置き換え、ビット生成要求を続ける:
• \(\mathit{status} = \mathbf{DRBG\_Reseed\_request}(\mathit{DRBG_{R}\_state\_handle}, \mathit{additional\_input})\).
• \(\mathit{status} = \mathbf{DRBG\_Reseed\_request}(\mathit{DRBG_{R}\_state\_handle}, \mathit{additional\_input})\).
• If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Invalid\_state\_handle})\).
• \((\mathit{status} \ne \mathrm{SUCCESS})\)の場合、\((\mathit{status}, \mathit{Invalid\_state\_handle})\)を返します。
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{DRBG\_Generate\_request}(\mathit{DRBG_{R}\_state\_handle}, \mathit{keylen} + \mathit{output\_len}, s, \mathit{additional\_input})\).
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{DRBG\_Generate\_request}(\mathit{DRBG_{R}\_state\_handle}, \mathit{keylen} + \mathit{output\_len}, s, \mathit{additional\_input})\).
• If (\(\mathit{status} \ne \mathrm{SUCCESS}\)), then return (\(\mathit{status}, \mathit{Invalid\_state\_handle}\)).
• (\(\mathit{status} \ne \mathrm{SUCCESS}\)) の場合、(\(\mathit{status}, \mathit{Invalid\_state\_handle}\)) を返します。
\(\mathbf{DRBG\_Reseed\_request}\) and \(\mathbf{DRBG\_Generate\_request}\) are used here to indicate requests for the DRBG within the randomness source (\(\mathrm{DRBG}_{\mathrm{R}}\)) to execute the \(\mathbf{DRBG\_Reseed}\) function and \(\mathbf{DRBG\_Generate}\) function within \(\mathrm{DRBG}_{\mathrm{R}}\) (see Sec. 2.8.1.3, and 2.8.1.2, respectively).17
ここで \(\mathbf{DRBG\_Reseed\_request}\) および \(\mathbf{DRBG\_Generate\_request}\) は、乱数源内のDRBG(\(\mathrm{DRBG}_{\mathrm{R}}\))に対する要求を示し、\(\mathbf{DRBG\_Reseed}\) 関数および \(\mathbf{DRBG\_Generate}\) 関数を \(\mathrm{DRBG}_{\mathrm{R}}\) 内で実行させるものです(それぞれ第2.8.1.3節および第2.8.1.2節参照)。17
b. If the randomness source is an RBG3(XOR) or RBG3(RS) construction (see Fig. 17), the \(\mathbf{Get\_randomness\_source\_input}\) call in the \(\mathbf{DRBG\_Instantiate}\) function of \(\mathrm{DRBG}_{1}\) is replaced by a request for the generation of random bits:
b. 乱数源がRBG3(XOR)構成またはRBG3(RS)構成(図17参照)の場合、\(\mathbf{Get\_randomness\_source\_input}\) 呼び出し(\(\mathbf{DRBG\_Instantiate}\) 関数内、\(\mathrm{DRBG}_{1}\) のもの)を、乱数ビットの生成要求に置き換える:
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{RBG3\_Generate\_request}(\mathit{DRBG}_{R}\mathit{\_state\_handle}, \mathit{keylen} + \mathit{output\_len}, \mathit{additional\_input})\).
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{RBG3\_Generate\_request}(\mathit{DRBG}_{R}\mathit{\_state\_handle}, \mathit{keylen} + \mathit{output\_len}, \mathit{additional\_input})\).
• If (\(\mathit{status} \ne \mathrm{SUCCESS}\)), then return (\(\mathit{status}, \mathit{Invalid\_state\_handle}\)).
• (\(\mathit{status} \ne \mathrm{SUCCESS}\)) の場合、(\(\mathit{status}, \mathit{Invalid\_state\_handle}\)) を返します。
\(\mathbf{RBG3\_Generate\_request}\) is intended to result in the execution of the \(\mathbf{DRBG\_Generate}\) function in \(\mathrm{DRBG}_{\mathrm{R}}\) (see Sec. 2.8.3.1).18
\(\mathbf{RBG3\_Generate\_request}\) は、\(\mathbf{DRBG\_Generate}\) 関数を \(\mathrm{DRBG}_{\mathrm{R}}\) 内で実行させることを意図します(第2.8.3.1節参照)。18
2. When an RBG1 construction is instantiating any other DRBG (including a \(\mathrm{CTR\_DRBG}\) with a derivation function19), \(3s/2\) bits shall be obtained from a randomness source that provides a security strength of at least \(s\) bits.
2. RBG1構成が他のDRBG(導出関数付きの \(\mathrm{CTR\_DRBG}\)19 を含む)をインスタンス化する場合、\(3s/2\) ビットを取得しなければなりません。取得元は、少なくとも \(s\) ビットのセキュリティ強度を提供する乱数源とします。
a. If the randomness source is an RBG2(P) or root RBGC construction (see Fig. 16 and Fig. 18, respectively), the \(\mathbf{Get\_randomness\_source\_input}\) call in \(\mathrm{DRBG}_{1}\) is replaced by a request to reseed \(\mathrm{DRBG}_{\mathrm{R}}\), followed by a request to generate bits:
a. 乱数源がRBG2(P)構成またはRBGCルート構成(それぞれ図16および図18参照)の場合、\(\mathbf{Get\_randomness\_source\_input}\) 呼び出し(\(\mathrm{DRBG}_{1}\) 内)を、\(\mathrm{DRBG}_{\mathrm{R}}\) への再シード要求と、それに続くビット生成要求に置き換える:
• \(\mathit{status} = \mathbf{DRBG\_Reseed\_request}(\mathit{DRBG}_{R}\mathit{\_state\_handle}, \mathit{additional\_input})\).
• \(\mathit{status} = \mathbf{DRBG\_Reseed\_request}(\mathit{DRBG}_{R}\mathit{\_state\_handle}, \mathit{additional\_input})\).
• If (\(\mathit{status} \ne \mathrm{SUCCESS}\)), then return (\(\mathit{status}, \mathit{Invalid\_state\_handle}\)).
• (\(\mathit{status} \ne \mathrm{SUCCESS}\)) の場合、(\(\mathit{status}, \mathit{Invalid\_state\_handle}\)) を返します。
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{DRBG\_Generate\_request}(\mathit{DRBG}_{R}\mathit{\_state\_handle},\)
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{DRBG\_Generate\_request}(\mathit{DRBG}_{R}\mathit{\_state\_handle},\)
\(3s/2, s, \mathit{additional\_input})\).
\(3s/2, s, \mathit{additional\_input})\).
• If (\(\mathit{status} \ne \mathrm{SUCCESS}\)), then return (\(\mathit{status}, \mathit{Invalid\_state\_handle}\)).
• (\(\mathit{status} \ne \mathrm{SUCCESS}\)) の場合、(\(\mathit{status}, \mathit{Invalid\_state\_handle}\)) を返します。
\(\mathbf{DRBG\_Reseed\_request}\) and \(\mathbf{DRBG\_Generate\_request}\) are used here to indicate requests for the DRBG within the randomness source (\(\mathrm{DRBG}_{\mathrm{R}}\)) to execute the \(\mathbf{DRBG\_Reseed}\) function and \(\mathbf{DRBG\_Generate}\) function within \(\mathrm{DRBG}_{\mathrm{R}}\) (see Sec. 2.8.1.3 and 2.8.1.2, respectively).20
ここで \(\mathbf{DRBG\_Reseed\_request}\) および \(\mathbf{DRBG\_Generate\_request}\) は、乱数源内のDRBG(\(\mathrm{DRBG}_{\mathrm{R}}\))に対する要求を示し、\(\mathbf{DRBG\_Reseed}\) 関数および \(\mathbf{DRBG\_Generate}\) 関数を \(\mathrm{DRBG}_{\mathrm{R}}\) 内で実行させるものです(それぞれ第2.8.1.3節および第2.8.1.2節参照)。20
b. If the randomness source is an RBG3(XOR) or RBG3(RS) construction (see Fig. 17), the \(\mathbf{Get\_randomness\_source\_input}\) call in \(\mathrm{DRBG}_{1}\) is replaced by a request for the generation of random bits:
b. 乱数源がRBG3(XOR)構成またはRBG3(RS)構成(図17参照)の場合、\(\mathbf{Get\_randomness\_source\_input}\) 呼び出し(\(\mathrm{DRBG}_{1}\) 内)を、乱数ビットの生成要求に置き換える:
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{RBG3\_DRBG\_Generate\_request}(\mathit{DRBG}_{R}\mathit{\_state\_handle}, 3s/2, \mathit{additional\_input})\).
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{RBG3\_DRBG\_Generate\_request}(\mathit{DRBG}_{R}\mathit{\_state\_handle}, 3s/2, \mathit{additional\_input})\).
• If (\(\mathit{status} \ne \mathrm{SUCCESS}\)), then return (\(\mathit{status}, \mathit{Invalid\_state\_handle}\)).
• (\(\mathit{status} \ne \mathrm{SUCCESS}\)) の場合、(\(\mathit{status}, \mathit{Invalid\_state\_handle}\)) を返します。
\(\mathbf{RBG3\_DRBG\_Generate\_request}\) is intended to result in the execution of the \(\mathbf{DRBG\_Generate\ function}\) in \(\mathrm{DRBG}_{\mathrm{R}}\) (see Sec. 2.8.3.1).21
\(\mathbf{RBG3\_DRBG\_Generate\_request}\) は、\(\mathbf{DRBG\_Generate\ function}\)(DRBG_Generate関数)を \(\mathrm{DRBG}_{\mathrm{R}}\) 内で実行させることを意図します(第2.8.3.1節参照)。21
4.1.2. Requesting Pseudorandom Bits
4.1.2. 擬似乱数ビットの要求
As discussed in Sec. 2.8.1.2, an application requests the RBG1 construction to generate bits as follows:
第2.8.1.2節で説明したとおり、アプリケーションは次のようにRBG1構成にビット生成を要求する:
The \(\mathbf{DRBG\_Generate\_request}\) results in the execution of the \(\mathbf{DRBG\_Generate}\) function within \(\mathrm{DRBG}_{1}\):
\(\mathbf{DRBG\_Generate\_request}\) は、\(\mathbf{DRBG\_Generate}\) 関数を \(\mathrm{DRBG}_{1}\) 内で実行させる:
The \(\mathit{status}\) returned by the \(\mathbf{DRBG\_Generate}\) function shall be returned to the requesting application. If the \(\mathit{status}\) indicates a successful process, the \(\mathit{returned\_bits}\) shall also be provided to the application in response to the request.
\(\mathit{status}\)(\(\mathbf{DRBG\_Generate}\)関数から返されたもの)は要求元アプリケーションに返さなければなりません。処理が成功したことを\(\mathit{status}\)が示す場合、\(\mathit{returned\_bits}\)も要求への応答としてアプリケーションに提供しなければなりません。
4.2. Using an RBG1 Construction With Subordinate DRBGs (Sub-DRBGs)
4.2. RBG1構成と従属DRBG(sub-DRBG)の使用
Figure 19 depicts an example of the use of optional subordinate DRBGs (sub-DRBGs) within the security boundary of an RBG1 construction. The DRBGs used by the RBG1 construction and each sub-DRBG shall use different instantiations of the same DRBG implementation (i.e., each instantiation is considered as a separate DRBG and has a different internal state (see Sec. 2.4.1).
図19に、RBG1構成のセキュリティ境界内で任意の従属DRBG(sub-DRBG)を使用する例を示します。RBG1構成で使用するDRBGと各sub-DRBGは、同じDRBG実装をそれぞれ別個にインスタンス化しなければなりません。つまり各インスタンス化は別個のDRBGとして扱われ、異なる内部状態を持ちます(第2.4.1節参照)。
The DRBG used by the RBG1 construction is used as the randomness source to provide separate outputs to instantiate each of the sub-DRBGs.
RBG1構成が使用するDRBGは、各sub-DRBGをインスタンス化するための個別の出力を提供する乱数源として使われます。
図19. sub-DRBGを備えるRBG1構成。RBG1 Security Boundary(RBG1セキュリティ境界)と記された赤枠の中の上部にRBG1 (Randomness source-- with DRBG1)(乱数源、DRBG1を含む)の箱がある。そこから下向きの矢印がSub-DRBG 1とSub-DRBG nの箱へ向かい、両者の間に省略記号(…)がある。
Fig. 19. RBG1 construction with sub-DRBGs
図19. sub-DRBGを備えるRBG1構成
Let \(\mathrm{DRBG}_1\) be the DRBG used by the RBG1 construction itself, with \(\mathit{RBG1\_DRBG1\_state\_handle}\) used as the state handle for the internal state of \(\mathrm{DRBG}_1\). Let \(\mathit{sub\text{-}DRBGx\_state\_handle}\) be the state handle for the internal state of \(\mathrm{sub\text{-}DRBG}_{\mathrm{x}}\).
\(\mathrm{DRBG}_1\)をRBG1構成自体が使用するDRBGとし、\(\mathit{RBG1\_DRBG1\_state\_handle}\)を\(\mathrm{DRBG}_1\)の内部状態の状態ハンドルとして使用します。\(\mathit{sub\text{-}DRBGx\_state\_handle}\)を\(\mathrm{sub\text{-}DRBG}_{\mathrm{x}}\)の内部状態の状態ハンドルとします。
The sub-DRBGs have the following characteristics:
sub-DRBGには次の特性がある:
1.Only one layer of sub-DRBGs is allowed.
1.sub-DRBGは1階層のみ許可されます。
2.Sub-DRBG outputs are considered as outputs of the RBG1 construction.
2.sub-DRBGの出力はRBG1構成の出力とみなされます。
3. The security strength that can be provided by a sub-DRBG is no more than the security strength of \(\mathrm{DRBG}_1\) (i.e., the DRBG of the RBG1 construction that is serving as the randomness source for the sub-DRBG).
3. sub-DRBGが提供できるセキュリティ強度は、\(\mathrm{DRBG}_1\)(すなわち、sub-DRBGの乱数源として機能するRBG1構成のDRBG)のセキュリティ強度以下です。
4.Sub-DRBGs cannot provide output with full entropy.
4.sub-DRBGは完全エントロピーを持つ出力を提供できません。
5.The number of sub-DRBGs that can be instantiated is limited only by the practical considerations associated with the implementation or application.
5.インスタンス化できるsub-DRBGの数は、実装またはアプリケーションに伴う実務上の制約だけで決まります。
4.2.1. Instantiating a Sub-DRBG
4.2.1. sub-DRBGのインスタンス化
An application may request the RBG1 construction to instantiate a sub-DRBG. Let \(\mathit{RBG1\_DRBG1\_state\_handle}\) be the state handle for the DRBG used by the RBG1 construction. The following represents the form of the application’s request for sub-DRBG instantiation:
アプリケーションは、RBG1構成にsub-DRBGのインスタンス化を要求してよい。\(\mathit{RBG1\_DRBG1\_state\_handle}\)をRBG1構成が使用するDRBGの状態ハンドルとします。アプリケーションによるsub-DRBGのインスタンス化要求の形式は次のとおりである:
\(\mathrm{DRBG}_1\) executes an \(\mathbf{Instantiate\_sub\text{-}DRBG}\) function. The \(\mathit{status}\) of the process is returned to the application with a state handle if the \(\mathit{status}\) indicates success.
\(\mathrm{DRBG}_1\)は\(\mathbf{Instantiate\_sub\text{-}DRBG}\)関数を実行します。処理の\(\mathit{status}\)は、\(\mathit{status}\)が成功を示す場合には状態ハンドルとともに、アプリケーションに返されます。
The value of \(\mathit{max\_personalization\_string\_length}\) is specified in [SP_800-90A] for the DRBG type.
\(\mathit{max\_personalization\_string\_length}\)の値は、DRBGの種類ごとに[SP_800-90A]で規定されています。
\(\mathbf{Instantiate\_sub\text{-}DRBG}\):
\(\mathbf{Instantiate\_sub\text{-}DRBG}\):
Input:
入力:
1. \(s\): The requested security strength for the sub-DRBG.
1. \(s\):sub-DRBGに要求するセキュリティ強度。
2. (Optional) \(\mathit{personalization\_string}\): An input that provides personalization information.
2. (任意)\(\mathit{personalization\_string}\):パーソナライゼーション情報を与える入力。
Output to a consuming application:
呼出し元アプリケーションへの出力:
1. \(\mathit{status}\): The status returned from the \(\mathbf{Instantiate\_sub\text{-}DRBG}\) function (see steps 2, 3, 6, and 10). If any status other than SUCCESS is returned, an \(\mathit{invalid\ \_state}\) handle shall be returned.
1. \(\mathit{status}\):\(\mathbf{Instantiate\_sub\text{-}DRBG}\)関数から返されるstatus(手順2、3、6、10参照)。SUCCESS以外のstatusが返された場合、\(\mathit{invalid\ \_state}\) handle(無効な状態ハンドル)を返さなければなりません。
2. \(\mathit{sub\text{-}DRBGx\_state\_handle}\): Used to identify the internal state for this sub-DRBG instantiation in subsequent calls to the generate function (see Sec. 4.3.2).
2. \(\mathit{sub\text{-}DRBGx\_state\_handle}\):後続のgenerate関数呼出し(第4.3.2節参照)で、このsub-DRBGインスタンス化の内部状態を識別するために使用します。
Information retained within the DRBG boundary after instantiation:
インスタンス化後にDRBG境界内に保持する情報:
The internal states for \(\mathrm{DRBG}_1\) and the sub-DRBG instantiation.
\(\mathrm{DRBG}_1\)およびsub-DRBGインスタンス化の内部状態。
Process:
処理:
1. Obtain the current internal state of \(\mathrm{DRBG}_1\) to get its instantiated security strength (shown as \(\mathit{RBG1\_DRBG1\_security\_strength}\) in step 2).
1. \(\mathrm{DRBG}_1\)の現在の内部状態を取得し、そのインスタンス化されたセキュリティ強度を得ます(手順2では\(\mathit{RBG1\_DRBG1\_security\_strength}\)として示す)。
2. If \((s > \mathit{RBG1\_DRBG1\_security\_strength})\), then return \((\mathrm{ERROR\_FLAG}, \mathit{Invalid\_state\_handle})\).
2. \((s > \mathit{RBG1\_DRBG1\_security\_strength})\)の場合、\((\mathrm{ERROR\_FLAG}, \mathit{Invalid\_state\_handle})\)を返します。
3. If the length of the \(\mathit{personalization\_string} > \mathit{max\_personalization\_string\_length}\), return \((\mathrm{ERROR\_FLAG}, \mathit{Invalid\_state\_handle})\).
3. \(\mathit{personalization\_string} > \mathit{max\_personalization\_string\_length}\)である場合(ここで左辺はpersonalization_stringの長さを表す)、\((\mathrm{ERROR\_FLAG}, \mathit{Invalid\_state\_handle})\)を返します。
4. If \((s > 192)\), then \(s = 256\)
4. \((s > 192)\)の場合、\(s = 256\)
Else, if \((s \le 128)\), then \(s = 128\).
そうでなく、\((s \le 128)\)の場合、\(s = 128\)。
Else, \(s = 192\).
それ以外の場合、\(s = 192\)。
Comment: See the instructions below for the value of \(\mathit{number\_of\_bits\_to\_generate}\).
コメント:\(\mathit{number\_of\_bits\_to\_generate}\)の値については、以下の指示を参照してください。
5. \((\mathit{status}, \mathit{seed\_material}) = \mathbf{DRBG\_Generate}(\mathit{RBG1\_DRBG1\_state\_handle}, \mathit{number\_of\_bits\_to\_generate}, s)\).
5. \((\mathit{status}, \mathit{seed\_material}) = \mathbf{DRBG\_Generate}(\mathit{RBG1\_DRBG1\_state\_handle}, \mathit{number\_of\_bits\_to\_generate}, s)\)。
6. If \((\mathit{status} \ne \mathrm{SUCCESS})\), return \((\mathit{status}, \mathit{Invalid\_state\_handle})\).
6. \((\mathit{status} \ne \mathrm{SUCCESS})\) の場合、\((\mathit{status}, \mathit{Invalid\_state\_handle})\) を返します。
7. \(\mathit{working\_state\_values} = \mathbf{Instantiate\_algorithm}(\mathit{seed\_material}, \mathit{personalization\_string})\).
7. \(\mathit{working\_state\_values} = \mathbf{Instantiate\_algorithm}(\mathit{seed\_material}, \mathit{personalization\_string})\)。
8. Get the \(\mathit{sub\text{-}DRBGx\_state\_handle}\) for a currently empty internal state. If an empty internal state cannot be found, return \((\mathrm{ERROR\_FLAG}, \mathit{Invalid\_state\_handle})\).
8. 現在空いている内部状態に対応する \(\mathit{sub\text{-}DRBGx\_state\_handle}\) を取得します。空いている内部状態が見つからない場合、\((\mathrm{ERROR\_FLAG}, \mathit{Invalid\_state\_handle})\) を返します。
9. Set the internal state for the new instantiation (e.g., as indicated by \(\mathit{sub\text{-}DRBGx\_state\_handle}\)):
9. 新しいインスタンスの内部状態を設定する(例:\(\mathit{sub\text{-}DRBGx\_state\_handle}\) で示される状態):
9.1 Record the \(\mathit{working\_state\_values}\) returned from step 7.
9.1 手順7で返された \(\mathit{working\_state\_values}\) を記録します。
9.2 Record any administrative information (e.g., the value of \(s\)).
9.2 管理情報(例:\(s\) の値)を記録します。
10. Return \((\mathrm{SUCCESS}, \mathit{sub\text{-}DRBGX\_state\_handle})\).
10. \((\mathrm{SUCCESS}, \mathit{sub\text{-}DRBGX\_state\_handle})\) を返します。
Step 1 obtains \(\mathrm{DRBG}_1\)’s security strength. A description of the internal state for each DRBG type is provided in [SP_800-90A].
手順1では \(\mathrm{DRBG}_1\) のセキュリティ強度を取得します。各DRBG種別の内部状態は[SP_800-90A]で説明されています。
Steps 2 and 3 check the validity of the requested security strength \(s\) and the length of any personalization string provided for the instantiation request. An \(\mathrm{ERROR\_FLAG}\) and an invalid state handle are returned to the requesting application if either is unacceptable.
手順2および3では、要求されたセキュリティ強度 \(s\) と、インスタンス化要求に含まれるパーソナライゼーション文字列の長さが妥当かを確認します。どちらかが許容されない場合、\(\mathrm{ERROR\_FLAG}\) と無効な状態ハンドルを要求元アプリケーションに返します。
Step 4 sets the security strength to be established for the sub-DRBG instantiation based on the requested security strength \(s\).
手順4では、要求されたセキュリティ強度 \(s\) に基づき、sub-DRBGのインスタンス化で確立するセキュリティ強度を設定します。
Step 5 requests the generation of \(\mathit{seed\_material}\) at a security strength of \(s\) bits using \(\mathrm{DRBG}_1\). The \(\mathit{number\_of\_bits\_to\_generate}\) depends on \(\mathrm{DRBG}_1\)’s type:
手順5では、\(\mathit{seed\_material}\) をセキュリティ強度 \(s\) ビットで生成するよう、\(\mathrm{DRBG}_1\) を用いて要求します。\(\mathit{number\_of\_bits\_to\_generate}\) は \(\mathrm{DRBG}_1\) の種類によって決まる:
• When \(\mathrm{CTR\_DRBG}\) without a derivation function is implemented for \(\mathrm{DRBG}_1\), \(\mathit{number\_of\_bits\_to\_generate} = \mathit{keylen} + \mathit{output\_len}\).
• 導出関数なしの \(\mathrm{CTR\_DRBG}\) が \(\mathrm{DRBG}_1\) として実装されている場合、\(\mathit{number\_of\_bits\_to\_generate} = \mathit{keylen} + \mathit{output\_len}\)。
• Otherwise, \(\mathit{number\_of\_bits\_to\_generate} = 3s/2\).
• それ以外の場合、\(\mathit{number\_of\_bits\_to\_generate} = 3s/2\)。
Step 6 checks the \(\mathit{status}\) returned from step 5. If a \(\mathit{status}\) of \(\mathrm{SUCCESS}\) is not returned, the \(\mathit{status}\) and an invalid state handle are returned to the requesting application.
手順6では手順5から返された \(\mathit{status}\) を確認します。\(\mathit{status}\) として \(\mathrm{SUCCESS}\) が返されなかった場合、その \(\mathit{status}\) と無効な状態ハンドルを要求元アプリケーションに返します。
Step 7 invokes the appropriate instantiate algorithm in [SP_800-90A] for \(\mathrm{DRBG}_1\)’s design. Values for the working state portion of the sub-DRBG’s internal state are returned by the instantiate algorithm.
手順7では、\(\mathrm{DRBG}_1\) の設計に適した[SP_800-90A]のインスタンス化アルゴリズムを呼び出します。このアルゴリズムは、sub-DRBGの内部状態のうち作業状態の部分の値を返します。
Step 8 assigns a state handle for an available internal state. If no internal state is currently available, an \(\mathrm{ERROR\_FLAG}\) and invalid state handle are returned to the requesting application.
手順8では、利用可能な内部状態に状態ハンドルを割り当てます。利用可能な内部状態がない場合、\(\mathrm{ERROR\_FLAG}\) と無効な状態ハンドルを要求元アプリケーションに返します。
Step 9 enters the required values into the assigned internal state for the sub-DRBG. \(\mathit{Working\_state\_values}\) will need to be parsed into the appropriate values used for the DRBG algorithm in SP 800-90A.
手順9では、sub-DRBGに割り当てた内部状態へ必要な値を入力します。\(\mathit{Working\_state\_values}\) は、SP 800-90AのDRBGアルゴリズムで使用する適切な値に分解する必要があります。
Step 10 returns a \(\mathit{status}\) of \(\mathrm{SUCCESS}\) and the assigned state handle to the requesting application.
手順10では、\(\mathit{status}\) として \(\mathrm{SUCCESS}\) を、割り当てた状態ハンドルとともに要求元アプリケーションに返します。
4.2.2. Requesting Random Bits From a Sub-DRBG
4.2.2. sub-DRBGへの乱数ビット要求
As discussed in Sec. 2.8.1.2, pseudorandom bits may be requested from a sub-DRBG by an application:
第2.8.1.2節で説明したとおり、アプリケーションはsub-DRBGに擬似乱数ビットを要求してよい:
The generate request received by the sub-DRBG shall result in the execution of the \(\mathbf{DRBG\_Generate}\) function:
sub-DRBGが受け取った生成要求により、\(\mathbf{DRBG\_Generate}\) 関数を実行しなければならない:
The \(\mathit{status}\) returned by the \(\mathbf{DRBG\_Generate}\) function shall be returned to the application in response to the request. If the process is successful, the newly generated bits (\(\mathit{returned\_bits}\)) shall also be provided to the application in response to the \(\mathbf{DRBG\_Generate\_request}\).
\(\mathit{status}\)(\(\mathbf{DRBG\_Generate}\) 関数が返したもの)は、要求への応答としてアプリケーションに返さなければなりません。処理が成功した場合、新たに生成されたビット(\(\mathit{returned\_bits}\))も \(\mathbf{DRBG\_Generate\_request}\) への応答としてアプリケーションに提供しなければなりません。
4.3. Requirements
4.3. 要件
4.3.1. RBG1 Construction Requirements
4.3.1. RBG1構成の要件
An RBG1 construction being instantiated has the following testable requirements (i.e., capable of being tested by the FIPS 140 validation labs):
インスタンス化されるRBG1構成には、次の試験可能な要件(すなわちFIPS 140検証機関が試験可能な要件)がある:
1.An approved DRBG from [SP_800-90A] whose components can provide the targeted security strength for the RBG1 construction shall be employed.
1.RBG1構成の目標セキュリティ強度を実現できるコンポーネントを備えた、[SP_800-90A]で承認されたDRBGを使用しなければなりません。
2.The components of the RBG1 construction shall be successfully validated for compliance with [SP_800-90A], SP 800-90C, [FIPS_140], and the specification of any other approved algorithm used within the RBG1 construction, as applicable.
2.RBG1構成のコンポーネントは、該当する場合、[SP_800-90A]、SP 800-90C、[FIPS_140]およびRBG1構成内で使用するその他の承認済みアルゴリズムの仕様への準拠について、検証に合格しなければなりません。
3.The RBG1 construction shall not produce any output until it is instantiated.
3.RBG1構成は、インスタンス化されるまで出力を生成してはなりません。
4.The RBG1 construction shall not include a capability to be reseeded.
4.RBG1構成に再シード機能を含めてはなりません。
5.The RBG1 construction shall not permit itself to be instantiated more than once.22
5.RBG1構成は、自身を複数回インスタンス化できてはなりません。22
6.The randomness source shall be in a separate device from that of the RBG1 construction.
6.乱数源は、RBG1構成とは別のデバイスに配置しなければなりません。
7. For \(\mathrm{CTR\_DRBG}\) with a derivation function, \(\mathrm{Hash\_DRBG}\), or \(\mathrm{HMAC\_DRBG}\), \(3s/2\) bits shall be obtained from a randomness source, where \(s\) is the targeted security strength for the DRBG used in the RBG1 construction (\(\mathrm{DRBG}_1\)).
7. 導出関数付きの \(\mathrm{CTR\_DRBG}\)、\(\mathrm{Hash\_DRBG}\) または \(\mathrm{HMAC\_DRBG}\) の場合、乱数源から \(3s/2\) ビットを取得しなければなりません。ここで \(s\) は、RBG1構成で使用するDRBG(\(\mathrm{DRBG}_1\))の目標セキュリティ強度です。
8. For \(\mathrm{CTR\_DRBG}\) without a derivation function in the RBG1 construction, \(\mathit{keylen} + \mathit{output\_len}\) bits shall be obtained from the randomness source, where \(\mathit{keylen}\) is the length of the key used by the block cipher used in the RBG1 construction (\(\mathrm{DRBG}_1\)).
8. RBG1構成で導出関数なしの \(\mathrm{CTR\_DRBG}\) を使う場合、乱数源から \(\mathit{keylen} + \mathit{output\_len}\) ビットを取得しなければなりません。ここで \(\mathit{keylen}\) は、RBG1構成(\(\mathrm{DRBG}_1\))で使用するブロック暗号の鍵長です。
9.An implementation of an RBG1 construction shall verify that the internal state has been updated before the generated output is provided to the requesting entity.
9.RBG1構成の実装は、生成した出力を要求元に渡す前に、内部状態が更新済みであることを確認しなければなりません。
10.The RBG1 construction shall not provide output for generating requests that specify a security strength greater than the instantiated security strength of its DRBG.
10.RBG1構成は、そのDRBGのインスタンス化時のセキュリティ強度を超える強度を指定した生成要求に対して、出力を提供してはなりません。
11.If the RBG1 construction can be used to instantiate a sub-DRBG, the RBG1 construction may directly produce output for an application in addition to instantiating a sub-DRBG.
11.RBG1構成がsub-DRBGのインスタンス化に使用できる場合、sub-DRBGをインスタンス化するだけでなく、アプリケーション向けに直接出力を生成してもよいです。
12.Seed material produced by the RBG1 construction to instantiate a sub-DRBG shall not be used to instantiate other sub-DRBGs nor be provided directly to a consuming application.
12.RBG1構成がsub-DRBGのインスタンス化用に生成したシード材料を、他のsub-DRBGのインスタンス化に使用してはならず、利用側アプリケーションへ直接渡してもなりません。
13. If the seedlife of the DRBG within the RBG1 construction (\(\mathrm{DRBG}_1\)) is ever exceeded or a health test of the DRBG fails, the use of the RBG1 construction shall be terminated.
13. RBG1構成内のDRBG(\(\mathrm{DRBG}_1\))のseedlifeを超過した場合、またはDRBGのヘルステストに失敗した場合、RBG1構成の使用を停止しなければなりません。
The non-testable requirements for the RBG1 construction are listed below. If these requirements are not met, no assurance can be obtained about the security of the implementation.
RBG1構成の試験不可能な要件を以下に示します。これらの要件を満たさない場合、実装のセキュリティを保証できません。
14. The randomness source for the DRBG within an RBG1 construction (\(\mathrm{DRBG}_1\)) must be either 1) a validated RBG2(P) construction with support for reseeding requests, 2) a validated RBG3 construction, or 3) a root RBGC construction that has support for reseed requests using either an RBG3 construction or a physical full-entropy source as its initial randomness source.
14. RBG1構成内のDRBG(\(\mathrm{DRBG}_1\))の乱数源は、次のいずれかでなければならない:1) 再シード要求に対応する検証済みRBG2(P)構成、2) 検証済みRBG3構成、または 3) 初期乱数源としてRBG3構成か物理的な完全エントロピー源を使い、再シード要求に対応するRBGCルート構成。
15. The randomness source must provide the requested number of bits at a security strength of \(s\) bits or higher, where \(s\) is the targeted security strength for the DRBG within the RBG1 construction (\(\mathrm{DRBG}_1\)).
15. 乱数源は、\(s\)ビット以上のセキュリティ強度で要求されたビット数を提供しなければなりません。\(s\)はRBG1構成内のDRBG(\(\mathrm{DRBG}_1\))の目標セキュリティ強度です。
16.The specific output of the randomness source (or portion thereof) that is used for the instantiation of an RBG1 construction must not be used for any other purpose, including for seeding a different instantiation.
16.RBG1構成のインスタンス化に使う乱数源の出力(またはその一部)を、別のインスタンス化のシード設定を含む他の目的に使用してはなりません。
17.If an RBG2(P) construction is used as the randomness source for the RBG1 construction, the RBG2(P) construction must be reseeded immediately before generating bits for each RBG1 instantiation.
17.RBG1構成の乱数源としてRBG2(P)構成を使用する場合、RBG1をインスタンス化するたびにビットを生成する直前に、RBG2(P)構成を再シードしなければなりません。
18.If a root RBGC construction is used as the randomness source for the RBG1 construction, the initial randomness source for the root must be an RBG3 construction or a physical full-entropy source, and the root RBGC construction must be reseeded immediately before generating bits for each RBG1 instantiation.
18.RBG1構成の乱数源としてRBGCルート構成を使用する場合、ルートの初期乱数源はRBG3構成または物理的な完全エントロピー源でなければなりません。また、RBG1をインスタンス化するたびにビットを生成する直前に、RBGCルート構成を再シードしなければなりません。
19. A physically secure channel must be used to insert the seed material from the randomness source into the DRBG of the RBG1 construction (\(\mathrm{DRBG}_1\)).
19. 乱数源からRBG1構成内のDRBG(\(\mathrm{DRBG}_1\))へシード材料を挿入するには、物理的に安全なチャネルを使用しなければなりません。
4.3.2. Sub-DRBG Requirements
4.3.2. sub-DRBGの要件
A sub-DRBG has the following testable requirements (i.e., capable of being tested by the FIPS 140 validation labs):
sub-DRBGには、次の試験可能な要件(FIPS 140検証機関が試験可能な要件)がある:
1.The randomness source for a sub-DRBG shall be the DRBG used by the RBG1 construction.
1.sub-DRBGの乱数源は、RBG1構成が使用するDRBGでなければなりません。
2.A sub-DRBG shall use the same implementation as its randomness source (i.e., the DRBG used by the RBG1 construction).
2.sub-DRBGは、その乱数源(すなわちRBG1構成が使用するDRBG)と同じ実装を使用しなければなりません。
3.The internal states used by the DRBG within the RBG1 construction and each sub-DRBG shall be separate.
3.RBG1構成内のDRBGおよび各sub-DRBGが使用する内部状態は、互いに分離されていなければなりません。
4.A sub-DRBG shall not serve as a randomness source for another sub-DRBG.
4.sub-DRBGを、別のsub-DRBGの乱数源として使用してはなりません。
5.The output from the RBG1 construction that is used for sub-DRBG instantiation shall not be output from the security boundary that contains the RBG1 construction and sub-DRBG(s).
5.sub-DRBGのインスタンス化に使用するRBG1構成の出力を、RBG1構成とsub-DRBG群を含むセキュリティ境界の外へ出力してはなりません。
6.The output from the RBG1 construction that is used for sub-DRBG instantiation shall not be used for any other purpose, including for seeding a different sub-DRBG.
6.sub-DRBGのインスタンス化に使用するRBG1構成の出力を、別のsub-DRBGへのシード設定を含む他の目的に使用してはなりません。
7.The security strength for a target sub-DRBG shall not exceed the security strength that is supported by the RBG1 construction.
7.対象sub-DRBGのセキュリティ強度は、RBG1構成がサポートするセキュリティ強度を超えてはなりません。
8. For CTR_DRBG with a derivation function, Hash_DRBG, or HMAC_DRBG, \(3s/2\) bits shall be obtained from the RBG1 construction for instantiation of the sub-DRBG, where \(s\) is the requested security strength for the target sub-DRBG.
8. 導出関数付きCTR_DRBG、Hash_DRBGまたはHMAC_DRBGの場合、sub-DRBGのインスタンス化にRBG1構成から\(3s/2\)ビットを取得しなければなりません。\(s\)は対象sub-DRBGの要求セキュリティ強度です。
9. For CTR_DRBG without a derivation function used by the sub-DRBG, \(\mathit{keylen} + \mathit{output\_len}\) bits shall be obtained from the RBG1 construction for instantiation, where \(\mathit{keylen}\) is the length of the key to be used by the block cipher in the target sub-DRBG.
9. sub-DRBGが導出関数なしのCTR_DRBGを使用する場合、インスタンス化用にRBG1構成から\(\mathit{keylen} + \mathit{output\_len}\)ビットを取得しなければなりません。\(\mathit{keylen}\)は対象sub-DRBGのブロック暗号で使用する鍵の長さです。
10.A sub-DRBG shall not produce output until it is instantiated.
10.sub-DRBGは、インスタンス化されるまで出力を生成してはなりません。
11.A sub-DRBG shall not provide output for generating requests that specify a security strength greater than the instantiated security strength of the sub-DRBG.
11.sub-DRBGは、インスタンス化時のセキュリティ強度を超える強度を指定した生成要求に出力を提供してはなりません。
12.An implementation of a sub-DRBG shall verify that the internal state has been updated before the generated output is provided to the requesting entity.
12.sub-DRBGの実装は、生成出力を要求元に渡す前に内部状態が更新済みであることを確認しなければなりません。
13.The sub-DRBG shall not be reseeded.
13.sub-DRBGを再シードしてはなりません。
14.If the seedlife of a sub-DRBG is ever exceeded or a health test of the sub-DRBG fails, the use of the sub-DRBG shall be terminated.
14.sub-DRBGのseedlifeを超過した場合、またはsub-DRBGのヘルステストに失敗した場合、sub-DRBGの使用を停止しなければなりません。
A non-testable requirement for a sub-DRBG (i.e., not capable of being tested by the FIPS 140 validation labs) is:
sub-DRBGには、試験不可能な要件(すなわちFIPS 140検証機関が試験できない要件)が1つある:
15.The output of a sub-DRBG must not be used as seed material for other DRBGs (e.g., the DRBGs in other RBGs) or sub-DRBGs.
15.sub-DRBGの出力を、他のDRBG(例:別のRBG内のDRBG)またはsub-DRBGのシード材料として使用してはなりません。
5. RBG2 Constructions Based on Physical and/or Non-Physical Entropy Sources
5. 物理および/または非物理エントロピー源に基づくRBG2構成
An RBG2 construction is a cryptographically secure RBG with continuous access to one or more validated entropy sources within its RBG security boundary. The RBG is instantiated before use and generates outputs on demand. An RBG2 construction may (optionally) be implemented to support reseeding requests from a consuming application (e.g., providing prediction resistance for the next output of the RBG2 construction to mitigate a possible compromise of previous internal states) and/or to (optionally) be reseeded in accordance with implementation-selected criteria.
RBG2構成は、RBGセキュリティ境界内にある1つ以上の検証済みエントロピー源へ継続的にアクセスできる、暗号学的に安全なRBGです。RBGは使用前にインスタンス化され、要求に応じて出力を生成します。RBG2構成は、利用側アプリケーションからの再シード要求(例:以前の内部状態が侵害された可能性を軽減するため、次の出力に予測耐性を与える)に対応するよう任意で実装してもよいです。また、実装者が選択する基準に従って任意に再シードしてもよいです。
If a consuming application requires full-entropy output, an RBG3 construction from Sec. 6 needs to be used rather than an RBG2 construction.
利用側アプリケーションが完全エントロピーの出力を必要とする場合は、RBG2構成ではなく第6節のRBG3構成を使用する必要があります。
An RBG2 construction may be useful for all devices in which an entropy source can be implemented.
エントロピー源を実装できるあらゆるデバイスで、RBG2構成が有用となる可能性があります。
5.1. RBG2 Description
5.1. RBG2の説明
The DRBG for an RBG2 construction is contained within the same RBG security boundary and cryptographic module as its validated entropy sources (see Fig. 20).
RBG2構成のDRBGは、検証済みエントロピー源と同じRBGセキュリティ境界および暗号モジュール内に配置されます(図20参照)。
図20. RBG2構成の一般的な構造。下にCryptographic Module(暗号モジュール)というラベルがある枠の中に、RBG security boundary(RBGセキュリティ境界)と記された赤枠がある。赤枠の中には左から順に、Entropy Source(s)*(エントロピー源)、破線枠のConditioning Function**(条件付け関数)、DRBGがある。Conditioning FunctionからEntropy Source(s)へ矢印が1本、Entropy Source(s)からConditioning Functionへ矢印が1本向かう。DRBGからConditioning FunctionへRequest(要求)という矢印が、Conditioning FunctionからDRBGへseed_materialという矢印が向かう。モジュールの上にあるExternally provided input(外部提供入力)から下向きの破線矢印がDRBGに入り、モジュール内で赤枠の下にあるInternally provided input(内部提供入力)から上向きの破線矢印がDRBGに入る。モジュールの外の右側では、Application(アプリケーション)からDRBGへDRBG Request(DRBG要求)という矢印が、DRBGからApplicationへstatus, outputという矢印が向かう。図の下に注記がある。* As shown in 図1 of SP 800-90B(SP 800-90Bの図1に示すとおり)。** Required by a CTR_DRBG without a derivation function when the entropy source does not provide full-entropy output(エントロピー源が完全エントロピー出力を提供しない場合に、導出関数なしのCTR_DRBGで必要)。
Fig. 20. Generic structure of the RBG2 construction
図20. RBG2構成の一般的な構造
One or more entropy sources are used to provide the entropy bits for both DRBG instantiation and any reseeding of the DRBG. The use of a personalization string and additional input is optional and may be provided from within the cryptographic module or from outside of that module. The output from the RBG may be used within the cryptographic module or by an application outside of the module.
1つ以上のエントロピー源を用いて、DRBGのインスタンス化と再シードの両方に必要なエントロピービットを供給します。パーソナライゼーション文字列および追加入力の使用は任意であり、暗号モジュール内またはその外部から与えてもよいです。RBGの出力は、暗号モジュール内またはモジュール外のアプリケーションで使用できます。
An example of an RBG2 construction is provided in Appendix B.4.
RBG2構成の例を付録B.4に示します。
An RBG2 construction may be implemented to use one or more validated physical and/or non-physical entropy sources for instantiation and reseeding. Two variants of the RBG2 construction may be implemented:
RBG2構成は、インスタンス化と再シードに1つ以上の検証済み物理および/または非物理エントロピー源を使用するよう実装できます。RBG2構成には次の2種類がある:
1.An RBG2(P) construction uses the output of one or more validated physical entropy sources and (optionally) one or more validated non-physical entropy sources, as discussed in Method 1 of Sec. 2.3 (i.e., only the entropy produced by one or more validated physical entropy sources is counted toward the entropy required for instantiating or reseeding the RBG). Any amount of entropy may be obtained from a non-physical entropy source as long as sufficient entropy has been obtained from the physical entropy sources to fulfill an entropy request. An RBG2(P) construction may exist as part of an RBG3 construction (see Sec. 6).
1.RBG2(P)構成は、検証済み物理エントロピー源の出力を使い、任意で検証済み非物理エントロピー源の出力も使います(第2.3節の方法1参照)。つまり、RBGのインスタンス化または再シードに必要なエントロピーとして数えるのは、1つ以上の検証済み物理エントロピー源が生成した分だけです。エントロピー要求を満たすのに十分な物理エントロピーが得られていれば、非物理エントロピー源からは任意量のエントロピーを取得できます。RBG2(P)構成をRBG3構成の一部としてもよいです(第6節参照)。
2.An RBG2(NP) construction uses the output of any validated non-physical or physical entropy sources, as discussed in Method 2 of Sec. 2.3 (i.e., the entropy produced by both validated physical and non-physical entropy sources is counted toward the entropy required for instantiating or reseeding the RBG).
2.RBG2(NP)構成は、検証済み非物理または物理エントロピー源の出力を使います(第2.3節の方法2参照)。つまり、RBGのインスタンス化または再シードに必要なエントロピーとして、検証済み物理源と非物理源の両方が生成した分を数えます。
These variants may affect the implementation of a \(\mathbf{Get\_entropy\_bitstring}\) process (represented as a \(\mathbf{Get\_entropy\_bitstring}\) procedure; see Sec. 2.8.2 and 3.1) by accessing the entropy sources directly or via the \(\mathbf{Get\_conditioned\_input}\) or \(\mathbf{Get\_conditioned\_full\_entropy\_input}\) procedures specified in Sec. 3.2.2 during instantiation and reseeding (see Sec. 5.2.1 and 5.2.3). That is, when seeding and reseeding an RBG2(P) construction (including a DRBG within an RBG3 construction, as discussed in Sec. 6), Method 1 in Sec. 2.3 is used to combine the entropy from the entropy sources, and Method 2 is used when instantiating and reseeding an RBG2(NP) construction.
これらの種類によって、\(\mathbf{Get\_entropy\_bitstring}\)処理(\(\mathbf{Get\_entropy\_bitstring}\)手続きとして表します。第2.8.2節および第3.1節参照)の実装方法が変わる場合があります。インスタンス化および再シード時(第5.2.1節および第5.2.3節参照)に、エントロピー源へ直接アクセスする方法と、第3.2.2節で規定する\(\mathbf{Get\_conditioned\_input}\)手続きまたは\(\mathbf{Get\_conditioned\_full\_entropy\_input}\)手続きを介する方法があります。すなわち、RBG2(P)構成(第6節で説明するRBG3構成内のDRBGを含む)のシード設定および再シードでは、エントロピー源からのエントロピーを組み合わせるため第2.3節の方法1を使い、RBG2(NP)構成のインスタンス化および再シードでは方法2を使います。
5.2. Conceptual Interfaces
5.2. 概念インターフェース
The RBG2 construction includes requests for instantiating the DRBG (see Sec. 5.2.1) and generating pseudorandom bits (see Sec. 5.2.2). If a reseed capability has been implemented (see Sec. 5.2.3), an RBG2 construction is reseeded when requested by a consuming application or when determined by implementation-selected criteria.
RBG2構成には、DRBGのインスタンス化要求(第5.2.1節参照)と擬似乱数ビットの生成要求(第5.2.2節参照)があります。再シード機能を実装している場合(第5.2.3節参照)、利用側アプリケーションから要求されたとき、または実装者が定める基準に従ってRBG2構成を再シードします。
5.2.1. RBG2 Instantiation
5.2.1. RBG2のインスタンス化
An RBG2 construction may be instantiated by an application at any valid23 security strength possible for the DRBG design and its components using an instantiation request (see Sec. 2.8.1.1):
RBG2構成は、インスタンス化要求(第2.8.1.1節参照)を使い、DRBG設計とそのコンポーネントが実現できる任意の有効なセキュリティ強度23でアプリケーションがインスタンス化してよい:
The request results in the execution of the \(\mathbf{DRBG\_Instantiate}\) function within the DRBG:
この要求により、DRBG内の\(\mathbf{DRBG\_Instantiate}\)関数が実行される:
The \(\mathbf{DRBG\_Instantiate}\) function returns the \(\mathit{status}\) of the process, which is then provided to the application in response to the request. If the process is successful, a state handle for the instantiation (e.g., \(\mathit{RBG2\_DRBG\_state\_handle}\)) is also returned from the \(\mathbf{DRBG\_Instantiate}\) function and may be forwarded to the application.24
\(\mathbf{DRBG\_Instantiate}\)関数は処理の\(\mathit{status}\)を返し、これを要求への応答としてアプリケーションに渡します。処理が成功した場合、インスタンス化の状態ハンドル(例:\(\mathit{RBG2\_DRBG\_state\_handle}\))も\(\mathbf{DRBG\_Instantiate}\)関数から返され、アプリケーションへ転送してよい。24
An RBG2 construction obtains entropy for its DRBG from one or more validated entropy sources within its boundary, either directly or using an external conditioning function to obtain and process the output of the entropy sources.
RBG2構成は、境界内にある1つ以上の検証済みエントロピー源から、直接または外部条件付け関数を用いてその出力を取得・処理することで、DRBG用のエントロピーを得ます。
[SP_800-90A] uses a \(\mathbf{Get\_randomness\_source\_input}\) call in the \(\mathbf{DRBG\_Instantiate}\) function to obtain the entropy needed for instantiation. Let \(\mathit{counting\_method}\) indicate the method for counting entropy from the entropy sources (i.e., Method 1 only counts entropy provided by physical entropy sources, and Method 2 counts entropy from both non-physical and physical entropy sources; see Sec. 2.3). Let \(\mathit{keylen}\) be the length of the key to be used by the cryptographic primitive, and let \(\mathit{output\_len}\) be the length of its output block.
[SP_800-90A]では、インスタンス化に必要なエントロピーを得るため、\(\mathbf{Get\_randomness\_source\_input}\)呼び出しを\(\mathbf{DRBG\_Instantiate}\)関数内で使用します。\(\mathit{counting\_method}\)は、エントロピー源からのエントロピーの計数方法を示す(すなわち、方法1は物理エントロピー源のエントロピーのみを数え、方法2は非物理と物理の両方のエントロピー源のエントロピーを数えます。第2.3節参照)。\(\mathit{keylen}\)を暗号プリミティブで使用する鍵の長さ、\(\mathit{output\_len}\)をその出力ブロックの長さとします。
1.When the DRBG is a CTR_DRBG without a derivation function, seed material shall be obtained from the entropy sources as follows:
1.DRBGが導出関数なしのCTR_DRBGの場合、次のようにエントロピー源からシード材料を取得しなければならない:
a. If all entropy sources provide full-entropy output or meet the requirements in [SP_800-90A], the \(\mathbf{Get\_randomness\_source\_input}\) call is replaced by:
a. すべてのエントロピー源が完全エントロピー出力を提供するか、[SP_800-90A]の要件を満たす場合、\(\mathbf{Get\_randomness\_source\_input}\)呼び出しを次の処理に置き換える:
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{Get\_entropy\_bitstring}(\mathit{keylen} + \mathit{output\_len}, \mathit{counting\_method})\).
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{Get\_entropy\_bitstring}(\mathit{keylen} + \mathit{output\_len}, \mathit{counting\_method})\).
• If (\(\mathit{status} \ne \mathrm{SUCCESS}\)), then return (\(\mathit{status}, \mathit{Invalid\_state\_handle}\)).
• If (\(\mathit{status} \ne \mathrm{SUCCESS}\)), then return (\(\mathit{status}, \mathit{Invalid\_state\_handle}\)).
The output of the entropy source(s) shall be concatenated to obtain the \(\mathit{keylen} + \mathit{output\_len}\) full-entropy bits to be returned as \(\mathit{seed\_material}\).
エントロピー源の出力を連結し、\(\mathit{keylen} + \mathit{output\_len}\)ビットの完全エントロピービットを得て、\(\mathit{seed\_material}\)として返さなければなりません。
b. If one or more entropy sources do not provide full-entropy output, the \(\mathbf{Get\_randomness\_source\_input}\) call is replaced by: 25
b. 1つ以上のエントロピー源が完全エントロピー出力を提供しない場合、\(\mathbf{Get\_randomness\_source\_input}\)呼び出しを次の処理に置き換える:25
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{Get\_conditioned\_full\_entropy\_input}(\mathit{keylen} + \mathit{output\_len}, \mathit{counting\_method})\).
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{Get\_conditioned\_full\_entropy\_input}(\mathit{keylen} + \mathit{output\_len}, \mathit{counting\_method})\).
25 See Sec. 3.2.2.2 for a specification of the \(\mathbf{Get\_conditioned\_full\_entropy\_input}\) function.
25 \(\mathbf{Get\_conditioned\_full\_entropy\_input}\)関数の仕様は第3.2.2.2節を参照してください。
• If (\(\mathit{status} \ne \mathrm{SUCCESS}\)), then return (\(\mathit{status}, \mathit{Invalid\_state\_handle}\)).
• If (\(\mathit{status} \ne \mathrm{SUCCESS}\)), then return (\(\mathit{status}, \mathit{Invalid\_state\_handle}\)).
3. For CTR_DRBG with a derivation function, Hash_DRBG, or HMAC_DRBG used as the DRBG, the entropy sources shall provide \(3s/2\) bits of entropy to establish the security strength.
3. 導出関数付きCTR_DRBG、Hash_DRBGまたはHMAC_DRBGをDRBGとして使用する場合、セキュリティ強度を確立するため、エントロピー源は\(3s/2\)ビットのエントロピーを提供しなければなりません。
a. If the implementer wants full entropy in the bitstring to be provided to the DRBG, the \(\mathbf{Get\_randomness\_source\_input}\) call is replaced by:
a. 実装者がDRBGに渡すビット列を完全エントロピーにしたい場合、\(\mathbf{Get\_randomness\_source\_input}\)呼び出しを次の処理に置き換える:
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{Get\_conditioned\_full\_entropy\_input}(3s/2, \mathit{counting\_method})\).
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{Get\_conditioned\_full\_entropy\_input}(3s/2, \mathit{counting\_method})\).
• If (\(\mathit{status} \ne \mathrm{SUCCESS}\)), then return (\(\mathit{status}, \mathit{Invalid\_state\_handle}\)).
• If (\(\mathit{status} \ne \mathrm{SUCCESS}\)), then return (\(\mathit{status}, \mathit{Invalid\_state\_handle}\)).
b. Otherwise, the \(\mathbf{Get\_randomness\_source\_input}\) call is replaced by:
b. それ以外の場合は、\(\mathbf{Get\_randomness\_source\_input}\)呼び出しを次の処理に置き換える:
• \((\mathit{status}, \mathit{seed\ material}) = \mathbf{Get\_entropy\_bitstring}(3s/2, \mathit{counting\_method})\)
• \((\mathit{status}, \mathit{seed\ material}) = \mathbf{Get\_entropy\_bitstring}(3s/2, \mathit{counting\_method})\)
または
• If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Invalid\_state\_handle})\).
• \((\mathit{status} \ne \mathrm{SUCCESS})\) の場合、\((\mathit{status}, \mathit{Invalid\_state\_handle})\) を返します。
5.2.2. Requesting Pseudorandom Bits From an RBG2 Construction26
5.2.2. RBG2構成への擬似乱数ビット要求26
If prediction resistance is desired by a consuming application for the next RBG output to be generated so that previous internal states that may have been compromised cannot be used to determine the next RBG output, the application requests a reseed of the DRBG (see Sec. 5.2.3) before requesting the generation of pseudorandom bits. Figure 21 depicts an (optional) reseed request before requesting the generation of pseudorandom bits.
利用側アプリケーションが、侵害された可能性のある以前の内部状態から次のRBG出力を推測されないように予測耐性を求める場合、擬似乱数ビットを要求する前にDRBGの再シードを要求します(第5.2.3節参照)。図21に、擬似乱数ビット生成を要求する前に任意で再シードを要求する流れを示します。
図21. 任意の再シード要求に続くRBG2の生成要求。右上の楕円のApplication(アプリケーション)と、その下の箱のDRBGが4本の縦の矢印で結ばれている。左から順に、ApplicationからDRBGへ下向きの(Opt.) DRBG_Reseed_request(任意の再シード要求)、DRBGからApplicationへ上向きのstatus、ApplicationからDRBGへ下向きのDRBG_Generate_request、DRBGからApplicationへ上向きのstatus, returned bits(ステータスと返されたビット)である。DRBGの中では、(Opt.) DRBG_Reseed_requestの矢印の先端から破線が延び、Entropy request(エントロピー要求)という矢印の始点につながる。この矢印はDRBGから左へ、破線枠のConditioning Function(条件付け関数)に向かう。Conditioning FunctionからEntropy Source(s)(エントロピー源)へ矢印が1本、Entropy Source(s)からConditioning Functionへ矢印が1本向かう。Conditioning FunctionからDRBGへseed_materialという矢印が向かう。
Fig. 21. RBG2 generate request following an optional reseed request
図21. 任意の再シード要求に続くRBG2の生成要求
If a reseed of the RBG was not requested by the application prior to requesting the generation of pseudorandom bits, or a \(\mathit{status}\) of SUCCESS was returned by the \(\mathbf{DRBG\_Reseed}\) function in response to a reseed request, pseudorandom bits are requested as follows (see Sec. 2.8.1.2):
擬似乱数ビット生成を要求する前にアプリケーションがRBGの再シードを要求しなかった場合、または再シード要求への応答として\(\mathit{status}\)としてSUCCESSが\(\mathbf{DRBG\_Reseed}\)関数から返された場合、次のように擬似乱数ビットを要求する(第2.8.1.2節参照):
The request shall result in the execution of a \(\mathbf{DRBG\_Generate}\) function by the DRBG (see Sec. 2.8.1.2) and checking the \(\mathit{status}\) returned by the \(\mathbf{DRBG\_Generate}\) function:
この要求により、DRBGが\(\mathbf{DRBG\_Generate}\)関数を実行し(第2.8.1.2節参照)、\(\mathit{status}\)(\(\mathbf{DRBG\_Generate}\)関数が返すもの)を確認しなければならない:
• \((\mathit{status}, \mathit{returned\_bits}) = \mathbf{DRBG\_Generate}(\mathit{RBG2\_DRBG\_state\_handle}, \mathit{requested\_number\_of\_bits}, \mathit{requested\_security\_strength}, \mathit{additional\_input})\).
• \((\mathit{status}, \mathit{returned\_bits}) = \mathbf{DRBG\_Generate}(\mathit{RBG2\_DRBG\_state\_handle}, \mathit{requested\_number\_of\_bits}, \mathit{requested\_security\_strength}, \mathit{additional\_input})\).
• If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Null})\).
• \((\mathit{status} \ne \mathrm{SUCCESS})\) の場合、\((\mathit{status}, \mathit{Null})\) を返します。
The \(\mathbf{DRBG\_Generate}\) function returns the \(\mathit{status}\) of the process, which shall also be returned to the application in response to the \(\mathbf{DRBG\_Generate\_request}\). If the \(\mathit{status}\) indicates that the generation was successful, the requested random bits \((\mathit{returned\_bits})\) are also provided by the \(\mathbf{DRBG\_Generate}\) function and forwarded to the application.
\(\mathbf{DRBG\_Generate}\)関数は処理の\(\mathit{status}\)を返し、これは\(\mathbf{DRBG\_Generate\_request}\)への応答としてアプリケーションにも返さなければなりません。\(\mathit{status}\)が生成の成功を示す場合、要求された乱数ビット\((\mathit{returned\_bits})\)も\(\mathbf{DRBG\_Generate}\)関数から提供され、アプリケーションに転送されます。
5.2.3. Reseeding an RBG2 Construction
5.2.3. RBG2構成の再シード
The capability to reseed an RBG2 construction is optional. If implemented, the reseeding of the DRBG may be performed in one or both of the following ways:
RBG2構成の再シード機能は任意です。実装する場合、DRBGは次のいずれかまたは両方の方法で再シードできる:
1.Upon request from a consuming application or
1.利用側アプリケーションから要求されたとき、または
2.Based on implementation-selected criteria, such as time, number of outputs, events, or the availability of sufficient entropy.
2.実装者が選択する基準(時刻、出力数、イベント、十分なエントロピーが利用可能になったことなど)に基づくとき。
However, the DRBG shall either be reseeded or re-instantiated before executing the \(\mathbf{DRBG\_Generate}\) function if it has output \(2^{17}\) or more bits since instantiation or the last reseed process. A request does not need to be interrupted if that output threshold is exceeded while completing a \(\mathbf{DRBG\_Generate\_request}\). For example, if \(2^{17}-1\) bits have already been output from the DRBG when a \(\mathbf{DRBG\_Generate\_request}\) is received for any amount up to the maximum number of bits that may be requested in a single invocation (see SP 800-90A), the generate process may be fulfilled without interruption. The DRBG shall then be reseeded or re-instantiated before the next execution of a \(\mathbf{DRBG\_Generate}\) function.
ただし、\(\mathbf{DRBG\_Generate}\)関数を実行する前に、DRBGがインスタンス化または最後の再シード以降に\(2^{17}\)ビット以上を出力している場合は、再シードまたは再インスタンス化しなければなりません。\(\mathbf{DRBG\_Generate\_request}\)の処理中にこの出力しきい値を超えても、要求を中断する必要はありません。例えば、すでにDRBGが\(2^{17}-1\)ビットを出力している時点で\(\mathbf{DRBG\_Generate\_request}\)を受け取っても、1回の呼出しで要求できる上限(SP 800-90A参照)までのビット数なら、生成処理を中断せずに要求を満たしてよい。その場合、次回\(\mathbf{DRBG\_Generate}\)関数を実行する前にDRBGを再シードまたは再インスタンス化しなければなりません。
図22. アプリケーションからの再シード要求。右上の楕円のApplication(アプリケーション)と、その下の箱のDRBGが2本の縦の矢印で結ばれている。ApplicationからDRBGへ下向きのDRBG_Reseed__request(改行前の下線が二重に印刷されている)と、DRBGからApplicationへ上向きのstatusである。DRBGの中では、DRBG_Reseed__requestの矢印の先端から破線が延び、Entropy request(エントロピー要求)という矢印の始点につながる。この矢印はDRBGから左へ、破線枠のConditioning Function*(条件付け関数)に向かう。Conditioning Function*からEntropy Source(s)(エントロピー源)へ矢印が1本、Entropy Source(s)からConditioning Function*へ矢印が1本向かう。Conditioning Function*からDRBGへseed_materialという矢印が向かう。図の下に注記がある。* For a CTR_DBG without a derivation function when the entropy source does not provide full-entropy output(エントロピー源が完全エントロピー出力を提供しない場合の、導出関数なしのCTR_DBG)。
Fig. 22. Reseed request from an application
図22. アプリケーションからの再シード要求
An application may request a reseed of the RBG2 construction (see Sec. 2.8.1.3):
アプリケーションはRBG2構成の再シードを要求してよい(第2.8.1.3節参照):
If the DRBG receives a \(\mathbf{DRBG\_Reseed\_request}\) or if the DRBG is scheduled for a reseed based on implementation-selected criteria, the \(\mathbf{DRBG\_Reseed}\) function shall be executed (see Sec. 2.8.1.3):
DRBGが\(\mathbf{DRBG\_Reseed\_request}\)を受け取った場合、または実装者が選択する基準に基づいてDRBGの再シードが予定されている場合、\(\mathbf{DRBG\_Reseed}\)関数を実行しなければならない(第2.8.1.3節参照):
The \(\mathbf{DRBG\_Reseed}\) function returns the \(\mathit{status}\) of the reseed process, which shall be returned to the application if requested using a \(\mathbf{DRBG\_Reseed\_request}\).
\(\mathbf{DRBG\_Reseed}\)関数は再シード処理の\(\mathit{status}\)を返します。これは、\(\mathbf{DRBG\_Reseed\_request}\)を使用して要求された場合、アプリケーションに返さなければなりません。
The \(\mathbf{DRBG\_Reseed}\) function uses a \(\mathbf{Get\_randomness\_source\_input}\) call to obtain the entropy needed for reseeding the DRBG (see Sec. 2.8.1.3 and [SP_800-90A]). The DRBG is reseeded at the instantiated security strength recorded in the DRBG’s internal state. The \(\mathbf{Get\_randomness\_source\_input}\) call in SP 800-90A shall be replaced with the following:
\(\mathbf{DRBG\_Reseed}\)関数は\(\mathbf{Get\_randomness\_source\_input}\)呼び出しを使って再シードに必要なエントロピーを取得します(第2.8.1.3節および[SP_800-90A]参照)。DRBGは、内部状態に記録されたインスタンス化時のセキュリティ強度で再シードします。SP 800-90Aの\(\mathbf{Get\_randomness\_source\_input}\)呼び出しを次の処理に置き換えなければならない:
1.For CTR_DRBG without a derivation function, use the appropriate replacement, as specified in step 1 of Sec. 5.2.1.
1.導出関数なしのCTR_DRBGの場合、第5.2.1節の手順1で指定する適切な置換処理を使用します。
2. For CTR_DRBG with a derivation function, Hash_DRBG, or HMAC_DRBG, replace the \(\mathbf{Get\_randomness\_source\_input}\) call in the \(\mathbf{DRBG\_Reseed}\) function with the following:27
2. 導出関数付きCTR_DRBG、Hash_DRBGまたはHMAC_DRBGの場合、\(\mathbf{Get\_randomness\_source\_input}\)呼び出し(\(\mathbf{DRBG\_Reseed}\)関数内)を次の処理に置き換える:27
a. If the implementer wants full entropy in the returned bitstring, the \(\mathbf{Get\_randomness\_source\_input}\) call is replaced by:
a. 返すビット列を完全エントロピーにしたい場合、\(\mathbf{Get\_randomness\_source\_input}\)呼び出しを次の処理に置き換える:
b. Otherwise, the \(\mathbf{Get\_randomness\_source\_input}\) call is replaced by:
b. それ以外の場合、\(\mathbf{Get\_randomness\_source\_input}\)呼び出しを次の処理に置き換える:
or
または
5.3. RBG2 Construction Requirements
5.3. RBG2構成の要件
An RBG2 construction has the following requirements in addition to those specified in [SP_800-90A] and [SP_800-90B]:
RBG2構成には、[SP_800-90A]および[SP_800-90B]で規定された要件に加えて、次の要件がある:
1.The RBG shall employ an approved and validated DRBG from [SP_800-90A] whose components are capable of providing the targeted security strength for the RBG.
1.RBGは、目標とするセキュリティ強度を提供できるコンポーネントを備えた、[SP_800-90A]の承認済みかつ検証済みDRBGを使用しなければなりません。
2.The RBG and its components shall be successfully validated for compliance with [SP_800-90A], [SP_800-90B], SP 800-90C, [FIPS_140], and the specification of any other approved algorithm used within the RBG, as appropriate.
2.RBGとそのコンポーネントは、該当する場合、[SP_800-90A]、[SP_800-90B]、SP 800-90C、[FIPS_140]およびRBG内で使用するその他の承認済みアルゴリズムの仕様への準拠について、検証に合格しなければなりません。
3.One or more validated entropy sources shall be used to instantiate and reseed the DRBG. A non-validated entropy source shall not be used for this purpose.
3.DRBGのインスタンス化および再シードには、1つ以上の検証済みエントロピー源を使用しなければなりません。この目的に未検証のエントロピー源を使用してはなりません。
4.The DRBG shall be instantiated before first use (i.e., before providing output for use by a consuming application).
4.DRBGは、利用側アプリケーションへの出力を初めて提供する前にインスタンス化しなければなりません。
5.If a reseed capability is implemented, the DRBG shall be reseeded using any healthy validated entropy source(s) used for instantiation.
5.再シード機能を実装している場合、DRBGのインスタンス化に使用した正常な検証済みエントロピー源を使って再シードしなければなりません。
6. The DRBG shall be reseeded before generating output if the DRBG has produced \(2^{17}\) or more bits of output since instantiation or the last reseeding process.
6. インスタンス化または前回の再シード以降にDRBGが\(2^{17}\)ビット以上を出力している場合、出力を生成する前にDRBGを再シードしなければなりません。
7. When instantiating and reseeding CTR_DRBG without a derivation function, \(\mathit{keylen} + \mathit{output\_len}\) bits with full entropy (where \(\mathit{keylen}\) is the length of the key to be used by the cryptographic primitive and \(\mathit{output\_len}\) is the length of its output block) or as otherwise specified in [SP_800-90A] shall be obtained either directly from the entropy sources or
7. 導出関数なしのCTR_DRBGのインスタンス化および再シードでは、完全エントロピーを持つ\(\mathit{keylen} + \mathit{output\_len}\)ビット(\(\mathit{keylen}\)は暗号プリミティブで使用する鍵の長さ、\(\mathit{output\_len}\)はその出力ブロック長)または[SP_800-90A]で別途指定されたビット列を、次のいずれかの方法で取得しなければならない:エントロピー源から直接、あるいは
27 See Sec. 2.8.2 and 3.1 for discussions of the \(\mathbf{Get\_entropy\_bitstring}\) function.
27 \(\mathbf{Get\_entropy\_bitstring}\)関数の説明は第2.8.2節および第3.1節を参照してください。
via an external vetted conditioning function that provides full-entropy output (see Sec. 3.2.2.2).
完全エントロピー出力を提供する外部の審査済み条件付け関数を介して(第3.2.2.2節参照)。
8. For CTR_DRBG with a derivation function, Hash_DRBG, or HMAC_DRBG, a bitstring with at least \(3s/2\) bits of entropy shall be obtained from the entropy sources to instantiate the DRBG at a security strength of \(s\) bits. When reseeding is performed, a bitstring with at least \(s\) bits of entropy shall be obtained from the entropy source(s). The entropy may be obtained directly from the entropy source(s) or via an external vetted conditioning function (see Sec. 3.2.2).
8. 導出関数付きCTR_DRBG、Hash_DRBGまたはHMAC_DRBGの場合、少なくとも\(3s/2\)ビットのエントロピーを持つビット列をエントロピー源から得て、セキュリティ強度\(s\)ビットでDRBGをインスタンス化しなければなりません。再シード時には、少なくとも\(s\)ビットのエントロピーを持つビット列をエントロピー源から得なければなりません。エントロピーはエントロピー源から直接、または外部の審査済み条件付け関数を介して取得してよい(第3.2.2節参照)。
9.The entropy source(s) used for the instantiation and reseeding of the DRBG within an RBG2(P) construction shall include one or more validated physical entropy sources; the inclusion of one or more validated non-physical entropy sources is optional. A bitstring that contains entropy shall be assembled and the entropy in that bitstring determined as specified in Method 1 of Sec. 2.3 (i.e., only the entropy provided by validated physical entropy sources shall be counted toward fulfilling the amount of entropy in an entropy request).
9.RBG2(P)構成内のDRBGのインスタンス化および再シードに用いるエントロピー源には、1つ以上の検証済み物理エントロピー源を含めなければなりません。1つ以上の検証済み非物理エントロピー源を含めることは任意です。エントロピーを含むビット列を組み立て、そのビット列中のエントロピー量を第2.3節の方法1に従って決定しなければなりません(すなわち、エントロピー要求におけるエントロピー量を満たすものとして数えてよいのは、検証済み物理エントロピー源が提供したエントロピーだけでなければなりません)。
10.The entropy source(s) used for the instantiation and reseeding of the DRBG within an RBG2(NP) construction shall include one or more validated non-physical entropy sources; the inclusion of one or more validated physical entropy sources is optional. A bitstring containing entropy shall be assembled and the entropy in that bitstring determined as specified in Method 2 of Sec. 2.3 (i.e., the entropy provided by both validated non-physical entropy sources and any validated physical entropy sources included in the implementation shall be counted toward fulfilling the requested amount of entropy).
10.RBG2(NP)構成内のDRBGのインスタンス化および再シードに用いるエントロピー源には、1つ以上の検証済み非物理エントロピー源を含めなければなりません。1つ以上の検証済み物理エントロピー源を含めてもよいです。エントロピーを含むビット列を組み立て、第2.3節の方法2に従ってそのビット列のエントロピー量を決定しなければならない(すなわち、検証済み非物理エントロピー源と、実装に含めた検証済み物理エントロピー源の両方が提供するエントロピーを、要求されたエントロピー量を満たす分として数えなければなりません)。
11.A specific entropy-source output (or portion thereof) shall not be reused (e.g., it is destroyed after use).
11.特定のエントロピー源の出力(またはその一部)を再利用してはなりません(例:使用後に破棄します)。
12.When a validated entropy source reports a failure, the failure shall be handled as discussed in item 10 of Sec. 2.6.
12.検証済みエントロピー源が障害を報告した場合、第2.6節の項目10で説明する方法で処理しなければなりません。
6. RBG3 Constructions Based on the Use of Physical Entropy Sources
6. 物理エントロピー源を用いるRBG3構成
An RBG3 construction is designed to provide full entropy and can be used to support all security strengths. An RBG3 construction is useful when bits with full entropy are required or a higher security strength than RBG1 and RBG2 constructions can support is needed.
RBG3構成は完全エントロピーを提供するよう設計され、あらゆるセキュリティ強度に対応できます。完全エントロピーのビットが必要な場合、またはRBG1やRBG2構成が支援できる強度を上回るセキュリティ強度が必要な場合に有用です。
6.1. RBG3 Description
6.1. RBG3の説明
The RBG3 constructions specified in this recommendation include one or more physical entropy sources and an approved DRBG from [SP_800-90A]. The output of one or more non-physical entropy sources may optionally be included, but any entropy they provide is not counted. That is, Method 1 (i.e., physical only) of Sec. 2.3 is used for counting entropy during RBG3 operation. Upon receipt of a request for random bits from a consuming application, the RBG3 construction accesses its entropy source(s) to obtain sufficient bits for the request.28
この勧告で規定する RBG3 構成は、1 つ以上の物理エントロピー源と、[SP_800-90A]の承認済み DRBG を含みます。1 つ以上の非物理エントロピー源の出力を任意で含めてもよいですが、それらが提供するエントロピーは計数しません。すなわち、RBG3 の動作中のエントロピーの計数には、第2.3節の方式1(物理源のみ)を用います。消費アプリケーションからランダムビットの要求を受け取ると、RBG3 構成は、その要求に十分なビットを得るためにエントロピー源にアクセスします。28
An implementation may be designed so that the DRBG implementation used within an RBG3 construction can be directly accessed by a consuming application using the same internal state as the RBG3 construction. The DRBG within an RBG3 construction is instantiated (i.e., seeded) at the highest security strength possible for its design (see Table 3). This is the fallback security strength if the entropy source fails in an undetected manner. Details about the use of additional approved cryptographic primitives may be discussed at [SP800_90WebSite].
実装によっては、RBG3構成内のDRBGを、RBG3構成と同じ内部状態を使って利用側アプリケーションが直接呼び出せるようにしてもよいです。RBG3構成内のDRBGは、その設計で可能な最高のセキュリティ強度でインスタンス化(シード設定)します(表3参照)。これは、エントロピー源の障害が検出されない場合に用いるフォールバック強度です。追加の承認済み暗号プリミティブの使用については[SP800_90WebSite]に記載される場合があります。
Table 3. Highest security strength for the DRBG’s cryptographic primitive
表3. DRBGの暗号プリミティブがサポートする最高のセキュリティ強度
| Cryptographic Primitive | Highest Security Strength |
|---|---|
| AES-128 | 128 |
| AES-192 | 192 |
| AES-256 | 256 |
| SHA-256/SHA3-256 | 256 |
| SHA-384/SHA3-384 | 256 |
| SHA-512/SHA3-512 | 256 |
| 暗号プリミティブ | 最高セキュリティ強度 |
|---|---|
| AES-128 | 128 |
| AES-192 | 192 |
| AES-256 | 256 |
| SHA-256/SHA3-256 | 256 |
| SHA-384/SHA3-384 | 256 |
| SHA-512/SHA3-512 | 256 |
If a failure of all physical entropy sources is detected, the RBG operation is terminated. Operation must not be resumed until repair and successful testing have been performed, and the DRBG has been instantiated with new entropy from the entropy source(s).
すべての物理エントロピー源の障害が検出された場合、RBGの動作を停止します。修復を実施して試験に合格し、エントロピー源からの新しいエントロピーを用いてDRBGをインスタンス化するまで、動作を再開してはなりません。
If all physical entropy sources fail in an undetected manner, the RBG continues to operate at the security strength of the underlying RBG2(P) construction, providing outputs at the security strength instantiated for its DRBG (see Sec. 5). Although security strengths of 128 and 192 bits are allowed for the DRBG (depending on its cryptographic primitive), a DRBG that is capable of supporting a security strength of 256 bits and is instantiated at that strength is recommended so that the RBG will continue to operate at a security strength of 256 bits in the event of an undetected failure of the physical entropy source(s).
すべての物理エントロピー源の障害が検出されない場合、RBGは基礎となるRBG2(P)構成のセキュリティ強度で動作を続け、DRBGのインスタンス化時の強度で出力します(第5節参照)。DRBGは、暗号プリミティブに応じて128または192ビットの強度も許されますが、物理エントロピー源に未検出の障害があってもRBGが256ビット強度で動作を継続できるよう、256ビット強度を支援するDRBGを選び、その強度でインスタンス化することを推奨します。
6.2. RBG3 Construction Types and Their Variants
6.2. RBG3構成の種類と変種
Two basic RBG3 constructions are specified:
基本となるRBG3構成を2種類規定する:
1.RBG3(XOR) — This construction is based on combining the output of one or more validated entropy sources with the output of an instantiated, approved DRBG using an exclusive-or operation (see Sec. 6.4).
1.RBG3(XOR) — 検証済みエントロピー源の出力を、インスタンス化済みで承認されたDRBGの出力と排他的論理和演算で組み合わせる構成です(第6.4節参照)。
2.RBG3(RS) — This construction is based on using one or more validated entropy sources to continuously reseed the DRBG (see Sec. 6.5).
2.RBG3(RS) — 1つ以上の検証済みエントロピー源を用いてDRBGを継続的に再シードする構成です(第6.5節参照)。
6.3. General Requirements
6.3. 一般要件
RBG3 constructions have the following general security requirements:
RBG3構成には次の一般的なセキュリティ要件がある:
1.An RBG3 construction shall be designed to provide outputs with full entropy using one or more validated, independent, physical entropy sources, as specified for Method 1 in Sec. 2.3. Only the entropy provided by validated physical entropy sources shall be counted toward fulfilling entropy requests, although entropy provided by one or more validated non-physical entropy sources may be used but not counted.
1.RBG3構成は、第2.3節の方法1に従い、独立した1つ以上の検証済み物理エントロピー源を用いて完全エントロピーの出力を提供するよう設計しなければなりません。エントロピー要求を満たすものとして数えるのは検証済み物理エントロピー源が提供する分だけです。1つ以上の検証済み非物理エントロピー源が提供するエントロピーを使用してもよいですが、計数してはなりません。
2.The RBG shall employ an approved and validated DRBG from [SP_800-90A] or listed at [SP800_90WebSite] whose highest possible security strength is the targeted fallback security strength for the DRBG (see Sec. 6.1).
2.RBGは、[SP_800-90A]で承認・検証されたDRBG、または[SP800_90WebSite]に掲載されたDRBGを使用しなければなりません。そのDRBGが実現可能な最高のセキュリティ強度を、目標とするフォールバック強度とします(第6.1節参照)。
3.An RBG3 construction and its components shall be successfully validated for compliance with the corresponding requirements in [SP_800-90A], [SP_800-90B], SP 800-90C, [FIPS_140], and the specification of any other approved algorithm used within the RBG, as appropriate.
3.RBG3構成とそのコンポーネントは、該当する場合、[SP_800-90A]、[SP_800-90B]、SP 800-90C、[FIPS_140]およびRBG内で使用するその他の承認済みアルゴリズムの仕様にある該当要件への準拠について、検証に合格しなければなりません。
4.The DRBG shall be instantiated at its highest possible security strength before the first use of the RBG3 construction or direct access of the DRBG. A DRBG should be selected to support a security strength of 256 bits.
4.DRBGは、RBG3構成を初めて使用する前、またはDRBGへ直接アクセスする前に、実現可能な最高のセキュリティ強度でインスタンス化しなければなりません。256ビットの強度を支援するDRBGを選択すべきです。
5. When instantiating and reseeding \(\mathrm{CTR\_DRBG}\) without a derivation function, \(\mathit{keylen} + \mathit{output\_len}\) bits with full entropy or as otherwise specified in SP 800-90A shall be obtained either directly from the entropy source(s) or via an external vetted conditioning function that provides full-entropy output (see Sec. 3.2.2.2).
5. 導出関数なしの \(\mathrm{CTR\_DRBG}\) のインスタンス化および再シードでは、完全エントロピーを持つ \(\mathit{keylen} + \mathit{output\_len}\) ビット、またはSP 800-90Aで別途指定するビット数を、エントロピー源から直接、あるいは完全エントロピー出力を提供する外部の審査済み条件付け関数を介して取得しなければなりません(第3.2.2.2節参照)。
6. For \(\mathrm{CTR\_DRBG}\) with a derivation function, \(\mathrm{Hash\_DRBG}\), or \(\mathrm{HMAC\_DRBG}\), a bitstring with at least \(3s/2\) bits of entropy29 shall be obtained from the entropy sources to instantiate the DRBG at a security strength of \(s\) bits. When reseeding is performed, a bitstring with at least \(s\) bits of entropy shall be obtained from the entropy source(s). The entropy may be obtained directly from the entropy source(s) or via an external vetted conditioning function (see Sec. 3.2.2).
6. 導出関数付きの \(\mathrm{CTR\_DRBG}\)、\(\mathrm{Hash\_DRBG}\) または \(\mathrm{HMAC\_DRBG}\) の場合、少なくとも \(3s/2\) ビットのエントロピー29を持つビット列をエントロピー源から取得し、セキュリティ強度 \(s\) ビットでDRBGをインスタンス化しなければなりません。再シードを行うときは、少なくとも \(s\) ビットのエントロピーを持つビット列をエントロピー源から取得しなければなりません。エントロピーはエントロピー源から直接、または外部の審査済み条件付け関数を介して取得してよい(第3.2.2節参照)。
7.A specific entropy-source output (or portion thereof) shall not be reused (e.g., the same entropy-source output shall not be used for an RBG3 request and for seeding or reseeding the DRBG).
7.特定のエントロピー源の出力(またはその一部)を再利用してはなりません(例:同じ出力をRBG3要求とDRBGのシード設定または再シードの両方に使いません)。
8.If the DRBG within the RBG3 construction is directly accessible, the requirements in Sec. 5.3 for RBG2(P) constructions shall apply to the direct access of the DRBG.
8.RBG3構成内のDRBGを直接利用できる場合、そのDRBGへの直接アクセスには第5.3節のRBG2(P)構成の要件を適用しなければなりません。
9.If a failure is detected within the RBG, see Sec. 2.6 (item 10) and 3.1.
9.RBG内で障害が検出された場合、第2.6節の項目10および第3.1節を参照してください。
See Sec. 6.4.2 and 6.5.2 for additional requirements for the RBG3(XOR) and RBG3(RS) constructions, respectively.
RBG3(XOR)構成およびRBG3(RS)構成の追加要件は、それぞれ第6.4.2節および第6.5.2節を参照してください。
6.4. RBG3(XOR) Construction
6.4. RBG3(XOR)構成
An RBG3(XOR) construction contains one or more validated entropy sources and a DRBG whose outputs are XORed to produce full-entropy output during the generate process (see Fig. 23).
RBG3(XOR)構成には、1つ以上の検証済みエントロピー源とDRBGが含まれます。生成処理中に両者の出力をXOR演算で組み合わせ、完全エントロピー出力を生成します(図23参照)。
図23. RBG3(XOR)構成の一般的な構造。Cryptographic Module(暗号モジュール)と記された枠の中に、下にRBG security boundary(RBGセキュリティ境界)というラベルがある赤枠がある。赤枠の中では、Entropy Source(s)(エントロピー源)から破線枠の(Opt.) Cond. Func.(任意の条件付け関数)へ矢印が向かい、そこからseed_materialと記された線が分岐点まで続く。分岐点から実線が下へ延びてXOR記号(⊕)に入る。この線をFull-entropy bits(完全エントロピーのビット)という赤い矢印が指している。同じ分岐点から、Full-entropy may or may not be required(完全エントロピーは必要な場合も必要でない場合もある)と記された破線矢印が右へ延びて下に折れ、DRBGに入る。モジュール内のInternally provided input(内部提供入力)とモジュールの上のExternally provided input(外部提供入力)からも、それぞれ下向きの破線矢印がDRBGに入る。DRBGから左向きの矢印がXOR記号に入る。XOR記号から下へ線が赤枠とモジュールを出て、破線矢印となってモジュールの下のApplication(アプリケーション)に至る。この矢印にはstatus, Full-entropy Output(ステータス、完全エントロピー出力)と記されている。ApplicationからモジュールへRequest(要求)という上向きの矢印が向かう。
Fig. 23. Generic structure of the RBG3(XOR) construction
図23. RBG3(XOR)構成の一般的な構造
In order to provide the required full-entropy output, the input to the XOR (shown as “⊕” in Fig. 23) from the entropy-source side of the figure shall consist of bits with full entropy (see Sec. 2.1). If the entropy sources cannot provide full-entropy output, then an external conditioning function shall be used to condition the output of the entropy sourc(s) to a full-entropy bitstring before XORing with the output of the DRBG (see Sec. 3.2.2.2).
要求される完全エントロピー出力を提供するため、図のエントロピー源側からXOR演算(図23の「⊕」)に入力するビットは完全エントロピーを持たなければなりません(第2.1節参照)。エントロピー源が完全エントロピー出力を提供できない場合、DRBG出力とのXOR演算の前に、外部条件付け関数を使ってエントロピー源の出力を完全エントロピーのビット列にしなければなりません(第3.2.2.2節参照)。
When \(n\) bits of output are requested from an RBG3(XOR) construction, \(n\) bits of output from the DRBG are XORed with \(n\) full-entropy bits that are obtained directly from the entropy source(s) or from a combination of validated entropy source(s) and an external vetted conditioning function that provides full-entropy output (see Sec. 3.2.2.2). When the entropy sources are working properly,30 an \(n\)-bit output from the RBG3(XOR) construction is said to provide \(n\) bits of entropy or to support a security strength of \(n\) bits. Appendix B.5 provides an example of an RBG3(XOR) design.
RBG3(XOR)構成に \(n\) ビットの出力を要求すると、DRBGからの \(n\) ビットの出力を、\(n\) ビットの完全エントロピービットとXORします。この完全エントロピービットは、エントロピー源から直接取得するか、検証済みエントロピー源と、完全エントロピー出力を提供する外部の審査済み条件付け関数との組み合わせから取得します(第3.2.2.2節参照)。エントロピー源が正常に動作している場合、30RBG3(XOR)構成の \(n\) ビット出力は \(n\) ビットのエントロピーを提供する、すなわち \(n\) ビットのセキュリティ強度を支援するとみなします。RBG3(XOR)設計の例を付録B.5に示します。
6.4.1. Conceptual Interfaces
6.4.1. 概念インターフェース
The RBG interfaces include function calls for instantiating the DRBG (see Sec. 6.4.1.1), generating random bits on request (see Sec. 6.4.1.2), and reseeding the DRBG instantiation (see Sec. 6.4.1.3).
RBGインターフェースには、DRBGのインスタンス化(第6.4.1.1節参照)、要求に応じた乱数ビットの生成(第6.4.1.2節参照)、DRBGインスタンスの再シード(第6.4.1.3節参照)の関数呼び出しが含まれます。
6.4.1.1. Instantiation of the DRBG
6.4.1.1. DRBGのインスタンス化
As discussed in Sec. 2.8.3.1, before the RBG3(XOR) construction can be used to generate bits, an application instantiates the DRBG within the construction:
第2.8.3.1節で説明したとおり、RBG3(XOR)構成でビットを生成する前に、アプリケーションが構成内のDRBGをインスタンス化する:
where \(\mathit{requested\_security\_strength}\) and \(\mathit{personalization\_string}\) are optional. If the \(\mathit{requested\_security\_strength}\) parameter is provided and exceeds the highest security strength that can be supported by the DRBG, an error indication shall be returned with an invalid \(\mathit{state\_handle}\) (see Sec. 2.8.3.1).
ここで \(\mathit{requested\_security\_strength}\) と \(\mathit{personalization\_string}\) は任意です。\(\mathit{requested\_security\_strength}\) パラメータが指定され、DRBGが支援できる最高のセキュリティ強度を超える場合、エラー表示を無効な \(\mathit{state\_handle}\) とともに返さなければなりません(第2.8.3.1節参照)。
If the \(\mathit{requested\_security\_strength}\) is provided and acceptable (i.e., \(\mathit{requested\_security\_strength}\) does not exceed the highest security strength that can be supported by the DRBG; see Sec. 2.8.3.1) or if the \(\mathit{requested\_security\_strength}\) parameter is not provided, the \(\mathbf{Instantiate\_RBG3\_DRBG\_request}\) received by the RBG3(XOR) construction shall result in the execution of the \(\mathbf{RBG3(XOR)\_Instantiate}\) function below. The \(\mathit{status}\) returned by the \(\mathbf{RBG3(XOR)\_Instantiate}\) function shall be returned to the application in response to the \(\mathbf{Instantiate\_RBG3\_DRBG\_request}\). The return of the \(\mathit{state\_handle}\) is optional if only a single instantiation is allowed by an implementation.
\(\mathit{requested\_security\_strength}\) が指定されて許容範囲内である場合(すなわち \(\mathit{requested\_security\_strength}\) がDRBGの支援できる最高のセキュリティ強度を超えない場合。第2.8.3.1節参照)、または \(\mathit{requested\_security\_strength}\) パラメータが指定されていない場合、RBG3(XOR)構成が受け取った \(\mathbf{Instantiate\_RBG3\_DRBG\_request}\) により、以下の \(\mathbf{RBG3(XOR)\_Instantiate}\) 関数を実行しなければなりません。\(\mathit{status}\)(\(\mathbf{RBG3(XOR)\_Instantiate}\) 関数が返す値)は、\(\mathbf{Instantiate\_RBG3\_DRBG\_request}\) への応答としてアプリケーションに返さなければなりません。実装がインスタンス化を1つしか許さない場合、\(\mathit{state\_handle}\) の返却は任意です。
Let \(s\) be the highest security strength that can be supported by the DRBG. The DRBG in the RBG3(XOR) construction is instantiated as follows:
\(s\) を、DRBGが支援できる最高のセキュリティ強度とします。RBG3(XOR)構成のDRBGは次のようにインスタンス化する:
\(\mathbf{RBG3(XOR)\_Instantiate}\):
\(\mathbf{RBG3(XOR)\_Instantiate}\):
Input:
入力:
1. \(\mathit{personalization\_string}\): An optional (but recommended) personalization string.
1. \(\mathit{personalization\_string}\):任意の(ただし推奨される)パーソナライゼーション文字列。
Output:
出力:
1. \(\mathit{status}\): The status returned by the \(\mathbf{RBG3(XOR)\_Instantiate}\) function.
1. \(\mathit{status}\):\(\mathbf{RBG3(XOR)\_Instantiate}\) 関数が返すステータス。
2. \(\mathit{RBG3\_DRBG\_state\_handle}\): The returned state handle for the internal state of the DRBG or an invalid state handle.
2. \(\mathit{RBG3\_DRBG\_state\_handle}\):DRBGの内部状態に対して返される状態ハンドル、または無効な状態ハンドル。
Process:
処理:
1. \((\mathit{status}, \mathit{RBG3\_DRBG\_state\_handle}) = \mathbf{DRBG\_Instantiate}(s, \mathit{personalization\_string})\).
1. \((\mathit{status}, \mathit{RBG3\_DRBG\_state\_handle}) = \mathbf{DRBG\_Instantiate}(s, \mathit{personalization\_string})\).
2. If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Invalid\_state\_handle})\).
2. \((\mathit{status} \ne \mathrm{SUCCESS})\) ならば、\((\mathit{status}, \mathit{Invalid\_state\_handle})\) を返します。
3. Return \((\mathrm{SUCCESS}, \mathit{RBG3\_DRBG\_state\_handle})\).
3. \((\mathrm{SUCCESS}, \mathit{RBG3\_DRBG\_state\_handle})\) を返します。
In step 1, the DRBG is instantiated at a security strength of \(s\) bits. \(\mathit{RBG3\_DRBG\_state\_handle}\) (if returned) is the state handle for the internal state of the DRBG used within the RBG3(XOR) construction.
手順1では、DRBGを \(s\) ビットのセキュリティ強度でインスタンス化します。\(\mathit{RBG3\_DRBG\_state\_handle}\)(返される場合)は、RBG3(XOR)構成内で使うDRBGの内部状態に対する状態ハンドルです。
In step 2, if the \(\mathit{status}\) returned from step 1 does not indicate a success, then return the \(\mathit{status}\) with an invalid state handle.
手順2では、手順1から返された \(\mathit{status}\) が成功を示さない場合、その \(\mathit{status}\) を無効な状態ハンドルとともに返します。
In step 3, the \(\mathit{status}\) and \(\mathit{RBG3\_DRBG\_state\_handle}\) that were obtained in step 1 are returned to the requesting application.
手順3では、手順1で得た \(\mathit{status}\) と \(\mathit{RBG3\_DRBG\_state\_handle}\) を要求元アプリケーションに返します。
The handling of status codes is discussed in item 10 of Sec. 2.6 and in Sec. 2.8.3, 3.1, and 8.1.2.
statusコードの処理については、第2.6節の項目10ならびに第2.8.3、3.1、8.1.2節を参照してください。
6.4.1.2. Random Bit Generation Using the RBG3(XOR) Construction
6.4.1.2. RBG3(XOR)構成による乱数ビット生成
As discussed in Sec. 2.8.3.2, an application may request the generation of random bits from the RBG3(XOR) construction:
第2.8.3.2節で説明したとおり、アプリケーションはRBG3(XOR)構成に乱数ビットの生成を要求してよい:
where \(\mathit{RBG3\_DRBG\_state\_handle}\) was provided during instantiation (see Sec. 6.4.1.1), \(n\) is the number of bits to be generated and returned to the application, and \(\mathit{additional\_input}\) is optional.
ここで \(\mathit{RBG3\_DRBG\_state\_handle}\) はインスタンス化時に提供されたものであり(第6.4.1.1節参照)、\(n\) は生成してアプリケーションに返すビット数であり、\(\mathit{additional\_input}\) は任意です。
The \(\mathbf{RBG3\_DRBG\_Generate\_request}\) received by the RBG3(XOR) construction shall result in the execution of the \(\mathbf{RBG3(XOR)\_Generate}\) function below. The output of that function shall be returned to the application in response to the \(\mathbf{RBG3\_DRBG\_Generate\_request}\).
RBG3(XOR)構成が受け取った \(\mathbf{RBG3\_DRBG\_Generate\_request}\) により、以下の \(\mathbf{RBG3(XOR)\_Generate}\) 関数を実行しなければなりません。その関数の出力は、\(\mathbf{RBG3\_DRBG\_Generate\_request}\) への応答としてアプリケーションに返さなければなりません。
Let \(s\) be the security strength instantiated for the DRBG (i.e., the highest security strength that can be supported by the DRBG; see Sec. 6.4.1.1), and let the \(\mathit{RBG3\_DRBG\_state\_handle}\) be the value returned by the instantiation function for RBG3(XOR)’s DRBG instantiation. Random bits with full entropy shall be generated by the RBG3(XOR) construction using the following generate function with the values of \(n\) and \(\mathit{additional\_input}\) provided in the \(\mathbf{DRBG\_Generate\_request}\) as input:
\(s\) をDRBGについてインスタンス化したセキュリティ強度(すなわちDRBGが支援できる最高のセキュリティ強度。第6.4.1.1節参照)とし、\(\mathit{RBG3\_DRBG\_state\_handle}\) をRBG3(XOR)のDRBGインスタンス化に対してインスタンス化関数が返した値とします。RBG3(XOR)構成は、\(n\) と \(\mathit{additional\_input}\) の値(\(\mathbf{DRBG\_Generate\_request}\) で与えられたもの)を入力として、次の生成関数を使い、完全エントロピーを持つ乱数ビットを生成しなければならない:
\(\mathbf{RBG3(XOR)\_Generate}\):
\(\mathbf{RBG3(XOR)\_Generate}\):
Input:
入力:
1. \(\mathit{RBG3\_DRBG\_state\_handle}\): The state handle of the DRBG used by the RBG3 construction.
1. \(\mathit{RBG3\_DRBG\_state\_handle}\):RBG3構成が使用するDRBGの状態ハンドル。
2. \(n\): The number of bits to be generated.
2. \(n\):生成するビット数。
3. \(\mathit{additional\_input}\): Optional additional input.
3. \(\mathit{additional\_input}\):任意の追加入力。
Output:
出力:
1. \(\mathit{status}\): The status returned by the \(\mathbf{RBG3(XOR)\_Generate}\) function.
1. \(\mathit{status}\):\(\mathbf{RBG3(XOR)\_Generate}\)関数が返すステータス。
2. \(\mathit{returned\_bits}\): The \(n\) bits generated by the RBG3(XOR) construction or a \(\mathit{Null}\) string.
2. \(\mathit{returned\_bits}\):RBG3(XOR)構成が生成した\(n\)ビット、または\(\mathit{Null}\)文字列。
Process:
処理:
1. \((\mathit{status}, \mathit{ES\_bits}) = \mathbf{Request\_entropy}(n)\). (See the notes below for customizing this step.)
1. \((\mathit{status}, \mathit{ES\_bits}) = \mathbf{Request\_entropy}(n)\)。(この手順の変更方法については以下の注を参照してください。)
2. If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Null})\).
2. \((\mathit{status} \ne \mathrm{SUCCESS})\)の場合、\((\mathit{status}, \mathit{Null})\)を返します。
3. \((\mathit{status}, \mathit{DRBG\_bits}) = \mathbf{DRBG\_Generate}(\mathit{RBG3\_DRBG\_state\_handle}, n, s, \mathit{additional\_input})\).
3. \((\mathit{status}, \mathit{DRBG\_bits}) = \mathbf{DRBG\_Generate}(\mathit{RBG3\_DRBG\_state\_handle}, n, s, \mathit{additional\_input})\)。
4. If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Null})\).
4. \((\mathit{status} \ne \mathrm{SUCCESS})\)の場合、\((\mathit{status}, \mathit{Null})\)を返します。
5. \(\mathit{returned\_bits} = \mathit{ES\_bits} \oplus \mathit{DRBG\_bits}\).
5. \(\mathit{returned\_bits} = \mathit{ES\_bits} \oplus \mathit{DRBG\_bits}\)。
6. Return \((\mathrm{SUCCESS}, \mathit{returned\_bits})\).
6. \((\mathrm{SUCCESS}, \mathit{returned\_bits})\)を返します。
Step 1 requests that the entropy source(s) generate \(n\) bits. Since full-entropy bits are required, the (placeholder) \(\mathbf{Request\_entropy}\) call shall be replaced by one of the following:
手順1ではエントロピー源に\(n\)ビットの生成を要求します。完全エントロピーのビットが必要なため、仮置きの\(\mathbf{Request\_entropy}\)呼び出しを次のいずれかに置き換えなければならない:
•If full-entropy output is provided by all validated physical entropy sources used by the RBG3(XOR) implementation, and non-physical entropy sources are not used, step 1 becomes:
•RBG3(XOR)実装で使用する検証済み物理エントロピー源がすべて完全エントロピー出力を提供し、非物理エントロピー源を使用しない場合、手順1を次のようにする:
The \(\mathbf{Get\_entropy\_bitstring}\) function31 shall use Method 132 to obtain the \(n\) full-entropy bits that were requested to produce \(\mathit{ES\text{-}bits}\).
\(\mathbf{Get\_entropy\_bitstring}\)関数31は方法132を使い、要求された\(n\)ビットの完全エントロピーのビットを取得して\(\mathit{ES\text{-}bits}\)を生成しなければなりません。
•If full-entropy output is not provided by all physical entropy source(s), or the output of both physical and non-physical entropy sources is used by the implementation, step 1 becomes:
•物理エントロピー源のすべてが完全エントロピー出力を提供するわけではない場合、または実装が物理と非物理の両方のエントロピー源の出力を使用する場合、手順1を次のようにする:
The \(\mathbf{Get\_conditioned\_full\_entropy\_input}\) procedure is specified in Sec. 3.2.2.2. It requests entropy from the entropy sources in step 3.1 of that procedure with a \(\mathbf{Get\_entropy\_bitstring}\) call. The \(\mathbf{Get\_entropy\_bitstring}\) call shall use Method 1 (as specified in Sec. 2.3) when collecting the output of the entropy source(s) (i.e., only the entropy provided by one or more physical entropy sources is counted).
\(\mathbf{Get\_conditioned\_full\_entropy\_input}\)手続きは第3.2.2.2節で規定します。この手続きの手順3.1では\(\mathbf{Get\_entropy\_bitstring}\)呼び出しによってエントロピー源からエントロピーを要求します。エントロピー源の出力を収集する際、\(\mathbf{Get\_entropy\_bitstring}\)呼び出しは方法1(第2.3節の規定)を使用しなければなりません(すなわち、1つ以上の物理エントロピー源が提供するエントロピーのみを計数する)。
In step 2, if the request in step 1 is not successful, abort the \(\mathbf{RBG3(XOR)\_Generate}\) function, returning the \(\mathit{status}\) received in step 1 and a \(\mathit{Null}\) bitstring as the \(\mathit{returned\_bits}\). If \(\mathit{status}\) indicates a success, \(\mathit{ES\_bits}\) is the full-entropy bitstring to be used in step 5.
手順2では、手順1の要求に失敗した場合、\(\mathbf{RBG3(XOR)\_Generate}\)関数を中止し、\(\mathit{status}\)(手順1で受け取ったもの)と\(\mathit{Null}\)ビット列を\(\mathit{returned\_bits}\)として返します。\(\mathit{status}\)が成功を示す場合、\(\mathit{ES\_bits}\)は手順5で使用する完全エントロピーのビット列です。
In step 3, the RBG3(XOR)’s DRBG instantiation is requested to generate \(n\) bits at a security strength of \(s\) bits. The DRBG instantiation is indicated by the \(\mathit{RBG3\_DRBG\_state\_handle}\), which was obtained during instantiation (see Sec. 6.4.1.1). If additional input is provided in the \(\mathbf{RBG3(XOR)\_Generate}\) call, it shall be included in the \(\mathbf{DRBG\_Generate}\) function call to the DRBG. The DRBG may require reseeding during the \(\mathbf{DRBG\_Generate}\) function call in step 3 (e.g., because the end of the seedlife of the DRBG has been reached).
手順3では、RBG3(XOR)のDRBGインスタンスに、\(n\)ビットをセキュリティ強度\(s\)ビットで生成するよう要求します。対象のDRBGインスタンスは\(\mathit{RBG3\_DRBG\_state\_handle}\)で示し、これはインスタンス化時に取得したものです(第6.4.1.1節参照)。追加入力が\(\mathbf{RBG3(XOR)\_Generate}\)呼び出しで指定されている場合、それを\(\mathbf{DRBG\_Generate}\)関数呼び出し(DRBGに対するもの)に含めなければなりません。手順3の\(\mathbf{DRBG\_Generate}\)関数呼び出し中に、DRBGの再シードが必要となることがあります(例えば、DRBGのシード寿命の終わりに達した場合)。
In step 4, if the \(\mathbf{DRBG\_Generate}\) function request is not successful, the \(\mathbf{RBG3(XOR)\_Generate}\) function is aborted, and the \(\mathit{status}\) received in step 3 and a \(\mathit{Null}\) bitstring are returned to the consuming application. If \(\mathit{status}\) indicates a success, \(\mathit{DRBG\_bits}\) is the pseudorandom bitstring to be used in step 5.
手順4では、\(\mathbf{DRBG\_Generate}\)関数の要求に失敗した場合、\(\mathbf{RBG3(XOR)\_Generate}\)関数を中止し、\(\mathit{status}\)(手順3で受け取ったもの)と\(\mathit{Null}\)ビット列を利用側アプリケーションに返します。\(\mathit{status}\)が成功を示す場合、\(\mathit{DRBG\_bits}\)は手順5で使用する擬似乱数ビット列です。
Step 5 combines the bitstrings returned from the entropy source(s) (from step 1) and the DRBG (from step 3) using an XOR operation. The resulting bitstring is returned to the consuming application in step 6.
手順5では、手順1のエントロピー源から返されたビット列と、手順3のDRBGから返されたビット列をXOR演算で組み合わせます。結果のビット列を手順6で利用側アプリケーションに返します。
6.4.1.3. Pseudorandom Bit Generation Using a Directly Accessible DRBG
6.4.1.3. 直接アクセス可能なDRBGによる擬似乱数ビット生成
If prediction resistance is desired by a consuming application for the next DRBG output to be generated so that a previous internal state that may have been compromised cannot be used to determine the next DRBG output, the application requests a reseed of the DRBG before requesting the generation of pseudorandom bits directly from the DRBG, as discussed in Sec. 6.4.1.4. This is the same process shown in Fig. 21 in Sec. 5.2.2.
利用側アプリケーションが、侵害された可能性のある以前の内部状態から次のDRBG出力を推測されないよう予測耐性を求める場合、第6.4.1.4節で説明するとおり、DRBGから直接擬似乱数ビットの生成を要求する前にDRBGの再シードを要求します。これは第5.2.2節の図21に示す処理と同じです。
If a reseed of the DRBG was not requested by the application, or a \(\mathit{status}\) of SUCCESS was returned by the \(\mathbf{DRBG\_Reseed}\) function when the application requested a reseed, pseudorandom bits may be requested as follows:
アプリケーションからDRBGの再シードが要求されなかった場合、または再シード要求に対して\(\mathit{status}\)としてSUCCESSが\(\mathbf{DRBG\_Reseed}\)関数から返された場合、次のように擬似乱数ビットを要求してよい:
where \(\mathit{RBG3(XOR)\_state\_handle}\) was provided during instantiation, and \(\mathit{additional\_input}\) is optional.
ここで\(\mathit{RBG3(XOR)\_state\_handle}\)はインスタンス化時に与えられ、\(\mathit{additional\_input}\)は任意です。
The \(\mathbf{DRBG\_Generate\_request}\) received by the DRBG shall result in the execution of the \(\mathbf{DRBG\_Generate}\) function in the DRBG:
DRBGが受け取った\(\mathbf{DRBG\_Generate\_request}\)により、\(\mathbf{DRBG\_Generate}\)関数をそのDRBG内で実行しなければならない:
where:
ここで:
• \(\mathit{RBG3\_DRBG\_state\_handle}\) is the state handle used by the DRBG within the RBG3(XOR) construction.
• \(\mathit{RBG3\_DRBG\_state\_handle}\)は、RBG3(XOR)構成内のDRBGが使用する状態ハンドルです。
• \(\mathit{requested\_security\_strength}\) is provided in the \(\mathbf{DRBG\_Generate\_request}\) and must be \(\le\) the instantiated security strength of the DRBG.
• \(\mathit{requested\_security\_strength}\)は\(\mathbf{DRBG\_Generate\_request}\)で指定し、DRBGのインスタンス化時のセキュリティ強度以下(\(\le\))でなければなりません。
• Any \(\mathit{additional\_input}\) provided in a \(\mathbf{DRBG\_Generate\_request}\) shall be provided as input to the \(\mathbf{DRBG\_Generate}\) function. Otherwise, the use of \(\mathit{additional\_input}\) is optional when invoking the \(\mathbf{DRBG\_Generate}\) function.
• \(\mathit{additional\_input}\)が\(\mathbf{DRBG\_Generate\_request}\)で指定された場合、それを\(\mathbf{DRBG\_Generate}\)関数への入力として渡さなければなりません。それ以外の場合、\(\mathit{additional\_input}\)の使用は、\(\mathbf{DRBG\_Generate}\)関数を呼び出す際には任意です。
The output of the \(\mathbf{DRBG\_Generate}\) function shall be returned to the application in response to the \(\mathbf{DRBG\_Generate\_request}\).
\(\mathbf{DRBG\_Generate}\)関数の出力は、\(\mathbf{DRBG\_Generate\_request}\)への応答としてアプリケーションに返さなければなりません。
6.4.1.4. Reseeding the DRBG Instantiation
6.4.1.4. DRBGインスタンスの再シード
As discussed in Sec. 2.4.2, the reseeding of the DRBG may be performed 1) upon request from a consuming application or 2) based on implementation-selected criteria, such as time, number of outputs, events, or the availability of sufficient entropy.
第2.4.2節で説明したとおり、DRBGは利用側アプリケーションから要求されたとき、または時刻、出力数、イベント、十分なエントロピーの利用可能性など実装者が選択する基準に基づいて再シードしてもよいです。
An application may request the reseeding of the DRBG within the RBG3(XOR) construction:
アプリケーションはRBG3(XOR)構成内のDRBGの再シードを要求してよい:
where \(\mathit{RBG3(XOR)\_state\_handle}\) (if used) was provided during instantiation, and \(\mathit{additional\_input}\) is optional.
\(\mathit{RBG3(XOR)\_state\_handle}\)は(使用する場合)インスタンス化時に返され、\(\mathit{additional\_input}\)は任意です。
The DRBG executes a \(\mathbf{DRBG\_Reseed}\) function in response to a \(\mathbf{DRBG\_Reseed\_request}\) from an application or in accordance with implementation-selected criteria:
DRBGは\(\mathbf{DRBG\_Reseed}\)関数を、アプリケーションからの\(\mathbf{DRBG\_Reseed\_request}\)に応じて、または実装で選択した基準に従って実行する:
where \(\mathit{RBG3\_DRBG\_state\_handle}\) (if used) was returned by the \(\mathbf{DRBG\_Instantiate}\) function (see Sec. 2.8.1.1 and 6.4.1.1). \(\mathit{RBG3\_DRBG\_state\_handle}\) is the state handle for the internal state of the DRBG within the RBG3(XOR) construction. Any \(\mathit{additional\_input}\) provided in a \(\mathbf{DRBG\_Reseed\_request}\) shall be provided as input to the \(\mathbf{DRBG\_Reseed}\) function. Otherwise, the use of \(\mathit{additional\_input}\) is optional when invoking the \(\mathbf{DRBG\_Reseed}\) function.
\(\mathit{RBG3\_DRBG\_state\_handle}\)は(使用する場合)\(\mathbf{DRBG\_Instantiate}\)関数から返された状態ハンドルです(第2.8.1.1節および第6.4.1.1節参照)。\(\mathit{RBG3\_DRBG\_state\_handle}\)はRBG3(XOR)構成内のDRBGの内部状態ハンドルです。\(\mathit{additional\_input}\)が\(\mathbf{DRBG\_Reseed\_request}\)で指定された場合、それを\(\mathbf{DRBG\_Reseed}\)関数への入力として渡さなければなりません。それ以外の場合、\(\mathit{additional\_input}\)の使用は\(\mathbf{DRBG\_Reseed}\)関数を呼び出す際に任意です。
6.4.2. RBG3(XOR) Requirements
6.4.2. RBG3(XOR)の要件
An RBG3(XOR) construction has the following requirements in addition to those provided in Sec. 6.3:
RBG3(XOR)構成には、第6.3節の要件に加えて次の要件がある:
1.Bitstrings with full entropy shall be provided to the XOR operation either directly from the concatenated output of one or more validated physical entropy sources or by an external conditioning function that provides full-entropy output using the output of one or more validated physical entropy sources.
1.完全エントロピーのビット列をXOR演算へ渡さなければなりません。これは、1つ以上の検証済み物理エントロピー源の出力を連結して直接得るか、1つ以上の検証済み物理エントロピー源の出力を使用する完全エントロピー出力対応の外部条件付け関数で得ます。
2.Entropy source output used for the RBG’s XOR operation shall not also be used to instantiate and reseed the RBG’s DRBG.33
2.RBGのXOR演算に使用するエントロピー源の出力を、RBGのDRBGをインスタンス化または再シードするためにも使用してはなりません。33
3. The DRBG shall be reseeded before generating output if the DRBG has produced \(2^{17}\) or more bits of output since instantiation or the last reseeding process.
3. インスタンス化または前回の再シード以降にDRBGが\(2^{17}\)ビット以上を出力している場合、次の出力を生成する前にDRBGを再シードしなければなりません。
6.5. RBG3(RS) Construction
6.5. RBG3(RS)構成
The second RBG3 construction specified in this document is the RBG3(RS) construction shown in Fig. 24. An example of this construction is provided in Appendix B.6.
本書で規定する2つ目のRBG3構成は図24に示すRBG3(RS)構成です。この構成の例を付録B.6に示します。
図24. RBG3(RS)構成の一般的な構造。下にCryptographic Module(暗号モジュール)というラベルがある枠の中に、下にRBG security boundary(RBGセキュリティ境界)というラベルがある赤枠がある。赤枠の中では、Entropy Source(s)(エントロピー源)から破線枠の*Conditioning Function(条件付け関数)へ矢印が向かい、そこからDRBGへseed_materialという矢印が向かう。これらの下の赤枠内に、赤字でRepeated requests and responses(繰り返される要求と応答)と記されている。モジュール内のInternally provided input(内部提供入力)とモジュールの上のExternally provided input(外部提供入力)から、それぞれ下向きの破線矢印がDRBGに入る。モジュールの外の右側では、Application(アプリケーション)からDRBGへRequest(要求)という矢印が向かい、DRBGからApplicationへFull-entropy Output(完全エントロピー出力)という矢印が向かう(モジュール内は実線、外は破線)。注記:* For a CTR_DRBG without a derivation function when the entropy source does not provide full-entropy output(エントロピー源が完全エントロピー出力を提供しない場合の、導出関数なしのCTR_DRBG)。
Fig. 24. Generic structure of the RBG3(RS) construction
図24. RBG3(RS)構成の一般的な構造
External conditioning of the outputs from the entropy source(s) during instantiation and reseeding is required to provide bitstrings with full entropy when the DRBG is CTR_DRBG without a derivation function and the entropy source(s) does not provide output with full entropy. Otherwise, the use of a conditioning function is optional.
DRBGが導出関数なしのCTR_DRBGで、エントロピー源が完全エントロピー出力を提供しない場合、インスタンス化および再シード時にエントロピー源の出力を外部で条件付けし、完全エントロピーのビット列を得なければなりません。それ以外の場合、条件付け関数の使用は任意です。
6.5.1. Conceptual Interfaces
6.5.1. 概念インターフェース
The RBG interfaces include function calls for instantiating the DRBG (see Sec. 6.5.1.1), generating random bits on request (see Sec. 6.5.1.2 and 6.5.1.3), and reseeding the DRBG instantiation (see Sec. 6.5.1.4).
RBGインターフェースには、DRBGのインスタンス化(第6.5.1.1節参照)、要求に応じた乱数ビットの生成(第6.5.1.2節および第6.5.1.3節参照)、DRBGインスタンスの再シード(第6.5.1.4節参照)の関数呼び出しが含まれます。
6.5.1.1. Instantiation of the DRBG Within an RBG3(RS) Construction
6.5.1.1. RBG3(RS)構成内のDRBGのインスタンス化
Before the RBG3(RS) construction can be used to generate bits, an application shall request the instantiation of the DRBG within the construction (see Sec. 2.8.3.1):
RBG3(RS)構成でビットを生成する前に、アプリケーションは構成内のDRBGのインスタンス化を要求しなければならない(第2.8.3.1節参照):
where \(\mathit{requested\_security\_strength}\) and \(\mathit{personalization\_string}\) are optional. If the \(\mathit{requested\_security\_strength}\) parameter is provided and exceeds the highest security strength that can be supported by the DRBG design, an error indication shall be returned with an invalid \(\mathit{state\_handle}\) (see Sec. 2.8.3.1).
\(\mathit{requested\_security\_strength}\)と\(\mathit{personalization\_string}\)は任意です。\(\mathit{requested\_security\_strength}\)パラメーターが指定され、DRBG設計が支援できる最高のセキュリティ強度を超える場合、エラー表示と無効な\(\mathit{state\_handle}\)を返さなければなりません(第2.8.3.1節参照)。
If the \(\mathit{requested\_security\_strength}\) is provided and acceptable (see Sec. 2.8.3.1) or the \(\mathit{requested\_security\_strength}\) information is not provided, the \(\mathbf{Instantiate\_RBG3\_DRBG\_request}\) received by the RBG3(RS) construction shall result in the execution of the \(\mathbf{RBG3(RS)\_Instantiate}\) function below. The \(\mathit{status}\) returned by that function shall be returned to the application in response to the \(\mathbf{Instantiate\_RBG3\_DRBG\_request}\).
\(\mathit{requested\_security\_strength}\)が許容範囲内で指定された場合(第2.8.3.1節参照)、または\(\mathit{requested\_security\_strength}\)の情報が指定されていない場合、RBG3(RS)構成が受け取った\(\mathbf{Instantiate\_RBG3\_DRBG\_request}\)により、以下の\(\mathbf{RBG3(RS)\_Instantiate}\)関数を実行しなければなりません。同関数が返す\(\mathit{status}\)は、\(\mathbf{Instantiate\_RBG3\_DRBG\_request}\)への応答としてアプリケーションに返さなければなりません。
Let \(s\) be the highest security strength that can be supported by the DRBG, and let \(\mathit{personalization\_string}\) be the value provided in the \(\mathbf{Instantiate\_RBG3\_DRBG\_request}\) (if any). The DRBG in the RBG3(RS) construction is instantiated as follows:
\(s\)をDRBGが支援できる最高のセキュリティ強度とし、\(\mathit{personalization\_string}\)を\(\mathbf{Instantiate\_RBG3\_DRBG\_request}\)で渡された値(指定されている場合)とします。RBG3(RS)構成内のDRBGは次のようにインスタンス化される:
\(\mathbf{RBG3(RS)\_Instantiate}\):
\(\mathbf{RBG3(RS)\_Instantiate}\):
Input:
入力:
1. \(\mathit{personalization\_string}\): An optional (but recommended) personalization string.
1. \(\mathit{personalization\_string}\):任意の(ただし推奨される)パーソナライゼーション文字列。
Output:
出力:
1. \(\mathit{status}\): The status returned from the \(\mathbf{RBG3(RS)\_Instantiate}\) function.
1. \(\mathit{status}\):\(\mathbf{RBG3(RS)\_Instantiate}\)関数が返すステータス。
2. \(\mathit{RBG3\_DRBG\_state\_handle}\): A pointer to the internal state of the DRBG if the \(\mathit{status}\) indicates a success. Otherwise, an invalid state handle is returned.
2. \(\mathit{RBG3\_DRBG\_state\_handle}\):DRBGの内部状態へのポインター(\(\mathit{status}\)が成功を示す場合)。それ以外の場合、無効な状態ハンドルを返します。
Process:
処理:
1. \((\mathit{status}, \mathit{RBG3\_DRBG\_state\_handle}) = \mathbf{DRBG\_Instantiate}(s, \mathit{personalization\_string})\).
1. \((\mathit{status}, \mathit{RBG3\_DRBG\_state\_handle}) = \mathbf{DRBG\_Instantiate}(s, \mathit{personalization\_string})\)。
2. If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Invalid\_state\_handle})\).
2. If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Invalid\_state\_handle})\).
3. Return \((\mathrm{SUCCESS}, \mathit{RBG3\_DRBG\_state\_handle})\).
3. Return \((\mathrm{SUCCESS}, \mathit{RBG3\_DRBG\_state\_handle})\).
In step 1, the DRBG is instantiated at a security strength of \(s\) bits.
手順1では、DRBGをセキュリティ強度\(s\)ビットでインスタンス化します。
In step 2, if the \(\mathit{status}\) returned from step 1 does not indicate a success, then return the \(\mathit{status}\) and an invalid state handle.
手順2では、手順1から返された\(\mathit{status}\)が成功を示さない場合、その\(\mathit{status}\)と無効な状態ハンドルを返します。
In step 3, the \(\mathit{status}\) and the \(\mathit{RBG3\_DRBG\_state\_handle}\) are returned. \(\mathit{RBG3\_DRBG\_state\_handle}\) is the state handle for the internal state of the DRBG used within the RBG3(RS) construction.
手順3では\(\mathit{status}\)と\(\mathit{RBG3\_DRBG\_state\_handle}\)を返します。\(\mathit{RBG3\_DRBG\_state\_handle}\)は、RBG3(RS)構成内で使用するDRBGの内部状態ハンドルです。
The handling of status codes is discussed in Sec. 2.8.3 and 6.5.1.2.
statusコードの処理については、第2.8.3節および第6.5.1.2節を参照してください。
6.5.1.2. Random and Pseudorandom Bit Generation
6.5.1.2. 乱数および擬似乱数ビットの生成
When the DRBG within an RBG3(RS) construction is instantiated at a security strength of \(s\) bits, \(s\) bits with full entropy can be extracted from its output if at least \(s + 64\) bits of fresh entropy are inserted into the DRBG’s internal state before generating the output (see item 11 in Sec. 2.6). Per requirement 4 in Sec. 6.3, the security strength and resulting length of the full entropy bitstring (\(s\)) are the highest security strength possible for the cryptographic primitive used by the DRBG. If a consuming application requests more than \(s\) bits, multiple iterations of this process are required.
RBG3(RS)構成内のDRBGをセキュリティ強度\(s\)ビットでインスタンス化した場合、完全エントロピーを持つ\(s\)ビットをその出力から抽出できます。ただし、出力を生成する前に\(s + 64\)ビット以上の新たなエントロピーをDRBGの内部状態に挿入することを条件とします(第2.6節の項目11参照)。第6.3節の要件4に従い、完全エントロピーのビット列のセキュリティ強度と長さ(\(s\))は、DRBGで使う暗号プリミティブが実現できる最高のセキュリティ強度とします。利用側アプリケーションが\(s\)ビットを超えるビット数を要求する場合、この処理を複数回繰り返す必要があります。
Fig. 25 depicts a sequence of RBG3(RS) generate operations.
図25に、RBG3(RS)の生成処理の繰り返しを示します。
図25. RBG3(RS)の生成要求の連続処理。6つの楕円が太い矢印で左から右へつながり、赤いReseed(再シード)と青いGenerate(生成)が交互に並ぶ(Reseed、Generate、Reseed、Generate、Reseed、Generate)。その後に太い矢印と省略記号(…)が続く。各Reseedには上からs + 64 bits of entropy(s + 64ビットのエントロピー)という下向きの矢印が入り、各Generateからはs full-entropy bits(s個の完全エントロピービット)という上向きの矢印が出る。最初の4つの楕円の下の波括弧にはRBG3(RS) generate request 1(RBG3(RS)生成要求1)、最後の2つの楕円の下の波括弧にはRBG3(RS) generate request 2(RBG3(RS)生成要求2)と記されている。
Fig. 25. Sequence of RBG3(RS) generate requests
図25. RBG3(RS)の生成要求の連続処理
Full-entropy output from this construction is generated in s-bit strings, where s is the instantiated security strength of the DRBG used in an implementation. For each s bits of generated output, s + 64 bits of fresh entropy are obtained by reseeding (shown in red in Fig. 25) and then inserted into the DRBG’s internal state before generating an s-bit string (shown in blue). Figure 25 also shows two generate requests using the RBG3(RS) construction. The first generate request requires the generation of two iterations of the reseed-generate process (e.g., two strings of s bits are generated, each preceded by obtaining s + 64 bits of fresh entropy). The second generate request requires only a single string of s full-entropy bits to be generated (preceded by obtaining s + 64 bits of fresh entropy).
この構成は、完全エントロピー出力をsビットのビット列として生成します。sは実装で使用するDRBGのインスタンス化時のセキュリティ強度です。生成する出力sビットごとに、再シードによってs + 64ビットの新たなエントロピーを取得し(図25の赤色部分)、sビットのビット列を生成する前にDRBGの内部状態へ挿入します(ビット列の生成は青色で示します)。図25にはRBG3(RS)構成を用いた2つの生成要求も示します。1つ目の生成要求では、再シードと生成の処理を2回繰り返す必要があります(例えば、sビットのビット列を2つ生成し、それぞれの生成前にs + 64ビットの新たなエントロピーを取得します)。2つ目の生成要求では、sビットの完全エントロピーのビット列を1つだけ生成する必要があります(その前にs + 64ビットの新たなエントロピーを取得します)。
Figure 26 provides a flow of the steps of the RBG3(RS)_Generate function.
図26にRBG3(RS)_Generate関数の処理手順を示します。
図26. RBG3(RS)_Generate関数のフロー。上から下へのフローチャートである。Receive generate request for n bits(nビットの生成要求を受け取る)、sum = 0, temp = Null、Reseed with s+64 bits of entropy(s+64ビットのエントロピーで再シードする)、Generate s bits(sビットを生成する)、temp = temp || (the s bits), sum = sum + s(tempにそのsビットを連結し、sumにsを加える)と続き、判定のひし形sum ≥ n?に至る。No(いいえ)の分岐は左側の線でReseed with s+64 bits of entropyに戻る。Yes(はい)の分岐はOutput n bits of temp(tempのnビットを出力する)に進む。
Fig. 26. Flow of the RBG3(RS)_Generate function
図26. RBG3(RS)_Generate関数のフロー
The DRBG used by the RBG3(RS) construction may be implemented to be directly accessible by an application. In this case, the directly accessible DRBG has the same state handle and internal state as that used by the RBG3(RS) construction, and additional steps are required when accessing the DRBG directly.
RBG3(RS)構成で使用するDRBGを、アプリケーションが直接アクセスできるよう実装してもよいです。この場合、直接アクセス可能なDRBGは、RBG3(RS)構成が使うものと同じステートハンドルと内部状態を持ち、DRBGに直接アクセスする際には追加の手順が必要となります。
Figure 27 depicts a sequence of RBG3(RS) generate requests followed by a sequence of requests directly to a DRBG that has the same internal state and state handle (shown in green) and another sequence of RBG3(RS) generate requests.
図27に、RBG3(RS)の生成要求の連続処理の後、同じ内部状態とstate_handle(緑色)を持つDRBGへの直接要求を続け、さらにRBG3(RS)の生成要求を行う流れを示します。
図27. DRBGへの直接生成要求。省略記号(…)から始まり、楕円が太い矢印で左から右へつながる。赤いReseed(再シード、上からs + 64 bits of entropy(s + 64ビットのエントロピー)という矢印が入る)、青いGenerate(生成、上へs full-entropy bits(s個の完全エントロピービット)という矢印が出る)、赤いReseed(s + 64 bits of entropyが入る)、緑のGenerate(上へn bits generated(生成されたnビット)という矢印が出る)、省略記号、緑のGenerate(上へm bits generated(生成されたmビット)という矢印が出る)、赤いReseed(s + 64 bits of entropyが入る)と続き、最後に太い矢印と省略記号がある。下の波括弧で楕円がまとめられている。最初のReseedと青いGenerateはRBG3(RS) generate request(RBG3(RS)生成要求)、2番目のReseedと2つの緑のGenerateはOne or more DRBG generate requests(1つ以上のDRBG生成要求)、最後のReseedはRBG3(RS) generate requestと記されている。
Fig. 27. Direct DRBG generate requests
図27. DRBGへの直接生成要求
In this scenario, an RBG3(RS) generate request is preceded by obtaining \(s + 64\) bits of fresh entropy. The first generate request directly to the DRBG following one or more RBG3(RS) generate requests is preceded by obtaining \(s + 64\) bits of fresh entropy. Successive DRBG requests do not require the insertion of fresh entropy (except, for example, if requested by the consuming application or some event triggers the need for a reseed of the DRBG). When a consuming application later requests that the RBG3(RS) construction generate full-entropy bits again, the reseed-generate process is resumed by first reseeding with \(s + 64\) bits of entropy before the generation of each \(s\)-bit string by the RBG3(RS) construction.
この例では、RBG3(RS)の生成要求の前に\(s + 64\)ビットの新たなエントロピーを取得します。1つ以上のRBG3(RS)生成要求の後にDRBGへ直接行う最初の生成要求の前にも、\(s + 64\)ビットの新たなエントロピーを取得します。その後のDRBG要求では、利用側アプリケーションから要求された場合や、再シードが必要となるイベントが発生した場合などを除き、新たなエントロピーを挿入する必要はありません。利用側アプリケーションが後でRBG3(RS)構成に完全エントロピーのビット生成を再度要求すると、\(s + 64\)ビットのエントロピーで再シードしてからRBG3(RS)構成が各\(s\)ビット列を生成するという、再シードと生成の処理を再開します。
All requests to the RBG3 construction need to be atomic and sequential. Each generate request to the RBG3 construction — either for RBG3(RS) output or directly from the DRBG — shall complete fully and return its answer before another request starts. The implementation shall ensure that only one generate request is being serviced at a time, even when the RBG is implemented in an environment that allows concurrent access to the RBG3 construction. These restrictions also apply to the initial request for output directly from the DRBG.
RBG3構成へのすべての要求は、不可分かつ逐次的に処理される必要があります。RBG3構成への各生成要求は、RBG3(RS)出力を求める場合もDRBGへ直接行う場合も、完全に処理されて結果を返してから次の要求を開始しなければなりません。RBGが並行アクセス可能な環境で実装されている場合も、同時に処理する生成要求が1つだけとなるよう実装しなければなりません。この制約は、DRBGへの最初の直接出力要求にも適用します。
As discussed in Sec. 2.8.3.2, an application may request the generation of random bits as follows:
第2.8.3.2節で説明したとおり、アプリケーションは次のように乱数ビットの生成を要求してよい:
where \(\mathit{RBG3\_DRBG\_state\_handle}\) was provided during instantiation (see Sec. 6.5.1.1), \(n\) is the number of bits to be generated and returned to the application, and \(\mathit{additional\_input}\) is optional.
\(\mathit{RBG3\_DRBG\_state\_handle}\)はインスタンス化時に返されたものであり(第6.5.1.1節参照)、\(n\)は生成してアプリケーションに返すビット数であり、\(\mathit{additional\_input}\)は任意です。
The \(\mathbf{RBG3\_Generate\_request}\) received by the RBG3(RS) construction shall result in the execution of the \(\mathbf{RBG3(RS)\_Generate}\) function below. The output of that function shall be returned to the application in response to the \(\mathbf{RBG3\_DRBG\_Generate\_request}\).
RBG3(RS)構成が受け取った\(\mathbf{RBG3\_Generate\_request}\)により、以下の\(\mathbf{RBG3(RS)\_Generate}\)関数を実行しなければなりません。同関数の出力は、\(\mathbf{RBG3\_DRBG\_Generate\_request}\)への応答としてアプリケーションに返さなければなりません。
Let the input parameters provided in the request above also be provided as input to the RBG3(RS)_Generate function. Appendix A.2 is a reference for the appropriate values for each DRBG type (e.g., CTR_DRBG, Hash_DRBG, or HMAC_DRBG).
上記要求の入力パラメータをRBG3(RS)_Generate関数への入力にも渡します。各DRBG種別(例:CTR_DRBG、Hash_DRBG、HMAC_DRBG)の適切な値については、付録A.2を参照してください。
Random bits with full entropy shall be generated as follows:
完全エントロピーを持つ乱数ビットを次のように生成しなければならない:
RBG3(RS)_ Generate:
RBG3(RS)_Generate:
Input:
入力:
1. \(\mathit{RBG3\_DRBG\_state\_handle}\): A pointer to the internal state of the DRBG used by the RBG3(RS) construction.
1. \(\mathit{RBG3\_DRBG\_state\_handle}\):RBG3(RS)構成が使用するDRBGの内部状態へのポインター。
2. \(n\): The number of full-entropy bits to be generated.
2. \(n\):生成する完全エントロピービットの数。
3. \(\mathit{additional\_input}\): Optional additional input.
3. \(\mathit{additional\_input}\):任意の追加入力。
Output:
出力:
1. \(\mathit{status}\): The status returned by the \(\mathbf{RBG3(RS)\_Generate}\) function.
1. \(\mathit{status}\):\(\mathbf{RBG3(RS)\_Generate}\)関数が返すステータス。
2. \(\mathit{returned\_bits}\): The \(n\) full-entropy bits requested or a \(\mathit{Null}\) string.
2. \(\mathit{returned\_bits}\):要求された\(n\)ビットの完全エントロピービット、または\(\mathit{Null}\)文字列。
Process:
処理:
1. \(\mathit{temp} = \mathit{Null}\).
1. \(\mathit{temp} = \mathit{Null}\).
2. \(\mathit{sum} = 0\).
2. \(\mathit{sum} = 0\).
3. While \((\mathit{sum} < n)\),
3. While \((\mathit{sum} < n)\),
3.1 Reseed with at least \(s + 64\) bits of fresh entropy (see the notes below for customizing this step).
3.1 少なくとも\(s + 64\)ビットの新たなエントロピーで再シードします(この手順の変更方法については以下の注を参照)。
3.2 \((\mathit{status}, \mathit{full\_entropy\_bits}) = \mathbf{DRBG\_Generate}(\mathit{RBG3\_DRBG\_state\_handle}, s, s, \mathit{additional\_input})\).
3.2 \((\mathit{status}, \mathit{full\_entropy\_bits}) = \mathbf{DRBG\_Generate}(\mathit{RBG3\_DRBG\_state\_handle}, s, s, \mathit{additional\_input})\).
3.3 If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Null})\).
3.3 If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Null})\).
3.4 \(\mathit{temp} = \mathit{temp} \parallel \mathit{full\_entropy\_bits}\).
3.4 \(\mathit{temp} = \mathit{temp} \parallel \mathit{full\_entropy\_bits}\).
3.5 \(\mathit{sum} = \mathit{sum} + s\).
3.5 \(\mathit{sum} = \mathit{sum} + s\).
3.6 \(\mathit{additional\_input} = \mathit{Null}\) string.
3.6 \(\mathit{additional\_input} = \mathit{Null}\)文字列。
4. Return \((\mathrm{SUCCESS}, \mathbf{leftmost}(\mathit{temp}, n))\).
4. Return \((\mathrm{SUCCESS}, \mathbf{leftmost}(\mathit{temp}, n))\).
In steps 1 and 2, the bitstring intended to collect the generated bits (\(\mathit{temp}\)) is initialized to the \(\mathit{Null}\) bitstring, and the counter for the number of bits obtained for fulfilling the request (\(\mathit{sum}\)) is initialized to zero.
手順1および2では、生成されたビットを集めるためのビット列(\(\mathit{temp}\))を\(\mathit{Null}\)ビット列に初期化し、要求を満たすために取得したビット数のカウンター(\(\mathit{sum}\))を0に初期化します。
Step 3 is iterated until at least \(n\) full-entropy bits have been generated. Let \(\mathit{keylen}\) be the length of the key to be used by the cryptographic primitive, and let \(\mathit{output\_len}\) be the length of its output block.
手順3は、少なくとも\(n\)ビットの完全エントロピービットが生成されるまで繰り返します。\(\mathit{keylen}\)を暗号プリミティブで使用する鍵の長さ、\(\mathit{output\_len}\)をその出力ブロックの長さとします。
Step 3.1 obtains at least \(s + 64\) bits of fresh entropy and inserts it into the internal state.
手順3.1では、少なくとも\(s + 64\)ビットの新たなエントロピーを取得し、内部状態に挿入します。
• For \(\mathrm{CTR\_DRBG}\) without a derivation function, \(\mathit{keylen} + \mathit{output\_len}\) bits of seed material are requested during reseeding using a full-entropy source that provides full-entropy output or as otherwise specified in [SP_800-90A]. Step 3.1 becomes:
• 導出関数なしの\(\mathrm{CTR\_DRBG}\)では、再シード時に\(\mathit{keylen} + \mathit{output\_len}\)ビットのシード材料を、完全エントロピー出力を提供する完全エントロピー源を用いて、または[SP_800-90A]で別途規定するとおりに要求します。手順3.1は次のようになる:
◦ \(\mathit{status} = \mathbf{DRBG\_Reseed}(\mathit{RBG3\_DRBG\_state\_handle}, \mathit{additional\_input})\).
◦ If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Null})\)
with the \(\mathbf{Get\_randomness\_source\_input}\) call in the \(\mathbf{DRBG\_Reseed}\) function replaced by:
◦ \(\mathit{status} = \mathbf{DRBG\_Reseed}(\mathit{RBG3\_DRBG\_state\_handle}, \mathit{additional\_input})\).
◦ If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Null})\)
ただし、\(\mathbf{Get\_randomness\_source\_input}\)の呼び出し(\(\mathbf{DRBG\_Reseed}\)関数内)を次の処理に置き換える:
◦ \((\mathit{status}, \mathit{seed\_material}) = \mathbf{Get\_entropy\_bitstring}(\mathit{keylen} + \mathit{output\_len}, \mathit{Method\_1})\).
◦ \((\mathit{status}, \mathit{seed\_material}) = \mathbf{Get\_entropy\_bitstring}(\mathit{keylen} + \mathit{output\_len}, \mathit{Method\_1})\).
◦ If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Null})\),
◦ If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Null})\),
where \(\mathit{Method\_1}\) indicates that only the entropy from physical entropy sources is counted.
ここで、\(\mathit{Method\_1}\)は物理エントロピー源からのエントロピーだけを計数することを示します。
• For \(\mathrm{Hash\_DRBG}\), \(\mathrm{HMAC\_DRBG}\), or \(\mathrm{CTR\_DRBG}\) with a derivation function, \(s\) bits of fresh entropy are usually inserted into the internal state during a \(\mathbf{DRBG\_Reseed}\) function. To insert \(s + 64\) bits into the internal state, two methods are provided:
• \(\mathrm{Hash\_DRBG}\)、\(\mathrm{HMAC\_DRBG}\)または導出関数付きの\(\mathrm{CTR\_DRBG}\)では、通常、\(s\)ビットの新たなエントロピーが\(\mathbf{DRBG\_Reseed}\)関数の実行中に内部状態へ挿入されます。\(s + 64\)ビットを内部状態に挿入するために、2つの方法を示す:
Method A is a modification of the \(\mathbf{DRBG\_Reseed}\) function that requests \(s + 64\) bits of entropy from the entropy source(s) rather than (the usual) \(s\) bits (see Fig. 28). Making this change is straightforward, given access to the internals of a DRBG implementation.
方法Aは、\(\mathbf{DRBG\_Reseed}\)関数を変更し、エントロピー源に\(s + 64\)ビットのエントロピーを要求するようにする方法である(通常は\(s\)ビット。図28参照)。DRBG実装の内部にアクセスできれば、この変更は容易です。
Fig. 28. Modification of the DRBG_Reseed function
図28. DRBG_Reseed関数の変更
Step 3.1 becomes:
手順3.1を次のようにする:
◦ \(\mathit{status} = \mathbf{DRBG\_Reseed}(\mathit{RBG3\_DRBG\_state\_handle}, \mathit{additional\_input})\)
◦ If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Null})\)
with the \(\mathbf{Get\_randomness\_source\_input}\) call in the \(\mathbf{DRBG\_Reseed}\) function replaced by:
◦ \(\mathit{status} = \mathbf{DRBG\_Reseed}(\mathit{RBG3\_DRBG\_state\_handle}, \mathit{additional\_input})\)
◦ If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Null})\)
ただし、\(\mathbf{Get\_randomness\_source\_input}\)の呼び出し(\(\mathbf{DRBG\_Reseed}\)関数内)を次の処理に置き換える:
◦ \((\mathit{status}, \mathit{seed\_material}) = \mathbf{Get\_entropy\_bitstring}(s + 64, \mathit{Method\_1})\).
◦ If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Null})\).
◦ \((\mathit{status}, \mathit{seed\_material}) = \mathbf{Get\_entropy\_bitstring}(s + 64, \mathit{Method\_1})\).
◦ If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Null})\).
\(\mathit{Method\_1}\) indicates that only the entropy from physical entropy sources is to be counted.
\(\mathit{Method\_1}\)は、物理エントロピー源からのエントロピーだけを計数することを示します。
Method B (depicted in Fig. 29) first obtains a bitstring with 64 bits of entropy directly from the entropy source(s). The \(\mathbf{DRBG\_Reseed}\) function is then invoked using this bitstring as additional input (called \(\mathit{extra\_bits}\) below to avoid confusion with the \(\mathit{additional\_input}\) provided by the application when invoking the \(\mathbf{DRBG\_Generate\_request}\) above). The \(\mathbf{DRBG\_Reseed}\) function will obtain \(s\) bits of entropy from the entropy source(s),34 combine it with the 64 bits of entropy provided as the \(\mathit{extra\_bits}\) and any \(\mathit{additional\_input}\) provided in the reseed request, and incorporate the result into the DRBG’s internal state. This method is appropriate when the RBG3(RS) construction is being implemented using an existing DRBG implementation that cannot be altered.
方法B(図29に示す)では、まずエントロピー源から64ビットのエントロピーを含むビット列を直接取得します。次に、このビット列を追加入力として\(\mathbf{DRBG\_Reseed}\)関数を呼び出す(以下では\(\mathit{extra\_bits}\)と呼びます。これは、アプリケーションが与える\(\mathit{additional\_input}\)、すなわち上記の\(\mathbf{DRBG\_Generate\_request}\)を呼び出す際のものとの混同を避けるためです)。\(\mathbf{DRBG\_Reseed}\)関数は、\(s\)ビットのエントロピーをエントロピー源から取得し、34それを\(\mathit{extra\_bits}\)として与えられた64ビットのエントロピーおよび再シード要求で与えられた\(\mathit{additional\_input}\)と組み合わせ、その結果をDRBGの内部状態に取り込む。この方法は、変更できない既存のDRBG実装を用いてRBG3(RS)構成を実装する場合に適しています。
Fig. 29. Request extra bits before reseeding
図29. 再シード前に追加ビットを要求
Step 3.1 becomes:
手順3.1を次のようにする:
3.1.1 \((\mathit{status}, \mathit{extra\_bits}) = \mathbf{Get\_entropy\_bitstring}(64, \mathit{Method\_1})\).
3.1.1 \((\mathit{status}, \mathit{extra\_bits}) = \mathbf{Get\_entropy\_bitstring}(64, \mathit{Method\_1})\).
3.1.2 If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Null})\).
3.1.2 If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Null})\).
3.1.3 \(\mathit{status} = \mathbf{DRBG\_Reseed}(\mathit{RBG3\_DRBG\_state\_handle}, \mathit{extra\_bits} \parallel \mathit{additional\_input})\).
3.1.3 \(\mathit{status} = \mathbf{DRBG\_Reseed}(\mathit{RBG3\_DRBG\_state\_handle}, \mathit{extra\_bits} \parallel \mathit{additional\_input})\)。
3.1.4 If (\(\mathit{status} \ne \mathrm{SUCCESS}\)), then return (\(\mathit{status}, \mathit{Null}\)).
3.1.4 (\(\mathit{status} \ne \mathrm{SUCCESS}\))の場合、(\(\mathit{status}, \mathit{Null}\))を返します。
In step 3.1.3, the \(\mathbf{Get\_randomness\_source\_input}\) call in the \(\mathbf{DRBG\_Reseed}\) function is replaced by:
手順3.1.3では、\(\mathbf{Get\_randomness\_source\_input}\)呼び出し(\(\mathbf{DRBG\_Reseed}\)関数内)を次の処理に置き換える:
o \((\mathit{status}, \mathit{seed\_material}) = \mathbf{Get\_entropy\_bitstring}(s, \mathit{Method\_1})\).
o If (\(\mathit{status} \ne \mathrm{SUCCESS}\)), then return (\(\mathit{status}, \mathit{Null}\)).
\(\mathit{Method\_1}\) indicates that only the entropy from physical entropy sources is to be counted.
o \((\mathit{status}, \mathit{seed\_material}) = \mathbf{Get\_entropy\_bitstring}(s, \mathit{Method\_1})\)。
o (\(\mathit{status} \ne \mathrm{SUCCESS}\))の場合、(\(\mathit{status}, \mathit{Null}\))を返します。
\(\mathit{Method\_1}\)は、物理エントロピー源からのエントロピーのみを計数することを示します。
34 The value of \(s\) is recorded in the DRBG’s internal state (see SP 800-90A).
34 \(s\)の値はDRBGの内部状態に記録されます(SP 800-90A参照)。
In step 3.2, request the generation of \(\mathit{full\_entropy\_bits}\) using the \(\mathbf{DRBG\_Generate}\) function, where:
手順3.2では、\(\mathit{full\_entropy\_bits}\)の生成を\(\mathbf{DRBG\_Generate}\)関数を使って要求します。入力は次のとおり:
• The \(\mathit{RBG3\_DRBG\_state\_handle}\) was obtained during DRBG instantiation (see Sec. 6.5.1.1).
• \(\mathit{RBG3\_DRBG\_state\_handle}\)はDRBGのインスタンス化時に取得した値です(第6.5.1.1節参照)。
• \(s\) is both the number of full-entropy bits to be produced during the \(\mathbf{DRBG\_Generate}\) function call and the security strength of the DRBG instantiation (see Sec. 2.8.1.2 and Table 4 in Appendix A.2). That is, the value of \(s\) is shown as two inputs in step 3.2.
• \(s\)は、\(\mathbf{DRBG\_Generate}\)関数呼出しで生成する完全エントロピーのビット数であると同時に、DRBGインスタンスのセキュリティ強度でもあります(第2.8.1.2節および付録A.2の表4参照)。つまり、手順3.2では\(s\)の値を2つの入力として示します。
• \(\mathit{additional\_input}\) is the current value of the \(\mathit{additional\_input}\) string (initially provided in the \(\mathbf{DRBG\_Generate}\) call, used in the first iteration of step 3.2, and subsequently set to the \(\mathit{Null}\) string in step 3.6).
• \(\mathit{additional\_input}\)は\(\mathit{additional\_input}\)文字列の現在の値である(最初は\(\mathbf{DRBG\_Generate}\)呼出しで与えられ、手順3.2の最初の反復で使い、その後の手順3.6で\(\mathit{Null}\)文字列に設定します)。
In step 3.3, if step 3.2 returned a \(\mathit{status}\) value indicating that the \(\mathbf{DRBG\_Generate}\) function was not successful, then return the \(\mathit{status}\) to the calling application with a \(\mathit{Null}\) bitstring. Otherwise, go to step 3.4.
手順3.3では、手順3.2が返した\(\mathit{status}\)の値が\(\mathbf{DRBG\_Generate}\)関数の失敗を示す場合、その\(\mathit{status}\)を\(\mathit{Null}\)ビット列とともに呼出し元アプリケーションに返します。それ以外の場合は手順3.4へ進みます。
In step 3.4, concatenate the \(\mathit{full\_entropy\_bits}\) obtained in step 3.2 to the temporary bitstring (\(\mathit{temp}\)).
手順3.4では、手順3.2で取得した\(\mathit{full\_entropy\_bits}\)を一時ビット列(\(\mathit{temp}\))に連結します。
In step 3.5, increment the output-length counter (\(\mathit{sum}\)) by \(s\) bits (i.e., the number of full-entropy bits obtained in step 3.2).
手順3.5では、出力長カウンター(\(\mathit{sum}\))を\(s\)ビット(すなわち、手順3.2で取得した完全エントロピービット数)だけ増やします。
In step 3.6, to avoid reusing the \(\mathit{additional\_input}\), set its value to a \(\mathit{Null}\) string for subsequent iterations of step 3.
手順3.6では、\(\mathit{additional\_input}\)の再利用を避けるため、以降の手順3の反復に備えてその値を\(\mathit{Null}\)文字列に設定します。
If \(\mathit{sum} < n\), go to step 3.1.
\(\mathit{sum} < n\)の場合、手順3.1に戻ります。
Step 4 returns a \(\mathit{status}\) indicating SUCCESS to the calling application along with the leftmost \(n\) bits of \(\mathit{temp}\) as the \(\mathit{returned\_bitstring}\).
手順4では、SUCCESSを示す\(\mathit{status}\)を、\(\mathit{temp}\)の左端の\(n\)ビットを\(\mathit{returned\_bitstring}\)として添えて、呼出し元アプリケーションに返します。
6.5.1.3. Random Bit Generation Using a Directly Accessible DRBG
6.5.1.3. 直接アクセス可能なDRBGによる乱数ビット生成
As discussed in Sec. 2.8.1.2, the DRBG used by the RBG3(RS) construction may be requested to generate output directly using the following request:
第2.8.1.2節で説明したとおり、RBG3(RS)構成が使用するDRBGに、次の要求で直接出力を生成させてよい:
where \(\mathit{RBG3\_DRBG\_state\_handle}\) was provided during instantiation (see Sec. 6.5.1.1), and \(\mathit{additional\_input}\) is optional.
ここで、\(\mathit{RBG3\_DRBG\_state\_handle}\)はインスタンス化時に与えられ(第6.5.1.1節参照)、\(\mathit{additional\_input}\)は任意です。
Before generating the requested output, the DRBG needs to be reseeded in the following circumstances:
要求された出力を生成する前に、次の場合はDRBGを再シードする必要がある:
1. As discussed in Sec. 6.5.1.2, accessing a DRBG directly to generate output by the DRBG in the RBG3(RS) construction requires that the DRBG be reseeded with at least \(s + 64\) bits of entropy from the entropy source(s) when the DRBG was previously used as a component of the \(\mathbf{RBG3(RS)\_generate}\) function. This requires that the RBG3(RS) implementation keep track of the type of generate request that was made previously (e.g., including this information in the DRBG’s internal state) so that the reseeding of the DRBG is automatically performed before generating the requested DRBG output.
1. 第6.5.1.2節で説明したとおり、RBG3(RS)構成内のDRBGに直接アクセスしてそのDRBGで出力を生成するには、エントロピー源から得た少なくとも\(s + 64\)ビットのエントロピーでDRBGを再シードすることが、そのDRBGが以前に\(\mathbf{RBG3(RS)\_generate}\)関数の構成要素として使われていた場合に必要となります。そのため、RBG3(RS)実装は、以前に行われた生成要求の種類を記録し(例:この情報をDRBGの内部状態に含める)、要求されたDRBG出力を生成する前にDRBGの再シードが自動的に行われるようにする必要があります。
2.During a sequence of generate requests, the DRBG may reseed itself in response to some event or to a reseed request from an application.
2.生成要求が連続する間、DRBGはイベントに応じて、またはアプリケーションからの再シード要求に応じて、自身を再シードしてもよいです。
Reseeding is accomplished as specified in Sec. 6.5.1.4.
再シードは第6.5.1.4節の規定に従って行います。
If a reseed of the DRBG was not performed, or a \(\mathit{status}\) of SUCCESS was returned by the \(\mathbf{DRBG\_Reseed}\) function when performed under conditions 1 or 2 above, the \(\mathbf{DRBG\_Generate\_request}\) invokes the \(\mathbf{DRBG\_Generate}\) function (see Sec. 5.2.2), obtains the \(\mathit{status}\) of the operation and any generated bits (i.e., \(\mathit{returned\_bits}\)), and forwards them to the application in response to the \(\mathbf{DRBG\_Generate\_request}\).
DRBGを再シードしなかった場合、またはSUCCESSの\(\mathit{status}\)を\(\mathbf{DRBG\_Reseed}\)関数が上記条件1もしくは2に基づく再シードで返した場合、\(\mathbf{DRBG\_Generate\_request}\)は\(\mathbf{DRBG\_Generate}\)関数を呼び出し(第5.2.2節参照)、処理の\(\mathit{status}\)と生成ビット(すなわち\(\mathit{returned\_bits}\))を取得して、\(\mathbf{DRBG\_Generate\_request}\)への応答としてアプリケーションへ転送します。
6.5.1.4. Reseeding
6.5.1.4. 再シード
Reseeding the DRBG may be performed:
DRBGは次の場合に再シードしてよい:
1.When explicitly requested by the consuming application,
1.利用側アプリケーションが明示的に要求したとき、
2.During an RBG3(RS)_generate request (see Sec. 6.5.1.2) or in response to a direct DRBG generate request when the previous use of the DRBG was as a component of the RBG3(RS)_Generate function (see Sec. 6.5.1.3), or
2.RBG3(RS)_Generate要求の処理中(第6.5.1.2節参照)、またはDRBGの前回の使用がRBG3(RS)_Generate関数の一部だった場合に直接DRBGへの生成要求を受けたとき、または
3.Based on implementation-selected criteria, such as time, number of outputs, events, or the availability of sufficient entropy.
3.時刻、出力数、イベント、十分なエントロピーの利用可能性など、実装者が選択する基準に基づくとき。
Case 1: An application sends a reseed request to the RBG:
ケース1:アプリケーションがRBGに再シードを要求する:
where \(\mathit{RBG3\_DRBG\_state\_handle}\) was obtained during instantiation (see Sec. 6.5.1.1), and \(\mathit{additional\_input}\) is optional.
ここで、\(\mathit{RBG3\_DRBG\_state\_handle}\)はインスタンス化時に取得し(第6.5.1.1節参照)、\(\mathit{additional\_input}\)は任意です。
Any \(\mathit{additional\_input}\) provided by the \(\mathbf{DRBG\_Reseed\_request}\) from the application shall be used as input to the \(\mathbf{DRBG\_Reseed}\) function. Otherwise, the use of \(\mathit{additional\_input}\) is optional when invoking the \(\mathbf{DRBG\_Reseed}\) function.
\(\mathit{additional\_input}\)がアプリケーションからの\(\mathbf{DRBG\_Reseed\_request}\)で与えられた場合、必ず\(\mathbf{DRBG\_Reseed}\)関数への入力として使用しなければなりません。それ以外の場合、\(\mathit{additional\_input}\)の使用は、\(\mathbf{DRBG\_Reseed}\)関数を呼び出す際は任意です。
The \(\mathbf{DRBG\_Reseed\_request}\) results in the invocation of the \(\mathbf{DRBG\_Reseed}\) function (see Sec. 5.2.3). The \(\mathit{status}\) returned from the \(\mathbf{DRBG\_Reseed}\) function is forwarded to the application in response to the \(\mathbf{DRBG\_Reseed\_request}\).
\(\mathbf{DRBG\_Reseed\_request}\)により\(\mathbf{DRBG\_Reseed}\)関数を呼び出します(第5.2.3節参照)。\(\mathit{status}\)は、\(\mathbf{DRBG\_Reseed}\)関数が返したものを、\(\mathbf{DRBG\_Reseed\_request}\)への応答としてアプリケーションに転送します。
Case 2: The DRBG is reseeded during an RBG3(RS) generate process as follows:
ケース2:RBG3(RS)の生成処理中にDRBGを再シードする:
• For \(\mathrm{CTR\_DRBG}\) without a derivation function, \(\mathit{keylen} + \mathit{output\_len}\) bits of seed material are requested during reseeding in the same manner as for instantiation (see step 3.1 of Sec. 6.5.1.2).
• 導出関数なしの\(\mathrm{CTR\_DRBG}\)の場合、\(\mathit{keylen} + \mathit{output\_len}\)ビットのシード材料を、インスタンス化と同じ方法で再シード中に要求します(第6.5.1.2節の手順3.1参照)。
• For \(\mathrm{Hash\_DRBG}\), \(\mathrm{HMAC\_DRBG}\), or \(\mathrm{CTR\_DRBG}\) with a derivation function, use Method A or Method B (as specified in step 3.1 of Sec. 6.5.1.2) to obtain \(s + 64\) bits of fresh entropy in the DRBG.
• \(\mathrm{Hash\_DRBG}\)、\(\mathrm{HMAC\_DRBG}\)または導出関数付きの\(\mathrm{CTR\_DRBG}\)の場合、方法Aまたは方法B(第6.5.1.2節の手順3.1の規定による)を使用し、\(s + 64\)ビットの新たなエントロピーをDRBGに取得します。
Case 3: A reseed of the DRBG is invoked based on implementation-selected criteria:
ケース3:実装者が選択した基準に基づきDRBGの再シードを実行する:
For \(\mathrm{CTR\_DRBG}\), the DRBG is reseeded with \(\mathit{keylen} + \mathit{output\_len}\) bits of fresh seed material. Otherwise, the DRBG is reseeded with either \(s\) or \(s + 64\) bits of fresh entropy, depending on whether Method A or Method B was used in step 3.1 of Sec. 6.5.1.2.
\(\mathrm{CTR\_DRBG}\)の場合、DRBGを\(\mathit{keylen} + \mathit{output\_len}\)ビットの新たなシード材料で再シードします。それ以外の場合、DRBGを\(s\)または\(s + 64\)ビットの新たなエントロピーで再シードします。どちらになるかは、第6.5.1.2節の手順3.1で方法Aと方法Bのどちらを使用したかによります。
6.5.2. Requirements for an RBG3(RS) Construction
6.5.2. RBG3(RS)構成の要件
An RBG3(RS) construction has the following requirements in addition to those provided in Sec. 6.3:
RBG3(RS)構成には、第6.3節の要件に加えて次の要件がある:
1. For each \(s\) bits generated by the RBG3(RS) construction, \(s + 64\) bits of fresh entropy shall be acquired either directly from independent, validated entropy sources or from an external conditioning function that processes the output of the validated entropy sources to provide full-entropy, as specified in Sec. 3.2.2.2.
1. RBG3(RS)構成が\(s\)ビットを生成するたびに、\(s + 64\)ビットの新たなエントロピーを必ず取得しなければなりません。取得元は、独立した検証済みエントロピー源から直接、または第3.2.2.2節の規定に従って検証済みエントロピー源の出力を処理し完全エントロピーを提供する外部条件付け関数のいずれかとします。
2.Each RBG3(RS) generate request shall be completed before executing another request.
2.RBG3(RS)の各生成要求は、次の要求を実行する前に完了しなければなりません。
3. If a directly accessible DRBG uses the same internal state as the RBG3(RS) construction and the previous use of the DRBG was by the RBG3(RS) construction, a reseed of the DRBG instantiation with at least \(s + 64\) bits of entropy shall be performed before generating output. This reseed-generate process shall be completed before executing another RBG3(RS) request or a request for generating bits directly from the DRBG.
3. 直接アクセス可能なDRBGがRBG3(RS)構成と同じ内部状態を使い、前回そのDRBGをRBG3(RS)構成が使用した場合、少なくとも\(s + 64\)ビットのエントロピーによるDRBGインスタンスの再シードを、出力を生成する前に必ず行わなければなりません。この再シードと生成の処理は、次のRBG3(RS)要求またはDRBGへの直接ビット生成要求を実行する前に必ず完了しなければなりません。
4.The DRBG shall be reseeded in accordance with Sec. 6.4.1.4.
4.DRBGを第6.4.1.4節に従って再シードしなければなりません。
7. RBGC Construction for DRBG Trees
7. DRBGツリーのためのRBGC構成
The RBGC construction allows for the use of a tree of DRBGs in which one DRBG is used to provide seed material for another DRBG. This design is common on many computing platforms and allows some level of modularity (e.g., an operating system RBG can be designed and validated without knowing the randomness source that will be available on the particular hardware on which it will be used, or a software application can be designed with its own RBG but without knowing the operating system or hardware used by the application).
RBGC構成では、あるDRBGが別のDRBGのシード材料を提供するDRBGツリーを使用できます。この設計は多くの計算プラットフォームで一般的であり、ある程度のモジュール性を実現する(例:OSのRBGは、利用する特定のハードウェアでどの乱数源を利用できるかを知らずに設計・検証できます。また、ソフトウェアアプリケーションは、それが使われるOSやハードウェアを知らずに独自のRBGを設計できます)。
7.1. RBGC Description
7.1. RBGCの説明
7.1.1. RBGC Environment
7.1.1. RBGC環境
Figure 30 depicts RBGC constructions and the environment in which they will be used.
図30に、RBGC構成と、それが使用される環境を示します。
図30. RBGC構成を用いたDRBGツリー。入れ子の枠で構成要素がまとめられている。(Root) RBGC1と記された赤い実線の枠の中に、Initial Randomness Source (RBG2, RBG3, Full- Entropy Source)(初期乱数源:RBG2、RBG3、完全エントロピー源)とDRBG1があり、Initial Randomness SourceからDRBG1へ矢印が向かう。RBGC2と記された緑の破線の枠が赤枠とDRBG2を含み、RBGC3と記された黒の一点鎖線の枠が緑の枠とDRBG3を含む。DRBG1からDRBG2へ、DRBG2からDRBG3へ矢印が向かう。RBGC4と記された青い実線の枠が、赤枠と、他の枠の下にあるDRBG4を含み、DRBG1から下へDRBG4に矢印が向かう。
Fig. 30. DRBG tree using the RBGC construction
図30. RBGC構成を用いたDRBGツリー
An RBGC construction consists of an approved DRBG mechanism (see [SP_800-90A]) and the randomness source used for seeding and (optional) reseeding. Figure 30 illustrates a tree of RBGC constructions that consists of two DRBG chains: 1) a chain consisting of \(\mathrm{DRBG}_{1}\), \(\mathrm{DRBG}_{2}\), and \(\mathrm{DRBG}_{3}\) and 2) a chain consisting of \(\mathrm{DRBG}_{1}\) and \(\mathrm{DRBG}_{4}\). The core of this type of construction is called the root and is shown as \(\mathrm{RBGC}_{1}\) within the solid red rectangle in the figure. Its DRBG is labeled as \(\mathrm{DRBG}_{1}\), and its randomness source for seeding and (optionally) reseeding is labeled as the initial randomness source.
RBGC構成は、承認済みDRBG機構([SP_800-90A]参照)と、シード設定および(任意の)再シードに使う乱数源から成ります。図30に、2つのDRBGチェーンから成るRBGC構成のツリーを示します。すなわち、1)\(\mathrm{DRBG}_{1}\)、\(\mathrm{DRBG}_{2}\)、\(\mathrm{DRBG}_{3}\)から成るチェーンと、2)\(\mathrm{DRBG}_{1}\)と\(\mathrm{DRBG}_{4}\)から成るチェーンです。この種の構成の中核はルートと呼ばれ、図では赤い実線の矩形内に\(\mathrm{RBGC}_{1}\)として示されます。そのDRBGは\(\mathrm{DRBG}_{1}\)とラベル付けされ、シード設定および(任意の)再シードに使う乱数源は初期乱数源とラベル付けされます。
For each of the other RBGC constructions (i.e., \(\mathrm{RBGC}_{2}\), \(\mathrm{RBGC}_{3}\), and \(\mathrm{RBGC}_{4}\)), the DRBG within the construction is seeded by a DRBG within a “parent” RBGC construction (i.e., the parent is the randomness source used for seeding the DRBG). For \(\mathrm{RBGC}_{2}\) (shown in Fig. 30 as a box outlined with long green dashes [− − −]), the parent randomness source is the root (i.e., \(\mathrm{RBGC}_{1}\)). For \(\mathrm{RBGC}_{3}\) (shown as a box with black dashes and dots [− • • − • • −]), the parent randomness source is \(\mathrm{RBGC}_{2}\). For \(\mathrm{RBGC}_{4}\) (shown as a box outlined with a solid blue rectangle), the parent randomness source is \(\mathrm{RBGC}_{1}\) (i.e., the root).
他のRBGC構成(すなわち\(\mathrm{RBGC}_{2}\)、\(\mathrm{RBGC}_{3}\)および\(\mathrm{RBGC}_{4}\))では、構成内のDRBGを「親」RBGC構成内のDRBGでシードします(すなわち、親がDRBGのシード設定に使う乱数源である)。\(\mathrm{RBGC}_{2}\)(図30では長い緑色の破線 [− − −] の枠で表示)の親乱数源はルート(すなわち\(\mathrm{RBGC}_{1}\))です。\(\mathrm{RBGC}_{3}\)(黒色の破線と点 [− • • − • • −] の枠で表示)の親乱数源は\(\mathrm{RBGC}_{2}\)です。\(\mathrm{RBGC}_{4}\)(青色の実線の矩形で囲まれた枠で表示)の親乱数源は\(\mathrm{RBGC}_{1}\)(すなわちルート)です。
An RBGC construction may be used to instantiate and reseed other non-root RBGC constructions or to provide output for one or more applications (not shown in Fig. 30). All components of an RBGC tree — including the initial randomness source and the DRBGs in that tree — reside on the same computing platform. The initial randomness source is not physically removable while the computing platform is operational, and the contents of the internal state of any DRBG in the tree are never relocated to another computer platform or output for external storage. See Appendix A.3 for a discussion about the intended meaning of a computing platform and implementation considerations.
RBGC構成は、ツリー内の他の非ルートRBGC構成をインスタンス化および再シードするため、または1つ以上のアプリケーションへ出力を提供するために使用できます(図30にはアプリケーションを図示していません)。初期乱数源やツリー内のDRBGを含むRBGCツリーの全コンポーネントは、同じ計算プラットフォーム上にあります。計算プラットフォームの稼働中に初期乱数源を物理的に取り外すことはできず、ツリー内のDRBGの内部状態の内容を別の計算プラットフォームへ移動したり、外部ストレージへ出力したりすることはありません。計算プラットフォームの意図する意味および実装上の考慮事項は付録A.3を参照してください。
Each RBGC construction may be a parent for one or more child RBGC constructions. Each of the child RBGC constructions has only one parent that serves as its randomness source for seeding the DRBG within it. Using Fig. 30 as an example, \(\mathrm{RBGC}_{1}\) is the only parent of both \(\mathrm{RBGC}_{2}\) and \(\mathrm{RBGC}_{4}\), and \(\mathrm{RBGC}_{2}\) is the parent of \(\mathrm{RBGC}_{3}\). Reseeding of a non-root RBGC construction may be accomplished using the parent or — if the parent is not available (e.g., the non-root RBGC construction being reseeded has been moved to a different CPU core than its parent) — an ancestor (i.e., predecessor),35 a sibling of the parent,36 or the initial randomness source under certain conditions (see Sec. 7.1.2.2 for further discussion).
各RBGC構成は、1つ以上の子RBGC構成の親になってよい。子RBGC構成にはそれぞれ親が1つだけあり、その親が内部のDRBGをシードするための乱数源となります。図30を例にすると、\(\mathrm{RBGC}_{1}\)は\(\mathrm{RBGC}_{2}\)と\(\mathrm{RBGC}_{4}\)の両方の唯一の親であり、\(\mathrm{RBGC}_{2}\)は\(\mathrm{RBGC}_{3}\)の親です。非ルートRBGC構成の再シードには親を使ってよい。親が利用できない場合(例:再シード対象の非ルートRBGC構成が親とは別のCPUコアへ移された場合)は、一定の条件の下で、祖先(すなわち先行構成)35、親の兄弟構成36、または初期乱数源を使ってよい(詳しくは第7.1.2.2節を参照)。
An RBGC construction cannot have itself as a predecessor (i.e., an ancestor) randomness source for reseeding. That is, there must not be “seed loops” in which an RBGC construction provides seed material for a predecessor RBGC construction (e.g., a parent or grandparent). For example, in Fig. 30, \(\mathrm{RBGC}_{2}\) can be used as the randomness source for \(\mathrm{RBGC}_{3}\), but \(\mathrm{RBGC}_{3}\) cannot be used as the randomness source for reseeding \(\mathrm{RBGC}_{1}\) or \(\mathrm{RBGC}_{2}\). However, \(\mathit{additional\_input}\) provided to the DRBG during a reseed or generate request may be anything, including the output of any RBGC construction of the tree.
RBGC構成は、自身を再シード用の先行(すなわち祖先)乱数源として持つことはできません。つまり、RBGC構成が先行RBGC構成(例:親や祖父母)にシード材料を提供する「シードループ」があってはなりません。たとえば図30では、\(\mathrm{RBGC}_{2}\)を\(\mathrm{RBGC}_{3}\)の乱数源として使えますが、\(\mathrm{RBGC}_{3}\)を\(\mathrm{RBGC}_{1}\)または\(\mathrm{RBGC}_{2}\)の再シード用乱数源として使うことはできません。ただし、再シード要求または生成要求の際にDRBGへ渡す\(\mathit{additional\_input}\)は、ツリー内の任意のRBGC構成の出力を含め、何であってもよいです。
7.1.2. Instantiating and Reseeding Strategy
7.1.2. インスタンス化および再シードの戦略
7.1.2.1. Instantiating and Reseeding the Root RBGC Construction
7.1.2.1. RBGCルート構成のインスタンス化および再シード
The root RBGC construction is instantiated using an initial randomness source, which is either a validated full-entropy source or a validated RBG2(P), RBG2(NP), RBG3(XOR), or RBG3(RS) construction. A reseed capability for the root is optional but if implemented, is reseeded using the initial randomness source. An RBG2(P) or RBG2(NP) construction used as the initial randomness source should have the capability of being reseeded on demand by the root. A validated full-entropy source is a validated entropy source that provides full-entropy output or the combination of a validated entropy source and an external vetted conditioning function that provides full-entropy output (see Sec. 3.2.2.2). The root may provide prediction resistance if reseeded by the initial random source.
ルートRBGC構成は、初期乱数源を用いてインスタンス化されます。初期乱数源は、検証済みの完全エントロピー源か、検証済みのRBG2(P)、RBG2(NP)、RBG3(XOR)、またはRBG3(RS)構成のいずれかです。ルートの再シード機能は任意ですが、実装する場合は初期乱数源を用いてルートを再シードします。初期乱数源として使用するRBG2(P)またはRBG2(NP)構成は、ルートからの要求に応じて再シードできる機能を持つべきです。検証済みの完全エントロピー源とは、完全エントロピーの出力を提供する検証済みエントロピー源、または、検証済みエントロピー源と外部の精査済み条件付け関数(vetted conditioning function)を組み合わせて完全エントロピーの出力を提供するものをいいます(第3.2.2.2節を参照してください)。ルートは、初期乱数源によって再シードされる場合、予測耐性を提供できる場合があります。
35 In Fig. 30, \(\mathrm{RBGC}_{1}\) (with \(\mathrm{DRGG}_{1}\)) is an ancestor of \(\mathrm{RBGC}_{3}\) (with \(\mathrm{DRBG}_{3}\)).
35 図30では、\(\mathrm{RBGC}_{1}\)(\(\mathrm{DRGG}_{1}\)を備える)は\(\mathrm{RBGC}_{3}\)(\(\mathrm{DRBG}_{3}\)を備える)の祖先です。
36 \(\mathrm{DRBG}_{2}\) and \(\mathrm{DRBG}_{3}\) are siblings since they share \(\mathrm{DRBG}_{1}\) as a parent.
36 \(\mathrm{DRBG}_{2}\)と\(\mathrm{DRBG}_{3}\)は、\(\mathrm{DRBG}_{1}\)を親として共有するため兄弟です。
7.1.2.2. Instantiating and Reseeding a Non-Root RBGC Construction
7.1.2.2. ルート以外のRBGC構成のインスタンス化と再シード
Each non-root RBGC construction in a tree is instantiated by a single RBGC construction (i.e., its parent) using that parent as its randomness source. If the child RBGC construction has a reseed capability, the parent normally serves as the randomness source during the reseeding process. However, if the parent is not available for reseeding (e.g., the non-root RBGC construction being reseeded has been moved to a different CPU core than its parent), an ancestor (including the root RBGC construction), a sibling of the parent, or the initial randomness source may be used as an alternative randomness source provided that:
ツリー内のルート以外のRBGC構成は、それぞれ単一のRBGC構成(すなわち、その親)によって、その親を乱数源としてインスタンス化されます。子RBGC構成に再シード機能がある場合、通常は、再シード処理において親が乱数源となります。ただし、親が再シードに利用できない場合(例:再シード対象のルート以外のRBGC構成が、親とは別のCPUコアへ移された場合)は、次の条件を満たすことを前提に、祖先(ルートRBGC構成を含む)、親の兄弟、または初期乱数源を代替の乱数源として使用してもよいです。
1.The ancestor or sibling of the parent has been validated for compliance with an RBGC construction, and
1.親の祖先または兄弟が、RBGC構成への適合について検証されていること。
2.The initial randomness source, ancestor, or sibling supports the security strength of the DRBG to be reseeded.
2.初期乱数源、祖先、または兄弟が、再シード対象のDRBGのセキュリティ強度をサポートしていること。
Using Fig. 30, consider \(\mathrm{RBGC}_{3}\) as the target RBGC construction to be reseeded. \(\mathrm{RBGC}_{2}\) is the parent of \(\mathrm{RBGC}_3\) and would normally be used as the randomness source for reseeding \(\mathrm{RBGC}_3\). If \(\mathrm{RBGC}_2\) is not available when \(\mathrm{RBGC}_3\) needs to be reseeded, then \(\mathrm{RBGC}_1\) (an ancestor) or \(\mathrm{RBGC}_2\) (a sibling of the parent) may be used as a randomness source for reseeding if they meet conditions 1 and 2 above. Alternatively, the initial randomness source may be used for reseeding if it supports the security strength of the DRBG to be reseeded.
図30を使い、\(\mathrm{RBGC}_{3}\)を再シード対象のRBGC構成として考えます。\(\mathrm{RBGC}_{2}\)は、\(\mathrm{RBGC}_3\) の親であり、通常は \(\mathrm{RBGC}_3\) の再シード用の乱数源として使用されます。\(\mathrm{RBGC}_2\) が利用できないときに \(\mathrm{RBGC}_3\) の再シードが必要になった場合、\(\mathrm{RBGC}_1\)(祖先)または \(\mathrm{RBGC}_2\)(親の兄弟)を、上記の条件1および2を満たすならば再シード用の乱数源として使用してよい。あるいは、再シード対象のDRBGのセキュリティ強度をサポートするならば、初期乱数源を再シードに使用してもよいです。
Implementers of an RBGC tree that use a randomness source other than the parent for reseeding the DRBG of an RBGC construction will require a means of recognizing that the parent randomness source is not available and for the alternative randomness source to recognize the validity of the request for the generation of seed material and the internal state (if appropriate) to be used for the generation process. Non-root RBGC constructions cannot guarantee prediction resistance since their randomness sources may not provide fresh entropy. However, non-root RBGC constructions should be reseeded periodically to defend against a potential undetected compromise of their internal states.
RBGC構成のDRBGを再シードするために親以外の乱数源を使用するRBGCツリーの実装者は、親の乱数源が利用できないことを認識する手段と、代替の乱数源がシード材料の生成要求の正当性、および生成処理に使用する内部状態(適切な場合)を認識する手段を必要とします。ルート以外のRBGC構成は、その乱数源が新鮮なエントロピーを提供するとは限らないため、予測耐性を保証できません。ただし、ルート以外のRBGC構成は、内部状態が検出されないまま危殆化している可能性に備えるため、定期的に再シードすべきです。
7.2. Conceptual Interfaces
7.2. 概念インターフェース
An RBGC construction can support instantiation and generation requests (see Sec. 7.2.1 and 7.2.2, respectively) and may provide a capability to be reseeded (see Sec. 7.2.3).
RBGC構成は、インスタンス化要求と生成要求(それぞれ第7.2.1節と第7.2.2節を参照)をサポートでき、再シードを受ける機能(第7.2.3節を参照)を提供してもよいです。
7.2.1. RBGC Instantiation
7.2.1. RBGCのインスタンス化
The DRBG within an RBGC construction may be instantiated by an application at any security strength possible for the DRBG design that does not exceed the security strength of its randomness source. This is accomplished using the DRBG_Instantiate function discussed in Sec. 2.8.1.1 and [SP_800-90A].
RBGC構成内のDRBGは、そのDRBG設計で可能なセキュリティ強度のうち、乱数源のセキュリティ強度を超えない任意の強度で、アプリケーションによってインスタンス化されてもよいです。これは、第2.8.1.1節および[SP_800-90A]で説明されているDRBG_Instantiate関数を用いて行います。
The (target) DRBG in an RBGC construction is instantiated by an application using the following request:
アプリケーションは、次の要求を用いてRBGC構成内の対象DRBGをインスタンス化する:
where \(s\) is the requested security strength for the DRBG. The \(\mathbf{DRBG\_Instantiate\_request}\) received by the DRBG results in the execution of the \(\mathbf{DRBG\_Instantiate}\) function in the DRBG with the input in the \(\mathbf{DRBG\_Instantiate\_request}\) provided as input to the \(\mathbf{DRBG\_Instantiate}\) function:
ここで、\(s\) はDRBGに要求するセキュリティ強度です。DRBGが受け取った \(\mathbf{DRBG\_Instantiate\_request}\) により、DRBG内の \(\mathbf{DRBG\_Instantiate}\) 関数が実行され、\(\mathbf{DRBG\_Instantiate\_request}\) 内の入力が \(\mathbf{DRBG\_Instantiate}\) 関数への入力として与えられる:
The target DRBG in the RBGC construction cannot be instantiated at a higher security strength than that which is supported by its randomness source. If the target DRBG is successfully instantiated, \(\mathit{RBGCx\_DRBG\_state\_handle}\) is the state handle returned to the application for subsequent access to the internal state of the DRBG instantiation within the RBGC construction. If the DRBG is implemented to only allow a single internal state, then a state handle is not required. If the instantiation request is invalid (e.g., the requested security strength cannot be provided by the DRBG design or the randomness source; see [SP_800-90A]), an error indication is returned as the \(\mathit{status}\) with an invalid state handle.
RBGC構成内の対象DRBGは、その乱数源がサポートするセキュリティ強度より高いセキュリティ強度でインスタンス化することはできません。対象DRBGのインスタンス化に成功した場合、\(\mathit{RBGCx\_DRBG\_state\_handle}\) は、RBGC構成内でインスタンス化されたDRBGの内部状態へ後からアクセスするためにアプリケーションに返されるステートハンドルです。DRBGが単一の内部状態のみを許すように実装されている場合、ステートハンドルは不要です。インスタンス化要求が無効な場合(例:要求されたセキュリティ強度がDRBGの設計または乱数源によって提供できません。[SP_800-90A]を参照)、\(\mathit{status}\) としてエラー表示が無効なステートハンドルとともに返されます。
7.2.1.1. Instantiation of the Root RBGC Construction
7.2.1.1. RBGCルート構成のインスタンス化
The randomness source for the root RBGC construction (also referred to as the initial randomness source) is:
RBGCルート構成の乱数源(初期乱数源とも呼ぶ)は、次のいずれかである:
•A validated RBG3(XOR) or RBG3(RS) construction, as specified in Sec. 6;
•第6節で規定する検証済みRBG3(XOR)またはRBG3(RS)構成。
•A validated RBG2(P) or RBG2(NP) construction, as specified in Sec. 5; or
•第5節で規定する検証済みRBG2(P)またはRBG2(NP)構成。または
•A validated full-entropy source that is either:
•次のいずれかである検証済み完全エントロピー源:
•An entropy source that provides output with full entropy (as specified in [SP_800-90B]) or
•([SP_800-90B]に規定される)完全エントロピーの出力を提供するエントロピー源、または
•The output of an SP 800-90B-compliant entropy source that has been externally conditioned by a vetted conditioning function (as specified in Sec. 3.2.2.2) to provide output with full entropy.
•SP 800-90Bに準拠したエントロピー源の出力を、(第3.2.2.2節に規定される)検証済み条件付け関数で外部的に条件付けして、完全エントロピーの出力としたもの。
When used as the initial randomness source, an RBG3 construction or a full-entropy source can support any valid security strength for the DRBG within the root RBGC construction (e.g., 128, 192, or 256 bits).
初期乱数源としてRBG3構成または完全エントロピー源を使用する場合、ルートRBGC構成内のDRBGに有効な任意のセキュリティ強度(例:128、192または256ビット)を支援できます。
When used as the initial randomness source, an RBG2(P) or RBG2(NP) construction can support any security strength for the DRBG within the root RBGC construction that does not exceed the instantiated security strength of the DRBG within the RBG2(P) or RBG2(NP) construction. For example, if the initial randomness source is an RBG2(P) construction whose DRBG is instantiated at a security strength of 128 bits, then the DRBG within the root RBGC construction can only be instantiated at a security strength of 128 bits.
初期乱数源として使用する場合、RBG2(P)またはRBG2(NP)構成は、ルートRBGC構成内のDRBGに対して、そのRBG2(P)またはRBG2(NP)構成内のDRBGのインスタンス化時のセキュリティ強度を超えない任意のセキュリティ強度を支援できます。例えば、初期乱数源が、DRBGを128ビットのセキュリティ強度でインスタンス化したRBG2(P)構成なら、ルートRBGC構成内のDRBGも128ビットのセキュリティ強度でしかインスタンス化できません。
An RBGC designer must consider how to find an available randomness source and how to access it.
RBGCの設計者は、利用可能な乱数源を見つける方法と、それにアクセスする方法を検討しなければなりません。
7.2.1.1.1. Instantiating the DRBG in the Root Using an RBG2 or RBG3 Construction as the Initial Randomness Source
7.2.1.1.1. RBG2またはRBG3構成を初期乱数源として用いるルートのDRBGのインスタンス化
Figure 31 depicts a request for instantiation of the root RBGC construction by an application.
図31に、アプリケーションがルートRBGC構成のインスタンス化を要求する流れを示します。
図31. RBG2またはRBG3構成を乱数源として用いる、ルートRBGC構成内のDRBGのインスタンス化。(Root) RBGC1と記された青い破線の枠の中の左にInitial Randomness Source(初期乱数源。RBG3(XOR)、RBG3(RS)、RBG2(P)、RBG2(NP)と記されている)、右にDRBG1がある。DRBG1からInitial Randomness SourceへGenerate request(生成要求)という矢印が、Initial Randomness SourceからDRBG1へstatus, (seed_material)という矢印が向かう。枠の外の右側では、Application(アプリケーション)からDRBG1へDRBG_Instantiate_requestという矢印が、DRBG1からApplicationへstatus, (state_handle)という矢印が向かう。
Fig. 31. Instantiation of the DRBG in the root RBGC construction using an RBG2 or RBG3 construction as the randomness source
図31. RBG2またはRBG3構成を乱数源として用いる、ルートRBGC構成内のDRBGのインスタンス化
Let \(\mathrm{RBGC}_1\) be the root, and let \(\mathrm{DRBG}_1\) be its DRBG. In this section, the initial randomness source is either an RBG2 or RBG3 construction.
\(\mathrm{RBGC}_1\) をルートとし、\(\mathrm{DRBG}_1\) をそのDRBGとします。本節では、初期乱数源はRBG2構成またはRBG3構成のいずれかです。
Upon receiving a valid instantiation request from an application (see Sec. 7.2.1), the \(\mathbf{DRBG\_Instantiate}\) function within \(\mathrm{DRBG}_1\) processes the request by obtaining seed material from the initial randomness source. Within the \(\mathbf{DRBG\_Instantiate}\) function (in \(\mathrm{DRBG}_1\)), the randomness source is accessed using a \(\mathbf{Get\_randomness\_source\_input}\) call (see [SP_800-90A]), which is replaced as specified below.
有効なインスタンス化要求をアプリケーションから受け取ると(第7.2.1節参照)、\(\mathbf{DRBG\_Instantiate}\) 関数は \(\mathrm{DRBG}_1\) 内で、初期乱数源からシード材料を取得して要求を処理します。\(\mathbf{DRBG\_Instantiate}\) 関数(\(\mathrm{DRBG}_1\) 内)では、\(\mathbf{Get\_randomness\_source\_input}\) 呼び出し([SP_800-90A]参照)を用いて乱数源にアクセスします。この呼び出しを以下の規定のとおりに置き換えます。
Let \(\mathit{keylen}\) be the length of the key to be used by the cryptographic primitive in \(\mathrm{DRBG}_1\), and let \(\mathit{output\_len}\) be the length of its output block.
\(\mathit{keylen}\) を \(\mathrm{DRBG}_1\) 内の暗号プリミティブが使用する鍵の長さとし、\(\mathit{output\_len}\) をその出力ブロックの長さとします。
1. When the DRBG in the root RBGC construction uses \(\mathrm{CTR\_DRBG}\) without a derivation function, \(\mathit{keylen} + \mathit{output\_len}\) bits shall be obtained from the initial randomness source.
1. ルートRBGC構成内のDRBGが導出関数なしの \(\mathrm{CTR\_DRBG}\) を使用する場合、\(\mathit{keylen} + \mathit{output\_len}\) ビットを初期乱数源から取得しなければなりません。
a. If the randomness source is an RBG2(P) or RBG2(NP) construction, the RBG2 construction should be reseeded before requesting seed material. The \(\mathbf{Get\_randomness\_source\_input}\) call becomes:
a. 乱数源がRBG2(P)またはRBG2(NP)構成の場合、シード材料を要求する前にRBG2構成を再シードすべきです。\(\mathbf{Get\_randomness\_source\_input}\) 呼び出しは次のようになる:
1) If the initial randomness source can handle requests for reseeding:
1) 初期乱数源が再シード要求を処理できる場合:
• \(\mathit{status} = \mathbf{DRBG\_Reseed\_request}(\mathit{RBG2\_DRBG\_state\_handle}, \mathit{additional\_input})\).
• \(\mathit{status} = \mathbf{DRBG\_Reseed\_request}(\mathit{RBG2\_DRBG\_state\_handle}, \mathit{additional\_input})\).
• If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{invalid\_state\_handle})\).
• \((\mathit{status} \ne \mathrm{SUCCESS})\) ならば、\((\mathit{status}, \mathit{invalid\_state\_handle})\) を返します。
2) Request the generation of seed material:
2) シード材料の生成を要求する:
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{DRBG\_Generate\_request}(\mathit{RBG2\_DRBG\_state\_handle}, \mathit{keylen} + \mathit{output\_len}, s, \mathit{additional\_input})\).
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{DRBG\_Generate\_request}(\mathit{RBG2\_DRBG\_state\_handle}, \mathit{keylen} + \mathit{output\_len}, s, \mathit{additional\_input})\).
• If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{invalid\_state\_handle})\).
• \((\mathit{status} \ne \mathrm{SUCCESS})\) ならば、\((\mathit{status}, \mathit{invalid\_state\_handle})\) を返します。
\(\mathit{RBG2\_DRBG\_state\_handle}\) is the state handle for the internal state of the DRBG within the RBG2 construction of the initial randomness source. Reseed and generate requests received by an RBG2 construction are discussed in Sec. 5.2.3 and 5.2.2, respectively.
\(\mathit{RBG2\_DRBG\_state\_handle}\) は、初期乱数源のRBG2構成内にあるDRBGの内部状態のステートハンドルです。RBG2構成が受け取る再シード要求と生成要求については、それぞれ第5.2.3節および第5.2.2節で説明します。
b. If the randomness source is an RBG3(XOR) or RBG3(RS) construction, the \(\mathbf{Get\_randomness\_source\_input}\) call becomes:
b. 乱数源がRBG3(XOR)またはRBG3(RS)構成の場合、\(\mathbf{Get\_randomness\_source\_input}\) 呼び出しは次のようになる:
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{RBG3\_DRBG\_Generate\_request}(\mathit{RBG3\_DRBG\_state\_handle}, \mathit{keylen} + \mathit{output\_len}, \mathit{additional\_input})\).
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{RBG3\_DRBG\_Generate\_request}(\mathit{RBG3\_DRBG\_state\_handle}, \mathit{keylen} + \mathit{output\_len}, \mathit{additional\_input})\).
• If (\(\mathit{status} \ne \mathrm{SUCCESS}\)), then return (\(\mathit{status}, \mathit{invalid\_state\_handle}\)).
• (\(\mathit{status} \ne \mathrm{SUCCESS}\)) ならば、(\(\mathit{status}, \mathit{invalid\_state\_handle}\)) を返します。
\(\mathit{RBG3\_DRBG\_state\_handle}\) is the state handle for the internal state of the DRBG within the RBG3 construction of the initial randomness source. An \(\mathbf{RBG3\_DRBG\_Generate\_request}\) received by an RBG3 construction is discussed in Sec. 6.4.1.2 and 6.5.1.2 (i.e., the RBG3(XOR) and RBG3(RS) constructions, respectively).
\(\mathit{RBG3\_DRBG\_state\_handle}\) は、初期乱数源であるRBG3構成内にあるDRBGの内部状態のステートハンドルです。RBG3構成が受け取る \(\mathbf{RBG3\_DRBG\_Generate\_request}\) については、第6.4.1.2節および第6.5.1.2節で説明します(それぞれRBG3(XOR)構成およびRBG3(RS)構成)。
2. For \(\mathrm{CTR\_DRBG}\) with a derivation function, \(\mathrm{Hash\_DRBG}\), and \(\mathrm{HMAC\_DRBG}\), \(3s/2\) bits shall be obtained from a randomness source that provides a security strength of at least \(s\) bits.
2. 導出関数付きの \(\mathrm{CTR\_DRBG}\)、\(\mathrm{Hash\_DRBG}\) および \(\mathrm{HMAC\_DRBG}\) の場合、\(3s/2\) ビットを取得しなければなりません。取得元は、少なくとも \(s\) ビットのセキュリティ強度を提供する乱数源とします。
a. If the randomness source is an RBG2(P) or RBG2(NP) construction, the RBG2 construction should be reseeded before requesting seed material. The \(\mathbf{Get\_randomness\_source\_input}\) call becomes:
a. 乱数源がRBG2(P)またはRBG2(NP)構成の場合、シード材料を要求する前にRBG2構成を再シードすべきです。\(\mathbf{Get\_randomness\_source\_input}\) 呼び出しは次のようになる:
1) If the initial randomness source can handle requests for reseeding:
1) 初期乱数源が再シード要求を処理できる場合:
• \(\mathit{status} = \mathbf{DRBG\_Reseed\_request}(\mathit{RBG2\_DRBG\_state\_handle}, \mathit{additional\_input})\).
• \(\mathit{status} = \mathbf{DRBG\_Reseed\_request}(\mathit{RBG2\_DRBG\_state\_handle}, \mathit{additional\_input})\).
• If (\(\mathit{status} \ne \mathrm{SUCCESS}\)), then return (\(\mathit{status}, \mathit{invalid\_state\_handle}\)).
• (\(\mathit{status} \ne \mathrm{SUCCESS}\)) ならば、(\(\mathit{status}, \mathit{invalid\_state\_handle}\)) を返します。
2) Request the generation of seed material.
2) シード材料の生成を要求します。
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{DRBG\_Generate\_request}(\mathit{RBG2\_DRBG\_state\_handle}, 3s/2, s, \mathit{additional\_input})\).
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{DRBG\_Generate\_request}(\mathit{RBG2\_DRBG\_state\_handle}, 3s/2, s, \mathit{additional\_input})\).
• If (\(\mathit{status} \ne \mathrm{SUCCESS}\)), then return (\(\mathit{status}, \mathit{invalid\_state\_handle}\)).
• (\(\mathit{status} \ne \mathrm{SUCCESS}\)) ならば、(\(\mathit{status}, \mathit{invalid\_state\_handle}\)) を返します。
\(\mathit{RBG2\_DRBG\_state\_handle}\) is the state handle for the internal state of the DRBG within the RBG2 construction. Reseed and generate requests received by an RBG2 construction are discussed in Sec. 5.2.3 and 5.2.2, respectively.
\(\mathit{RBG2\_DRBG\_state\_handle}\) は、RBG2構成内のDRBGの内部状態のステートハンドルです。RBG2構成が受け取る再シード要求と生成要求については、それぞれ第5.2.3節および第5.2.2節で説明します。
b. If the randomness source is an RBG3(XOR) or RBG3(RS) construction, the \(\mathbf{Get\_randomness\_source\_input}\) call becomes:
b. 乱数源がRBG3(XOR)またはRBG3(RS)構成の場合、\(\mathbf{Get\_randomness\_source\_input}\) 呼び出しは次のようになる:
• \((\mathit{status}, \mathit{seed\ material}) = \mathbf{RBG3\_DRBG\_Generate\_request}(\mathit{RBG3\_DRBG\_state\_handle}, 3s/2, \mathit{additional\_input})\).
• \((\mathit{status}, \mathit{seed\ material}) = \mathbf{RBG3\_DRBG\_Generate\_request}(\mathit{RBG3\_DRBG\_state\_handle}, 3s/2, \mathit{additional\_input})\).
• If (\(\mathit{status} \ne \mathrm{SUCCESS}\)), then return (\(\mathit{status}, \mathit{invalid\_state\_handle}\)).
• (\(\mathit{status} \ne \mathrm{SUCCESS}\)) ならば、(\(\mathit{status}, \mathit{invalid\_state\_handle}\)) を返します。
\(\mathit{RBG3\_DRBG\_state\_handle}\) is the state handle for the internal state of the DRBG within the RBG3 construction. An \(\mathbf{RBG3\_DRBG\_Generate\_request}\) received by an RBG3 construction is discussed in Sec. 6.4.1.2 and 6.5.1.2 (i.e., the RBG3(XOR) and RBG3(RS) constructions, respectively).
\(\mathit{RBG3\_DRBG\_state\_handle}\) は、RBG3構成内のDRBGの内部状態のステートハンドルです。RBG3構成が受け取る \(\mathbf{RBG3\_DRBG\_Generate\_request}\) については、第6.4.1.2節および第6.5.1.2節で説明します(それぞれRBG3(XOR)構成およびRBG3(RS)構成)。
7.2.1.1.2. Instantiating the Root RBGC Construction Using a Full-Entropy Source as the Initial Randomness Source
7.2.1.1.2. 完全エントロピー源を初期乱数源として用いるルートRBGC構成のインスタンス化
Figure 32 depicts a request for instantiation of the root RBGC construction by an application.
図32に、アプリケーションからルートRBGC構成のインスタンス化を要求する流れを示します。
図32. 完全エントロピー源を初期乱数源として用いる、ルートRBGC構成内のDRBGのインスタンス化。(Root) RBGC1と記された青い破線の枠の中の左に、Initial Randomness Source(初期乱数源)という見出しと、下部にFull-entropy source(完全エントロピー源)というラベルがある緑の箱があり、右にDRBG1がある。緑の箱の中にはEntropy Source(s)(エントロピー源)と(Opt.) Cond. Func.(任意の条件付け関数)があり、(Opt.) Cond. Func.からEntropy Source(s)へ矢印が1本、Entropy Source(s)から(Opt.) Cond. Func.へ矢印が1本向かう。DRBG1から(Opt.) Cond. Func.へEntropy request(エントロピー要求)という矢印が、(Opt.) Cond. Func.からDRBG1へstatus, (seed_material)という矢印が向かう。枠の外の右側では、Application(アプリケーション)からDRBG1へDRBG_Instantiate_requestという矢印が、DRBG1からApplicationへstatus, (state_handle)という矢印が向かう。
Fig. 32. Instantiation of the DRBG in the root RBGC construction using a full-entropy source as the initial randomness source
図32. 完全エントロピー源を初期乱数源として用いる、ルートRBGC構成内のDRBGのインスタンス化
Let \(\mathrm{RBGC}_1\) be the root, and let \(\mathrm{DRBG}_1\) be its DRBG. In this section, the initial randomness source is a full-entropy source (see Sec. 7.2.1.1).
\(\mathrm{RBGC}_1\) をルートとし、\(\mathrm{DRBG}_1\) をそのDRBGとします。本節では、初期乱数源は完全エントロピー源です(第7.2.1.1節を参照)。
Upon receiving a valid instantiation request from an application, the \(\mathbf{DRBG\_Instantiate}\) function within \(\mathrm{DRBG}_1\) continues processing the request by obtaining seed material from the full-entropy source. The full-entropy source may consist of physical or non-physical entropy sources or both, and either Method 1 (i.e., physical only) or Method 2 (i.e., non-physical inclusive) may be used to count entropy (see Sec. 2.3). Instantiation is performed for an RBG2 construction, as specified in Sec. 5.2.1.
アプリケーションから有効なインスタンス化要求を受け取ると、\(\mathrm{DRBG}_1\) 内の \(\mathbf{DRBG\_Instantiate}\) 関数は、完全エントロピー源からシード材料を取得して要求の処理を続けます。完全エントロピー源は、物理エントロピー源、非物理エントロピー源、またはその両方から構成できます。エントロピーの計数には、方法1(物理エントロピー源のみ)または方法2(非物理エントロピー源を含む)のいずれかを使用できます(2.3節を参照)。インスタンス化は、5.2.1節の規定に従い、RBG2構成に対して行います。
7.2.1.2. Instantiating an RBGC Construction Other Than the Root
7.2.1.2. Root以外のRBGC構成のインスタンス化
Figure 33 depicts a request by an application for the instantiation of the DRBG within an RBGC construction that is not the root.
図33は、ルートではないRBGC構成内のDRBGのインスタンス化をアプリケーションが要求する場合を示します。
図33. RBGCn内のDRBGのインスタンス化(乱数源としてRBGCRSを用いる場合)。RBGCnと記された青い破線の枠の中の左に、Randomness source for RBGCn(RBGCnの乱数源)という見出しとRBGCRSというラベルがある黒い点線の枠があり、右にDRBGnがある。点線の枠の中には(Root) RBGC1と記された灰色の枠があり、その中の(Initial Randomness Source)(初期乱数源)とDRBG1は2本の灰色の破線矢印(双方向に1本ずつ)で結ばれている。DRBG1から灰色の点線(· · ·)が、同じく点線の枠内にあるDRBGRSへ延びる。DRBGnからDRBGRSへDRBG_Generate_requestという矢印が、DRBGRSからDRBGnへstatus, (seed_Material)という矢印が向かう。青い枠の上では、Application(アプリケーション)からDRBGnへ下向きのDRBG_Instantiate_requestという矢印が、DRBGnからApplicationへ上向きのstatus, (state_handle)という矢印が向かう。
Fig. 33. Instantiation of the DRBG in \(\mathrm{RBGC}_n\) using \(\mathrm{RBGC}_{RS}\) as the randomness source
図33. \(\mathrm{RBGC}_n\) 内のDRBGのインスタンス化(乱数源として \(\mathrm{RBGC}_{RS}\) を用いる場合)
Let \(\mathrm{RBGC}_n\) be the RBGC construction receiving the instantiation request, and let \(\mathrm{DRBG}_n\) be its DRBG. \(\mathrm{RBGC}_n\) needs to determine the RBGC construction that will serve as its randomness source.
\(\mathrm{RBGC}_n\) をインスタンス化要求を受け取るRBGC構成とし、\(\mathrm{DRBG}_n\) をそのDRBGとします。\(\mathrm{RBGC}_n\) は、自身の乱数源として機能するRBGC構成を決定する必要があります。
The randomness source for a DRBG in an RBGC construction that is not the root of the DRBG tree is the RBGC construction that will immediately precede it in the tree as its parent. Let \(\mathrm{RBGC}_{RS}\) be the randomness source for \(\mathrm{RBGC}_n\), and let \(\mathrm{DRBG}_{RS}\) be its DRBG. \(\mathrm{RBG}_{RS}\) could be the root RBGC construction. \(\mathrm{RBGC}_1\) (the root) is outlined in gray in Fig. 33.
DRBGツリーのルートではないRBGC構成内のDRBGに対する乱数源は、ツリー上で直前に位置する親のRBGC構成です。\(\mathrm{RBGC}_{RS}\) を \(\mathrm{RBGC}_n\) の乱数源とし、\(\mathrm{DRBG}_{RS}\) をそのDRBGとします。\(\mathrm{RBG}_{RS}\) はルートのRBGC構成である場合もあります。図33では \(\mathrm{RBGC}_1\)(ルート)を灰色の輪郭で示します。
Upon receiving a valid instantiation request from an application, such as
アプリケーションから、次のような有効なインスタンス化要求を受け取ると、
\(\mathrm{DRBG}_{n}\) executes its \(\mathbf{DRBG\_Instantiate}\) function within \(\mathrm{DRBG}_{n}\) and processes the request by obtaining seed material from its intended parent randomness source (\(\mathrm{RBGC}_{\mathit{RS}}\)). The
\(\mathrm{DRBG}_{n}\) は、その \(\mathbf{DRBG\_Instantiate}\) 関数を \(\mathrm{DRBG}_{n}\) 内で実行し、意図された親乱数源(\(\mathrm{RBGC}_{\mathit{RS}}\))からシード材料を取得することで要求を処理します。
\(\mathbf{Get\_randomness\_source\_input}\) call in the \(\mathbf{DRBG\_Instantiate}\) function in \(\mathrm{DRBG}_{n}\) is replaced as specified below.
\(\mathbf{Get\_randomness\_source\_input}\)呼び出しは、\(\mathbf{DRBG\_Instantiate}\)関数(\(\mathrm{DRBG}_{n}\)内)において、以下に規定するとおり置き換えます。
Let \(\mathit{keylen}\) be the length of the key used by the cryptographic primitive in \(\mathrm{RBGC}_{n}\)’s DRBG (shown as \(\mathrm{DRBG}_{n}\) in Fig. 33), and let \(\mathit{output\_len}\) be the length of its output block.
\(\mathit{keylen}\)を、\(\mathrm{RBGC}_{n}\)のDRBG(図33では\(\mathrm{DRBG}_{n}\)と示す)の暗号プリミティブが用いる鍵の長さとし、\(\mathit{output\_len}\)をその出力ブロックの長さとします。
1. When \(\mathrm{RBGC}_{n}\) is instantiating CTR_DRBG without a derivation function, \(\mathit{keylen} + \mathit{output\_len}\) bits shall be obtained from the randomness source (i.e., \(\mathrm{RBGC}_{\mathit{RS}}\)) by replacing the \(\mathbf{Get\_randomness\_source\_input}\) call with:
1. \(\mathrm{RBGC}_{n}\)が導出関数なしのCTR_DRBGをインスタンス化する場合、\(\mathit{keylen} + \mathit{output\_len}\)ビットを乱数源(すなわち\(\mathrm{RBGC}_{\mathit{RS}}\))から取得しなければなりません。そのために\(\mathbf{Get\_randomness\_source\_input}\)呼び出しを次のとおり置き換えます。
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{DRBG\_Generate\_request}(\mathit{RBGC}_{\mathit{RS}}\mathit{\_DRBG\_state\_handle}, \mathit{keylen} + \mathit{output\_len}, s, \mathit{additional\_input})\).
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{DRBG\_Generate\_request}(\mathit{RBGC}_{\mathit{RS}}\mathit{\_DRBG\_state\_handle}, \mathit{keylen} + \mathit{output\_len}, s, \mathit{additional\_input})\)。
• If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{invalid\_state\_handle})\).
• \((\mathit{status} \ne \mathrm{SUCCESS})\)の場合、\((\mathit{status}, \mathit{invalid\_state\_handle})\)を返します。
\(\mathit{RBGC}_{\mathit{RS}}\mathit{\_DRBG\_state\_handle}\) is the state handle for the internal state of the DRBG within \(\mathrm{RBGC}_{\mathit{RS}}\). Upon receiving the \(\mathbf{DRBG\_Generate\_request}\), \(\mathrm{RBGC}_{\mathit{RS}}\) executes its \(\mathbf{DRBG\_Generate}\) function (see Sec. 2.8.1.2 and 7.2.2) and checks its output. That is,
\(\mathit{RBGC}_{\mathit{RS}}\mathit{\_DRBG\_state\_handle}\)は、\(\mathrm{RBGC}_{\mathit{RS}}\)内のDRBGの内部状態を示すステートハンドルです。\(\mathbf{DRBG\_Generate\_request}\)を受け取ると、\(\mathrm{RBGC}_{\mathit{RS}}\)は\(\mathbf{DRBG\_Generate}\)関数(2.8.1.2節および7.2.2節を参照)を実行し、その出力を確認します。すなわち、
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{DRBG\_Generate}(\mathit{RBGC}_{\mathit{RS}}\mathit{\_DRBG\_state\_handle} \ \mathit{keylen} + \mathit{output\_len}, s, \mathit{additional\_input})\).
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{DRBG\_Generate}(\mathit{RBGC}_{\mathit{RS}}\mathit{\_DRBG\_state\_handle} \ \mathit{keylen} + \mathit{output\_len}, s, \mathit{additional\_input})\)。
• If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{invalid\_state\_handle})\).
• \((\mathit{status} \ne \mathrm{SUCCESS})\)の場合、\((\mathit{status}, \mathit{invalid\_state\_handle})\)を返します。
2. For CTR_DRBG with a derivation function, Hash_DRBG, and HMAC_DRBG, \(3s/2\) bits shall be obtained from the randomness source (\(\mathrm{RBGC}_{\mathit{RS}}\)) by replacing the \(\mathbf{Get\_randomness\_source\_input}\) call with:
2. 導出関数を用いるCTR_DRBG、Hash_DRBG、およびHMAC_DRBGでは、\(3s/2\)ビットを乱数源(\(\mathrm{RBGC}_{\mathit{RS}}\))から取得しなければなりません。そのために\(\mathbf{Get\_randomness\_source\_input}\)呼び出しを次のとおり置き換えます。
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{DRBG\_Generate\_request}(\mathit{RBGC}_{\mathit{RS}}\mathit{\_DRBG\_state\_handle}, 3s/2, s, \mathit{additional\_input})\).
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{DRBG\_Generate\_request}(\mathit{RBGC}_{\mathit{RS}}\mathit{\_DRBG\_state\_handle}, 3s/2, s, \mathit{additional\_input})\)。
• If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{invalid\_state\_handle})\).
• \((\mathit{status} \ne \mathrm{SUCCESS})\)の場合、\((\mathit{status}, \mathit{invalid\_state\_handle})\)を返します。
\(\mathit{RBGC}_{\mathit{RS}}\mathit{\_DRBG\_state\_handle}\) is the state handle for the internal state of the DRBG within \(\mathrm{RBGC}_{\mathit{RS}}\). Upon receiving the \(\mathbf{DRBG\_Generate\_request}\), \(\mathrm{RBGC}_{\mathit{RS}}\) executes its \(\mathbf{DRBG\_Generate}\) function (see Sec. 2.8.1.2 and 7.2.2) and checks its output. That is,
\(\mathit{RBGC}_{\mathit{RS}}\mathit{\_DRBG\_state\_handle}\)は、\(\mathrm{RBGC}_{\mathit{RS}}\)内のDRBGの内部状態を示すstate handleです。\(\mathbf{DRBG\_Generate\_request}\)を受け取ると、\(\mathrm{RBGC}_{\mathit{RS}}\)は\(\mathbf{DRBG\_Generate}\)関数(2.8.1.2節および7.2.2節を参照)を実行し、その出力を確認します。すなわち、
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{DRBG\_Generate}(\mathit{RBGC}_{\mathit{RS}}\mathit{\_DRBG\_state\_handle}, 3s/2, s, \mathit{additional\_input})\).
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{DRBG\_Generate}(\mathit{RBGC}_{\mathit{RS}}\mathit{\_DRBG\_state\_handle}, 3s/2, s, \mathit{additional\_input})\)。
• If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{invalid\_state\_handle})\).
• \((\mathit{status} \ne \mathrm{SUCCESS})\)の場合、\((\mathit{status}, \mathit{invalid\_state\_handle})\)を返します。
Section 7.2.2 specifies the behavior of the DRBG in an RBGC construction when it receives a generate request. The \(\mathit{status}\) and any generated \(\mathit{seed\_material}\) are returned to the requesting DRBG (\(\mathrm{DRBG}_{n}\)) in response to the \(\mathbf{DRBG\_Generate\_request}\).
7.2.2節では、RBGC構成内のDRBGがgenerate要求を受け取った場合の動作を規定します。\(\mathit{status}\)と生成された\(\mathit{seed\_material}\)は、要求元のDRBG(\(\mathrm{DRBG}_{n}\))に、\(\mathbf{DRBG\_Generate\_request}\)への応答として返されます。
7.2.2. Requesting the Generation of Pseudorandom Bits From an RBGC Construction
7.2.2. RBGC構成からの疑似乱数ビット生成の要求
Figure 34 depicts a generate request received by the DRBG in an RBGC construction (i.e., \(\mathrm{DRBG}_{n}\) in \(\mathrm{RBGC}_{n}\)) from a requesting entity — either an application or a DRBG in another RBGC
図34は、RBGC構成内のDRBG(すなわち\(\mathrm{DRBG}_{n}\)、\(\mathrm{RBGC}_{n}\)内)が要求元エンティティから受け取るgenerate要求を示します。要求元は、アプリケーション、または別のRBGC
construction (shown as \(\mathrm{DRBG}_m\) and \(\mathrm{RBGC}_m\) in the figure).
構成(図では\(\mathrm{DRBG}_m\)および\(\mathrm{RBGC}_m\)として示す)。
図34. RBGC構成内のDRBGが受け取るgenerate要求。RBGCmと記された青い破線の枠の中の左に、Randomness source for RBGCm(RBGCmの乱数源)という見出しとRBGCnというラベルがある黒い点線の枠があり、右にDRBGmがある。点線の枠の中には(Root) RBGC1と記された灰色の枠があり、その中のInitial Randomness Source(初期乱数源)とDRBG1は2本の灰色の破線矢印(双方向に1本ずつ)で結ばれている。DRBG1から灰色の点線(· · ·)が、同じく点線の枠内にあるDRBGnへ延びる。DRBGmからDRBGnへDRBG_Generate_requestという矢印が、DRBGnからDRBGmへstatus, (pseudorandom bits)(ステータス、擬似乱数ビット)という矢印が向かう。青い枠の上では、Application(アプリケーション)からDRBGnへ下向きのDRBG_Generate_requestという矢印が、DRBGnからApplicationへ上向きのstatus, (pseudorandom bits)という矢印が向かう。原本の画像では、いくつかのラベルに赤い波線(スペルチェックの下線)が付いている。
Fig. 34. Generate request received by the DRBG in an RBGC construction
図34. RBGC構成内のDRBGが受け取るgenerate要求
When the requesting entity is \(\mathrm{DRBG}_m\) (rather than an application), \(\mathrm{DRBG}_m\) is attempting to be seeded or reseeded with seed material. In this case, \(\mathrm{DRBG}_n\) shall be either 1) the parent randomness source for \(\mathrm{DRBG}_m\) or 2) an alternative randomness source (see Sec. 7.1.2.2).
要求元がアプリケーションではなく\(\mathrm{DRBG}_m\)である場合、\(\mathrm{DRBG}_m\)はシード材料によるシードまたは再シードを受けようとしています。この場合、\(\mathrm{DRBG}_n\)は、1) \(\mathrm{DRBG}_m\)の親乱数源、または2) 代替乱数源(7.1.2.2節を参照)のいずれかでなければなりません。
The generate request from the requesting entity for this example is:
この例における要求元からのgenerate要求は、次のとおりです。
where \(\mathit{RBGCn\_DRBG\_state\_handle}\) is the state handle for the internal state of the DRBG in the RBGC construction receiving the generate request (\(\mathrm{RBGC}_n\)). If the \(\mathbf{DRBG\_Generate\_request}\) received by \(\mathrm{RBGC}_n\) can be handled, the \(\mathbf{DRBG\_Generate}\) function in \(\mathrm{DRBG}_n\) is executed:
ここで、\(\mathit{RBGCn\_DRBG\_state\_handle}\)は、generate要求を受け取るRBGC構成(\(\mathrm{RBGC}_n\))内のDRBGの内部状態を示すstate handleです。\(\mathbf{DRBG\_Generate\_request}\)を\(\mathrm{RBGC}_n\)が受け取り、それを処理できる場合、\(\mathbf{DRBG\_Generate}\)関数を\(\mathrm{DRBG}_n\)内で実行します。
The \(\mathbf{DRBG\_Generate}\) function within \(\mathrm{DRBG}_n\) processes the generate request.
generate要求は、\(\mathbf{DRBG\_Generate}\)関数が\(\mathrm{DRBG}_n\)内で処理します。
1. If the generate request cannot be fulfilled (e.g., the requested security strength cannot be provided by the DRBG design used in \(\mathrm{DRBG}_n\); see [SP_800-90A]), only an error \(\mathit{status}\) is returned to the requesting entity. No other output is provided.
1. generate要求を満たせない場合(例えば、要求されたセキュリティ強度を\(\mathrm{DRBG}_n\)で用いるDRBG設計が提供できない場合。[SP_800-90A]を参照)、エラーの\(\mathit{status}\)のみを要求元に返します。その他の出力は返しません。
2. Otherwise, \(\mathrm{DRBG}_n\) generates the \(\mathit{requested\_number\_of\_bits}\) and provides them to the requesting entity in response to the \(\mathbf{DRBG\_Generate\_request}\) with a \(\mathit{status}\) of SUCCESS.
2. それ以外の場合、\(\mathrm{DRBG}_n\)は\(\mathit{requested\_number\_of\_bits}\)で指定されたビット数を生成し、\(\mathbf{DRBG\_Generate\_request}\)への応答として、SUCCESSの\(\mathit{status}\)とともに要求元に返します。
7.2.3. Reseeding an RBGC Construction
7.2.3. RBGC構成の再シード
The reseeding of an RBGC construction is optional. If a reseed capability is implemented within the DRBG of an RBGC construction, the RBGC construction may receive a reseed request from an application, or the DRBG within the construction may reseed itself based on implementation-selected criteria. Examples of such criteria include time, number of outputs, events, or — in the case of the root RBGC construction using a full-entropy source — the availability of sufficient entropy.
RBGC構成の再シードは任意です。RBGC構成内のDRBGに再シード機能が実装されている場合、RBGC構成はアプリケーションから再シード要求を受け取ることができます。また、構成内のDRBGは、実装で選択した基準に基づいて自ら再シードしてもよいです。基準の例として、時間、出力回数、イベント、または(完全エントロピー源を用いるルートRBGC構成の場合)十分なエントロピーの利用可能性が挙げられます。
Section 7.2.3.1 discusses the reseeding of the DRBG in the root RBGC construction. Section 7.2.3.2 discusses the reseeding of the DRBG in an RBGC construction other than the root.
第7.2.3.1節ではルートRBGC構成内のDRBGの再シードを説明し、第7.2.3.2節ではルート以外のRBGC構成内のDRBGの再シードを説明します。
A reseed request from an application is:
アプリケーションからの再シード要求は、次のとおりです。
where \(\mathit{RBGCx\_DRBG\_state\_handle}\) is the state handle for the internal state of the DRBG in the RBGC construction receiving the reseed request (\(\mathrm{RBGC}_x\)).37 The \(\mathbf{DRBG\_Reseed\_request}\) received by \(\mathrm{RBGC}_x\) results in the execution of \(\mathrm{DRBG}_x\)’s \(\mathbf{DRBG\_Reseed}\) function (see Sec. 2.8.1.3). The \(\mathit{status}\) returned from the \(\mathbf{DRBG\_Reseed}\) function shall be returned to the application in response to the \(\mathbf{DRBG\_Reseed\_request}\).
ここで、\(\mathit{RBGCx\_DRBG\_state\_handle}\)は、再シード要求を受け取るRBGC構成(\(\mathrm{RBGC}_x\))内のDRBGの内部状態を示すstate handleです。37 \(\mathbf{DRBG\_Reseed\_request}\)を\(\mathrm{RBGC}_x\)が受け取ると、\(\mathrm{DRBG}_x\)の\(\mathbf{DRBG\_Reseed}\)関数(2.8.1.3節を参照)が実行されます。\(\mathit{status}\)として\(\mathbf{DRBG\_Reseed}\)関数が返した値は、\(\mathbf{DRBG\_Reseed\_request}\)への応答としてアプリケーションに返さなければなりません。
If the reseed request is invalid (e.g., the state handle is not correct, or the DRBG does not have a reseed capability), an error indication is returned as the \(\mathit{status}\) to the application (i.e., indicating that the DRBG has not been reseeded).
再シード要求が無効な場合(例えばstate handleが正しくない場合、またはDRBGに再シード機能がない場合)、\(\mathit{status}\)としてエラー表示をアプリケーションに返します(すなわち、DRBGが再シードされていないことを示す)。
Reseeding based on implementation-selected criteria is not initiated by a \(\mathbf{DRBG\_Reseed\_request}\) from an application but is addressed in Sec. 7.2.3.1 and 7.2.3.2.
実装で選択した基準に基づく再シードは、アプリケーションからの\(\mathbf{DRBG\_Reseed\_request}\)によって開始されるものではなく、7.2.3.1節および7.2.3.2節で扱います。
37 For Fig. 35 in Sec. 7.2.3.1, \(x = 1\). For Fig. 36 in Sec. 7.2.3.2, \(x = n\).
37 7.2.3.1節の図35では\(x = 1\)です。7.2.3.2節の図36では\(x = n\)です。
7.2.3.1. Reseed of the DRBG in the Root RBGC Construction
7.2.3.1. ルートRBGC構成内のDRBGの再シード
図35. Root RBGC構成内のDRBGが受け取る再シード要求。(Root) RBGC1と記された青い破線の枠の中の左にInitial Randomness Source(初期乱数源)、右にDRBG1がある。DRBG1からInitial Randomness SourceへGenerate request(生成要求)という矢印が、Initial Randomness SourceからDRBG1へstatus, (seed_material)という矢印が向かう。枠の外の右側では、Application(アプリケーション)からDRBG1へDRBG_Reseed_requestという矢印が、DRBG1からApplicationへstatusという矢印が向かう。
Fig. 35. Reseed request received by the DRBG in the root RBGC construction
図35. Root RBGC構成内のDRBGが受け取る再シード要求
If the root RBGC construction includes a reseed capability (as shown in Fig. 35), the DRBG in the root RBGC construction (e.g., \(\mathrm{RBGC}_1\)) may receive a request from an application for reseeding.
root RBGC構成に再シード機能が含まれている場合(図35参照)、root RBGC構成(例:\(\mathrm{RBGC}_1\))内のDRBGは、再シード要求をアプリケーションから受け取ることがあります。
Upon the receipt of a valid reseed request or when reseeding is to be performed based on implementation-selected criteria, the DRBG in the root RBGC construction (e.g., \(\mathrm{DRBG}_1\)) executes its \(\mathbf{DRBG\_Reseed}\) function to obtain randomness from the initial randomness source for reseeding itself. This process results in fresh entropy provided by the initial randomness source so that the next output generated by \(\mathrm{DRBG}_1\) has prediction resistance.
有効な再シード要求を受け取った場合、または実装で選択した基準に基づき再シードを行う場合、root RBGC構成内のDRBG(例:\(\mathrm{DRBG}_1\))は、自身の\(\mathbf{DRBG\_Reseed}\)関数を実行し、自身を再シードするための乱数を初期乱数源から取得します。この処理により新しいエントロピーが初期乱数源から供給され、\(\mathrm{DRBG}_1\)が次に生成する出力は予測耐性を持ちます。
1. When the DRBG in the root RBGC construction uses \(\mathrm{CTR\_DRBG}\) without a derivation function, reseeding is performed in the same manner as for instantiation.
1. root RBGC構成内のDRBGが導出関数なしの\(\mathrm{CTR\_DRBG}\)を使用する場合、再シードはインスタンス化と同じ方法で実施します。
•If the initial randomness source is an RBG3(XOR), RBG3(RS), RBG2(P), or RBG2(NP) construction, input is obtained from the initial randomness source as specified in item 1 of Sec. 7.2.1.1.1.
•初期乱数源がRBG3(XOR)、RBG3(RS)、RBG2(P)、またはRBG2(NP)構成である場合、第7.2.1.1.1節の項目1に従って初期乱数源から入力を取得します。
•If the initial randomness source is a full-entropy source, input is obtained as specified in item 1 of Sec. 7.2.1.1.2.
•初期乱数源が完全エントロピー源である場合、7.2.1.1.2節の項目1に従って入力を取得します。
2. When the DRBG in the root RBGC construction uses \(\mathrm{CTR\_DRBG}\) with a derivation function, \(\mathrm{Hash\_DRBG}\), or \(\mathrm{HMAC\_DRBG}\), input is obtained from the initial randomness source in the same manner as for instantiation except that \(s\) bits are requested (instead of \(3s/2\) bits), where \(s\) is the instantiated security strength of the DRBG in the root.
2. root RBGC構成内のDRBGが導出関数付きの\(\mathrm{CTR\_DRBG}\)、\(\mathrm{Hash\_DRBG}\)、または\(\mathrm{HMAC\_DRBG}\)を使用する場合、インスタンス化の場合と同じ方法で初期乱数源から入力を取得します。ただし、\(s\)ビットを要求します(\(3s/2\)ビットではない)。ここで、\(s\)はroot内のDRBGのインスタンス化されたセキュリティ強度です。
•If the initial randomness source is an RBG3(XOR), RBG3(RS), RBG2(P), or RBG2(NP) construction, input is obtained from the initial randomness source as specified in item 2 of Sec. 7.2.1.1.1.
•初期乱数源がRBG3(XOR)、RBG3(RS)、RBG2(P)、またはRBG2(NP)構成である場合、7.2.1.1.1節の項目2に従って初期乱数源から入力を取得します。
•If the initial randomness source is full-entropy source, input is obtained as specified in item 2 of Sec. 7.2.1.1.2.
•初期乱数源が完全エントロピー源である場合、7.2.1.1.2節の項目2に従って入力を取得します。
7.2.3.2. Reseed of the DRBG in an RBGC Construction Other Than the Root
7.2.3.2. ルート以外のRBGC構成内のDRBGの再シード
図36. ルート以外のRBGC構成が受け取る再シード要求。RBGCnと記された青い破線の枠の中の左に、Randomness Source for RBGCn(RBGCnの乱数源)という見出しとRBGCRSというラベルがある黒い実線の枠があり、右にDRBGnがある。黒枠の中には(Root) RBGC1と記された灰色の枠があり、その中のInitial Randomness Source(初期乱数源)とDRBG1は2本の灰色の破線矢印(双方向に1本ずつ)で結ばれている。DRBG1から灰色の点線が、同じく黒枠内にあるDRBGRSへ延びる。DRBGnからDRBGRSへDRBG_Generate_requestという矢印が、DRBGRSからDRBGnへstatus, (seed_material)という矢印が向かう。青い枠の上では、Application(アプリケーション)からDRBGnへ下向きのDRBG_Reseed_requestという矢印が、DRBGnからApplicationへ上向きのstatusという矢印が向かう。
Fig. 36. Reseed request received by an RBGC construction other than the root
図36. ルート以外のRBGC構成が受け取る再シード要求
As shown in Fig. 36, a DRBG in an RBGC construction other than the root (e.g., \(\mathrm{RBGC}_{n}\)) may receive a request for reseeding from an application. \(\mathrm{DRBG}_{n}\) may also reseed itself based on implementation-selected criteria. The randomness source must be either \(\mathrm{DRBG}_{n}\)’s parent, a sibling of the parent, another ancestor of \(\mathrm{DRBG}_{n}\), or the initial randomness source.
図36に示すように、root以外のRBGC構成内のDRBG(例:\(\mathrm{RBGC}_{n}\))は、アプリケーションから再シード要求を受け取ることがあります。\(\mathrm{DRBG}_{n}\)は、実装で選択した基準に基づいて自ら再シードすることもあります。乱数源は、\(\mathrm{DRBG}_{n}\)の親、その親の兄弟、\(\mathrm{DRBG}_{n}\)の別の祖先、または初期乱数源のいずれかでなければなりません。
7.2.3.2.1. The Randomness Source is an RBGC Construction
7.2.3.2.1. 乱数源がRBGC構成である場合
The randomness source for reseeding the DRBG in a non-root RBGC construction (e.g., \(\mathrm{DRBG}_{n}\) as shown in Fig. 36) may be the DRBG in the parent, a sibling of the parent, or another ancestor of \(\mathrm{DRBG}_{\mathrm{n}}\). Let \(\mathrm{DRBG}_{\mathit{RS}}\) be the randomness source to be used for reseeding. \(\mathrm{DRBG}_{\mathit{RS}}\) may be the DRBG of the root RBGC construction (outlined in gray in Fig. 36). Prediction resistance is not provided for the DRBG being reseeded (\(\mathrm{DRBG}_{n}\)) since fresh entropy is not provided by the randomness source in this case (\(\mathrm{DRBG}_{\mathit{RS}}\)).
root以外のRBGC構成内のDRBG(例:図36に示す\(\mathrm{DRBG}_{n}\))を再シードするための乱数源は、親、その親の兄弟、または\(\mathrm{DRBG}_{\mathrm{n}}\)の別の祖先に属するDRBGであってよい。再シードに用いる乱数源を\(\mathrm{DRBG}_{\mathit{RS}}\)とします。\(\mathrm{DRBG}_{\mathit{RS}}\)はroot RBGC構成のDRBG(図36で灰色の輪郭で示す)であってもよいです。再シード対象のDRBG(\(\mathrm{DRBG}_{n}\))には予測耐性が与えられません。この場合、乱数源(\(\mathrm{DRBG}_{\mathit{RS}}\))から新たなエントロピーが提供されないためです。
Upon the receipt of a valid reseed request or when a reseed is to be performed based on implementation-selected criteria, the DRBG in \(\mathrm{RBGC}_{n}\) executes its \(\mathbf{DRBG\_Reseed}\) function (if implemented). The \(\mathbf{Get\_randomness\_source\_input}\) request in the \(\mathbf{DRBG\_Reseed}\) function is replaced by the following:
有効な再シード要求を受け取ったとき、または実装で選択した基準に基づき再シードを行うとき、\(\mathrm{RBGC}_{n}\)内のDRBGは(実装されている場合)\(\mathbf{DRBG\_Reseed}\)関数を実行します。\(\mathbf{Get\_randomness\_source\_input}\)要求は、\(\mathbf{DRBG\_Reseed}\)関数内で次のとおり置き換えます。
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{DRBG\_Generate\_request}(\mathit{RBGC_{RS}\_DRBG\_state\_handle}, \mathit{number\_of\_bits}, s, \mathit{additional\_input})\).
• \((\mathit{status}, \mathit{seed\_material}) = \mathbf{DRBG\_Generate\_request}(\mathit{RBGC_{RS}\_DRBG\_state\_handle}, \mathit{number\_of\_bits}, s, \mathit{additional\_input})\).
• If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{invalid\_bitstring})\),
• \((\mathit{status} \ne \mathrm{SUCCESS})\)の場合、\((\mathit{status}, \mathit{invalid\_bitstring})\)を返します。
where:
ここで、
• \(\mathit{RBGC_{RS}\_DRBG\_state\_handle}\) is the state handle for the internal state of the DRBG in the randomness source (i.e., \(\mathrm{RBGC}_{\mathit{RS}}\)),
• \(\mathit{RBGC_{RS}\_DRBG\_state\_handle}\)は、乱数源(すなわち\(\mathrm{RBGC}_{\mathit{RS}}\))内のDRBGの内部状態を示すstate handleです。
• \(\mathit{number\_of\_bits}\) is \(\mathit{keylen} + \mathit{output\_len}\) bits for a CTR_DRBG without a derivation function, and \(s\) bits otherwise.
• \(\mathit{number\_of\_bits}\)は、導出関数なしのCTR_DRBGでは\(\mathit{keylen} + \mathit{output\_len}\)ビット、それ以外では\(s\)ビットです。
• \(\mathit{additional\_input}\) is optional.
• \(\mathit{additional\_input}\)は任意です。
Upon receiving the request, \(\mathrm{RBGC}_{\mathit{RS}}\) executes its \(\mathbf{DRBG\_Generate}\) function. A \(\mathit{status}\) indication will be returned from \(\mathrm{RBGC}_{\mathit{RS}}\) along with seed material if the \(\mathit{status}\) indicates a success (see Sec. 7.2.2).
要求を受け取ると、\(\mathrm{RBGC}_{\mathit{RS}}\)は\(\mathbf{DRBG\_Generate}\)関数を実行します。\(\mathit{status}\)表示が\(\mathrm{RBGC}_{\mathit{RS}}\)から返され、\(\mathit{status}\)が成功を示す場合はシード材料もあわせて返されます(7.2.2節を参照)。
Upon the receipt of a response from the randomness source (\(\mathrm{RBG}_{\mathit{RS}}\)), the DRBG in \(\mathrm{RBGC}_{n}\) proceeds as follows:
乱数源(\(\mathrm{RBG}_{\mathit{RS}}\))から応答を受け取ると、\(\mathrm{RBGC}_{n}\)内のDRBGは次のとおり処理します。
1. If an error indicator is received from the randomness source (\(\mathrm{RBGC}_{\mathit{RS}}\)) in response to the generate request, the error indicator is forwarded to the application as the \(\mathit{status}\) in the response to the reseed request.
1. generate要求への応答として乱数源(\(\mathrm{RBGC}_{\mathit{RS}}\))からエラー表示を受け取った場合、そのエラー表示を、再シード要求への応答の\(\mathit{status}\)としてアプリケーションに転送します。
2. If \(\mathit{status} = \mathrm{SUCCESS}\) is received from the randomness source (i.e., \(\mathrm{RBGC}_{\mathit{RS}}\)) and \(\mathit{seed\_material}\) is provided, the \(\mathit{seed\_material}\) is incorporated into the internal state of the DRBG in \(\mathrm{RBGC}n\), as specified in its \(\mathbf{DRBG\_Reseed}\) function (see [SP_800-90A]). If the reseeding of the DRBG in \(\mathrm{RBGC}n\) was in response to a \(\mathbf{DRBG\_Reseed\_request}\) from an application, the \(\mathit{status}\) received from the randomness source is returned to the application.
2. \(\mathit{status} = \mathrm{SUCCESS}\)を乱数源(すなわち\(\mathrm{RBGC}_{\mathit{RS}}\))から受け取り、\(\mathit{seed\_material}\)が提供された場合、その\(\mathit{seed\_material}\)を\(\mathrm{RBGC}n\)内のDRBGの内部状態に、その\(\mathbf{DRBG\_Reseed}\)関数に規定するとおり取り込みます([SP_800-90A]を参照)。\(\mathrm{RBGC}n\)内のDRBGの再シードがアプリケーションからの\(\mathbf{DRBG\_Reseed\_request}\)に応じたものであった場合、乱数源から受け取った\(\mathit{status}\)をアプリケーションに返します。
7.2.3.2.2. The Randomness Source is the Initial Randomness Source
7.2.3.2.2. 乱数源が初期乱数源である場合
When an appropriate RBGC construction is not available to reseed the DRBG in a non-root RBGC construction (see Sec. 7.2.3.2.1), the initial randomness source may be used.
ルート以外のRBGC構成内のDRBGを再シードするために適切なRBGC構成を利用できない場合(第7.2.3.2.1節を参照)、初期乱数源を使用してもよいです。
If the initial randomness source is an RBG2 construction, reseeding is performed as specified in Sec. 7.2.1.1.1, items 1a and 2a. Reseeding the DRBG in the RBG2 construction before requesting the generation of random bits is optional but recommended.
初期乱数源がRBG2構成である場合、7.2.1.1.1節の項目1aおよび2aに従って再シードを行います。乱数ビットを要求する前にRBG2構成内のDRBGを再シードすることは任意ですが、推奨されます。
If the initial randomness is an RBG3 construction, reseeding is performed as specified in Sec. 7.2.1.1.1, items 1b and 2b.
初期乱数源がRBG3構成である場合、7.2.1.1.1節の項目1bおよび2bに従って再シードを行います。
If the initial randomness source is a full-entropy source, reseeding is performed as specified in Sec. 7.2.1.1.2.
初期乱数源が完全エントロピー源である場合、7.2.1.1.2節に従って再シードを行います。
7.3. RBGC Requirements
7.3. RBGCの要件
7.3.1. General RBGC Construction Requirements
7.3.1. RBGC構成の一般要件
An RBGC construction has the following general testable requirements (i.e., capable of being tested by the FIPS 140 validation labs):
RBGC構成には、次の一般的な試験可能要件(FIPS 140認証試験機関が試験できる要件)があります。
1.An approved DRBG (from [SP_800-90A]) whose components are capable of providing the targeted security strength for an RBGC construction shall be employed.
1.[SP_800-90A]の承認済みDRBGであって、そのコンポーネントがRBGC構成の目標とするセキュリティ強度を提供できるものを使用しなければなりません。
2.RBGC components shall be successfully validated for compliance with the SP 800-90 series (i.e., [SP_800-90A], [SP_800-90B], and this document), [FIPS_140], and the specification of any other approved algorithm used within the RBGC construction, as applicable.
2.RBGCの各コンポーネントは、SP 800-90シリーズ([SP_800-90A]、[SP_800-90B]および本書)、[FIPS_140]、ならびにRBGC構成で使用するその他の承認済みアルゴリズムの仕様(該当する場合)への適合について、検証に合格していなければなりません。
3.An RBGC construction shall not produce any output until it is instantiated.
3.RBGC構成は、インスタンス化されるまで出力を生成してはなりません。
4.An RBGC construction shall not provide output for generating requests that specify a security strength greater than the instantiated security strength of its DRBG.
4.RBGC構成内のDRBGに設定されたセキュリティ強度を超えるセキュリティ強度を指定するgenerate要求に対して、RBGC構成は出力を提供してはなりません。
5.If a health test on the DRBG in an RBGC construction fails, the DRBG instantiation shall be terminated.
5.RBGC構成内のDRBGのヘルステストに失敗した場合、DRBGのインスタンス化を終了しなければなりません。
6.The seed material provided to the DRBG within an RBGC construction shall remain secret during transfer from the DRBG’s randomness source and remain unobservable from outside its RBG boundary.
6.RBGC構成内のDRBGに渡されるシード材料は、DRBGの乱数源から転送される間も秘密を保ち、そのRBG境界の外部から観測できないようにしなければなりません。
7.The internal state of the DRBG within an RBGC construction shall remain unobservable from outside its RBG boundary.
7.RBGC構成内のDRBGの内部状態は、そのRBG境界の外部から観測できないようにしなければなりません。
8.A tree of RBGC constructions and the initial randomness source for the root RBGC construction shall be implemented and operated on a single, physical platform (see Appendix A.3).
8.RBGC構成のツリーとルートRBGC構成の初期乱数源は、単一の物理プラットフォーム上で実装し、運用しなければなりません(付録A.3を参照してください)。
9.The initial randomness source shall not be removable from the computing platform during operation. If a replacement is required, the root shall be (re-)instantiated using the replacement randomness source.
9.運用中、初期乱数源をコンピューティングプラットフォームから取り外してはなりません。交換が必要な場合、rootを交換後の乱数源で再インスタンス化しなければなりません。
10.The seed material shall not be output from the computing platform on which it was generated.
10.シード材料を、それが生成されたコンピューティングプラットフォームの外部へ出力してはなりません。
11.The internal state of the DRBG within an RBGC construction shall not be removed from the computing platform on which it was created, including for storage, and shall only be available to the DRBG instantiation for which it was created.
11.RBGC構成内のDRBGの内部状態は、保管を含め、作成されたコンピューティングプラットフォームから取り出してはなりません。また、その内部状態は、作成元となったDRBGインスタンス化からのみ利用可能でなければなりません。
12.If the (parent) randomness source for an RBGC construction is not available for reseeding, the DRBG in the RBGC construction may continue to generate output without reseeding or may be reseeded using a validated sibling of the parent, a validated ancestor of the RBGC construction to be reseeded, or the validated initial randomness source.
12.RBGC構成の(親)乱数源を再シードに利用できない場合、そのRBGC構成内のDRBGは、再シードせずに出力生成を続けてもよいです。または、検証済みの親の兄弟、再シード対象のRBGC構成の検証済み祖先、もしくは検証済みの初期乱数源を用いて再シードしてもよいです。
General requirements for an RBGC construction that are non-testable are:
RBGC構成に関する一般的な非試験可能要件は、次のとおりです。
13.Each RBGC construction must be able to determine the type of randomness source available for its use and how to access it.
13.各RBGC構成は、利用可能な乱数源の種類と、その乱数源へのアクセス方法を判定できなければなりません。
14. The randomness source for an RBGC construction must provide the requested number of bits at a security strength of \(s\) bits or higher, where \(s\) is the targeted security strength for that RBGC construction.
14. RBGC構成の乱数源は、要求されたビット数を\(s\)ビット以上のセキュリティ強度で提供しなければなりません。ここで\(s\)は、当該RBGC構成の目標セキュリティ強度です。
15.The specific output of the randomness source (or portion thereof) that is used for instantiating or reseeding an RBGC construction must not be used for any other purpose, including seeding or reseeding a different instantiation or RBGC construction.
15.RBGC構成のインスタンス化または再シードに使用した乱数源の出力(またはその一部)を、別の用途に使用してはなりません。これには、別のインスタンス化または別のRBGC構成へのシード設定や再シードも含まれます。
16.The output of an RBGC construction must not be used as seed material for a predecessor (i.e., ancestor) RBGC construction.
16.RBGC構成の出力を、先行する(すなわち祖先にあたる)RBGC構成のシード材料として使用してはなりません。
7.3.2. Additional Requirements for the Root RBGC Construction
7.3.2. Root RBGC構成の追加要件
An RBGC construction that is used as the root of a DRBG tree has the following additional testable requirements (i.e., capable of being tested by the FIPS 140 validation labs):
DRBGツリーのrootとして使用するRBGC構成には、次の追加の試験可能要件(FIPS 140認証試験機関が試験できる要件)があります。
1. For CTR_DRBG with a derivation function, Hash_DRBG, or HMAC_DRBG, \(3s/2\) bits shall be obtained from the initial randomness source for instantiation, where \(s\) is the targeted security strength for the DRBG used in the root RBGC construction. When reseeding, \(s\) bits shall be obtained from the initial randomness source.
1. 導出関数付きCTR_DRBG、Hash_DRBG、またはHMAC_DRBGの場合、インスタンス化時に初期乱数源から\(3s/2\)ビットを取得しなければなりません。\(s\)はルートRBGC構成内で使用するDRBGの目標セキュリティ強度です。再シード時には、初期乱数源から\(s\)ビットを取得しなければなりません。
2. For CTR_DRBG without a derivation function used as the DRBG within the root RBGC construction, \(\mathit{keylen} + \mathit{output\_len}\) bits shall be obtained from the randomness source for instantiation and reseeding, where \(\mathit{keylen}\) is the length of the key to be used in the cryptographic primitive used by the root’s DRBG, and \(\mathit{output\_len}\) is the length of its output block.
2. root RBGC構成内のDRBGとして導出関数なしのCTR_DRBGを使用する場合、インスタンス化および再シードのため、乱数源から\(\mathit{keylen} + \mathit{output\_len}\)ビットを取得しなければなりません。\(\mathit{keylen}\)はrootのDRBGが使用する暗号プリミティブの鍵長、\(\mathit{output\_len}\)はその出力ブロック長です。
3.If the randomness source for the root RBGC construction is an RBG2 construction, a request for reseeding the DRBG in the RBG2 construction should precede a request for generating seed material.
3.root RBGC構成の乱数源がRBG2構成である場合、シード材料の生成要求より先に、RBG2構成内のDRBGへの再シード要求を行うべきです。
The non-testable requirements for the root RBGC construction are:
root RBGC構成に関する非試験可能要件は、次のとおりです。
4.The initial randomness source for the root RBGC construction must be a validated RBG3(XOR), RBG3(RS), RBG2(P), or RBG2(NP) construction or a full-entropy source.
4.root RBGC構成の初期乱数源は、検証済みのRBG3(XOR)、RBG3(RS)、RBG2(P)、RBG2(NP)構成、または完全エントロピー源でなければなりません。
5.A full-entropy source serving as the initial randomness source must be either an entropy source that has been validated as providing full-entropy output or a validated entropy source that uses the external conditioning function specified in Sec. 3.2.2.2.
5.初期乱数源として機能する完全エントロピー源は、完全エントロピー出力を提供すると検証されたエントロピー源、または3.2.2.2節に規定する外部コンディショニング関数を使用する検証済みエントロピー源のいずれかでなければなりません。
6.The DRBG in the root RBGC construction may be instantiated at any security strength for the design, subject to the following restriction: if the initial randomness source is an RBG2(P) or RBG2(NP) construction, the root must not be instantiated at a security strength greater than the security strength of the RBG2(P) or RBG2(NP) construction.
原本PDFの抜粋画像

6.root RBGC構成内のDRBGは、設計で許容される任意のセキュリティ強度でインスタンス化してもよいです。ただし、初期乱数源がRBG2(P)またはRBG2(NP)構成である場合、rootをそのRBG2構成のセキュリティ強度を超えるセキュリティ強度でインスタンス化してはなりません。
7.3.3. Additional Requirements for an RBGC Construction That is Not the Root of a DRBG Tree
7.3.3. DRBGツリーのrootではないRBGC構成の追加要件
An RBGC construction that is not the root of a DRBG tree has no additional testable requirements beyond those in Sec. 7.3.1.
DRBGツリーのrootではないRBGC構成には、7.3.1節に示す要件以外に試験可能要件はありません。
The non-testable requirements for an RBGC construction that is not the root of a DRBG tree are:
DRBGツリーのrootではないRBGC構成に関する非試験可能要件は、次のとおりです。
1.Each RBGC construction must have only one parent RBGC construction as a randomness source for instantiation and reseeding, although an alternative randomness source may be used for reseeding under certain conditions (see requirement 12 in Sec. 7.3.1).
1.各RBGC構成は、インスタンス化および再シードの乱数源として、親RBGC構成を1つだけ持たなければなりません。ただし、特定の条件下では代替乱数源を再シードに使用してもよいです(7.3.1節の要件12を参照してください)。
2.An RBGC construction must reside on the same computing platform as its parent and any alternative randomness source (see requirement 12 in Sec. 7.3.1).
2.RBGC構成は、その親および代替乱数源と同じコンピューティングプラットフォーム上に存在しなければなりません(7.3.1節の要件12を参照してください)。
3.Each RBGC construction may be instantiated at any security strength for a design that does not exceed the security strength of its parent randomness source.
3.RBGC構成は、その親乱数源のセキュリティ強度を超えない設計上の任意のセキュリティ強度でインスタンス化してもよいです。
8. Testing
8. 試験
Two types of testing are specified in this recommendation: health testing and implementation-validation testing. Health testing shall be performed on all RBGs that claim compliance with this recommendation (see Sec. 8.1). Section 8.2 provides requirements for implementation validation.
本勧告では、ヘルステストと実装検証テストの2種類を規定します。本勧告への適合を主張するすべてのRBGでヘルステストを実施しなければなりません(8.1節を参照してください)。8.2節では実装検証の要件を示します。
8.1. Health Testing
8.1. ヘルステスト
Health testing is the testing of an implementation prior to and during normal operations to determine whether the implementation continues to perform as expected and as validated. Health testing is performed by the RBG itself (i.e., the tests are designed into the RBG implementation).
ヘルステストとは、通常運用の前および運用中に実装を試験し、期待どおり、かつ検証時と同様に動作し続けているかを確認することです。ヘルステストはRBG自体が実施します(すなわち、RBGの実装にテストが組み込まれています)。
An RBG shall support the health tests specified in [SP_800-90A] and [SP_800-90B] as well as perform health tests on the components of SP 800-90C. [FIPS_140] specifies the testing to be performed within a cryptographic module.
RBGは、[SP_800-90A]および[SP_800-90B]で規定するヘルステストをサポートするとともに、SP 800-90Cのコンポーネントにもヘルステストを実施しなければなりません。暗号モジュール内で実施する試験は[FIPS_140]で規定されます。
8.1.1. Testing RBG Components
8.1.1. RBGコンポーネントの試験
Whenever an RBG receives a request to start up or perform health testing, a request for health testing shall be issued to the RBG components (e.g., the DRBG and any entropy source).
RBGが起動またはヘルステストの実施要求を受け取るたびに、RBGコンポーネント(例:DRBGおよび各エントロピー源)へヘルステスト要求を発行しなければなりません。
8.1.2. Handling Failures
8.1.2. 失敗への対処
Failures may occur during the use of entropy sources and during the operation of other components of an RBG. [SP_800-90A] and [SP_800-90B] discuss error handling for DRBGs and entropy sources, respectively.
エントロピー源の使用中や、RBGの他のコンポーネントの動作中に失敗が起きることがあります。[SP_800-90A]および[SP_800-90B]では、それぞれDRBGとエントロピー源のエラー処理を説明しています。
8.1.2.1. Entropy-Source Failures
8.1.2.1. エントロピー源の失敗
A failure of a validated entropy source is reported to the \(\mathbf{Get\_entropy\_bitstring}\) process in response to entropy requests to entropy source(s). The \(\mathbf{Get\_entropy\_bitstring}\) function notifies the consuming application of such failures as soon as possible (see item 4 of Sec. 3.1). The consuming application may choose to terminate the RBG operation. Otherwise, the RBG may continue operation if any entropy source that can be credited with providing entropy38 is still healthy (e.g., a failure has not been reported by those entropy sources) and can provide sufficient entropy when requested.
検証済みエントロピー源の失敗は、そのエントロピー源への要求に対する応答として、\(\mathbf{Get\_entropy\_bitstring}\)処理に報告されます。\(\mathbf{Get\_entropy\_bitstring}\)関数は、そのような失敗を利用側アプリケーションにできるだけ速やかに通知します(3.1節の項目4を参照)。利用側アプリケーションはRBGの動作を終了してもよいです。それ以外の場合、エントロピー提供量として算入可能なエントロピー源38のいずれかが正常な状態を保ち(例:そのエントロピー源から失敗が報告されていない)、要求時に十分なエントロピーを提供できるなら、RBGは動作を続けてもよいです。
If all entropy sources credited with providing entropy report failures, the RBG operation shall be terminated (e.g., stopped) until an entropy source is repaired and successfully tested for correct operation.
エントロピー提供量として算入されるすべてのエントロピー源から失敗が報告された場合、いずれかのエントロピー源が修復され、正常動作の試験に合格するまで、RBGの動作を終了(例:停止)しなければなりません。
8.1.2.2. Failures by Non-Entropy-Source Components
8.1.2.2. エントロピー源以外のコンポーネントの失敗
Failures by non-entropy-source components may be caused by hardware, software, or firmware failures that may be detected using known-answer health tests within the RBG or by the system in which the RBG resides. When such failures are detected that affect the RBG, the RBG operation shall be terminated. The RBG must not resume operations until the reasons for the failure have been determined, the failure has been repaired, and the RBG has been successfully tested for proper operation.
エントロピー源以外のコンポーネントの失敗は、ハードウェア、ソフトウェア、ファームウェアの故障が原因となることがあり、そうした故障はRBG内の既知解ヘルステスト、またはRBGが稼働するシステムによって検出される場合があります。RBGに影響するそのような失敗が検出された場合、RBGの動作を終了しなければなりません。失敗の原因を特定し、失敗を修復して、RBGの正常動作試験に合格するまで、動作を再開してはなりません。
8.2. Implementation Validation
8.2. 実装検証
Implementation validation is the process of verifying that an RBG and its components fulfill the requirements of this recommendation. Validation is accomplished by:
実装検証とは、RBGおよびそのコンポーネントが本勧告の要件を満たすことを確認するプロセスです。検証は次の方法で行います。
•Validating the components from [SP_800-90A] and [SP_800-90B];
•[SP_800-90A]および[SP_800-90B]のコンポーネントを検証すること;
•Validating the use of the constructions in SP 800-90C via known answer tests, code inspection, or both, as appropriate; and
•必要に応じて、既知解テスト、コード検査、またはその両方により、SP 800-90Cで規定する構成の使用を検証します。また
•Validating that the appropriate documentation has been provided, as specified in SP 800-90C.
•SP 800-90Cに規定される適切な文書が提供されていることを確認すること。
Documentation shall be developed that will provide assurance to testers that an RBG that claims compliance with this recommendation has been implemented correctly. This documentation shall include the following as a minimum:
本勧告への適合を主張するRBGが正しく実装されていることを試験者に保証するための文書を作成しなければなりません。この文書には、少なくとも次の事項を含めなければなりません。
•An identification of the constructions and components used by the RBG, including a diagram of the interaction between the constructions and components.
•RBGで使用する構成およびコンポーネントを特定し、これらの構成とコンポーネント間の相互作用を示す図を含めます。
•Whether an external conditioning function is used, an indication of the type of conditioning function and the method for obtaining any keys that are required by that function.
•外部コンディショニング関数の使用有無、使用する場合はその種類、および関数が必要とする鍵の取得方法を示します。
•Appropriate documentation, as specified in [SP_800-90A] and [SP_800-90B]. The DRBG and the entropy sources shall be validated for compliance with SP 800-90A and/or SP 800-90B, respectively, and the validations successfully finalized before the completion of RBG implementation validation.
•[SP_800-90A]および[SP_800-90B]に規定される適切な文書。DRBGおよびエントロピー源は、それぞれSP 800-90Aおよび/またはSP 800-90Bへの適合について検証されなければならず、その検証は、RBG実装の検証が完了する前に正常に確定されていなければなりません。
•The maximum security-strength that can be supported by the DRBG.
•DRBGがサポートできる最大セキュリティ強度。
•A description of all validated and non-validated entropy sources used by the RBG, including identifying whether the entropy source is a physical or non-physical entropy source.
•RBGが使用する、検証済みおよび未検証のすべてのエントロピー源を説明し、各エントロピー源が物理または非物理のどちらであるかを明記します。
•Documentation justifying the independence of all validated entropy sources from all other validated and non-validated entropy sources employed.
•使用するすべての検証済みエントロピー源が、他のすべての検証済みおよび未検証のエントロピー源から独立していることを正当化する文書。
•An identification of the features supported by the RBG (e.g., access to the underlying DRBG of an RBG3 construction).
•RBGがサポートする機能(例:RBG3構成の基盤となるDRBGへのアクセス)を特定します。
•A description of the health tests performed, including identification of the periodic intervals for performing the tests.
•実施するヘルステストと、その実施周期を説明します。
•A description of any support functions other than health testing.
•ヘルステスト以外のサポート機能を説明します。
•A description of the RBG components within the RBG security boundary (see Sec. 2.5).
•RBGのセキュリティ境界内にあるRBGコンポーネントを説明します(2.5節を参照してください)。
•For an RBG1 construction, a statement indicating that the randomness source must be a validated RBG2(P) or RBG3 construction or a root RBGC construction whose initial randomness source is an RBG3 construction or full-entropy source (e.g., this could be provided in user documentation and/or in a security policy).
•RBG1構成では、乱数源が検証済みのRBG2(P)、RBG3、または初期乱数源としてRBG3構成か完全エントロピー源を用いるroot RBGC構成でなければならない旨を記載します(ユーザー文書やセキュリティポリシーなどに記載できます)。
•If sub-DRBGs can be used in an RBG1 construction, the maximum number of sub-DRBGs that can be supported by the implementation and the security strengths to be supported by the sub-DRBGs.
•RBG1構成でsub-DRBGを使用できる場合、実装がサポートする最大sub-DRBG数と、sub-DRBGがサポートするセキュリティ強度。
•For RBG2 and RBG3 constructions, a statement that identifies the conditions under which the DRBG is reseeded (e.g., when requested by a consuming application or at a given time interval).
•RBG2およびRBG3構成について、DRBGを再シードする条件(例:利用側アプリケーションから要求された場合、または一定時間ごと)を特定する記述。
•For an RBG3 construction, a statement that indicates whether the DRBG can be accessed directly (i.e., the DRBG internal state used by the RBG3 construction can be accessed using calls directly to the DRBG).
•RBG3構成では、DRBGに直接アクセスできるかどうかを示します(すなわち、RBG3構成で使用するDRBGの内部状態に、DRBGへの直接呼び出しでアクセスできますか)。
•For an RBG3 construction, the security policy shall indicate the fallback security strength39 that can be supported by the DRBG if the entropy source fails.
•RBG3構成では、エントロピー源が失敗した場合にDRBGがサポート可能なフォールバックセキュリティ強度39をセキュリティポリシーに記載しなければなりません。
• For an RBG3(RS) construction, when implementing CTR_DRBG with a derivation function, Hash_DRBG, or HMAC_DRBG, the method used for obtaining \(s + 64\) bits of entropy to produce \(s\) full-entropy bits (see Sec. 6.5.1.2).
• RBG3(RS)構成で導出関数付きCTR_DRBG、Hash_DRBG、またはHMAC_DRBGを実装する場合、\(s + 64\)ビットのエントロピーを取得して\(s\)ビットの完全エントロピーを生成するために用いる方法(6.5.1.2節を参照)。
•For an RBGC construction, whether it is capable of serving as the root of a DRBG tree, how it “finds” an appropriate randomness source for seeding and reseeding (if reseeding is implemented), whether it can instantiate child RBGC constructions, any restrictions on the number of child RBGC constructions in the implementation, whether it can be used as an alternative randomness source for another RBGC construction and how this is accomplished (see the note in Sec. 7.1.2.2), and whether it can be reseeded.
•RBGC構成では、DRBGツリーのrootとして機能できるか、シードと再シード(実装されている場合)に適切な乱数源をどのように「見つける」か、子RBGC構成をインスタンス化できるか、実装でサポートする子RBGC構成数に制限があるか、別のRBGC構成の代替乱数源として使用できるかおよびその方法(7.1.2.2節の注を参照)、再シード可能かどうかを示します。
•If an RBGC construction can serve as the root of a DRBG tree, identify the initial randomness source types that can be used. If the randomness source can be a full-entropy source, describe the entropy sources to be used.
•RBGC構成がDRBGツリーのrootとして機能できる場合、使用可能な初期乱数源の種類を特定します。乱数源に完全エントロピー源を使用できる場合は、使用するエントロピー源を説明します。
•Guidance to users about fulfilling the non-testable requirements, as appropriate (see Sec. 4.4, 5.3, 6.3, and 7.3).
•非試験可能要件を満たすためのユーザー向けガイダンス(該当する場合。4.4、5.3、6.3、および7.3節を参照してください)。
References
参考文献
[AIS20] BSI (2025) Anwendungshinweise und Interpretationen zum Schema (AIS) (AIS 20, Version 4) (Bundesamt für Sicherheit in der Informationstechnik [BSI], Bonn, Germany). Available at https://www.bsi.bund.de/dok/ais-20-31
[AIS20] BSI (2025) Anwendungshinweise und Interpretationen zum Schema (AIS) (AIS 20, Version 4) (Bundesamt für Sicherheit in der Informationstechnik [BSI], Bonn, Germany). 入手先: https://www.bsi.bund.de/dok/ais-20-31
[AIS31] BSI (2025) Funktionalitätsklassen und Evaluationsmethodologie für physikalische Zufallszahlengeneratoren (AIS 31, Version 4) (Bundesamt für Sicherheit in der Informationstechnik [BSI], Bonn, Germany). Available at https://www.bsi.bund.de/dok/ais-20-31
[AIS31] BSI (2025) Funktionalitätsklassen und Evaluationsmethodologie für physikalische Zufallszahlengeneratoren (AIS 31, Version 4) (Bundesamt für Sicherheit in der Informationstechnik [BSI], Bonn, Germany). 入手先: https://www.bsi.bund.de/dok/ais-20-31
[BSIFunc] Peter M, Schindler W (2024) A Proposal for Functionality Classes for Random Number Generators (Version 3.0). (Bundesamt für Sicherheit in der Informationstechnik [BSI], Bonn, Germany). Available at https://www.bsi.bund.de/dok/ais-20-31-appx-2024
[BSIFunc] Peter M, Schindler W (2024) A Proposal for Functionality Classes for Random Number Generators (Version 3.0). (Bundesamt für Sicherheit in der Informationstechnik [BSI], Bonn, Germany). 入手先: https://www.bsi.bund.de/dok/ais-20-31-appx-2024
[FIPS_140] National Institute of Standards and Technology (2019) Security Requirements for Cryptographic Modules. (Department of Commerce, Washington, DC), Federal Information Processing Standards Publication (FIPS) NIST FIPS 140-3. https://doi.org/10.6028/NIST.FIPS.140-3
[FIPS_140] National Institute of Standards and Technology (2019) Security Requirements for Cryptographic Modules. (Department of Commerce, Washington, DC), Federal Information Processing Standards Publication (FIPS) NIST FIPS 140-3. https://doi.org/10.6028/NIST.FIPS.140-3
[FIPS_140IG] National Institute of Standards and Technology, Canadian Centre for Cyber Security (2020) Implementation Guidance for FIPS 140-3 and the Cryptographic Module Validation Program, [Amended April 18, 2025]. Available at https://csrc.nist.gov/csrc/media/Projects/cryptographic-module-validation-program/documents/fips 140-3/FIPS 140-3 IG.pdf
[FIPS_140IG] National Institute of Standards and Technology, Canadian Centre for Cyber Security (2020) Implementation Guidance for FIPS 140-3 and the Cryptographic Module Validation Program, [Amended April 18, 2025]. 入手先: https://csrc.nist.gov/csrc/media/Projects/cryptographic-module-validation-program/documents/fips 140-3/FIPS 140-3 IG.pdf
[FIPS_180] National Institute of Standards and Technology (2015) Secure Hash Standard (SHS). (Department of Commerce, Washington, DC), Federal Information Processing Standards Publication (FIPS) NIST FIPS 180-4. https://doi.org/10.6028/NIST.FIPS.180-4
[FIPS_180] National Institute of Standards and Technology (2015) Secure Hash Standard (SHS). (Department of Commerce, Washington, DC), Federal Information Processing Standards Publication (FIPS) NIST FIPS 180-4. https://doi.org/10.6028/NIST.FIPS.180-4
[FIPS_197] National Institute of Standards and Technology (2001) Advanced Encryption Standard (AES). (Department of Commerce, Washington, DC), Federal Information Processing Standards Publication (FIPS) NIST FIPS 197-upd1, updated May 9, 2023. https://doi.org/10.6028/NIST.FIPS.197-upd1
[FIPS_197] National Institute of Standards and Technology (2001) Advanced Encryption Standard (AES). (Department of Commerce, Washington, DC), Federal Information Processing Standards Publication (FIPS) NIST FIPS 197-upd1, updated May 9, 2023. https://doi.org/10.6028/NIST.FIPS.197-upd1
[FIPS_202] National Institute of Standards and Technology (2015) SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions. (Department of Commerce, Washington, DC), Federal Information Processing Standards Publication (FIPS) NIST FIPS 202. https://doi.org/10.6028/NIST.FIPS.202
[FIPS_202] National Institute of Standards and Technology (2015) SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions. (Department of Commerce, Washington, DC), Federal Information Processing Standards Publication (FIPS) NIST FIPS 202. https://doi.org/10.6028/NIST.FIPS.202
[ISO_18031] International Organization for Standardization/International Electrotechnical Commission (2025) ISO/IEC 18031:2025 Information technology — Security techniques — Random bit generation (International Organization for Standardization, Geneva, Switzerland). Available at https://www.iso.org/standard/81645.html
[ISO_18031] International Organization for Standardization/International Electrotechnical Commission (2025) ISO/IEC 18031:2025 Information technology — Security techniques — Random bit generation (International Organization for Standardization, Geneva, Switzerland). 入手先: https://www.iso.org/standard/81645.html
[NISTIR_8427] Buller D, Kaufer A, Roginsky AL, Sonmez Turan M (2022) Discussion on the Full Entropy Assumption of SP 800-90 Series. (National Institute of Standards and Technology, Gaithersburg, MD), NIST Internal Report (NIST IR) NIST IR 8427. https://doi.org/10.6028/NIST.IR.8427
[NISTIR_8427] Buller D, Kaufer A, Roginsky AL, Sonmez Turan M (2022) Discussion on the Full Entropy Assumption of SP 800-90 Series. (National Institute of Standards and Technology, Gaithersburg, MD), NIST Internal Report (NIST IR) NIST IR 8427. https://doi.org/10.6028/NIST.IR.8427
[SP_800-38B] Dworkin MJ (2005) Recommendation for Block Cipher Modes of Operation: the CMAC Mode for Authentication. (National Institute of Standards and Technology, Gaithersburg, MD), NIST Special Publication (SP) NIST SP 800-38B, Includes updates as of October 6, 2016. https://doi.org/10.6028/NIST.SP.800-38B
[SP_800-38B] Dworkin MJ (2005) Recommendation for Block Cipher Modes of Operation: the CMAC Mode for Authentication. (National Institute of Standards and Technology, Gaithersburg, MD), NIST Special Publication (SP) NIST SP 800-38B, 2016年10月6日現在の更新を含みます。https://doi.org/10.6028/NIST.SP.800-38B
[SP_800-90A] Barker EB, Kelsey JM (2015) Recommendation for Random Number Generation Using Deterministic Random Bit Generators. (National Institute of Standards and Technology, Gaithersburg, MD), NIST Special Publication (SP) NIST SP 800-90Ar1. https://doi.org/10.6028/NIST.SP.800-90Ar1
[SP_800-90A] Barker EB, Kelsey JM (2015) Recommendation for Random Number Generation Using Deterministic Random Bit Generators. (National Institute of Standards and Technology, Gaithersburg, MD), NIST Special Publication (SP) NIST SP 800-90Ar1. https://doi.org/10.6028/NIST.SP.800-90Ar1
[SP_800-90B] Sönmez Turan M, Barker EB, Kelsey JM, McKay KA, Baish ML, Boyle M (2018) Recommendation for the Entropy Sources Used for Random Bit Generation. (National Institute of Standards and Technology, Gaithersburg, MD), NIST Special Publication (SP) NIST SP 800-90B. https://doi.org/10.6028/NIST.SP.800-90B
[SP_800-90B] Sönmez Turan M, Barker EB, Kelsey JM, McKay KA, Baish ML, Boyle M (2018) Recommendation for the Entropy Sources Used for Random Bit Generation. (National Institute of Standards and Technology, Gaithersburg, MD), NIST Special Publication (SP) NIST SP 800-90B. https://doi.org/10.6028/NIST.SP.800-90B
[SP_800_224] 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
[SP_800_224] 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
[SP800_90WebSite] National Institute of Standards and Technology (2025) Random Bit Generation [SP 800-90 Project]. Available at https://csrc.nist.gov/Projects/random-bit-generation/sp-800-90-updates
[SP800_90WebSite]National Institute of Standards and Technology(2025)Random Bit Generation [SP 800-90 Project]。入手先:https://csrc.nist.gov/Projects/random-bit-generation/sp-800-90-updates
Appendix A. Auxiliary Discussions (Informative)
付録A. 補足的な議論(参考)
A.1. Entropy vs. Security Strength
A.1. エントロピーとセキュリティ強度
This appendix compares and contrasts the concepts of entropy and security strength.
この付録では、エントロピーとセキュリティ強度の概念を比較し、相違点を説明します。
A.1.1. Entropy
A.1.1. エントロピー
Entropy is the amount of disorder, randomness, or variability in a closed system. There are several measures of entropy in the literature. The SP 800-90 series uses min-entropy, which is a worst-case measure of the unpredictability of a random variable.
エントロピーとは、閉じたシステムにおける無秩序さ、ランダム性、または変動性の量です。文献には複数のエントロピー尺度があります。SP 800-90シリーズでは、確率変数の予測困難性を最悪ケースで測るmin-entropy(最小エントロピー)を用います。
Suppose that an entropy source produces \(n\)-bit strings with \(m\) bits of entropy in each bitstring. This means that when an \(n\)-bit string is obtained from that entropy source, the best possible guess of the value of the string has a probability of no more than \(2^{-m}\) of being correct.
あるエントロピー源が\(n\)ビット列を生成し、各ビット列が\(m\)ビットのエントロピーを含むとします。この場合、そのエントロピー源から\(n\)ビット列を取得したとき、値を推測する最善の方法でも、正解する確率は最大で\(2^{-m}\)です。
Entropy can be thought of as a property of a probability distribution, like the mean or variance. Entropy measures the unpredictability or randomness of the probability distribution on bitstrings produced by the entropy source, not a property of any particular bitstring. However, the terminology is sometimes slightly abused by referring to a bitstring as having \(m\) bits of entropy. This simply means that the bitstring came from a source that ensures \(m\) bits of entropy in its output bitstrings.
エントロピーは、平均や分散と同様、確率分布の性質と考えることができます。エントロピーが測るのは、エントロピー源が生成するビット列の確率分布における予測困難性またはランダム性であり、個々のビット列の性質ではありません。ただし、ビット列が\(m\)ビットのエントロピーを持つと表現するなど、用語が多少不正確に使われることがあります。これは、そのビット列が、出力ビット列に\(m\)ビットのエントロピーを保証する情報源から得られたことを意味します。
Because of the inherent variability in the process, predicting future entropy-source outputs does not depend on an adversary’s amount of computing power.
生成過程に本質的な変動性があるため、将来のエントロピー源出力の予測可能性は、攻撃者の計算能力に左右されません。
A.1.2. Security Strength
A.1.2. セキュリティ強度
A deterministic cryptographic mechanism (e.g., the DRBGs defined in [SP_800-90A]) has a security strength — a measure of how much computing power an adversary expects to need to defeat the security of the mechanism. If a DRBG has an \(s\)-bit security strength, an adversary who can make \(2^{w}\) computations of the underlying block cipher or hash function, where \(w < s\), expects to have about a \(2^{w-s}\) probability of defeating the DRBG’s security. For example, an adversary who can perform \(2^{96}\) AES encryptions can expect to defeat the security of CTR-DRBG that uses AES-128 with a probability of about \(2^{-32}\) (i.e., \(2^{96-128}\)).
決定論的な暗号メカニズム(例:[SP_800-90A]で定義するDRBG)にはセキュリティ強度があります。これは、そのメカニズムの安全性を破るために攻撃者が必要と見込む計算量の尺度です。DRBGのセキュリティ強度が\(s\)ビットの場合、基盤となるブロック暗号またはハッシュ関数の計算を\(2^{w}\)回実行できる攻撃者は、\(w < s\)であれば、DRBGの安全性を破る確率をおよそ\(2^{w-s}\)と見積もります。例えば、AES暗号化を\(2^{96}\)回実行できる攻撃者が、AES-128を用いるCTR-DRBGの安全性を破る確率は約\(2^{-32}\)(すなわち\(2^{96-128}\))です。
A.1.3. A Side-by-Side Comparison
A.1.3. 並べて比較
Informally, one way of thinking of the difference between security strength and entropy is the following: suppose that an adversary somehow obtains the internal state of an entropy source (e.g., the state of all of the ring oscillators and any internal buffer). This might allow the adversary to predict the next few bits from the entropy source (assuming that there is some buffering of bits within the entropy source), but the entropy source outputs will once more become unpredictable to the adversary very quickly. For example, knowing what faces of the dice are currently showing does not allow a player to successfully predict the next roll of the dice. In contrast, suppose that an adversary somehow obtains the internal state of a DRBG. Because the DRBG is deterministic, the adversary can then predict all future outputs from the DRBG until the next reseeding of the DRBG with a sufficient amount of entropy.
セキュリティ強度とエントロピーの違いを直感的に捉える方法を示します。攻撃者がエントロピー源の内部状態(例:リングオシレーターすべての状態と内部バッファ)を何らかの方法で得たとします。エントロピー源の内部でビットがある程度バッファリングされていると仮定すると、攻撃者はエントロピー源の次の数ビットを予測できるかもしれません。しかし、エントロピー源の出力は、ごく短時間で再び攻撃者には予測できなくなります。例えば、サイコロの現在の面が分かっても、次に振ったときの出目を正しく予測することはできません。これに対し、攻撃者がDRBGの内部状態を何らかの方法で得たとします。DRBGは決定論的であるため、十分な量のエントロピーを使ってDRBGを次に再シードするまで、攻撃者はDRBGの将来の出力をすべて予測できます。
An entropy source provides bitstrings that are difficult for an adversary to guess correctly but usually have some detectable statistical flaws (e.g., they may have slightly biased bits, or successive bits may be correlated). However, a well-designed DRBG provides bitstrings that exhibit none of these properties. Rather, they have independent and identically distributed bits, with each bit taking on a value with a probability of exactly 0.5. These bitstrings are only unpredictable to an adversary who does not know the DRBG’s internal state and is computationally bounded.
エントロピー源は、攻撃者が正しく推測することが難しいビット列を提供しますが、通常、検出可能な統計的欠陥をいくらか含みます(例:ビットにわずかな偏りがある、または連続するビットが相関します)。一方、適切に設計されたDRBGが提供するビット列には、こうした性質が一切ありません。むしろ、ビットは互いに独立かつ同一の分布に従い、各ビットが値を取る確率はちょうど0.5です。これらのビット列が攻撃者にとって予測困難なのは、DRBGの内部状態を知らず、計算能力に限界がある場合に限られます。
A.1.4. Entropy and Security Strength in This Recommendation
A.1.4. 本勧告におけるエントロピーとセキュリティ強度
The DRBG within the RBG1 construction is instantiated from an RBG2(P) construction, an RBG3 construction, or a root RBGC construction whose initial randomness source is an RBG3 construction or full-entropy source. To instantiate the RBG1 construction at a security strength of \(s\) bits, this recommendation requires the source RBG to support a security strength of at least \(s\) bits and provide a bitstring that is at least \(3s/2\) bits. Some DRBGs have additional requirements (see [SP_800-90A]).
RBG1構成内のDRBGは、RBG2(P)構成、RBG3構成、または初期乱数源にRBG3構成か完全エントロピー源を用いるroot RBGC構成からインスタンス化されます。RBG1構成を\(s\)ビットのセキュリティ強度でインスタンス化するには、乱数源となるRBGが少なくとも\(s\)ビットのセキュリティ強度をサポートし、少なくとも\(3s/2\)ビットのビット列を提供することを本勧告は求めます。一部のDRBGには追加要件があります([SP_800-90A]を参照)。
The DRBG within an RBG2 or RBG3 construction is instantiated using a bitstring with a certain amount of entropy obtained from a validated entropy source.40 In order to instantiate the DRBG to support an \(s\)-bit security strength, a bitstring with at least \(3s/2\) bits of entropy is required for the instantiation of most of the DRBGs. Reseeding requires a bitstring with at least \(s\) bits of entropy. Other DRBGs have additional requirements (see [SP_800-90A]).
RBG2またはRBG3構成内のDRBGは、検証済みエントロピー源から取得した、一定量のエントロピーを含むビット列を用いてインスタンス化します。40 DRBGを\(s\)ビットのセキュリティ強度をサポートするようインスタンス化するには、ほとんどのDRBGで少なくとも\(3s/2\)ビットのエントロピーを含むビット列が必要です。再シードには少なくとも\(s\)ビットのエントロピーを含むビット列が必要です。他のDRBGには追加要件があります([SP_800-90A]を参照)。
RBG3 constructions are designed to provide full-entropy outputs but with a DRBG included in the design as a second security anchor in case the entropy source fails undetectably. Entropy bits are obtained either directly from an entropy source or from an entropy source via an approved, vetted conditioning function. When the entropy source is working properly, an \(n\)-bit output from the RBG3 construction is said to provide \(n\) bits of entropy. The DRBG in an RBG3 construction is always required to support the highest security strength that can be provided by its design (\(\mathit{highest\_strength}\)). If an entropy source has an undetectable failure, the RBG3 construction outputs are generated at that security strength. In this case, the security strength of a bitstring produced by the RBG is the minimum of \(\mathit{highest\_strength}\) and the length of the bitstring — that is, \(\mathit{security\_strength} = \mathbf{min}(\mathit{highest\_strength}, \mathit{length})\).
RBG3構成は完全エントロピー出力を提供するよう設計されていますが、エントロピー源の検出不能な故障に備え、第2のセキュリティアンカーとしてDRBGも含みます。エントロピービットは、エントロピー源から直接、または承認済みで精査済みのコンディショニング関数を介して取得します。エントロピー源が正常に動作している場合、RBG3構成の\(n\)ビット出力は\(n\)ビットのエントロピーを提供するとみなします。RBG3構成内のDRBGは、その設計で提供可能な最高セキュリティ強度(\(\mathit{highest\_strength}\))を常にサポートする必要があります。エントロピー源で検出不能な故障が発生した場合、RBG3構成はそのセキュリティ強度で出力を生成します。この場合、RBGが生成するビット列のセキュリティ強度は\(\mathit{highest\_strength}\)とビット列の長さの小さい方、すなわち\(\mathit{security\_strength} = \mathbf{min}(\mathit{highest\_strength}, \mathit{length})\)です。
The DRBG within an RBGC construction is instantiated using a bitstring from a randomness source. The randomness source for an RBGC construction will be either the initial randomness source or another RBGC construction. The tree of RBGC constructions will always originate from an approved initial randomness source that is either a full-entropy source or an RBG2 or RBG3 construction, each of which includes a validated entropy source.
RBGC構成内のDRBGは、乱数源から得たビット列を用いてインスタンス化されます。RBGC構成の乱数源は、初期乱数源または別のRBGC構成のいずれかです。RBGC構成のツリーは、必ず承認済みの初期乱数源から始まり、その源は完全エントロピー源、または検証済みエントロピー源を含むRBG2もしくはRBG3構成です。
In conclusion, entropy sources and properly functioning RBG3 constructions provide output with entropy. RBG1, RBG2, and RBGC constructions provide output with a security strength that depends on the security strength of the RBG instantiation and the length of the output. Likewise, if the entropy source used by an RBG3 construction fails undetectably, the output is then dependent on the DRBG within the construction (i.e., an RBG2(P) construction) to produce output at the highest security strength for the DRBG design.
結論として、エントロピー源および正常に機能するRBG3構成は、エントロピーを含む出力を提供します。RBG1、RBG2、およびRBGC構成が提供する出力のセキュリティ強度は、RBGインスタンス化のセキュリティ強度と出力長によって決まります。同様に、RBG3構成で使用するエントロピー源に検出不能な故障が起きると、出力は、DRBG設計が提供できる最高セキュリティ強度で出力を生成する構成内のDRBG(すなわちRBG2(P)構成)に依存します。
Because of the difference between the use of “entropy” to describe the output of an entropy source and the use of “security strength” to describe the output of a DRBG, the term “randomness” is used as a general term to mean either “entropy” or “security strength,” as appropriate. A “randomness source” is the general term for an entropy source or RBG that provides the randomness used by an RBG.
エントロピー源の出力を表す「エントロピー」とDRBGの出力を表す「セキュリティ強度」は使い分けられるため、文脈に応じて「エントロピー」または「セキュリティ強度」のいずれかを意味する一般用語として「乱数性」を用います。「乱数源」は、RBGが使用する乱数性を提供するエントロピー源またはRBGを指す一般用語です。
A.2. Generating Full-Entropy Output Using the RBG3(RS) Construction
A.2. RBG3(RS)構成を用いた完全エントロピー出力の生成
Table 4 provides information on generating full-entropy output using the RBG3(RS) construction with the DRBGs in [SP_800-90A].
表4は、[SP_800-90A]のDRBGを用いるRBG3(RS)構成で、完全エントロピー出力を生成するための情報を示します。
Table 4. Values for generating full-entropy bits by an RBG3(RS) construction
表4. RBG3(RS)構成で完全エントロピービットを生成するための値
| DRBG | DRBG Primitives | Highest Security Strength (\(\mathrm{s}\)) that may be supported by the DRBG | Entropy obtained during a normal reseed operation (\(r\)) | Entropy required for s bits with full entropy (\(s + 64\)) |
| CTR_DRBG (with no derivation function) | AES-128 | 128 | 256 | 192 |
| AES-192 | 192 | 320 | 256 | |
| AES-256 | 256 | 384 | 320 | |
| CTR_DRBG (using a derivation function) | AES-128 | 128 | 128 | 192 |
| AES-192 | 192 | 192 | 256 | |
| AES-256 | 256 | 256 | 320 | |
| Hash_DRBG and HMAC_DRBG | SHA-256 SHA3-256 | 256 | 256 | 320 |
| SHA-384 SHA3-384 | 256 | 256 | 320 | |
| SHA-512 SHA3-512 | 256 | 256 | 320 |
| DRBG | DRBGのプリミティブ | DRBGがサポートできる最高セキュリティ強度(\(\mathrm{s}\)) | 通常の再シードで得られるエントロピー(\(r\)) | sビットの完全エントロピー出力に必要なエントロピー(\(s + 64\)) |
| CTR_DRBG(導出関数なし) | AES-128 | 128 | 256 | 192 |
| AES-192 | 192 | 320 | 256 | |
| AES-256 | 256 | 384 | 320 | |
| CTR_DRBG(導出関数あり) | AES-128 | 128 | 128 | 192 |
| AES-192 | 192 | 192 | 256 | |
| AES-256 | 256 | 256 | 320 | |
| Hash_DRBGおよびHMAC_DRBG | SHA-256、SHA3-256 | 256 | 256 | 320 |
| SHA-384、SHA3-384 | 256 | 256 | 320 | |
| SHA-512、SHA3-512 | 256 | 256 | 320 |
Each DRBG is based on the use of an approved hash function or block cipher algorithm as a cryptographic primitive. See [SP_800-90A] for an up-to-date list of approved DRBGs.
各DRBGは、承認済みハッシュ関数またはブロック暗号アルゴリズムを暗号プリミティブとして使用します。最新の承認済みDRBG一覧は[SP_800-90A]を参照してください。
•Column 1 lists the DRBG types.
•第1列にはDRBGの種類を示します。
•Column 2 identifies the cryptographic primitives that can be used by the DRBG(s) in column 1.
•第2列には、第1列に示すDRBGが使用できる暗号プリミティブを示します。
• Column 3 indicates the highest security strength (\(s\)) that can be supported by the cryptographic primitive in column 2.41
• 第3列は、第2列の暗号プリミティブがサポート可能な最高セキュリティ強度(\(s\))を示します。41
• Column 4 indicates the amount of fresh entropy (\(r\)) that is obtained by a \(\mathbf{DRBG\_Reseed}\) function for the security strength identified in column 3 (as specified in [SP_800-90A]).
• 第4列は、新しいエントロピーの量(\(r\))を示します。これは、第3列に示すセキュリティ強度に対して\(\mathbf{DRBG\_Reseed}\)関数が取得する量です([SP_800-90A]の規定による)。
• Column 5 indicates the amount of entropy required to be inserted into the cryptographic primitive (\(s + 64\)) to produce \(s\) bits with full entropy for the RBG3(RS) construction.
• 第5列は、暗号プリミティブへ入力する必要があるエントロピー量(\(s + 64\))を示します。これは、RBG3(RS)構成で完全エントロピーを持つ\(s\)ビットを生成するために必要な量です。
For CTR_DRBG with no derivation function, the amount of entropy obtained during a reseed as specified in SP 800-90A (see column 4) exceeds the amount of entropy needed to subsequently generate \(s\) bits of output with full entropy (see column 5), where \(s\) is 128, 192, or 256. Therefore, reseeding as specified in SP 800-90A is appropriate.
導出関数なしのCTR_DRBGでは、SP 800-90Aで規定する再シードで得られるエントロピー量(第4列を参照)は、その後に完全エントロピーを持つ\(s\)ビットの出力を生成するために必要な量(第5列を参照)を上回ります。ここで\(s\)は128、192、または256です。したがって、SP 800-90Aに規定する再シードは適切です。
However, for CTR_DRBG that uses a derivation function, Hash_DRBG, or HMAC_DRBG, a reseed as specified in [SP_800-90A] does not guanantee sufficient entropy for producing \(s\) bits of full-entropy output for each execution of the \(\mathbf{DRBG\_Generate}\) function (see columns 4 and 5). Section 6.5.1.2 provides two methods for obtaining the required \(s + 64\) bits of entropy needed to generate \(s\) bits of full-entropy output:
一方、導出関数付きCTR_DRBG、Hash_DRBG、またはHMAC_DRBGでは、[SP_800-90A]に規定する再シードでは、完全エントロピーを持つ\(s\)ビットの出力を\(\mathbf{DRBG\_Generate}\)関数の実行のたびに生成するのに十分なエントロピーが保証されません(第4列および第5列を参照)。6.5.1.2節では、完全エントロピーを持つ\(s\)ビットの出力の生成に必要な\(s + 64\)ビットのエントロピーを得る方法を2つ示します。
1. Modify the \(\mathbf{DRBG\_Reseed}\) function to obtain \(s + 64\) bits of entropy from the entropy sources rather than the \(s\) bits of entropy specified in SP 800-90A. This approach may be used in implementations that have access to the internals of the DRBG implementation.
1. \(\mathbf{DRBG\_Reseed}\)関数を変更し、エントロピー源から\(s + 64\)ビットのエントロピーを取得します。これは、SP 800-90Aで規定する\(s\)ビットのエントロピーに代わるものです。この方法は、DRBG実装の内部にアクセスできる実装で使用できます。
2. Obtain 64 bits of entropy directly from the entropy sources, and provide it as additional input when invoking the \(\mathbf{DRBG\_Reseed}\) function. As specified in SP 800-90A, the \(\mathbf{DRBG\_Reseed}\) function obtains \(s\) bits of entropy from the entropy source(s) and concatenates the additional input to it before updating the internal state with the concatenated result (see the specification for the reseed algorithm for each DRBG type in SP 800-90A), thus incorporating \(s + 64\) bits of fresh entropy into the DRBG’s internal state.
2. エントロピー源から64ビットのエントロピーを直接取得し、\(\mathbf{DRBG\_Reseed}\)関数の呼び出し時にadditional inputとして渡します。SP 800-90Aの規定では、\(\mathbf{DRBG\_Reseed}\)関数はエントロピー源から\(s\)ビットのエントロピーを取得してadditional inputを連結し、その連結結果で内部状態を更新します(SP 800-90Aの各DRBG種別の再シードアルゴリズム仕様を参照)。このため、合計\(s + 64\)ビットの新しいエントロピーがDRBGの内部状態に取り込まれます。
A.3. Additional Considerations for RBGC Constructions
A.3. RBGC構成に関する追加の考慮事項
The boundaries for an RBGC construction are more difficult to define than other constructions specified in this document, which makes validation more difficult. This difficulty arises from changes in the structure of the RBGC tree (e.g., an RBGC constructions created in software at runtime) and the possibility that the module containing the DRBG of the RBGC construction may be validated separately from the module containing the randomness source that seeds and reseeds it.
RBGC構成の境界は、本書で規定する他の構成より定義が難しく、検証を困難にします。この難しさは、RBGCツリーの構造が変化すること(例:実行時にソフトウェアで作成されるRBGC構成)や、RBGC構成内のDRBGを含むモジュールと、そのDRBGへシードおよび再シードする乱数源を含むモジュールが別々に検証される可能性に起因します。
This section contains examples of acceptable RBGC constructions as well as designs that properly transmit seed material. To simplify the discussion, the figures only show the DRBG in each RBGC construction. For example, \(\mathrm{DRBG}_1\) is the DRBG for the \(\mathrm{RBGC}_1\), which is used in the examples as the root of the tree (i.e., the root DRBG), and \(\mathrm{DRBG}_2\) is the DRBG for \(\mathrm{RBGC}_2\).
この節では、許容されるRBGC構成やシード材料を適切に伝送する設計の例を示します。説明を簡潔にするため、図には各RBGC構成のDRBGのみを示します。例えば、\(\mathrm{DRBG}_1\)は\(\mathrm{RBGC}_1\)のDRBGであり、例ではツリーのroot(すなわちroot DRBG)として使用します。\(\mathrm{DRBG}_2\)は\(\mathrm{RBGC}_2\)のDRBGです。
A.3.1. RBGC Tree Composition
A.3.1. RBGCツリーの構成
When parts of an RBGC tree are validated separately, the tree can later be composed in a safe manner to ensure that the requirements in Sec. 7 are met. An RBGC tree consists of an initial randomness source and a root RBGC construction (at a minimum) and may include descendent RBGC constructions (e.g., children and grandchildren). Additional RBGC constructions (called subtrees) may be added to form a more complex tree. Each subtree consists of at least one RBGC construction that may have its own descendants but is unable to access the initial randomness source.
RBGCツリーの一部を個別に検証した後、7章の要件が満たされるよう、安全な方法でツリーを構成できます。RBGCツリーは、少なくとも初期乱数源とroot RBGC構成から成り、子や孫などの下位RBGC構成を含むこともあります。より複雑なツリーを形成するために、追加のRBGC構成(サブツリー)を組み込んでもよいです。各サブツリーは少なくとも1つのRBGC構成から成り、それ自体の下位構成を持ってもよいですが、初期乱数源にはアクセスできません。
Consider two modules — A and B — that are evaluated separately (see Fig. 37).
個別に評価された2つのモジュールAとBを考えます(図37を参照してください)。
図37. Module AのRoot RBGCからシードを受け取るModule B内のサブツリー。3つの区画があり、箱はすべて青い。左の区画では、Module Aと記された灰色の破線の枠の中では、Initial Randomness Source(初期乱数源)から下へDRBG1 (Root RBGC)に矢印が向かい、DRBG1からDRBG2とDRBG4へ、DRBG2からDRBG3へ矢印が向かう。Module Bと記された灰色の破線の枠の中では、DRBG5からDRBG6とDRBG7へ矢印が向かう。右の区画はComposed tree on the same computing platform(同一の計算プラットフォーム上で合成したツリー)という見出しで、Initial Randomness SourceからDRBG1 (Root RBGC)へ下向きの矢印があり、DRBG1からDRBG2、DRBG4、DRBG5へ、DRBG2からDRBG3へ、DRBG5からDRBG6とDRBG7へ矢印が向かう。
Fig. 37. Subtree in Module B seeded by root RBGC of Module A
図37. Module AのRoot RBGCからシードを受け取るModule B内のサブツリー
Module B does not contain a root DRBG, but Module A does. Module A contains an initial randomness source and a DRBG that can access the initial randomness source to serve as the root of a tree (shown as \(\mathrm{DRBG}_1\)). Module B does not include an initial randomness source, so no DRBG in that module can serve as a root. The following examples show how DRBGs in Module B can be evaluated as RBGC constructions.
Module Bにはroot DRBGがありませんが、Module Aにはあります。Module Aは、初期乱数源と、それにアクセスしてツリーのrootとして機能できるDRBG(\(\mathrm{DRBG}_1\)として示す)を含みます。Module Bには初期乱数源がないため、そのモジュール内のDRBGはrootとして機能できません。以下の例では、Module B内のDRBGをRBGC構成として評価する方法を示します。
The simplest case for tree composition occurs when one RBGC construction satisfies the requirements for the root RBGC, and every other RBGC construction involved meets the requirements of a non-root RBGC construction. Figure 37 and Fig. 38 show compositions in which Module A has been validated as an RBGC tree containing an initial randomness source, a root (shown as \(\mathrm{DRBG}_1\)), two children of the root (\(\mathrm{DRBG}_2\) and \(\mathrm{DRBG}_4\)), and \(\mathrm{DRBG}_3\) (a child of \(\mathrm{DRBG}_2\)). Module B contains an RBGC-compliant subtree consisting of \(\mathrm{DRBG}_5\) and two child DRBGs (\(\mathrm{DRBG}_6\) and \(\mathrm{DRBG}_7\)). In these examples, all DRBGs meet the requirements for RBGC constructions.
ツリー構成の最も単純なケースは、1つのRBGC構成がroot RBGCの要件を満たし、関係する他のすべてのRBGC構成がnon-root RBGC構成の要件を満たす場合です。図37および図38は、Module Aが、初期乱数源、root(\(\mathrm{DRBG}_1\)として示す)、rootの2つの子(\(\mathrm{DRBG}_2\)と\(\mathrm{DRBG}_4\))、および\(\mathrm{DRBG}_3\)(\(\mathrm{DRBG}_2\)の子)を含むRBGCツリーとして検証された構成を示します。Module Bには、\(\mathrm{DRBG}_5\)と2つの子DRBG(\(\mathrm{DRBG}_6\)と\(\mathrm{DRBG}_7\))から成るRBGC準拠のサブツリーが含まれます。これらの例では、すべてのDRBGがRBGC構成の要件を満たします。
図38. Module Aのnon-root DRBG(すなわちDRBG4)からシードを受け取るModule B内のサブツリー。3つの区画があり、箱はすべて青い。左の区画では、Module Aと記された灰色の破線の枠の中では、Initial Randomness Source(初期乱数源)から下へDRBG1 (Root RBGC)に矢印が向かい、DRBG1からDRBG2とDRBG4へ、DRBG2からDRBG3へ矢印が向かう。Module Bと記された灰色の破線の枠の中では、DRBG5からDRBG6とDRBG7へ矢印が向かう。右の区画はComposed tree on the same computing platform(同一の計算プラットフォーム上で合成したツリー)という見出しで、Initial Randomness SourceからDRBG1 (Root RBGC)へ下向きの矢印があり、DRBG1からDRBG2とDRBG4へ、DRBG2からDRBG3へ、DRBG4から下のDRBG5へ、DRBG5からDRBG6とDRBG7へ矢印が向かう。
Fig. 38. Subtree in Module B seeded by a non-root DRBG of Module A (i.e., \(\mathrm{DRBG}_4\))
図38. Module Aのnon-root DRBG(すなわち\(\mathrm{DRBG}_4\))からシードを受け取るModule B内のサブツリー
In Fig. 37, the DRBGs in Module B are added to the tree by using the root (\(\mathrm{DRBG}_1\)) as the randomness source for \(\mathrm{DRBG}_5\). In Fig. 38, the DRBGs in Module B are added to the tree by using \(\mathrm{DRBG}_4\) as the randomness source for \(\mathrm{DRBG}_5\).
図37では、root(\(\mathrm{DRBG}_1\))を\(\mathrm{DRBG}_5\)の乱数源として用いることで、Module BのDRBGをツリーに追加します。図38では、\(\mathrm{DRBG}_4\)を\(\mathrm{DRBG}_5\)の乱数源として用いることで、Module BのDRBGをツリーに追加します。
It is possible to compose trees in which some of the DRBGs in Module A do not meet the requirements of an RBGC-compliant tree. Fig. 39 depicts two DRBGs — \(\mathrm{DRBG}_2\) and \(\mathrm{DRBG}_3\) — that do not meet RBGC requirements because a loop exists when \(\mathrm{DRBG}_3\) is used to reseed \(\mathrm{DRBG}_2\).
Module A内のDRBGの一部がRBGC準拠ツリーの要件を満たさないツリーも合成できます。図39は、2つのDRBG(\(\mathrm{DRBG}_2\)と\(\mathrm{DRBG}_3\))を示します。\(\mathrm{DRBG}_3\)を\(\mathrm{DRBG}_2\)の再シードに用いるとループが生じるため、これらはRBGC要件を満たしません。
図39. Module AのDRBG4からシードを受け取るModule B内のサブツリー。3つの区画がある。左のModule Aと記された灰色の破線の枠の中では、Initial Randomness Source(初期乱数源)から下へDRBG1 (Root RBGC)に矢印が向かい、DRBG1からDRBG2へ破線矢印、DRBG1からDRBG4へ実線矢印、DRBG2からDRBG3へ破線矢印が向かう。DRBG2とDRBG3は赤く、他は青い。DRBG3から左側を上へreseed(再シード)と記された破線が延び、DRBG2で矢印となる。中央のModule Bと記された灰色の破線の枠の中では、DRBG5からDRBG6とDRBG7へ矢印が向かう。右の区画はComposed tree on the same computing platform(同一の計算プラットフォーム上で合成したツリー)という見出しで、Initial Randomness SourceからDRBG1 (Root RBGC)へ下向きの矢印があり、DRBG1から赤いDRBG2へ破線矢印、DRBG1からDRBG4とDRBG5へ実線矢印が向かう。DRBG2から赤いDRBG3へ破線矢印が向かい、DRBG3からDRBG2へ同じくreseedの破線が戻る。DRBG5からDRBG6とDRBG7へ矢印が向かう。
Fig. 39. Subtree in Module B seeded by \(\mathrm{DRBG}_4\) in Module A
図39. Module Aの\(\mathrm{DRBG}_4\)からシードを受け取るModule B内のサブツリー
In Fig. 39, the DRBGs in red boxes that are connected to the parent through dashed lines do not meet the DRBG requirements for an RBGC construction. If Module B is added to the tree such that \(\mathrm{DRBG}_1\) is the randomness source for \(\mathrm{DRBG}_5\), the elements of Module B’s subtree only depend on \(\mathrm{DRBG}_5\) to meet the RBGC requirements (i.e., \(\mathrm{DRBG}_1\)) and may therefore be validated as RBGC-compliant constructions when added to the tree in this manner. However, if the DRBGs in Module B are added to the tree so that \(\mathrm{DRBG}_2\) is the randomness source for \(\mathrm{DRBG}_5\) (see Fig. 40), then the resulting tree is not a compliant RBGC tree.
図39で赤色の枠に入り、破線で親へ接続されたDRBGは、RBGC構成のDRBG要件を満たしません。Module Bを、\(\mathrm{DRBG}_1\)が\(\mathrm{DRBG}_5\)の乱数源となる形でツリーに追加した場合、Module Bのサブツリーの要素は、RBGC要件を満たすために\(\mathrm{DRBG}_5\)(すなわち\(\mathrm{DRBG}_1\))のみに依存します。そのため、この方法でツリーに追加すればRBGC準拠の構成として検証できます。ただし、\(\mathrm{DRBG}_2\)が\(\mathrm{DRBG}_5\)の乱数源となる形でModule BのDRBGをツリーに追加すると(図40参照)、得られるツリーはRBGC準拠のツリーではありません。
図40. Module AのDRBG₂からシードを受け取るModule B内のサブツリー。3つの区画がある。左のModule Aと記された灰色の破線の枠の中では、Initial Randomness Source(初期乱数源)から下へDRBG1 (Root RBGC)に矢印が向かい、DRBG1からDRBG2へ破線矢印、DRBG1からDRBG4へ実線矢印、DRBG2からDRBG3へ破線矢印が向かう。DRBG2とDRBG3は赤く、他は青い。DRBG3から左側を上へreseed(再シード)と記された破線が延び、DRBG2で矢印となる。中央のModule Bと記された灰色の破線の枠の中では、青いDRBG5からDRBG6とDRBG7へ矢印が向かう。右の区画はComposed tree on the same computing platform(同一の計算プラットフォーム上で合成したツリー)という見出しで、青いInitial Randomness Sourceから青いDRBG1 (Root RBGC)へ下向きの矢印があり、DRBG1から赤いDRBG2へ破線矢印、青いDRBG4へ実線矢印が向かう。DRBG2から赤いDRBG3と赤いDRBG5へ破線矢印が向かい、DRBG3からDRBG2へreseedの破線が戻る。DRBG5から赤いDRBG6と赤いDRBG7へ破線矢印が向かう。
Fig. 40. Subtree in Module B seeded by DRBG2 of Module A
図40. Module AのDRBG₂からシードを受け取るModule B内のサブツリー
A.3.2. Changes in the Tree Structure
A.3.2. ツリー構造の変更
New RBGC subtrees may be added to the tree during operation, and others may be removed. An RBGC construction cannot be moved from one physical platform to another by any means, including backups, snapshots, and cloning.
運用中に新しいRBGCサブツリーをツリーへ追加したり、既存のものを削除したりしてもよいです。バックアップ、スナップショット、複製を含むいかなる方法でも、RBGC構成を別の物理プラットフォームへ移動することはできません。
An RBGC construction could be copied via forking within a single computer platform. Such cases are permissible as long as the original and/or new processes are reseeded prior to fulfilling any requests. This ensures that multiple instances of the same RBGC construction are not operating simultaneously with the same internal states. Without this reseeding, the outputs of one RBGC construction could be used to learn subsequent outputs from its counterpart, voiding any claims of prediction resistance.
単一のコンピューティングプラットフォーム内でフォークして、RBGC構成を複製することは可能です。元のプロセスまたは新しいプロセスのいずれか、あるいは両方が要求を処理する前に再シードされる限り、このような複製は許容されます。これにより、同じ内部状態を持つ複数の同一RBGC構成が同時に稼働することを防ぎます。再シードを行わない場合、一方のRBGC構成の出力から、対応する他方の構成の後続出力を推測できる可能性があり、予測耐性の主張が無効になります。
A.3.3. Using Virtual Machines
A.3.3. 仮想マシンの使用
The phrase “same computing platform” (used in Sec. 7) is intended to restrict realizations of RBGC constructions to similar concepts of a randomness source and DRBGs that exist within the same RBG boundary. In particular, seed material must pass from a randomness source to a DRBG in a way that provides the same guarantees as using a physically secure channel.
第7節で使用する「同じコンピューティングプラットフォーム」という表現は、RBGC構成の実装を、同じRBG境界内にある乱数源とDRBGの類似した構成に限定することを意図します。特に、シード材料は、物理的に安全なチャネルを用いる場合と同等の保証を提供する方法で、乱数源からDRBGへ渡さなければなりません。
RBGC constructions used within virtual machines (VMs) pose a unique challenge because they can be on the same physical platform yet communicate through a local area network (LAN). Whether network traffic between VMs is routed solely by the hypervisor’s virtual LAN (VLAN) or is sent to the platform’s network for routing depends on the configuration of the VLAN. For example, two VMs that are in different port groups or use different virtual switches may transmit the data outside of the physical system they reside on, as shown in Fig. 41 and Fig. 42.
仮想マシン(VM)内で使用するRBGC構成には固有の課題があります。物理プラットフォームが同じでも、VM同士がローカルエリアネットワーク(LAN)を介して通信する場合があるためです。VM間のネットワーク通信がハイパーバイザーの仮想LAN(VLAN)内だけでルーティングされるか、プラットフォームのネットワークへ送られてルーティングされるかは、VLANの構成によって異なります。例えば、異なるポートグループに属するVMや異なる仮想スイッチを使用するVMは、図41および図42に示すように、存在する物理システムの外部へデータを送信することがあります。
図41. 異なる仮想スイッチを使用するVM1とVM2。Host system boundary(ホストシステム境界)と記された破線の枠の中に2つの行がある。上の行では、VM1からvSwitch1へ、vSwitch1からNIC1へ矢印が向かう。下の行では、NIC2からvSwitch2へ、vSwitch2からVM2へ矢印が向かう。境界の外の右側にPhysical switch(物理スイッチ、サーバーラックのアイコン)があり、NIC1からPhysical switchへ矢印が、Physical switchからNIC2へ矢印が向かう。
Fig. 41. \(\mathrm{VM}_1\) and \(\mathrm{VM}_2\) with different virtual switches
図41. 異なる仮想スイッチを使用する\(\mathrm{VM}_1\)と\(\mathrm{VM}_2\)
図42. 同じ仮想スイッチを使用するが、異なるポートグループに属するVM1とVM2。Host system boundary(ホストシステム境界)と記された破線の枠の中の左にVM1とVM2があり、中央に縦長のvSwitchがあって、その左側に上からGroup1とGroup2の2つのポートの箱が付いている。右にNIC1がある。VM1からGroup1へ、vSwitchからNIC1へ、NIC1からvSwitchへ、Group2からVM2へ矢印が向かう。境界の外の右側にPhysical switch(物理スイッチ、サーバーラックのアイコン)があり、NIC1からPhysical switchへ矢印が1本、Physical switchからNIC1へ矢印が1本向かう。
Fig. 42. \(\mathrm{VM}_1\) and \(\mathrm{VM}_2\) with the same virtual switch but different port groups
図42. 同じ仮想スイッチを使用するが、異なるポートグループに属する\(\mathrm{VM}_1\)と\(\mathrm{VM}_2\)
A DRBG within a virtual machine could potentially obtain seed material from sources outside of the virtual machine if the seed material originates on the same computing platform. In particular, seed material can be obtained from randomness sources that reside in levels below the virtual machine, such as a hypervisor, host operating system, or the platform hardware. Fig. 43 shows an example in which all seed material is obtained from lower levels on the same system.
仮想マシン内のDRBGは、シード材料が同じコンピューティングプラットフォーム上で生成されるなら、仮想マシン外部の情報源からシード材料を取得できる場合があります。特に、ハイパーバイザー、ホストOS、プラットフォームのハードウェアなど、仮想マシンより下位のレベルにある乱数源から取得できます。図43は、すべてのシード材料を同一システム内の下位レベルから取得する例を示します。
図43. 仮想マシン内のRBGC構成への許容可能な外部シード供給。下から順にPlatform Hardware(プラットフォームのハードウェア)、Operating System(オペレーティングシステム)、Hypervisor(ハイパーバイザー)の層が積み重なっている。Platform HardwareからOperating Systemへseeds(シード)と記された上向きの矢印が、Operating SystemからHypervisorへも同じくseedsの矢印が向かう。Hypervisorから、それぞれseedsと記された3本の矢印が最上部のVM1、VM2、VM3へ向かう。
Fig. 43. Acceptable external seeding for virtual machine RBGC constructions
図43. 仮想マシン内のRBGC構成への許容可能な外部シード供給
To comply with an RBGC tree as specified in SP 800-90C, virtual machines cannot provide seed material to each other via a virtual network (see Fig. 44).
SP 800-90Cで規定するRBGCツリーに適合させるには、仮想マシン同士が仮想ネットワーク経由でシード材料を相互に提供してはなりません(図44を参照してください)。
図44. VM2内のRBGC構成には許容されるが、VM1およびVM3内の構成には許容されない外部シード供給。下から順にPlatform Hardware(プラットフォームのハードウェア)、Operating System(オペレーティングシステム)、Hypervisor(ハイパーバイザー)の層が積み重なり、最上部にVM1、VM2、VM3が横に並ぶ。seeds(シード)と記された上向きの矢印が、Platform HardwareからOperating Systemへ、Operating SystemからHypervisorへ、HypervisorからVM2へ向かう。VM2から左のVM1へ、右のVM3へもseedsと記された矢印があるが、この2本にはそれぞれ赤い×印が付いている。
Fig. 44. Acceptable external seeding for an RBGC construction in \(\mathrm{VM}_2\) but not in \(\mathrm{VM}_1\) and \(\mathrm{VM}_3\)
図44. \(\mathrm{VM}_2\)内のRBGC構成には許容されるが、\(\mathrm{VM}_1\)および\(\mathrm{VM}_3\)内の構成には許容されない外部シード供給
This is a very important point in terms of local security guarantees. Virtual network configurations may change without being visible to a VM and alter the path of virtual network traffic. Therefore, it cannot be guaranteed that the seed material will never be transmitted over the physical network. Two configuration examples in which data transmitted between virtual machines exits the host machine are shown in Fig. 41 and Fig. 42.
これはローカルのセキュリティ保証に関わる非常に重要な点です。仮想ネットワークの構成はVMから見えないまま変更され、仮想ネットワーク通信の経路を変えることがあります。そのため、シード材料が物理ネットワークを通過しないことは保証できません。仮想マシン間で送信されたデータがホストマシンの外部へ出る構成例を図41および図42に示します。
A.3.4. Reseeding From an Alternative Randomness Source
A.3.4. 代替乱数源からの再シード
There may be situations in which it is acceptable for an RBGC construction to obtain reseeding material from a randomness source other than its parent. Fig. 45 presents an example of a computing platform with an OS-level RBGC construction and tree containing an initial randomness source, the root RBGC construction (containing \(\mathrm{DRBG}_1\)), and three child RBGC constructions (\(\mathrm{DRBG}_2\), \(\mathrm{DRBG}_4\), and \(\mathrm{DRBG}_5\)), each associated with a different processor (shown as \(\mathrm{CPU}_1\), \(\mathrm{CPU}_2\), and \(\mathrm{CPU}_3\)).
親以外の乱数源から再シード材料を取得するRBGC構成が許容される場合もあります。図45は、OSレベルのRBGC構成とツリーを備えたコンピューティングプラットフォームの例を示します。このツリーには、初期乱数源、root RBGC構成(\(\mathrm{DRBG}_1\)を含む)、および3つの子RBGC構成(\(\mathrm{DRBG}_2\)、\(\mathrm{DRBG}_4\)、\(\mathrm{DRBG}_5\))が含まれ、子RBGC構成はそれぞれ異なるプロセッサ(\(\mathrm{CPU}_1\)、\(\mathrm{CPU}_2\)、\(\mathrm{CPU}_3\)として図示)に対応します。
図45. 親の兄弟から再シード用データを取得するアプリケーションサブツリー。Operating system RBG(オペレーティングシステムのRBG)と記された破線の枠の中で、Initial Randomness Source(初期乱数源)から下へDRBG1 (Root RBGC)に矢印が向かい、DRBG1からDRBG2、DRBG4、DRBG5へ矢印が向かう。この3つは、それぞれCPU1、CPU2、CPU3と記された一点鎖線の枠の中にある。破線の枠の下に、Application1とApplication2という2つの灰色の枠がある。DRBG2から下のApplication1内のDRBG3へ、DRBG5から下のApplication2内のDRBG6へ矢印が向かう。DRBG4からDRBG6へreseed(再シード)と記された破線矢印が向かう。Application2の中では、DRBG6からDRBG7とDRBG8へ矢印が向かう。
Fig. 45. Application subtree obtaining reseed material from a sibling of its parent
図45. 親の兄弟から再シード材料を取得するアプリケーションサブツリー
A subtree consisting of \(\mathrm{DRBG}_6\), \(\mathrm{DRBG}_7\), and \(\mathrm{DRBG}_8\) has been established using \(\mathrm{DRBG}_5\) as the parent of \(\mathrm{DRBG}_6\) and \(\mathrm{DRBG}_6\) as the parent of \(\mathrm{DRBG}_7\) and \(\mathrm{DRBG}_8\).
\(\mathrm{DRBG}_6\)、\(\mathrm{DRBG}_7\)、\(\mathrm{DRBG}_8\)からなるサブツリーが、\(\mathrm{DRBG}_5\)を\(\mathrm{DRBG}_6\)の親とし、\(\mathrm{DRBG}_6\)を\(\mathrm{DRBG}_7\)および\(\mathrm{DRBG}_8\)の親として確立されています。
Ideally, \(\mathrm{DRBG}_6\) would obtain bits for reseeding from its parent (i.e., \(\mathrm{DRBG}_5\)), but there may be reasons why this is either undesirable (e.g., because of load balancing) or not allowed by the RBGC requirements (e.g., seed material would exit the computing platform). Figure 45 provides an example in which a computing platform is a multi-processor system that performs load balancing to distribute tasks across processors. Application 2 (containing \(\mathrm{DRBG}_6\)) was originally located on \(\mathrm{CPU}_3\) so that \(\mathrm{DRBG}_6\) was originally seeded by \(\mathrm{DRBG}_5\) (the parent). If Application 2 is later moved to \(\mathrm{CPU}_2\) and \(\mathrm{DRBG}_6\) needs to be reseeded, it may be costly to reseed using \(\mathrm{DRBG}_5\). For efficiency within the multi-processor system, \(\mathrm{DRBG}_6\) can instead be reseeded using \(\mathrm{DRBG}_4\) if \(\mathrm{DRBG}_4\) has been designed and validated to meet the RBGC requirements.42
理想的には、\(\mathrm{DRBG}_6\)は再シード用のビットを親(すなわち\(\mathrm{DRBG}_5\))から取得しますが、それが望ましくない理由(例えば負荷分散のため)や、RBGC要件上許可されない理由(例えばシード材料がコンピューティングプラットフォームの外へ出てしまう)がありうます。図45は、コンピューティングプラットフォームが、プロセッサ間でタスクを分散する負荷分散を行うマルチプロセッサシステムである例を示します。Application 2(\(\mathrm{DRBG}_6\)を含む)は当初\(\mathrm{CPU}_3\)上に配置されていたため、\(\mathrm{DRBG}_6\)は当初\(\mathrm{DRBG}_5\)(親)からシードを受けました。Application 2が後に\(\mathrm{CPU}_2\)へ移され、\(\mathrm{DRBG}_6\)の再シードが必要になった場合、\(\mathrm{DRBG}_5\)を用いて再シードするとコストが高くなることがあります。マルチプロセッサシステム内の効率のために、\(\mathrm{DRBG}_6\)は代わりに\(\mathrm{DRBG}_4\)を用いて再シードできます。ただし、\(\mathrm{DRBG}_4\)がRBGC要件を満たすよう設計され、検証されている場合に限ります。42
Other alternatives for reseeding \(\mathrm{DRBG}_6\) are \(\mathrm{DRBG}_1\) (e.g., an ancestor, direct predecessor, or grandparent of \(\mathrm{DRBG}_6\)) or the initial randomness source.
\(\mathrm{DRBG}_6\)のその他の再シード元には、\(\mathrm{DRBG}_1\)(例:祖先、直前の先行ノード、または\(\mathrm{DRBG}_6\)の祖父母ノード)や初期乱数源があります。
42 \(\mathrm{DRBG}_4\) and \(\mathrm{DRBG}_5\) are siblings since they have the same parent (\(\mathrm{DRBG}_1\)).
42 \(\mathrm{DRBG}_4\)と\(\mathrm{DRBG}_5\)は、同じ親(\(\mathrm{DRBG}_1\))を持つ兄弟です。
Appendix B. RBG Examples (Informative)
付録B. RBGの例(参考情報)
Appendix B.1 provides an example of the direct access to a DRBG used by an RBG3 construction. Appendices B.2 – B.7 provide an example of each RBG construction.
付録B.1では、RBG3構成で使用するDRBGへ直接アクセスする例を示します。付録B.2~B.7では、各RBG構成の例を示します。
The figures do not show that when an error indicates an RBG failure (e.g., a noise source in the entropy source has failed), the RBG operation is terminated (see Sec. 2.6 and 8.1.2.1). For the examples below, all entropy sources are considered to be physical entropy sources. In order to simplify the examples, the \(\mathit{additional\_input}\) parameter in the generate and reseed requests and generate functions is not used.
図には、エラーがRBGの失敗を示す場合(例:エントロピー源内のノイズ源が故障した場合)にRBGの動作を終了することを示していません(2.6節および8.1.2.1節を参照)。以下の例では、すべてのエントロピー源を物理エントロピー源とします。例を簡潔にするため、generate要求、再シード要求、およびgenerate関数における\(\mathit{additional\_input}\)パラメーターは使用しません。
B.1. Direct DRBG Access in an RBG3 Construction
B.1. RBG3構成におけるDRBGへの直接アクセス
An implementation of an RBG3 construction may be designed so that the DRBG implementation used within the construction can be directly accessed by a consuming application using the same or separate instantiations from the instantiation used by the RBG3 construction (see the examples in Fig. 46).
RBG3構成の実装は、構成内で使用するDRBG実装に、RBG3構成が使用するものと同じインスタンス化、または別個のインスタンス化を用いて、利用側アプリケーションが直接アクセスできるよう設計してもよいです(図46の例を参照してください)。
図46. DRBGのインスタンス化。2つの例が左右に並ぶ。Example 1(例1、左)では、枠の上にあるRBG3 Entropy Source(s)(RBG3のエントロピー源)から下へ、枠内のInternal State 1(内部状態1)に矢印が入る。Internal State 1には、Internal state used by the RBG3 construction(RBG3構成が使用する内部状態)というラベルと、Internal state used for direct DRBG access(DRBGへの直接アクセスに使用する内部状態)というラベルから、それぞれ上向きの破線矢印が入る。Example 2(例2、右)では、枠の上にあるRBG3 Entropy Source(s)から2本の矢印が、枠内のInternal State 1とInternal State 2(内部状態2、太い枠線)に下向きに入る。Internal state used by the RBG3 constructionというラベルからInternal State 1へ、Internal state used for direct DRBG accessというラベルからInternal State 2へ、それぞれ上向きの破線矢印が入る。
Fig. 46. DRBG Instantiations
図46. DRBGのインスタンス化
In the leftmost example in Fig. 46, the same internal state is used by the RBG3 construction and a directly accessible DRBG. The DRBG implementation is instantiated only once, and only a single state handle is obtained during instantiation (e.g., RBG3_DRBG_state handle). Generation and reseeding for RBG3 operations use RBG3 function calls (see Sec. 6.4 and 6.5), while generation and reseeding for direct DRBG access use RBG2 function calls (see Sec. 5.2) with the RBG3_DRBG_state_handle.
図46の左端の例では、RBG3構成と直接アクセス可能なDRBGが同じ内部状態を使用します。DRBG実装は一度だけインスタンス化され、インスタンス化時に取得するstate handleも1つだけです(例:RBG3_DRBG_state_handle)。RBG3の操作に伴う生成と再シードにはRBG3関数呼び出し(6.4節および6.5節を参照)を用い、DRBGへの直接アクセスに伴う生成と再シードには、そのstate handleを使ったRBG2関数呼び出し(5.2節を参照)を用います。
In the rightmost example in Fig. 46, the RBG3 construction and access to the DRBG implementation use different internal states. The DRBG implementation is instantiated twice — once for RBG3 operations and a second time for direct access to the DRBG. A different state handle needs to be obtained for each instantiation (e.g., \(\mathit{RBG3\_state\_handle}\) and \(\mathit{RBG2\_DRBG\_state\_handle}\)). Generation and reseeding for RBG3 operations use RBG3 function calls and \(\mathit{RBG3\_DRBG\_state\_handle}\) (see Sec. 6.4 and 6.5), while generation and reseeding for direct DRBG access use RBG2 function calls and \(\mathit{RBG2\_DRBG\_state\_handle}\) (see Sec. 5.2).
図46の右端の例では、RBG3構成とDRBG実装へのアクセスで異なる内部状態を使用します。DRBG実装を2回インスタンス化し、1回目はRBG3操作用、2回目はDRBGへの直接アクセス用とします。各インスタンス化で異なるstate handleを取得する必要があります(例:\(\mathit{RBG3\_state\_handle}\)および\(\mathit{RBG2\_DRBG\_state\_handle}\))。RBG3操作の生成と再シードには、RBG3関数呼び出しと\(\mathit{RBG3\_DRBG\_state\_handle}\)を用い(6.4節および6.5節を参照)、DRBGへの直接アクセスの生成と再シードには、RBG2関数呼び出しと\(\mathit{RBG2\_DRBG\_state\_handle}\)を用います(5.2節を参照)。
Multiple directly accessible DRBGs may also be incorporated into an implementation by creating multiple instantiations. However, no more than one directly accessible DRBG should share the same internal state with an RBG3 construction (i.e., if \(n\) directly accessible DRBGs are required, either \(n\) or \(n - 1\) separate instantiations are required).
複数のインスタンス化を作成すれば、直接アクセス可能なDRBGを複数実装に組み込むこともできます。ただし、1つのRBG3構成と内部状態を共有する直接アクセス可能なDRBGは1つ以下とすべきです(すなわち、直接アクセス可能なDRBGが\(n\)個必要な場合、別個のインスタンス化が\(n\)個または\(n - 1\)個必要である)。
The directly accessed DRBG instantiations are in the same security boundary as the RBG3 construction. When accessed directly using the same internal state as the RBG3 construction (rather than operating as part of the RBG3 construction), the DRBG operates as an RBG2(P) construction. A DRBG instantiation using a different internal state than the DRBG used by the RBG3 construction may operate as either an RBG2(P) or RBG2(NP) construction.
直接アクセスするDRBGインスタンス化は、RBG3構成と同じセキュリティ境界内にあります。RBG3構成の一部としてではなく、RBG3構成と同じ内部状態を用いてDRBGへ直接アクセスする場合、そのDRBGはRBG2(P)構成として動作します。RBG3構成内で使用するDRBGとは異なる内部状態を使うDRBGインスタンス化は、RBG2(P)またはRBG2(NP)構成として動作してもよいです。
B.2. Example of an RBG1 Construction
B.2. RBG1構成の例
An RBG1 construction only has access to a randomness source during instantiation (i.e., when it is seeded; see Sec. 4). In Fig. 47, the DRBG used by the RBG1 construction and the randomness source reside in two different cryptographic modules with a physically secure channel connecting them during the instantiation process.
RBG1構成は、インスタンス化時(すなわちシード設定時。4章を参照)にのみ乱数源へアクセスできます。図47の例では、RBG1構成で使用するDRBGと乱数源が別々の暗号モジュール内にあり、インスタンス化中は両者が物理的に安全なチャネルで接続されています。
図47. RBG1構成の例。上下に並ぶ2つの暗号モジュールの外枠が、Secure channel(安全なチャネル)と記された短い網掛けの帯で結ばれている。各外枠はチャネルが出る箇所でぎざぎざに途切れている。上のモジュールには、RBG2(P) security boundary(RBG2(P)のセキュリティ境界)と記された点線の内枠があり、その中にRBG2(P)と記された八角形がある。下のモジュールには、DRBG security boundary(DRBGのセキュリティ境界)と記された点線の内枠があり、その中にHMAC_DRBG with SHA-256(SHA-256を用いるHMAC_DRBG)と記された箱がある。左のCryptographic Modules(暗号モジュール)というラベルから両方のモジュールへ矢印が向かう。右には両モジュールにまたがる青い波括弧があり、RBG1 Security boundary(RBG1のセキュリティ境界)と記されている。下のモジュールの下で、小さな矢印が下向きにDRBG security boundary1という文字を指す。
Fig. 47. Example of an RBG1 construction
図47. RBG1構成の例
Following DRBG instantiation, the secure channel is no longer available. For this example, the randomness source is an RBG2(P) construction (see Sec. 5) with a state handle of \(\mathit{RBG2\_DRBG\_state\_handle}\). The targeted security strength for the RBG1 construction is 256 bits, so a DRBG from [SP_800-90A] that is able to support this security strength must be used. \(\mathrm{HMAC\_DRBG}\) using SHA-256 is used in the example. A \(\mathit{personalization\_string}\) is provided during instantiation, as recommended in Sec. 2.4.1.
DRBGのインスタンス化後、安全なチャネルは利用できなくなります。この例では、乱数源にRBG2(P)構成(5章を参照)を使用し、そのstate handleを\(\mathit{RBG2\_DRBG\_state\_handle}\)とします。RBG1構成の目標セキュリティ強度は256ビットなので、このセキュリティ強度をサポートできる[SP_800-90A]のDRBGを使用する必要があります。例ではSHA-256を用いる\(\mathrm{HMAC\_DRBG}\)を使用します。2.4.1節の推奨に従い、インスタンス化時に\(\mathit{personalization\_string}\)を与えます。
As discussed in Sec. 4, the randomness source (i.e., the RBG2(P) construction in this example) is not available during normal operation, so reseeding cannot be provided.
4章で説明したとおり、この例の乱数源(RBG2(P)構成)は通常運用中には利用できないため、再シードを行えません。
This example provides an RBG that is instantiated at a security strength of 256 bits.
この例では、セキュリティ強度 256ビットでインスタンス化したRBGを示します。
B.2.1. Instantiation of the RBG1 Construction
B.2.1. RBG1構成のインスタンス化
A physically secure channel is required to transport the entropy bits from the randomness source (i.e., the RBG2(P) construction) to the HMAC_DRBG during instantiation.43 After the instantiation of the RBG1 construction, the randomness source and the secure channel are no longer available.
インスタンス化時には、エントロピービットを乱数源(RBG2(P)構成)からHMAC_DRBGへ転送するため、物理的に安全なチャネルが必要です。43 RBG1構成のインスタンス化後、乱数源と安全なチャネルは利用できなくなります。
1. The \(\mathrm{HMAC\_DRBG}\) is instantiated by an application when sending an instantiate request to the DRBG:
1. アプリケーションがDRBGにインスタンス化要求を送ることで、\(\mathrm{HMAC\_DRBG}\)をインスタンス化する:
where:
ここで、
• A security strength of 256 bits is requested for the \(\mathrm{HMAC\_DRBG}\) used in the RBG1 construction.
• RBG1構成で使用する\(\mathrm{HMAC\_DRBG}\)に対し、セキュリティ強度 256ビットを要求します。
•The personalization string to be used for this example is “Device 7056”.
•この例で使用するpersonalization stringは“Device 7056”です。
2. The \(\mathbf{DRBG\_Instantiate\_request}\) results in the execution of the \(\mathbf{DRBG\_Instantiate}\) function within the DRBG of the RBG1 construction (see Sec. 2.8.1.1):
2. \(\mathbf{DRBG\_Instantiate\_request}\)により、RBG1構成のDRBG内で\(\mathbf{DRBG\_Instantiate}\)関数が実行される(2.8.1.1節を参照):
3.The instantiate function sends a reseed request to the RBG2(P) construction (i.e., the randomness source; see requirement 17 in Sec. 4.4.1).
3.インスタンス化関数は、RBG2(P)構成(すなわち乱数源)へ再シード要求を送ります(4.4.1節の要件17を参照してください)。
where \(\mathit{RBG2\_DRBG\_state\_handle}\) is the state handle for the internal state in the RBG2(P) construction.
ここで、\(\mathit{RBG2\_DRBG\_state\_handle}\)は、RBG2(P)構成内の内部状態を示すstate handleです。
4.Upon receiving a reseed request, the RBG2(P) implementation executes a reseed function:
4.再シード要求を受け取ると、RBG2(P)実装は再シード関数を実行します。
If an error is indicated by the returned \(\mathit{status}\), the error is returned to the RBG1 construction by the RBG2(P) construction in response to the reseed request and forwarded to the application by the RBG1 construction in response to the instantiate request. The DRBG within the RBG1 construction has not been instantiated.
返された\(\mathit{status}\)がエラーを示す場合、RBG2(P)構成は再シード要求への応答としてエラーをRBG1構成に返し、RBG1構成はインスタンス化要求への応答としてそれをアプリケーションへ転送します。RBG1構成内のDRBGはインスタンス化されていません。
Otherwise, a \(\mathit{status}\) of success is returned to the RBG1 construction in response to the reseed request to indicate that the DRBG within the RBG2(P) construction has been successfully reseeded.
それ以外の場合、RBG2(P)構成内のDRBGの再シードが成功したことを示すため、成功の\(\mathit{status}\)が再シード要求への応答としてRBG1構成に返されます。
5. Upon receiving a \(\mathit{status}\) of success in response to the reseed request, the RBG1 construction then sends a generate request to the RBG2(P) construction (see Sec. 5.2.2).
5. 再シード要求への応答として成功の\(\mathit{status}\)を受け取ると、RBG1構成はRBG2(P)構成へgenerate要求を送ります(5.2.2節を参照)。
where 384 indicates that \(3s/2\) bits are needed to instantiate the \(\mathrm{HMAC\_DRBG}\) at a security strength of 256 bits.
ここで、384は、\(3s/2\)ビットが、\(\mathrm{HMAC\_DRBG}\)をセキュリティ強度 256ビットでインスタンス化するために必要であることを示します。
6.Upon receiving a generate request, the RBG2(P) construction executes a generate function using information from the request:
6.generate要求を受け取ると、RBG2(P)構成は要求の情報を用いてgenerate関数を実行します。
If an error is indicated by the returned \(\mathit{status}\), the error is returned to the RBG1 construction by the RBG2(P) construction in response to the generate request and forwarded to the application by the RBG1 construction in response to the instantiate request. The DRBG within the RBG1 construction is not instantiated.
返された\(\mathit{status}\)がエラーを示す場合、RBG2(P)構成はgenerate要求への応答としてエラーをRBG1構成に返し、RBG1構成はインスタンス化要求への応答としてそれをアプリケーションへ転送します。RBG1構成内のDRBGはインスタンス化されません。
If a \(\mathit{status}\) of success is returned from the generate function, the 384 bits of \(\mathit{seed\_material}\) are also provided and sent to the RBG1 construction in response to the generate request.
generate関数から成功の\(\mathit{status}\)が返された場合、384ビットの\(\mathit{seed\_material}\)も提供され、generate要求への応答としてRBG1構成へ送られます。
7. The DRBG within the RBG1 construction uses the \(\mathit{seed\_material}\) provided by the RBG2(P) construction and the \(\mathit{personalization\_string}\) provided by the application in the instantiate request (see step 1) to create the seed to instantiate the DRBG (see [SP_800-90A]).
7. RBG1構成内のDRBGは、RBG2(P)構成から提供された\(\mathit{seed\_material}\)と、アプリケーションがインスタンス化要求で与えた\(\mathit{personalization\_string}\)(ステップ1を参照)を用いて、DRBGをインスタンス化するためのseedを作成します([SP_800-90A]を参照)。
If the instantiation is not successful, an error is returned to the application in response to the instantiate request. The DRBG within the RBG1 construction has NOT been instantiated.
インスタンス化に失敗した場合、インスタンス化要求への応答としてエラーをアプリケーションに返します。RBG1構成内のDRBGはインスタンス化されていません。
If the instantiation is successful, the internal state is established. A \(\mathit{status}\) of SUCCESS and the \(\mathit{RBG1\_DRBG\_state\_handle}\) are returned to the application requesting instantiation, and the RBG can be used to generate pseudorandom bits.
インスタンス化に成功すると、内部状態が確立されます。\(\mathit{status}\) としてSUCCESSと \(\mathit{RBG1\_DRBG\_state\_handle}\) を、インスタンス化を要求したアプリケーションに返し、RBGを使用して疑似乱数ビットを生成できます。
B.2.2. Generation by the RBG1 Construction
B.2.2. RBG1構成による生成
Assuming that the HMAC_DRBG in the RBG1 construction has been instantiated (see Appendix B.2.1), pseudorandom bits can be obtained as follows:
RBG1構成内のHMAC_DRBGがインスタンス化済みであると仮定すると(付録B.2.1を参照)、次のように疑似乱数ビットを取得できます。
1.A consuming application sends a generate request to the RBG1 construction:
1.利用側アプリケーションは、RBG1構成へgenerate要求を送ります。
• \(\mathit{RBG1\_DRBG\_state\_handle}\) is returned as the state handle during instantiation (see Appendix B.2.1).
• \(\mathit{RBG1\_DRBG\_state\_handle}\) は、インスタンス化時にstate handleとして返されたものです(付録B.2.1を参照)。
• The \(\mathit{requested\_security\_strength}\) may be any value that is less than or equal to 256 (i.e., the instantiated security strength recorded in the DRBG’s internal state).
• \(\mathit{requested\_security\_strength}\) には、256以下の任意の値を指定できます(すなわち、DRBGの内部状態に記録されたインスタンス化時のセキュリティ強度以下)。
2.Upon receiving a generate request, the RBG1 construction executes a generate function, as specified in Sec. 2.8.1.2:
2.generate要求を受け取ると、RBG1構成は2.8.1.2節の規定に従ってgenerate関数を実行します。
If an error is returned as the \(\mathit{status}\), the RBG1 construction forwards the error indication to the application in response to the generate request. \(\mathit{returned\_bits}\) is a \(\mathit{Null}\) string.
\(\mathit{status}\) としてエラーが返された場合、RBG1構成はgenerate要求への応答としてエラー表示をアプリケーションへ転送します。\(\mathit{returned\_bits}\) は \(\mathit{Null}\) 文字列です。
If an indication of success is returned as the \(\mathit{status}\), the \(\mathit{requested\_number\_of\_bits}\) are provided as the \(\mathit{returned\_bits}\) to the consuming application in response to the generate request.
\(\mathit{status}\) が成功を示す場合、\(\mathit{requested\_number\_of\_bits}\) のビット列を \(\mathit{returned\_bits}\) として利用側アプリケーションに提供し、generate要求への応答とします。
B.3. Example Using Sub-DRBGs Based on an RBG1 Construction
B.3. RBG1構成に基づくsub-DRBGの使用例
This example uses an RBG1 construction to instantiate two sub-DRBGs: sub-DRBG1 and sub-DRBG2 (see Fig. 48) using the same HMAC_DRBG implementation as the RBG1 construction.
この例では、RBG1構成を使用して、RBG1構成と同じHMAC_DRBG実装を用いる2つのサブDRBG、sub-DRBG1とsub-DRBG2をインスタンス化します(図48を参照してください)。
図48. RBG1構成に基づくsub-DRBG。(Source) RBG1 Construction(元となるRBG1構成)と記された緑の箱から、右へRBG1 output(RBG1の出力)という矢印が出て、下へSub-DRBG1とSub-DRBG2の箱に2本の矢印が向かう。
Fig. 48. Sub-DRBGs based on an RBG1 construction
図48. RBG1構成に基づくsub-DRBG
Instantiation of the RBG1 construction is discussed in Appendix B.2. The RBG1 construction is used as the randomness source for the sub-DRBGs and has been instantiated to provide a security strength of 256 bits for its DRBG. The state handle for the DRBG in the RBG1 construction is \(\mathit{RBG1\_DRBG\_state\_handle}\).
RBG1構成のインスタンス化は付録B.2で説明します。ここではRBG1構成をsub-DRBGの乱数源として用い、そのDRBGはセキュリティ強度 256ビットを提供するようインスタンス化済みです。RBG1構成内のDRBGのstate handleは \(\mathit{RBG1\_DRBG\_state\_handle}\) です。
For this example, sub-DRBG1 will be instantiated to provide a security strength of 128 bits, and sub-DRBG2 will be instantiated to provide a security strength of 256 bits. The sub-DRBGs use different internal states of the HMAC_DRBG implementation than are used by the RBG1 construction itself. Neither the RBG1 construction nor the sub-DRBGs can be reseeded.
この例では、sub-DRBG1をセキュリティ強度 128ビット、sub-DRBG2を256ビットでインスタンス化します。sub-DRBGは、RBG1構成自体が使うものとは異なるHMAC_DRBG内部状態を使用します。RBG1構成もsub-DRBGも再シードできません。
This example provides the following capabilities:
この例では、次の機能を提供します。
•Access to the RBG1 construction to provide output generated at a security strength of 256 bits (see Appendix B.2 for the RBG1 example),
•セキュリティ強度256ビットで生成された出力を提供するための、RBG1構成へのアクセス(RBG1の例は付録B.2を参照してください)。
•Access to one sub-DRBG (e.g., sub-DRBG1) that provides output for an application that requires a security strength of no more than 128 bits, and
•セキュリティ強度128ビット以下を必要とするアプリケーションへ出力を提供する1つ目のsub-DRBG(例:sub-DRBG1)へのアクセス、および
•Access to a second sub-DRBG (e.g., sub-DRBG2) that provides output for a second application that requires up to 256 bits of security strength.
•セキュリティ強度 256ビット以下を必要とする別のアプリケーションへ出力を提供する2つ目のsub-DRBG(例:sub-DRBG2)へのアクセス。
B.3.1. Instantiation of the Sub-DRBGs
B.3.1. sub-DRBGのインスタンス化
Each sub-DRBG is instantiated using output from the RBG1 construction that is discussed in Appendix B.2.
各sub-DRBGは、付録B.2で説明するRBG1構成の出力を用いてインスタンス化します。
B.3.1.1. Instantiating Sub-DRBG1
B.3.1.1. sub-DRBG1のインスタンス化
1.Sub-DRBG1 is instantiated when an application sends an instantiate request to the RBG1 construction:
1.アプリケーションがRBG1構成へインスタンス化要求を送ると、sub-DRBG1をインスタンス化します。
where:
ここで、
•A security strength of 128 bits is requested for sub-DRBG1,
•sub-DRBG1に対してセキュリティ強度 128ビットを要求します。
•The personalization string to be used for sub-DRBG1 is “Sub-DRBG App 1”, and
•sub-DRBG1に使用するpersonalization stringは“Sub-DRBG App 1”です。
• The returned state handle for sub-DRBG1 will be \(\mathit{sub\text{-}DRBG1\_state\_handle}\).
• sub-DRBG1に返されるstate handleは \(\mathit{sub\text{-}DRBG1\_state\_handle}\) です。
2.Upon receiving the instantiate request, the RBG1 construction executes its instantiate function for a sub-DRBG (see Sec. 4.3.1):
2.インスタンス化要求を受け取ると、RBG1構成はsub-DRBG用のインスタンス化関数を実行します(4.3.1節を参照してください)。
As specified for the \(\mathbf{Instantiate\_sub\text{-}DRBG}\) function, the DRBG in the RBG1 construction will attempt to generate \(3s/2 = 192\) bits of seed material and combine it with “Sub-DRBG App 1” (i.e., the personalization string) to create a seed for the internal state of sub-DRBG1.
\(\mathbf{Instantiate\_sub\text{-}DRBG}\) 関数の規定に従い、RBG1構成内のDRBGは \(3s/2 = 192\) ビットのシード材料の生成を試み、“Sub-DRBG App 1”(すなわちpersonalization string)と組み合わせ、sub-DRBG1の内部状態用のseedを作成します。
If an error is returned as the \(\mathit{status}\), the RBG1 construction forwards the error indication to the application in response to the instantiate request received in step 1. The sub-DRBG is not instantiated.
\(\mathit{status}\) としてエラーが返された場合、RBG1構成はステップ1で受け取ったインスタンス化要求への応答として、エラー表示をアプリケーションへ転送します。sub-DRBGはインスタンス化されません。
If an indication of success is returned as the \(\mathit{status}\), the RBG1 construction forwards the \(\mathit{status}\) and the state handle (\(\mathit{sub\text{-}DRBG1\_state\_handle}\)) to the application in response to the instantiate request. Sub-DRBG1 can now be requested directly using its state handle (i.e., \(\mathit{sub\text{-}DRBG1\_state\_handle}\)) to generate output (see Appendix B.3.2).
\(\mathit{status}\) が成功を示す場合、RBG1構成はインスタンス化要求への応答として、\(\mathit{status}\) とstate handle(\(\mathit{sub\text{-}DRBG1\_state\_handle}\))をアプリケーションへ転送します。これで、state handle(すなわち \(\mathit{sub\text{-}DRBG1\_state\_handle}\))を使ってsub-DRBG1へ直接要求を送り、出力を生成できます(付録B.3.2を参照)。
B.3.1.2. Instantiating Sub-DRBG2
B.3.1.2. sub-DRBG2のインスタンス化
Sub-DRBG2 is instantiated in the same manner as sub-DRBG1 but at a security strength of 256 bits and with a different personalization string.
sub-DRBG2は、セキュリティ強度を256ビットとし、異なるpersonalization stringを使用する点を除き、sub-DRBG1と同じ方法でインスタンス化します。
1.The application sends an instantiate request to the RBG1 construction:
1.アプリケーションはRBG1構成へインスタンス化要求を送ります。
2.The RBG1 construction executes an instantiate function for a sub-DRBG:
2.RBG1構成は、sub-DRBG用のインスタンス化関数を実行します。
The DRBG in the RBG1 construction will attempt to generate \(3s/2 = 384\) bits of seed material and combine it with “Sub-DRBG App 2” to create a seed for the internal state of sub-DRBG2.
RBG1構成内のDRBGは \(3s/2 = 384\) ビットのシード材料の生成を試み、“Sub-DRBG App 2”と組み合わせて、sub-DRBG2の内部状態用のseedを作成します。
If an error is returned as the \(\mathit{status}\), the RBG1 construction forwards the error indication to the application in response to the instantiate request received in step 1. The sub-DRBG is not instantiated.
\(\mathit{status}\) としてエラーが返された場合、RBG1構成はステップ1で受け取ったインスタンス化要求への応答として、エラー表示をアプリケーションへ転送します。sub-DRBGはインスタンス化されません。
If an indication of success is returned as the \(\mathit{status}\), the RBG1 construction forwards the \(\mathit{status}\) and the state handle (\(\mathit{sub\text{-}DRBG2\_state\_handle}\)) to the application in response to the instantiate request. Sub-DRBG2 can now be requested directly using its state handle (i.e., \(\mathit{sub\text{-}DRBG2\_state\_handle}\)) to generate output (see Appendix B.3.2).
\(\mathit{status}\) が成功を示す場合、RBG1構成はインスタンス化要求への応答として、\(\mathit{status}\) とstate handle(\(\mathit{sub\text{-}DRBG2\_state\_handle}\))をアプリケーションへ転送します。これで、state handle(すなわち \(\mathit{sub\text{-}DRBG2\_state\_handle}\))を使ってsub-DRBG2へ直接要求を送り、出力を生成できます(付録B.3.2を参照)。
B.3.2. Pseudorandom Bit Generation by Sub-DRBGs
B.3.2. sub-DRBGによる疑似乱数ビット生成
Assuming that the sub-DRBG has been successfully instantiated (see Appendix B.3.1), pseudorandom bits can be requested from the sub-DRBG by a consuming application.
sub-DRBGのインスタンス化が成功していると仮定します(付録B.3.1を参照してください)。利用側アプリケーションは、sub-DRBGに疑似乱数ビットを要求できます。
1.An application sends the following generate request:
1.アプリケーションは、次のgenerate要求を送ります。
• For sub_DRBG1, \(\mathit{sub\text{-}DRBG\_state\_handle} = \mathit{sub\text{-}DRBG1\_state\_handle}\).
• sub_DRBG1では、\(\mathit{sub\text{-}DRBG\_state\_handle} = \mathit{sub\text{-}DRBG1\_state\_handle}\) とします。
• For sub-DRBG2, \(\mathit{sub\text{-}DRBG\_state\_handle} = \mathit{sub\text{-}DRBG2\_state\_handle}\).
• sub-DRBG2では、\(\mathit{sub\text{-}DRBG\_state\_handle} = \mathit{sub\text{-}DRBG2\_state\_handle}\) とします。
• \(\mathit{requested\_number\_of\_bits}\) must be \(\le\) the maximum number of bits allowed for a single generate request (see [SP_800-90A] for the HMAC_DRBG parameters).
• \(\mathit{requested\_number\_of\_bits}\) は、\(\le\) 1回のgenerate要求で許可される最大ビット数、でなければなりません(HMAC_DRBGのパラメーターについては[SP_800-90A]を参照)。
• For sub_DRBG1, security strength must be \(\le 128\).
• sub_DRBG1では、セキュリティ強度は \(\le 128\) でなければなりません。
• For sub_DRBG2, security strength must be \(\le 256\).
• sub_DRBG2では、セキュリティ強度は \(\le 256\) でなければなりません。
2.The sub-DRBG executes the generate request (see Sec. 2.8.1.2):
2.sub-DRBGは2.8.1.2節の規定に従い、generate要求を実行します。
If an error is returned as the \(\mathit{status}\), the sub-DRBG forwards the error indication to the application in response to the generate request received in step 1. The \(\mathit{returned\_bits}\) string is \(\mathit{Null}\).
\(\mathit{status}\)としてエラーが返された場合、sub-DRBGはステップ1で受け取ったgenerate要求への応答として、エラー表示をアプリケーションへ転送します。\(\mathit{returned\_bits}\)文字列は\(\mathit{Null}\)です。
If an indication of success is returned as the \(\mathit{status}\), the sub-DRBG forwards the \(\mathit{status}\) to the application along with the requested number of newly generated bits.
\(\mathit{status}\)として成功を示す表示が返された場合、sub-DRBGはその\(\mathit{status}\)を、要求された数の新たに生成したビットとともにアプリケーションへ転送します。
B.4. Example of an RBG2(P) Construction
B.4. RBG2(P)構成の例
For this example of an RBG2(P) construction, no conditioning function is used, and only a single DRBG instantiation will be used (see Fig. 49), so a state handle is not needed. A physical and a non-physical entropy source are used. Full-entropy output is not provided by the entropy sources.
このRBG2(P)構成の例では、コンディショニング関数を使用せず、DRBGのインスタンス化は1回のみ行うため(図49を参照)、state handleは必要ありません。物理および非物理エントロピー源を使用しますが、エントロピー源は完全エントロピー出力を提供しません。
図49. RBG2構成の例。Entropy Source(s)(エントロピー源)と記された八角形から下へ、HMAC_DRBG with SHA-256(SHA-256を用いるHMAC_DRBG)と記された箱に矢印が向かい、その箱から下のPseudorandom Output(擬似乱数出力)というラベルへ矢印が向かう。
Fig. 49. Example of an RBG2 construction
図49. RBG2構成の例
The targeted security strength is 256 bits, so a DRBG from [SP_800-90A] that can support this security strength must be used. \(\mathrm{HMAC\_DRBG}\) using SHA-256 is used in this example. A \(\mathit{personalization\_string}\) may be provided, as recommended in Sec. 2.4.1. Reseeding is supported and will be available on demand (e.g., by an application). Method 1 (i.e., physical only) is used for counting the entropy produced by the entropy sources (i.e., only entropy from the physical entropy source is counted).
目標セキュリティ強度は256ビットであるため、この値をサポートできる[SP_800-90A]準拠のDRBGを使用する必要があります。この例ではSHA-256を用いる\(\mathrm{HMAC\_DRBG}\)を使用します。2.4.1節の推奨に従い、\(\mathit{personalization\_string}\)を与えてもよいです。再シードをサポートし、要求に応じて(例:アプリケーションから)再シードできます。エントロピー源が生成するエントロピーの計数には方法1(すなわち物理のみ)を用います(すなわち、物理エントロピー源から得たエントロピーのみを算入する)。
This example provides the following capabilities:
この例では、次の機能を提供します。
•An RBG instantiated at a security strength of 256 bits and
•セキュリティ強度 256ビットでインスタンス化したRBG。
•Access to an entropy source to provide prediction resistance.
•予測耐性を提供するエントロピー源へのアクセス。
B.4.1. Instantiation of an RBG2(P) Construction
B.4.1. RBG2(P)構成のインスタンス化
1.The RBG2(P) construction is instantiated by an application using an instantiate request:
1.アプリケーションは、次のインスタンス化要求を用いてRBG2(P)構成をインスタンス化します。
Since there is only a single instantiation, a \(\mathit{state\_handle}\) is not used for this example. The personalization string to be used for this example is “RBG2 42”.
インスタンス化は1回だけなので、この例では\(\mathit{state\_handle}\)を使用しません。この例で使用するpersonalization stringは“RBG2 42”です。
2.Upon receiving the instantiate request, the RBG2(P) construction executes an instantiate function:
2.インスタンス化要求を受け取ると、RBG2(P)構成はインスタンス化関数を実行します。
The seed material for establishing the security strength (\(s\)) of the DRBG (where \(s = 256\) bits) is requested using the following call to the entropy source (see Sec. 2.8.2 and item 2 in Sec. 5.2.1):
DRBGのセキュリティ強度(\(s\))(ここでは\(s = 256\)ビット)を確立するためのシード材料は、次のエントロピー源呼び出しで要求します(2.8.2節および5.2.1節の項目2を参照)。
where \(3s/2 = 384\) bits of entropy are requested from the entropy sources, and Method 1 is used to count only the entropy produced by the physical entropy source. Entropy from the non-physical entropy source may also be used but is not counted.
ここで、エントロピー源には\(3s/2 = 384\)ビットのエントロピーを要求し、方法1を用いて物理エントロピー源が生成するエントロピーのみを計数します。非物理エントロピー源のエントロピーも使用してもよいですが、計数しません。
If \(\mathit{status} = \mathrm{SUCCESS}\) is returned in response to the \(\mathbf{Get\_entropy\_bitstring}\) call, the \(\mathrm{HMAC\_DRBG}\) is seeded using the \(\mathit{seed\_material}\) returned from the \(\mathbf{Get\_entropy\_bitstring}\) function and the \(\mathit{personalization\_string}\) (“RBG2 42”) provided in the \(\mathbf{DRBG\_Instantiate}\) function. The internal state is recorded (including the security strength of the instantiation), and \(\mathit{status} = \mathrm{SUCCESS}\) is returned to the consuming application in response to the instantiation request.
\(\mathit{status} = \mathrm{SUCCESS}\)が\(\mathbf{Get\_entropy\_bitstring}\)呼び出しへの応答として返された場合、\(\mathrm{HMAC\_DRBG}\)は、\(\mathit{seed\_material}\)(\(\mathbf{Get\_entropy\_bitstring}\)関数が返したもの)と、\(\mathit{personalization\_string}\)(“RBG2 42”。\(\mathbf{DRBG\_Instantiate}\)関数で与えたもの)を用いてシードされます。内部状態(インスタンス化のセキュリティ強度を含む)を記録し、インスタンス化要求への応答として\(\mathit{status} = \mathrm{SUCCESS}\)を利用側アプリケーションへ返します。
If the \(\mathit{status}\) returned in response to the \(\mathbf{Get\_entropy\_bitstring}\) call indicates an error, then the internal state is not created, the \(\mathit{status}\) is returned to the consuming application in response to the instantiation request, and the RBG cannot be used to generate bits.
\(\mathit{status}\)(\(\mathbf{Get\_entropy\_bitstring}\)呼び出しへの応答として返されたもの)がエラーを示す場合、内部状態は作成されず、インスタンス化要求への応答としてその\(\mathit{status}\)を利用側アプリケーションへ返します。RBGはビットの生成に使用できません。
B.4.2. Generation Using an RBG2(P) Construction
B.4.2. RBG2(P)構成による生成
Assuming that the RBG has been successfully instantiated (see Appendix B.4.1):
RBGが正常にインスタンス化されたと仮定します(付録B.4.1を参照してください)。
1.Pseudorandom bits can be requested from the RBG by a consuming application:
1.利用側アプリケーションは、RBGに疑似乱数ビットを要求できます。
• Since there is only a single instantiation of the \(\mathrm{HMAC\_DRBG}\), a \(\mathit{state\_handle}\) is not returned from the \(\mathbf{DRBG\_Instantiate}\) (see Appendix B.4.1) and is not used during the generate request.
• \(\mathrm{HMAC\_DRBG}\)のインスタンス化は1回のみであるため、\(\mathit{state\_handle}\)は\(\mathbf{DRBG\_Instantiate}\)(付録B.4.1を参照)から返されず、generate要求でも使用しません。
• The \(\mathit{requested\_security\_strength}\) may be any value that is \(\le 256\) (i.e., the instantiated security strength recorded in the \(\mathrm{HMAC\_DRBG}\)’s internal state).
• \(\mathit{requested\_security\_strength}\)には、\(\le 256\)である任意の値(すなわち、\(\mathrm{HMAC\_DRBG}\)の内部状態に記録されたインスタンス化時のセキュリティ強度以下の値)を指定できます。
2.Upon receiving the generate request, the RBG executes the generate function (see Sec. 2.8.1.2):
2.generate要求を受け取ると、RBGは2.8.1.2節の規定に従ってgenerate関数を実行します。
A \(\mathit{status}\) indication is returned to the requesting application in response to the \(\mathbf{DRBG\_Generate}\) call. If \(\mathit{status} = \mathrm{SUCCESS}\), a bitstring of at least \(\mathit{requested\_number\_of\_bits}\) is provided as the \(\mathit{returned\_bits}\). If \(\mathit{status} = \mathrm{FAILURE}\), \(\mathit{returned\_bits}\) is an empty bitstring.
\(\mathit{status}\)表示を、\(\mathbf{DRBG\_Generate}\)呼び出しへの応答として要求元アプリケーションに返します。\(\mathit{status} = \mathrm{SUCCESS}\)の場合、少なくとも\(\mathit{requested\_number\_of\_bits}\)のビット列を\(\mathit{returned\_bits}\)として提供します。\(\mathit{status} = \mathrm{FAILURE}\)の場合、\(\mathit{returned\_bits}\)は空のビット列です。
B.4.3. Reseeding an RBG2(P) Construction
B.4.3. RBG2(P) 構成の再シード
The \(\mathrm{HMAC\_DRBG}\) will be reseeded 1) if explicitly requested by the consuming application or 2) automatically during a \(\mathbf{DRBG\_Generate}\) call at the end of the DRBG’s designed seedlife (see the \(\mathbf{DRBG\_Generate}\) function specification in [SP_800-90A] and Sec. 5.2.3 herein).
\(\mathrm{HMAC\_DRBG}\)は、1) 利用側アプリケーションが明示的に要求した場合、または2) \(\mathbf{DRBG\_Generate}\)呼び出しの中で、DRBGの設計上のseedlifeの終了時に自動的に再シードされます([SP_800-90A]の\(\mathbf{DRBG\_Generate}\)関数仕様および本書5.2.3節を参照)。
1.An application may request a reseed of the DRBG using a reseed request:
1.アプリケーションは、再シード要求を使ってDRBGの再シードを要求してもよいです。
Since there is only a single instantiation of the \(\mathrm{HMAC\_DRBG}\), a \(\mathit{state\_handle}\) is not returned from the \(\mathbf{DRBG\_Instantiate}\) function (see Appendix B.4.1) and is not used during the reseed request.
\(\mathrm{HMAC\_DRBG}\)のインスタンス化は1回のみであるため、\(\mathit{state\_handle}\)は\(\mathbf{DRBG\_Instantiate}\)関数(付録B.4.1を参照)から返されず、再シード要求でも使用しません。
2.Upon receiving the reseed request or when the end of the seedlife is determined, the RBG executes the reseed function (see Sec. 2.8.1.3):
2.再シード要求を受け取ったとき、またはseedlifeの終了が判定されたとき、RBGは2.8.1.3節の規定に従って再シード関数を実行します。
The \(\mathbf{DRBG\_Reseed}\) function in SP 800-90A uses a \(\mathbf{Get\_randomness\_source\_input}\) call to access the entropy source. In Sec. 5.2.3 (item 2.b), the \(\mathbf{Get\_entropy\_bitstring}\) function is used to obtain the entropy:
SP 800-90Aの\(\mathbf{DRBG\_Reseed}\)関数は、\(\mathbf{Get\_randomness\_source\_input}\)呼び出しを使ってエントロピー源にアクセスします。5.2.3節(項目2.b)では、\(\mathbf{Get\_entropy\_bitstring}\)関数を用いてエントロピーを取得します。
256 is obtained from the internal state as the security strength. \(\mathit{Method\_1}\) indicates that only the entropy from the physical entropy source should be counted.
256は内部状態からセキュリティ強度として取得します。\(\mathit{Method\_1}\)は、物理エントロピー源から得るエントロピーのみを算入すべきであることを示します。
If \(\mathit{status} = \mathrm{SUCCESS}\) is returned by \(\mathbf{Get\_entropy\_bitstring}\), the \(\mathit{seed\_material}\) contains at least 256 bits of entropy and is at least 256 bits long. \(\mathit{Status} = \mathrm{SUCCESS}\) is returned to the RBG2 construction in response to the \(\mathbf{DRBG\_Reseed}\) call, and the \(\mathit{status}\) is forwarded to the application in response to the reseed request, if appropriate.
\(\mathit{status} = \mathrm{SUCCESS}\)が\(\mathbf{Get\_entropy\_bitstring}\)から返された場合、\(\mathit{seed\_material}\)は少なくとも256ビットのエントロピーを含み、長さも256ビット以上です。\(\mathit{Status} = \mathrm{SUCCESS}\)を\(\mathbf{DRBG\_Reseed}\)呼び出しへの応答としてRBG2構成に返し、該当する場合は、その\(\mathit{status}\)を再シード要求への応答としてアプリケーションへ転送します。
If the \(\mathit{status}\) indicates an error, \(\mathit{seed\_material}\) is an empty (e.g., null) bitstring. The \(\mathrm{HMAC\_DRBG}\) is not reseeded, the \(\mathit{status}\) is returned to the \(\mathbf{DRBG\_Reseed}\) function in the RBG2 construction, and the \(\mathit{status}\) is then forwarded to the application in response to the reseed request, if appropriate. Depending on the error, the DRBG operation may be terminated (see item 10 in Sec. 2.6).
\(\mathit{status}\)がエラーを示す場合、\(\mathit{seed\_material}\)は空(例:null)のビット列です。\(\mathrm{HMAC\_DRBG}\)は再シードされず、\(\mathit{status}\)をRBG2構成内の\(\mathbf{DRBG\_Reseed}\)関数へ返し、該当する場合は、その\(\mathit{status}\)を再シード要求への応答としてアプリケーションへ転送します。エラーによってはDRBGの動作を終了する場合があります(2.6節の項目10を参照)。
B.5. Example of an RBG3(XOR) Construction
B.5. RBG3(XOR)構成の例
This construction is specified in Sec. 6.4 and requires a DRBG and a source of full-entropy bits. For this example, a single physical entropy source that does not provide full-entropy output is used, so the vetted hash conditioning function listed in [SP_800-90B] using SHA-256 is used as an external conditioning function to obtain the required full-entropy bitstrings. Since the type of entropy source is known, the counting method is known and need not be indicated when requesting entropy.
この構成は第6.4節で規定されており、DRBG と完全エントロピービットの供給源を必要とします。この例では、完全エントロピーの出力を提供しない単一の物理エントロピー源を使用するため、必要な完全エントロピーのビット列を得る外部コンディショニング関数として、[SP_800-90B]に挙げられた、SHA-256 を用いる精査済みハッシュコンディショニング関数を用います。エントロピー源の種類は既知であるため、計数方式も既知であり、エントロピーを要求する際に示す必要はありません。
The Hash_DRBG specified in [SP_800-90A] will be used as the DRBG with SHA-25644 used as the underlying hash function for the DRBG. The DRBG will obtain input directly from the RBG’s entropy source without conditioning (as shown in Fig. 50) since bits with full entropy are not required for input to the DRBG, even though full-entropy bits are required for input to the XOR operation (shown as “⊕” in the figure) from the entropy source via the conditioning function.
DRBG には、[SP_800-90A]の Hash_DRBG を用い、その基礎となるハッシュ関数として SHA-25644 を使用します。DRBG は、RBG のエントロピー源から、コンディショニングなしで直接入力を取得します(図50のとおり)。これは、DRBG への入力には完全エントロピーのビットが不要であるためです。一方、エントロピー源からコンディショニング関数を経由して XOR 演算(図中の“⊕”)に入力するビットには、完全エントロピーが必要です。
図50. RBG3(XOR)構成の例。Physical Entropy Source(物理エントロピー源)と記された六角形から2つの出力がある。1つは下のConditioning Function(条件付け関数)と記された楕円への矢印、もう1つはInstantiation and Reseed(インスタンス化と再シード)と記された、右へ延びてから下へ折れてHash_DRBGと記された箱に入る線である。Conditioning Functionから下へ線がXOR記号(⊕)に入り、Hash_DRBGから左へ破線矢印がXOR記号に入る。XOR記号から下のFull-entropy Output(完全エントロピー出力)というラベルへ矢印が向かう。
Fig. 50. Example of an RBG3(XOR) construction
図50. RBG3(XOR)構成の例
The DRBG is instantiated and reseeded at a 256-bit security strength. In this example, only a single instantiation is used, and a personalization string is provided during instantiation. Calls are made to the RBG using the RBG3(XOR) calls specified in Sec. 6.4. The \(\mathrm{Hash\_DRBG}\) itself is not directly accessible.
DRBGはセキュリティ強度 256ビットでインスタンス化し、再シードします。この例ではインスタンス化を1回だけ行い、インスタンス化時にpersonalization stringを指定します。RBGへの呼び出しには6.4節で規定するRBG3(XOR)呼び出しを用います。\(\mathrm{Hash\_DRBG}\)には直接アクセスできません。
This example provides the following capabilities:
この例では、次の機能を提供します。
•Full-entropy output by the RBG,
•RBGによる完全エントロピー出力。
•Fallback to the security strength provided by the Hash_DRBG (256 bits) if the entropy source has an undetected failure, and
•エントロピー源に未検出の故障がある場合、Hash_DRBGが提供するセキュリティ強度(256ビット)へフォールバックします。
•Access to an entropy source to instantiate and reseed the Hash_DRBG.
•Hash_DRBGのインスタンス化および再シードに用いるエントロピー源へのアクセス。
B.5.1. Instantiation of an RBG3(XOR) Construction
B.5.1. RBG3(XOR)構成のインスタンス化
1.An application instantiates an RBG3(XOR) construction using an instantiate request that will instantiate the DRBG within the RBG:
1.アプリケーションは、RBG内のDRBGをインスタンス化する要求を用いて、RBG3(XOR)構成をインスタンス化します。
Since only a single instantiation is used, there is no need for a state handle. The \(\mathrm{HMAC\_DRBG}\) is requested to be instantiated at a security strength of 256 bits using “RBG3(XOR)” as a personalization string.
インスタンス化は1回のみなので、state handleは不要です。\(\mathrm{HMAC\_DRBG}\)に対し、“RBG3(XOR)”をpersonalization stringとしてセキュリティ強度 256ビットでのインスタンス化を要求します。
2.Upon receiving an instantiate request, the RBG3(XOR) construction executes an instantiate function:
2.インスタンス化要求を受け取ると、RBG3(XOR)構成はインスタンス化関数を実行します。
The entropy for establishing the security strength of the \(\mathrm{Hash\_DRBG}\) is requested from the entropy source using the following \(\mathbf{Get\_entropy\_bitstring}\) call:
\(\mathrm{Hash\_DRBG}\)のセキュリティ強度を確立するため、次の\(\mathbf{Get\_entropy\_bitstring}\)呼び出しでエントロピー源にエントロピーを要求します。
where \(3s/2 = 384\) when \(s = 256\).
ここで、\(3s/2 = 384\)です(\(s = 256\)の場合)。
If \(\mathit{status} = \mathrm{SUCCESS}\) is returned from the \(\mathbf{Get\_entropy\_bitstring}\) call, the \(\mathrm{Hash\_DRBG}\) is seeded using the \(\mathit{seed\_material}\) and the \(\mathit{personalization\_string}\) (i.e., RBG3(XOR)). The internal state is recorded (the 256-bit security strength of the instantiation), and \(\mathit{status} = \mathrm{SUCCESS}\) is returned to the RBG3(XOR) construction and forwarded to the consuming application in response to the instantiate request (from step 1). The RBG can be used to generate full-entropy bits.
\(\mathit{status} = \mathrm{SUCCESS}\)が\(\mathbf{Get\_entropy\_bitstring}\)呼び出しから返された場合、\(\mathrm{Hash\_DRBG}\)は\(\mathit{seed\_material}\)と\(\mathit{personalization\_string}\)(すなわちRBG3(XOR))を用いてシードされます。インスタンス化時のセキュリティ強度(256ビット)を含む内部状態を記録し、インスタンス化要求(ステップ1)への応答として\(\mathit{status} = \mathrm{SUCCESS}\)をRBG3(XOR)構成に返し、利用側アプリケーションへ転送します。RBGは完全エントロピービットを生成できます。
If the \(\mathit{status}\) returned from the \(\mathbf{Get\_entropy\_bitstring}\) call indicates an error, the \(\mathit{status}\) is forwarded by the RBG3(XOR) construction to the consuming application. The \(\mathrm{Hash\_DRBG}\)’s internal state is not established, and the RBG cannot be used to generate bits.
返された\(\mathit{status}\)(\(\mathbf{Get\_entropy\_bitstring}\)呼び出しによる)がエラーを示す場合、RBG3(XOR)構成はその\(\mathit{status}\)を利用側アプリケーションへ転送します。\(\mathrm{Hash\_DRBG}\)の内部状態は確立されず、RBGはビットを生成できません。
B.5.2. Generation by an RBG3(XOR) Construction
B.5.2. RBG3(XOR)構成による生成
Assuming that the Hash_DRBG has been instantiated (see Appendix B.5.1), the RBG can be called by a consuming application to generate output with full entropy.
Hash_DRBGがインスタンス化済みであると仮定すると(付録B.5.1を参照)、利用側アプリケーションはRBGを呼び出し、完全エントロピーを持つ出力を生成できます。
B.5.2.1. Generation
B.5.2.1. 生成
1.An application requests the generation of full-entropy bits using:
1.アプリケーションは、次の方法で完全エントロピービットの生成を要求します。
where \(n\) indicates the requested number of bits to be generated. A state handle is not included since a state handle was not returned during instantiation (see Appendix B.5.1).
ここで、\(n\)は生成を要求するビット数を示します。インスタンス化時にstate handleが返されていないため(付録B.5.1を参照)、state handleは指定しません。
2.Upon receiving a generate request, the RBG3(XOR) construction executes a call to the generate function:
2.generate要求を受け取ると、RBG3(XOR)構成はgenerate関数を呼び出します。
The construction of the \(\mathbf{RBG3(XOR)\_Generate}\) function in Sec. 6.4.1.2 is used as follows:
\(\mathbf{RBG3(XOR)\_Generate}\)関数(6.4.1.2節に規定)を、次のように用います。
\(\mathbf{RBG3(XOR)\_Generate}\):
\(\mathbf{RBG3(XOR)\_Generate}\):
Input:
入力:
\(n\): The number of bits to be generated.
\(n\):生成するビット数。
Output:
出力:
\(\mathit{status}\): The status returned by the \(\mathbf{RBG3(XOR)\_Generate}\) function.
\(\mathit{status}\):\(\mathbf{RBG3(XOR)\_Generate}\)関数が返すstatus。
\(\mathit{returned\_bits}\): The newly generated bits or a \(\mathit{Null}\) bitstring.
\(\mathit{returned\_bits}\):新たに生成したビット列、または\(\mathit{Null}\)ビット列。
Process:
処理:
2.1 \((\mathit{status}, \mathit{ES\_bits}) = \mathbf{Get\_conditioned\_full\_entropy\_input}(n)\).
2.1 \((\mathit{status}, \mathit{ES\_bits}) = \mathbf{Get\_conditioned\_full\_entropy\_input}(n)\).
2.2 If \((\mathit{status} \ne \mathrm{SUCCESS})\), then \(\mathrm{return}(\mathit{status}, \mathit{Null})\).
2.2 \((\mathit{status} \ne \mathrm{SUCCESS})\)の場合、\(\mathrm{return}(\mathit{status}, \mathit{Null})\)を実行します。
2.3 \((\mathit{status}, \mathit{DRBG\_bits}) = \mathbf{DRBG\_Generate}(n, 256)\).
2.3 \((\mathit{status}, \mathit{DRBG\_bits}) = \mathbf{DRBG\_Generate}(n, 256)\).
2.4 If \((\mathit{status} \ne \mathrm{SUCCESS})\), then \(\mathrm{return}(\mathit{status}, \mathit{Null})\).
2.4 \((\mathit{status} \ne \mathrm{SUCCESS})\)の場合、\(\mathrm{return}(\mathit{status}, \mathit{Null})\)を実行します。
2.5 \(\mathit{returned\_bits} = \mathit{ES\_bits} \oplus \mathit{DRBG\_bits}\).
2.5 \(\mathit{returned\_bits} = \mathit{ES\_bits} \oplus \mathit{DRBG\_bits}\).
2.6 Return \((\mathrm{SUCCESS}, \mathit{returned\_bits})\).
2.6 \((\mathrm{SUCCESS}, \mathit{returned\_bits})\)を返します。
The \(\mathit{state\_handle}\) parameter is not used in the \(\mathbf{RBG3(XOR)\_Generate}\) call or the \(\mathbf{DRBG\_Generate}\) function call (in step 2.3) for this example since a \(\mathit{state\_handle}\) was not returned from the \(\mathbf{RBG3(XOR)\_Instantiate}\) function (see Appendix B.5.1).
この例では、\(\mathit{state\_handle}\)パラメーターを\(\mathbf{RBG3(XOR)\_Generate}\)の呼び出しでも\(\mathbf{DRBG\_Generate}\)関数の呼び出し(ステップ2.3)でも使いません。\(\mathit{state\_handle}\)が\(\mathbf{RBG3(XOR)\_Instantiate}\)関数から返されていないためです(付録B.5.1を参照)。
In step 2.1, the entropy source is accessed via the conditioning function using the \(\mathbf{Get\_conditioned\_full\_entropy\_input}\) routine (see Appendix B.5.2.2) to obtain \(n\) bits with full entropy, which are returned as the \(\mathit{ES\_bits}\).
ステップ2.1では\(\mathbf{Get\_conditioned\_full\_entropy\_input}\)ルーチンを用い(付録B.5.2.2を参照)、コンディショニング関数を介してエントロピー源にアクセスし、完全エントロピーを持つ\(n\)ビットを\(\mathit{ES\_bits}\)として取得します。
Step 2.2 checks that the \(\mathbf{Get\_conditioned\_full\_entropy\_input}\) call in step 2.1 was successful. If it was not successful, the \(\mathbf{RBG3(XOR)\_Generate}\) function is aborted, returning \(\mathit{status} \ne \mathrm{SUCCESS}\) and a \(\mathit{Null}\) bitstring to the RBG3(XOR) construction. The \(\mathit{status}\) and \(\mathit{Null}\) bitstring are then forwarded to the application in response to the generate request (in step 1).
ステップ2.2では、\(\mathbf{Get\_conditioned\_full\_entropy\_input}\)呼び出し(ステップ2.1)が成功したかを確認します。成功しなかった場合、\(\mathbf{RBG3(XOR)\_Generate}\)関数を中止し、\(\mathit{status} \ne \mathrm{SUCCESS}\)と\(\mathit{Null}\)ビット列をRBG3(XOR)構成に返します。その\(\mathit{status}\)と\(\mathit{Null}\)ビット列を、ステップ1のgenerate要求への応答としてアプリケーションへ転送します。
Step 2.3 calls the \(\mathrm{Hash\_DRBG}\) to generate \(n\) bits at a security strength of 256 bits. The generated bitstring is returned as \(\mathit{DRBG\_bits}\).
ステップ2.3では\(\mathrm{Hash\_DRBG}\)を呼び出し、セキュリティ強度 256ビットで\(n\)ビットを生成します。生成されたビット列を\(\mathit{DRBG\_bits}\)として返します。
Step 2.4 checks that the \(\mathbf{DRBG\_Generate}\) function invoked in step 2.3 was successful. If it was not successful, the \(\mathbf{RBG3(XOR)\_Generate}\) function is aborted, returning \(\mathit{status} \ne \mathrm{SUCCESS}\) and a \(\mathit{Null}\) bitstring to the RBG3(XOR) construction. The \(\mathit{status}\) and \(\mathit{Null}\) bitstring are then forwarded to the application in response to the generate request (in step 1).
ステップ2.4では、\(\mathbf{DRBG\_Generate}\)関数(ステップ2.3で実行)が成功したかを確認します。成功しなかった場合、\(\mathbf{RBG3(XOR)\_Generate}\)関数を中止し、\(\mathit{status} \ne \mathrm{SUCCESS}\)と\(\mathit{Null}\)ビット列をRBG3(XOR)構成に返します。その\(\mathit{status}\)と\(\mathit{Null}\)ビット列を、ステップ1のgenerate要求への応答としてアプリケーションへ転送します。
If step 2.3 returns an indication of success, the \(\mathit{ES\_bits}\) returned in step 2.1 and the \(\mathit{DRBG\_bits}\) obtained in step 2.3 are XORed together in step 2.5. The result is returned to the RBG3(XOR) construction in step 2.6 and forwarded to the application in response to the generate request (in step 1).
ステップ2.3で成功が示された場合、\(\mathit{ES\_bits}\)(ステップ2.1で返されたもの)と\(\mathit{DRBG\_bits}\)(ステップ2.3で得たもの)をステップ2.5でXORします。結果をステップ2.6でRBG3(XOR)構成に返し、ステップ1のgenerate要求への応答としてアプリケーションへ転送します。
B.5.2.2. Get_conditioned_full_entropy_input Function
B.5.2.2. Get_conditioned_full_entropy_input関数
The Get_conditioned_full_entropy_input procedure is specified in Sec. 3.2.2.2. For this example, the routine becomes the following:
Get_conditioned_full_entropy_input手順は3.2.2.2節で規定します。この例では、ルーチンは次のようになります。
\(\mathbf{Get\_conditioned\_full\_entropy\_input}\):
\(\mathbf{Get\_conditioned\_full\_entropy\_input}\):
Input:
\(n\): The number of full-entropy bits to be provided.
入力:
\(n\):提供する完全エントロピービット数。
Output:
出力:
1. \(\mathit{status}\): The status returned from the \(\mathbf{Get\_conditioned\_full\_entropy\_input}\) function.
1. \(\mathit{status}\):\(\mathbf{Get\_conditioned\_full\_entropy\_input}\)関数が返すstatus。
2. \(\mathit{Full\text{-}Entropy\_bitstring}\): The newly acquired \(n\)-bit string with full entropy or a \(\mathit{Null}\) bitstring.
2. \(\mathit{Full\text{-}Entropy\_bitstring}\):新たに取得した、完全エントロピーを持つ\(n\)ビット列、または\(\mathit{Null}\)ビット列。
Process:
処理:
1. \(\mathit{temp} =\) the \(\mathit{Null}\) string.
1. \(\mathit{temp} =\) \(\mathit{Null}\)文字列。
2. \(\mathit{ctr} = 0\).
2. \(\mathit{ctr} = 0\)。
3. While \(\mathit{ctr} < n\), do
3. \(\mathit{ctr} < n\)の間、次を実行します。
3.1 \((\mathit{status}, \mathit{Entropy\_bitstring}) = \mathbf{Get\_entropy\_bitstring}(320)\).
3.1 \((\mathit{status}, \mathit{Entropy\_bitstring}) = \mathbf{Get\_entropy\_bitstring}(320)\)。
3.2 If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Null})\).
3.2 \((\mathit{status} \ne \mathrm{SUCCESS})\)の場合、\((\mathit{status}, \mathit{Null})\)を返します。
3.3 \(\mathit{conditioned\_output} = \mathbf{Hash}_{\mathbf{SHA\_256}}(\mathit{Entropy\_bitstring})\).
3.3 \(\mathit{conditioned\_output} = \mathbf{Hash}_{\mathbf{SHA\_256}}(\mathit{Entropy\_bitstring})\)。
3.4 \(\mathit{temp} = \mathit{temp} \parallel \mathit{conditioned\_output}\).
3.4 \(\mathit{temp} = \mathit{temp} \parallel \mathit{conditioned\_output}\)。
3.5 \(\mathit{ctr} = \mathit{ctr} + 256\).
3.5 \(\mathit{ctr} = \mathit{ctr} + 256\)。
4. \(\mathit{Full\text{-}Entropy\_bitstring} = \mathbf{leftmost}(\mathit{temp}, n)\).
4. \(\mathit{Full\text{-}Entropy\_bitstring} = \mathbf{leftmost}(\mathit{temp}, n)\)。
5. Return \((\mathrm{SUCCESS}, \mathit{Full\text{-}Entropy\_bitstring})\).
5. \((\mathrm{SUCCESS}, \mathit{Full\text{-}Entropy\_bitstring})\)を返します。
Steps 1 and 2 initialize the temporary bitstring (\(\mathit{temp}\)) for holding the full-entropy bitstring being assembled and the counter (\(\mathit{ctr}\)) that counts the number of full-entropy bits produced so far.
ステップ1と2では、組み立て中の完全エントロピービット列を保持する一時ビット列(\(\mathit{temp}\))と、これまでに生成した完全エントロピービット数を数えるカウンター(\(\mathit{ctr}\))を初期化します。
Step 3 obtains and processes the entropy for each iteration.
ステップ3では、反復ごとにエントロピーを取得して処理します。
• Step 3.1 requests 320 bits45 from the entropy source (i.e., \(\mathit{output\_len} + 64\) bits, where \(\mathit{output\_len} = 256\) for SHA-256).
• ステップ3.1では、エントロピー源から320ビット45を要求する(すなわち\(\mathit{output\_len} + 64\)ビット。SHA-256では\(\mathit{output\_len} = 256\))。
• Step 3.2 checks whether the \(\mathit{status}\) returned in step 3.1 indicated a success. If the \(\mathit{status}\) did not indicate a success, the \(\mathit{status}\) is returned to the \(\mathbf{RBG3(XOR)\_Generate}\) function (in Appendix B.5.2.1) along with a \(\mathit{Null}\) bitstring.
• ステップ3.2では、ステップ3.1で返された\(\mathit{status}\)が成功を示すか確認します。\(\mathit{status}\)が成功を示さない場合、その\(\mathit{status}\)を\(\mathbf{RBG3(XOR)\_Generate}\)関数(付録B.5.2.1)へ\(\mathit{Null}\)ビット列とともに返します。
• Step 3.3 invokes the hash conditioning function (see Sec. 3.2.1.2) using SHA-256 for processing the \(\mathit{Entropy\_bitstring}\) obtained from step 3.1.
• ステップ3.3では、ステップ3.1で得た\(\mathit{Entropy\_bitstring}\)を処理するため、SHA-256を使用するハッシュコンディショニング関数を呼び出します(3.2.1.2節を参照)。
• Step 3.4 concatenates the \(\mathit{conditioned\_output}\) received in step 3.3 to the temporary bitstring (\(\mathit{temp}\)).
• ステップ3.4では、ステップ3.3で得た\(\mathit{conditioned\_output}\)を一時ビット列(\(\mathit{temp}\))に連結します。
•Step 3.5 increments the counter for the number of full-entropy bits that have been produced so far.
•ステップ3.5では、これまでに生成した完全エントロピービット数を数えるカウンターを増分します。
After at least \(n\) bits have been produced in step 3, step 4 selects the leftmost \(n\) bits of the temporary string (\(\mathit{temp}\)) to be returned as the bitstring with full entropy.
ステップ3で少なくとも\(n\)ビットを生成した後、ステップ4では左端の\(n\)ビットを一時ビット列(\(\mathit{temp}\))から選び、完全エントロピーを持つビット列として返します。
Step 5 returns the result from step 4 (i.e., \(\mathit{Full\text{-}Entropy\_bitstring}\)).
ステップ5では、ステップ4の結果(すなわち\(\mathit{Full\text{-}Entropy\_bitstring}\))を返します。
B.5.3. Reseeding an RBG3(XOR) Construction
B.5.3. RBG3(XOR)構成の再シード
The \(\mathrm{Hash\_DRBG}\) within the RBG3(XOR) construction must be reseeded at the end of its designed seedlife and may be reseeded on demand (e.g., by the consuming application). Reseeding will be automatic whenever the end of the DRBG’s seedlife is reached during a \(\mathbf{DRBG\_Generate}\) call (see [SP_800-90A] and step 2.3 in Appendix B.5.2.1).
RBG3(XOR)構成内の\(\mathrm{Hash\_DRBG}\)は、設計上のseedlifeの終了時に再シードしなければならず、要求に応じて(例:利用側アプリケーションから)再シードしてもよいです。\(\mathbf{DRBG\_Generate}\)呼び出し中にDRBGのseedlifeが終了した場合、自動的に再シードします([SP_800-90A]および付録B.5.2.1のステップ2.3を参照)。
The consuming application uses a reseed request to reseed the DRBG within the RBG3(XOR) construction:
利用側アプリケーションは、次の再シード要求を用いてRBG3(XOR)構成内のDRBGを再シードします。
A state handle is not provided for this example since none was provided during instantiation.
インスタンス化時にstate handleが返されていないため、この例ではstate handleを指定しません。
Whether reseeding is done automatically during a \(\mathbf{DRBG\_Generate}\) call or is specifically requested by a consuming application, the \(\mathbf{DRBG\_Reseed}\) call for this example is:
\(\mathbf{DRBG\_Generate}\)呼び出し中の自動再シードでも、利用側アプリケーションから明示的に要求された再シードでも、この例の\(\mathbf{DRBG\_Reseed}\)呼び出しは次のとおりです。
Again, a state handle is not provided since none was provided during instantiation.
インスタンス化時にstate handleが返されていないため、ここでもstate handleを指定しません。
A \(\mathbf{Get\_entropy\_bitstring}\) call to the entropy source is used to obtain the entropy for reseeding:
再シード用エントロピーは、エントロピー源への次の\(\mathbf{Get\_entropy\_bitstring}\)呼び出しによって取得します。
If status = SUCCESS is returned by the Get_entropy_bitstring call, seed_material consists of at least 256 bits that contain at least 256 bits of entropy. These bits are used by the DRBG_Reseed function to reseed the Hash_DRBG. If the reseed was requested by an application, the status is returned to that application.
Get_entropy_bitstring呼出しからstatus = SUCCESSが返された場合、seed_materialは、少なくとも256ビットのエントロピーを含む少なくとも256ビットで構成されます。これらのビットは、DRBG_Reseed関数がHash_DRBGを再シードするために使用します。再シードがアプリケーションによって要求された場合、そのstatusはアプリケーションに返されます。
If the \(\mathit{status}\) indicates an error, the \(\mathit{seed\_material}\) is a \(\mathit{Null}\) bitstring, and the \(\mathrm{Hash\_DRBG}\) is not reseeded. If the reseed was requested by an application, the error \(\mathit{status}\) is returned to the application.
\(\mathit{status}\)がエラーを示す場合、\(\mathit{seed\_material}\)は\(\mathit{Null}\)ビット列となり、\(\mathrm{Hash\_DRBG}\)は再シードされません。アプリケーションから再シード要求があった場合、エラーの\(\mathit{status}\)をアプリケーションへ返します。
B.6. Example of an RBG3(RS) Construction
B.6. RBG3(RS)構成の例
This construction is specified in Sec. 6.5 and requires an entropy source and a DRBG. Figure 51 depicts an RBG3(RS) construction with a directly accessible DRBG that has the same internal state and state handle.
この構成は6.5節で規定し、エントロピー源とDRBGを必要とします。図51は、DRBGへ直接アクセスでき、同じ内部状態とstate handleを共有するRBG3(RS)構成を示します。
図51. RBG3(RS)構成の例。2つの枠が重なっている。左がRBG3(RS) Construction(RBG3(RS)構成)と記された青い破線の枠、右がRBG2(P) Construction(RBG2(P)構成)と記された赤い一点鎖線の枠である。上部で両方の枠にまたがるPhysical Entropy Source(物理エントロピー源)と記された六角形から、同じく両方の枠にまたがるCTR_DRBGと記された箱へ下向きの矢印が向かう。赤い枠内のCTR_DRBGの右にDirectly Accessible DRBG(直接アクセス可能なDRBG)と記されている。CTR_DRBGから、1本の矢印が青い枠から下へ出てFull-entropy Output(完全エントロピー出力)というラベルに、もう1本が赤い枠から下へ出てPseudorandom Output(擬似乱数出力)というラベルに向かう。
Fig. 51. Example of an RBG3(RS) construction
図51. RBG3(RS)構成の例
The RBG3(RS) construction is indicated on the left with a dark blue dashed line (− − −), and the directly accessible DRBG is indicated by a red dashed line (− · − · ) on the right. The \(\mathrm{CTR\_DRBG}\) specified in [SP_800-90A] will be used as the DRBG with AES-256 used as the underlying block cipher for the DRBG.46 \(\mathrm{CTR\_DRBG}\) will be implemented using a derivation function located inside the \(\mathrm{CTR\_DRBG}\) implementation. In this case, full-entropy output will not be required from the entropy source (see [SP_800-90A]).
図の左側に濃い青色の破線(− − −)でRBG3(RS)構成を示し、右側に赤色の破線(− · − · )で直接アクセス可能なDRBGを示します。DRBGには[SP_800-90A]で規定する\(\mathrm{CTR\_DRBG}\)を用い、基盤となるブロック暗号にはAES-256を使用します。46 \(\mathrm{CTR\_DRBG}\)は、\(\mathrm{CTR\_DRBG}\)実装内にある導出関数を使って実装します。この場合、エントロピー源から完全エントロピー出力を得る必要はありません([SP_800-90A]を参照)。
46 For this example, \(\mathit{keylen} = 256\) and \(\mathit{blocklen} = 128\) for AES 256.
46 この例では、AES 256について\(\mathit{keylen} = 256\)、\(\mathit{blocklen} = 128\)です。
As specified in Sec. 6.5, a DRBG used as part of the RBG must be instantiated and reseeded at a security strength of 256 bits when AES-256 is used in the DRBG. For this example, the DRBG has a fixed security strength (i.e., 256 bits), which is hard coded into the implementation so will not be used as an input parameter.
第6.5節の規定に従い、AES-256をDRBGで使用する場合、RBGの一部として用いるDRBGはセキュリティ強度256ビットでインスタンス化し、再シードしなければなりません。この例ではセキュリティ強度を256ビットに固定し、実装に定数として組み込むため、入力パラメーターとして使いません。
Calls are made to the RBG3(RS) construction, as specified in Sec. 6.5. Calls made to the directly accessible DRBG (i.e., a DRBG that uses the same internal state as the RBG3(RS) construction) use the RBG calls specified in Sec. 5. Since an entropy source is always available, the directly accessed DRBG can be reseeded.
6.5節で規定するRBG3(RS)構成の関数を呼び出します。直接アクセス可能なDRBG(すなわちRBG3(RS)構成と内部状態を共有するDRBG)の呼び出しには、5章で規定するRBG関数を使います。エントロピー源は常に利用できるため、直接アクセスされるDRBGを再シードできます。
If the entropy source produces output at a slow rate, a consuming application might call the RBG3(RS) construction only when full-entropy bits are required, obtaining all other output from the directly accessible DRBG. Requirement 3 in Sec. 6.5.2 requires that the DRBG be reseeded whenever a request for generation by a directly accessible DRBG follows a request for generation by an RBG3(RS) construction that has the same internal state. For this example, a global variable (\(\mathit{last\_call}\)) within the RBG3(RS) security boundary is used to indicate whether the last use of the DRBG was as part of the RBG3(RS) construction or directly accessed:
エントロピー源の出力が遅い場合、利用側アプリケーションは完全エントロピービットが必要なときだけRBG3(RS)構成を呼び出し、それ以外の出力は直接アクセス可能なDRBGから取得することがあります。6.5.2節の要件3では、同じ内部状態を持つRBG3(RS)構成による生成要求の後に、直接アクセス可能なDRBGによる生成要求が続く場合、必ずDRBGを再シードするよう求めます。この例では、最後にDRBGをRBG3(RS)構成の一部として使用したか、直接アクセスしたかを示すため、RBG3(RS)セキュリティ境界内のグローバル変数(\(\mathit{last\_call}\))を用います。
• \(\mathit{last\_call} = 1\) if the DRBG was last used as part of the RBG3(RS) construction to provide full entropy output. If the next request is for generation by the DRBG directly, the DRBG must be reseeded before the requested output is generated.
• \(\mathit{last\_call} = 1\):DRBGを最後にRBG3(RS)構成の一部として使用し、完全エントロピー出力を提供した場合。次の要求がDRBGへの直接アクセスによる生成である場合、要求された出力を生成する前にDRBGを再シードしなければなりません。
• \(\mathit{last\_call} = 0\) otherwise. A reseed of the DRBG when accessed directly is not necessary. When the DRBG is first instantiated with entropy or the last request was for direct access to the DRBG, \(\mathit{last\_call}\) is set to zero.
• \(\mathit{last\_call} = 0\):それ以外の場合。直接アクセス時にDRBGを再シードする必要はありません。DRBGをエントロピーで最初にインスタンス化したとき、または直前の要求がDRBGへの直接アクセスだったとき、\(\mathit{last\_call}\)を0に設定します。
See [SP_800-90A] for information about the internal state of the \(\mathrm{CTR\_DRBG}\).
\(\mathrm{CTR\_DRBG}\)の内部状態については[SP_800-90A]を参照してください。
This example provides the following capabilities:
この例では、次の機能を提供します。
•Full-entropy output by the RBG3(RS) construction,
•RBG3(RS)構成による完全エントロピー出力。
•Fallback to the security strength of the RBG3(RS)’s DRBG instantiation (i.e., 256 bits) if the entropy source has an undetected failure,
•エントロピー源に未検出の故障がある場合、RBG3(RS)構成内のDRBGに設定したセキュリティ強度(256ビット)へフォールバックします。
•Direct access to the DRBG with a security strength of 256 bits for faster output when full-entropy output is not required,
•完全エントロピー出力が不要なときに高速に出力を得るため、セキュリティ強度 256ビットのDRBGへ直接アクセスします。
•Access to an entropy source to instantiate and reseed the DRBG, and
•DRBGのインスタンス化および再シードに用いるエントロピー源へアクセスします。
•On-demand reseeding of the DRBG (e.g., to provide prediction resistance for requests to the directly accessed DRBG).
•オンデマンドでDRBGを再シードします(例:直接アクセスするDRBGへの要求に予測耐性を提供するため)。
B.6.1. Instantiation of an RBG3(RS) Construction
B.6.1. RBG3(RS)構成のインスタンス化
Instantiation for this example consists of the instantiation of the CTR_DRBG used by the RBG3(RS) construction.
この例では、RBG3(RS)構成で使用するCTR_DRBGをインスタンス化します。
1.An application requests the instantiation of the RBG3(RS) construction using:
1.アプリケーションは、次の方法でRBG3(RS)構成のインスタンス化を要求します。
which requests the instantiation of the DRBG within the RBG3(RS) construction using “RBG3(RS) 2024” as the personalization string. In this example, the request does not include an indication of the security strength to be instantiated that would need to be checked against the security strength implemented for the DRBG (see Sec. 2.8.3.1 for a discussion).
これは、“RBG3(RS) 2024”をpersonalization stringとして使用して、RBG3(RS)構成内のDRBGのインスタンス化を要求するものです。この例では、要求には、インスタンス化するセキュリティ強度の指定が含まれていません。この指定があれば、DRBGに実装されたセキュリティ強度と照合する必要があります(説明は2.8.3.1節を参照してください)。
2.Upon receiving the request, the RBG3(RS) construction executes the instantiate function:
2.要求を受け取ると、RBG3(RS)構成はインスタンス化関数を実行します。
For this example, the \(\mathbf{RBG3(RS)\_Instantiate}\) function (see Sec. 6.5.1.1) in the DRBG includes an additional step to set the initial value of \(\mathit{last\_call}\) to zero. This indicates that a reseed of the DRBG before generating bits is not required if the first use of the DRBG is for direct access. Setting the initial value of \(\mathit{last\_call}\) is an implementation decision, but some method for indicating when \(s + 64\) bits of entropy is needed before generating bits is required:
この例では、DRBG内の\(\mathbf{RBG3(RS)\_Instantiate}\)関数(6.5.1.1節を参照)に、\(\mathit{last\_call}\)の初期値を0に設定するステップを追加します。これにより、DRBGの初回使用が直接アクセスの場合、ビット生成前にDRBGを再シードする必要がないことを示します。\(\mathit{last\_call}\)の初期値の設定は実装上の判断ですが、ビット生成前に\(s + 64\)ビットのエントロピーが必要となるタイミングを示す何らかの方法が必要です。
2.1 \((\mathit{status}, \mathit{RBG3\_DRBG\_state\_handle}) = \mathbf{DRBG\_Instantiate}(\mathit{personalization\_string})\).
2.1 \((\mathit{status}, \mathit{RBG3\_DRBG\_state\_handle}) = \mathbf{DRBG\_Instantiate}(\mathit{personalization\_string})\).
2.2 \(\mathit{last\_call} = 0\).
2.2 \(\mathit{last\_call} = 0\).
2.3 \(\mathrm{Return}(\mathit{status}, \mathit{RBG3\_DRBG\_state\_handle})\).
2.3 \(\mathrm{Return}(\mathit{status}, \mathit{RBG3\_DRBG\_state\_handle})\).
In step 2.1, the \(\mathbf{DRBG\_Instantiate}\) function is used to instantiate the \(\mathrm{CTR\_DRBG}\) using “RBG3(RS) 2024” as the personalization string. Since the required security strength is known (i.e., 256 bits), and a derivation function is used in the \(\mathrm{CTR\_DRBG}\) implementation, the required entropy (\(s + 128 = 384\) bits) is obtained from the entropy source using:
ステップ2.1では、\(\mathbf{DRBG\_Instantiate}\)関数を用い、“RBG3(RS) 2024”をpersonalization stringとして\(\mathrm{CTR\_DRBG}\)をインスタンス化します。必要なセキュリティ強度は既知(256ビット)であり、\(\mathrm{CTR\_DRBG}\)実装で導出関数を使用するため、必要なエントロピー(\(s + 128 = 384\)ビット)を次のとおりエントロピー源から取得します。
The \(\mathit{seed\_material}\) and personalization string are used to seed the \(\mathrm{CTR\_DRBG}\). Since the entropy source is known to be a physical entropy source, the counting method (i.e., Method 1) is known and not included as an input parameter.
\(\mathit{seed\_material}\)とpersonalization stringを使って\(\mathrm{CTR\_DRBG}\)にシードを設定します。エントロピー源は物理エントロピー源と分かっているため、計数方法(Method 1)も既知であり、入力パラメーターに含めません。
Step 2.2 sets \(\mathit{last\_call} = 0\) so that if the initial request is for direct access to the DRBG, a reseed will not be initially required before generating bits (i.e., entropy has just been acquired as a result of the instantiation process).
ステップ2.2では\(\mathit{last\_call} = 0\)に設定します。初回要求がDRBGへの直接アクセスの場合に、ビット生成前の再シードを最初は要求しないためです(インスタンス化処理の結果としてエントロピーを取得したばかりである)。
In step 2.3, the \(\mathit{status}\) and the state handle for the DRBG’s internal state are returned to the \(\mathbf{RBG3(RS)\_Instantiate}\) function and forwarded to the application in response to the instantiate request in step 1.
ステップ2.3では、\(\mathit{status}\)とDRBGの内部状態のstate handleを\(\mathbf{RBG3(RS)\_Instantiate}\)関数に返し、ステップ1のインスタンス化要求への応答としてアプリケーションへ転送します。
B.6.2. Generation by an RBG3(RS) Construction
B.6.2. RBG3(RS)構成による生成
Assuming that the DRBG in the RBG3(RS) construction has been instantiated (see Appendix B.6.1), the RBG can be invoked by a consuming application to generate outputs with full entropy.
RBG3(RS)構成内のDRBGがインスタンス化済みであると仮定すると(付録B.6.1を参照)、利用側アプリケーションはRBGを呼び出して完全エントロピーを持つ出力を生成できます。
1.An application requests the generation of full-entropy bits using:
1.アプリケーションは、次の方法で完全エントロピービットの生成を要求します。
where \(\mathit{RBG3\_DRBG\_state\_handle}\) was provided during DRBG instantiation (see Appendix B.6.1), and \(n\) is the number of requested bits.
ここで、\(\mathit{RBG3\_DRBG\_state\_handle}\)はDRBGのインスタンス化時に提供されたものであり(付録B.6.1を参照)、\(n\)は要求するビット数です。
2.Upon receiving the generate request, the RBG3(RS) construction executes the generate function (see Sec. 6.5.1.2):
2.generate要求を受け取ると、RBG3(RS)構成は6.5.1.2節の規定に従ってgenerate関数を実行します。
A few modifications to the \(\mathbf{RBG3(RS)\_Generate}\) function have been made, resulting in the following:47
\(\mathbf{RBG3(RS)\_Generate}\)関数にいくつかの変更を加え、次のようにしました。47
\(\mathbf{RBG3(RS)\_Generate}\):
\(\mathbf{RBG3(RS)\_Generate}\):
Input:
入力:
• \(\mathit{RBG3\_DRBG\_state\_handle}\): The state handle for the DRBG’s internal state (see Appendix B.6.1).
• \(\mathit{RBG3\_DRBG\_state\_handle}\):DRBGの内部状態のstate handle(付録B.6.1を参照)。
• \(n\): The number of full-entropy bits to be generated.
• \(n\):生成する完全エントロピービットの数。
Output:
出力:
• \(\mathit{status}\): The status returned from the \(\mathbf{RBG3(RS)\_Generate}\) function.
• \(\mathit{status}\):\(\mathbf{RBG3(RS)\_Generate}\)関数が返すstatus。
• \(\mathit{returned\_bits}\): The newly generated bits or a \(\mathit{Null}\) bitstring.
• \(\mathit{returned\_bits}\):新たに生成したビット列、または\(\mathit{Null}\)ビット列。
Process:
処理:
2.1 \(\mathit{temp} = \mathit{Null}\).
2.1 \(\mathit{temp} = \mathit{Null}\).
2.2 \(\mathit{sum} = 0\).
2.2 \(\mathit{sum} = 0\).
2.3 While \((\mathit{sum} < n)\),
2.3 \((\mathit{sum} < n)\)の間、次を実行します。
2.3.1 \(\mathit{status} = \mathbf{DRBG\_Reseed}(\mathit{RBG3\_DRBG\_state\_handle})\).
2.3.1 \(\mathit{status} = \mathbf{DRBG\_Reseed}(\mathit{RBG3\_DRBG\_state\_handle})\).
2.3.2 If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Null})\).
2.3.2 \((\mathit{status} \ne \mathrm{SUCCESS})\)の場合、\((\mathit{status}, \mathit{Null})\)を返します。
2.3.3 \((\mathit{status}, \mathit{full\_entropy\_bits} = \mathbf{DRBG\_Generate}(\mathit{RBG3\_DRBG\_state\_handle}, 256)\).
2.3.3 \((\mathit{status}, \mathit{full\_entropy\_bits} = \mathbf{DRBG\_Generate}(\mathit{RBG3\_DRBG\_state\_handle}, 256)\).
2.3.4 If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Null})\).
2.3.4 \((\mathit{status} \ne \mathrm{SUCCESS})\)の場合、\((\mathit{status}, \mathit{Null})\)を返します。
2.3.5 \(\mathit{temp} = \mathit{temp} \parallel \mathit{full\_entropy\_bits}\).
2.3.5 \(\mathit{temp} = \mathit{temp} \parallel \mathit{full\_entropy\_bits}\).
2.3.6 \(\mathit{sum} = \mathit{sum} + 256\).
2.3.6 \(\mathit{sum} = \mathit{sum} + 256\).
2.4 \(\mathit{last\_call} = 1\).
2.4 \(\mathit{last\_call} = 1\).
2.5 Return \((\mathrm{SUCCESS}, \mathbf{leftmost}(\mathit{temp}, n))\).
2.5 \((\mathrm{SUCCESS}, \mathbf{leftmost}(\mathit{temp}, n))\)を返します。
47 Recall that when the RBG3(RS) construction is executed, a reseed of the DRBG is performed before the generation of each \(s\)-bit bitstring.
47 RBG3(RS)構成を実行する際には、各\(s\)ビットのビット列を生成する前にDRBGの再シードを行うことを思い出されました。
Steps 2.1 and 2.2 initialize \(\mathit{temp}\) to a \(\mathit{Null}\) string for accumulating the requested output and \(\mathit{sum}\) to zero for counting the entropy generated.
ステップ2.1と2.2では、要求された出力を蓄積するために\(\mathit{temp}\)を\(\mathit{Null}\)文字列に初期化し、生成したエントロピーを数えるために\(\mathit{sum}\)を0に初期化します。
Step 2.3 generates the requested output with full entropy.
ステップ2.3では、要求された完全エントロピー出力を生成します。
• Step 2.3.1 reseeds the DRBG. Whenever the RBG3(RS) construction is requested to generate bits, the DRBG is always reseeded with \(s + 64 = 320\) bits directly from the entropy source (see Appendix B.6.4).
• ステップ2.3.1ではDRBGを再シードします。RBG3(RS)構成がビット生成を要求されるたびに、エントロピー源から直接得た\(s + 64 = 320\)ビットでDRBGを必ず再シードします(付録B.6.4を参照)。
• Step 2.3.2 checks the \(\mathit{status}\) of the reseed process and returns the \(\mathit{status}\) and a \(\mathit{Null}\) string if the reseed process was not successful.
• ステップ2.3.2では再シード処理の\(\mathit{status}\)を確認し、再シード処理に失敗した場合は\(\mathit{status}\)と\(\mathit{Null}\)文字列を返します。
• Step 2.3.3 requests the generation of \(s = 256\) bits.
• ステップ2.3.3では\(s = 256\)ビットの生成を要求します。
• Step 2.3.4 checks the \(\mathit{status}\) of the generate process and returns the \(\mathit{status}\) and a \(\mathit{Null}\) string if the generate process was not successful. The “256” could be omitted since it is known to be the same as the hard-coded security strength.
• ステップ2.3.4では生成処理の\(\mathit{status}\)を確認し、生成処理に失敗した場合は\(\mathit{status}\)と\(\mathit{Null}\)文字列を返します。「256」は、定数として組み込まれたセキュリティ強度と同じであることが分かっているため、省略してもよいです。
•Step 2.3.5 assembles the full entropy bitstring.
•ステップ2.3.5では完全エントロピービット列を組み立てます。
•Step 2.3.6 counts the number of bits assembled so far.
•ステップ2.3.6では、ここまでに組み立てたビット数を数えます。
In step 2.4, the \(\mathit{last\_call}\) value is set to one to indicate that the requested bits were generated by the RBG3(RS) construction rather than by direct use of the DRBG.
ステップ2.4では、要求されたビットがDRBGの直接使用ではなくRBG3(RS)構成によって生成されたことを示すため、\(\mathit{last\_call}\)の値を1に設定します。
3. The \(\mathit{status}\) and generated bits from the \(\mathbf{RBG3(RS)\_Generate}\) function in step 2 are returned to the RBG3(RS) construction and forwarded to the application in response to the generate request in step 1.
3. \(\mathit{status}\)と生成ビット(ステップ2の\(\mathbf{RBG3(RS)\_Generate}\)関数から得たもの)をRBG3(RS)構成に返し、ステップ1のgenerate要求への応答としてアプリケーションへ転送します。
B.6.3. Generation by the Directly Accessible DRBG
B.6.3. 直接アクセス可能なDRBGによる生成
Assuming that the DRBG has been instantiated (see Appendix B.6.1), it can be accessed directly by a consuming application in the same manner as the RBG2(P) example in Appendix B.4.2 using the \(\mathit{RBG3\_DRBG\_state\_handle}\) obtained during instantiation (see Appendix B.6.1). Pseudorandom bits can be generated directly by the \(\mathrm{CTR\_DRBG}\) as follows:
DRBGがインスタンス化済みであると仮定すると(付録B.6.1を参照)、利用側アプリケーションは、インスタンス化時に取得した\(\mathit{RBG3\_DRBG\_state\_handle}\)を使って(付録B.6.1を参照)、付録B.4.2のRBG2(P)の例と同じ方法でDRBGへ直接アクセスできます。疑似乱数ビットは、\(\mathrm{CTR\_DRBG}\)から次のように直接生成できます。
1.An application requests the generation of pseudorandom bits directly from the DRBG within the RBG3(RS) construction:
1.アプリケーションは、RBG3(RS)構成内のDRBGへ直接疑似乱数ビット生成を要求します。
where \(\mathit{RBG3\_DRBG\_state\_handle}\) was obtained during instantiation (see Appendix B.6.1), \(n\) is the requested number of bits to be returned, and \(s\) is the requested security strength.
ここで、\(\mathit{RBG3\_DRBG\_state\_handle}\)はインスタンス化時に取得したものであり(付録B.6.1を参照)、\(n\)は返却を要求するビット数、\(s\)は要求するセキュリティ強度です。
2. Upon receiving the generate request, the RBG3(RS) construction executes a \(\mathbf{DRBG\_Generate}\) function rather than an \(\mathbf{RBG3(RS)\_Generate}\) function:
2. generate要求を受け取ると、RBG3(RS)構成は\(\mathbf{DRBG\_Generate}\)関数を実行します。\(\mathbf{RBG3(RS)\_Generate}\)関数は実行しません。
The security strength parameter (i.e., 256) is omitted since its value has been hard-coded.
セキュリティ強度パラメーター(すなわち256)は定数として組み込まれているため、省略します。
The \(\mathbf{DRBG\_Generate}\) function specified in SP 800-90A has been modified below to determine whether a reseed is required before generating the requested output by checking the value of \(\mathit{last\_call}\). An extraction48 of the \(\mathbf{DRBG\_Generate}\) function in [SP_800-90A] is:
SP 800-90Aで規定する\(\mathbf{DRBG\_Generate}\)関数を以下のように変更し、\(\mathit{last\_call}\)の値を確認して、要求された出力を生成する前に再シードが必要かどうかを判定します。抜粋48として、[SP_800-90A]の\(\mathbf{DRBG\_Generate}\)関数の一部を次に示します。
[After other preliminary checks have been performed]
[その他の事前チェックが行われた後]
If \(((\mathit{last\_call} = 1)\ \mathrm{OR}\ (\mathit{reseed\_counter} > \mathit{reseed\_interval}))\), then
If \(((\mathit{last\_call} = 1)\ \mathrm{OR}\ (\mathit{reseed\_counter} > \mathit{reseed\_interval}))\), then
\(\mathit{status} = \mathbf{DRBG\_Reseed}(\mathit{RBG3\_DRBG\_state\_handle})\).
\(\mathit{status} = \mathbf{DRBG\_Reseed}(\mathit{RBG3\_DRBG\_state\_handle})\).
If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Null})\).
If \((\mathit{status} \ne \mathrm{SUCCESS})\), then return \((\mathit{status}, \mathit{Null})\).
...
...
\((\mathit{returned\_bits}, \mathit{new\_working\_state\_values}) = \mathbf{Generate\_algorithm}(\mathit{current\_working\_state\_values}, \mathit{requested\_number\_of\_bits})\).
\((\mathit{returned\_bits}, \mathit{new\_working\_state\_values}) = \mathbf{Generate\_algorithm}(\mathit{current\_working\_state\_values}, \mathit{requested\_number\_of\_bits})\).
\(\mathit{last\_call} = 0\).
\(\mathit{last\_call} = 0\).
[Closing steps to update the internal state]
[内部状態を更新するための終了ステップ]
An additional step has also been included above to indicate that this use of the DRBG is direct rather than part of the RBG3(RS) construction (i.e., setting \(\mathit{last\_call} = 0\)). This step is used to indicate that if the next use of the DRBG is also by direct access, a reseed is not required before generating bits.
上記には、DRBGのこの使用がRBG3(RS)構成の一部ではなく直接の使用であることを示すステップも追加しました(すなわち、\(\mathit{last\_call} = 0\)に設定する)。このステップは、DRBGの次の使用も直接アクセスである場合、ビットを生成する前の再シードが不要であることを示すために用います。
B.6.4. Reseeding a DRBG
B.6.4. DRBGの再シード
When operating as part of the RBG3(RS) construction, the \(\mathbf{DRBG\_Reseed}\) function is invoked one or more times to produce full-entropy output when the \(\mathbf{RBG3(RS)\_Generate}\) function is invoked by a consuming application (see Sec. 6.5.1.4).
RBG3(RS)構成の一部として動作する場合、完全エントロピー出力を生成するために\(\mathbf{DRBG\_Reseed}\)関数を1回以上呼び出します。これは、利用側アプリケーションが\(\mathbf{RBG3(RS)\_Generate}\)関数を呼び出したときに行います(6.5.1.4節を参照)。
When operating as the directly accessible DRBG, the DRBG is reseeded 1) if explicitly requested by the consuming application, 2) whenever the previous use of the DRBG was by the \(\mathbf{RBG3(RS)\_Generate}\) function (see Appendix B.6.2), or 3) automatically during a \(\mathbf{DRBG\_Generate}\) call at the end of the seedlife of the RBG2(P) construction (see the \(\mathbf{DRBG\_Generate}\) function specification in [SP_800-90A]).
直接アクセス可能なDRBGとして動作する場合、DRBGは、1) 利用側アプリケーションから明示的に要求された場合、2) DRBGの直前の使用が\(\mathbf{RBG3(RS)\_Generate}\)関数によるものであった場合(付録B.6.2を参照)、または3) RBG2(P)構成のseedlifeの終了時に\(\mathbf{DRBG\_Generate}\)呼び出しの中で自動的に、再シードされます([SP_800-90A]の\(\mathbf{DRBG\_Generate}\)関数の仕様を参照)。
1.The reseed function is requested by an application using:
1.アプリケーションは、次の方法で再シード関数を要求します。
where \(\mathit{RBG3\_DRBG\_state\_handle}\) was obtained during instantiation.
ここで、\(\mathit{RBG3\_DRBG\_state\_handle}\)はインスタンス化時に取得したものです。
2. The \(\mathbf{DRBG\_Reseed}\) function is executed in response to a reseed request by an application (see step 1) or during the generation process (see Appendices B.6.2 and B.6.3):
2. \(\mathbf{DRBG\_Reseed}\)関数は、アプリケーションからの再シード要求への応答として(ステップ1を参照)、または生成処理の中で(付録B.6.2およびB.6.3を参照)実行されます。
48 The complete \(\mathbf{DRBG\_Generate}\) function is significantly longer.
48 \(\mathbf{DRBG\_Generate}\)関数の全体は、これよりかなり長い。
For this example, the \(\mathbf{Get\_entropy\_bitstring}\) call within the \(\mathbf{DRBG\_Reseed}\) function is modified to obtain \(s + 64\) bits of entropy rather than the “normal” \(s\) bits of entropy (see method A for step 3.1 in Sec. 6.5.1.4).
この例では、\(\mathbf{Get\_entropy\_bitstring}\)呼び出し(\(\mathbf{DRBG\_Reseed}\)関数内にある)を変更し、\(s + 64\)ビットのエントロピーを取得するようにします。「通常」の\(s\)ビットのエントロピーは取得しません(6.5.1.4節のステップ3.1の方法Aを参照)。
If \(\mathit{status} = \mathrm{SUCCESS}\) is returned by the \(\mathbf{DRBG\_Reseed}\) function, the internal state has been updated with at least 320 bits of fresh entropy (i.e., \(256 + 64 = 320\)). \(\mathit{Status} = \mathrm{SUCCESS}\) is returned to the calling application by the \(\mathbf{DRBG\_Reseed}\) function.
If \(\mathit{status} \ne \mathrm{SUCCESS}\) (e.g., the entropy source has failed), the DRBG has not reseeded, and an error indication is returned as the status from \(\mathbf{DRBG\_Reseed}\) function to the calling application.
\(\mathit{status} = \mathrm{SUCCESS}\)が\(\mathbf{DRBG\_Reseed}\)関数から返された場合、内部状態は少なくとも320ビットの新しいエントロピーで更新されています(すなわち、\(256 + 64 = 320\))。\(\mathit{Status} = \mathrm{SUCCESS}\)は、\(\mathbf{DRBG\_Reseed}\)関数が呼び出し元アプリケーションに返します。
\(\mathit{status} \ne \mathrm{SUCCESS}\)の場合(例:エントロピー源が故障した)、DRBGは再シードされておらず、エラー表示がstatusとして\(\mathbf{DRBG\_Reseed}\)関数から呼び出し元アプリケーションに返されます。
B.7. DRBG Tree Using the RBGC Construction
B.7. RBGC構成を用いたDRBGツリー
A tree of DRBGs consists of RBGC constructions and an initial randomness source on the same computing platform. For this example, the initial randomness source is a physical entropy source that provides output with full entropy (i.e., the initial randomness source is a full-entropy source). The tree includes two RBGC constructions: the root RBGC construction (\(\mathrm{RBGC}_1\)) and a child (\(\mathrm{RBGC}_2\)) (see Fig. 52).
DRBG のツリーは、同一のコンピューティングプラットフォーム上の RBGC 構成と初期乱数源から成ります。この例では、初期乱数源は完全エントロピーの出力を提供する物理エントロピー源です(すなわち、初期乱数源は完全エントロピー源である)。このツリーには 2 つの RBGC 構成、すなわちルート RBGC 構成(\(\mathrm{RBGC}_1\))とその子(\(\mathrm{RBGC}_2\))が含まれます(図52を参照)。
図52. RBGC構成のDRBGツリーの例。Cryptographic Module(暗号モジュール)と記された箱が3つある。左上のモジュールにはInitial Randomness Source (Entropy source)(初期乱数源(エントロピー源))と記された緑の箱がある。左下のモジュールにはCTR_DRBGを囲む(Root) RBGC1と記された赤枠があり、右のモジュールにはHMAC_DRBGを囲むRBGC2と記された赤枠がある。Initial Randomness Sourceから下へCTR_DRBGに矢印が向かい、CTR_DRBGからHMAC_DRBGへ矢印が向かう。右の楕円のApplicationAからCTR_DRBGへ矢印が向かう。右上の楕円のApplicationBとHMAC_DRBGは両方向の矢印で結ばれている。
Fig. 52. Example of a DRBG tree of RBGC constructions
図52. RBGC構成のDRBGツリーの例
In this example, a \(\mathrm{CTR\_DRBG}\) with no derivation function is used in the root (\(\mathrm{RBGC}_1\)). It will be seeded and reseeded at a security strength of 192 bits using the initial randomness source.
この例では、導出関数なしの\(\mathrm{CTR\_DRBG}\)をroot(\(\mathrm{RBGC}_1\))で用います。これは初期乱数源を用いてセキュリティ強度 192ビットでシードおよび再シードします。
\(\mathrm{RBGC}_2\) is implemented using SHA-256 and the \(\mathrm{HMAC\_DRBG}\). \(\mathrm{RBGC}_2\) will be seeded and reseeded at a security strength of 128 bits using the root (\(\mathrm{RBGC}_1\)) as its randomness source.
\(\mathrm{RBGC}_2\)はSHA-256および\(\mathrm{HMAC\_DRBG}\)を用いて実装します。\(\mathrm{RBGC}_2\)は、root(\(\mathrm{RBGC}_1\))を乱数源として、セキュリティ強度 128ビットでシードおよび再シードします。
B.7.1. Instantiation of the RBGC Constructions
B.7.1. RBGC構成のインスタンス化
The DRBG in each RBGC construction is instantiated by an application using a known randomness source, starting with the instantiation of the DRBG in the root using the initial randomness source (see Appendix B.7.1.1). Subsequent layers in the tree can be instantiated when an already-instantiated RBGC construction is available. For this example, after the root has been instantiated, the DRBG in a child RBGC construction (\(\mathrm{RBGC}_2\)) can be instantiated using the root as its randomness source (see Sec. 7.2.1.2).
各RBGC構成内のDRBGは、既知の乱数源を用いてアプリケーションがインスタンス化します。まず初期乱数源を用いてroot内のDRBGをインスタンス化します(付録B.7.1.1を参照)。すでにインスタンス化されたRBGC構成があれば、ツリーの後続階層をインスタンス化できます。この例ではrootのインスタンス化後、子RBGC構成(\(\mathrm{RBGC}_2\))内のDRBGを、rootを乱数源としてインスタンス化できます(第7.2.1.2節を参照)。
B.7.1.1. Instantiation of the Root RBGC Construction
B.7.1.1. Root RBGC構成のインスタンス化
The root of the DRBG tree is instantiated using the initial randomness source, which for this example is an entropy source that provides output with full entropy. The instantiation is requested by an application (e.g., \(\mathrm{Application}_{\mathrm{A}}\) in Fig. 52). The \(\mathrm{CTR\_DRBG}\) in the root is implemented using AES-192, so a maximum security strength of 192 bits can be instantiated.
DRBGツリーのrootは初期乱数源を用いてインスタンス化します。この例では、初期乱数源は完全エントロピーの出力を提供するエントロピー源です。インスタンス化はアプリケーション(例:図52の\(\mathrm{Application}_{\mathrm{A}}\))が要求します。root内の\(\mathrm{CTR\_DRBG}\)はAES-192で実装するため、インスタンス化できる最大セキュリティ強度は192ビットです。
1. The application (\(\mathrm{Application}_{\mathrm{A}}\)) sends an instantiate request to the root requesting that the DRBG within the root be instantiated at a security strength of 192 bits:
1. アプリケーション(\(\mathrm{Application}_{\mathrm{A}}\))はrootにインスタンス化要求を送り、root内のDRBGをセキュリティ強度 192ビットでインスタンス化するよう要求する:
where “Root RBGC” is the personalization string, and \(\mathit{Root\_DRBG\_state\_handle}\) is the name of the state handle to be assigned to the internal state of the root’s DRBG.
ここで、“Root RBGC”はpersonalization stringであり、\(\mathit{Root\_DRBG\_state\_handle}\)はrootのDRBGの内部状態に割り当てるstate handleの名前です。
2. Upon receiving the instantiate request, the root (\(\mathrm{RBGC}_1\)) executes the instantiate function for its DRBG:
2. インスタンス化要求を受け取ると、root(\(\mathrm{RBGC}_1\))は自身のDRBGのインスタンス化関数を実行する:
The \(\mathbf{DRBG\_Instantiate}\) function in the root determines that its DRBG (\(\mathrm{CTR\_DRBG}\)) needs to obtain \(\mathit{keylen} + \mathit{blocklen}\) bits (i.e., \(192 + 128 = 320\) bits) with full entropy from the full-entropy source. The root sends a \(\mathbf{Get\_entropy\_bitstring}\) request to the randomness source to obtain 320 bits of seed material:
root内の\(\mathbf{DRBG\_Instantiate}\)関数は、自身のDRBG(\(\mathrm{CTR\_DRBG}\))が完全エントロピーを持つ\(\mathit{keylen} + \mathit{blocklen}\)ビット(すなわち\(192 + 128 = 320\)ビット)を完全エントロピー源から取得する必要があると判断します。rootは乱数源へ\(\mathbf{Get\_entropy\_bitstring}\)要求を送り、320ビットのシード材料を取得する:
\(\mathit{Method\_1}\) indicates that only entropy from a physical entropy source is to be counted.
\(\mathit{Method\_1}\)は、物理エントロピー源から得られるエントロピーのみを計数することを示します。
If the \(\mathit{status}\) indicates success, and \(\mathit{seed\_material}\) is returned from the initial randomness source (i.e., the full-entropy source), the \(\mathrm{CTR\_DRBG}\) is seeded using the \(\mathit{seed\_material}\) and the \(\mathit{personalization\_string}\) (see [SP_800-90A]). The internal state is recorded (including the security strength of the instantiation), and the \(\mathit{status}\) and a state handle are returned to the root (\(\mathrm{RBC}_1\)) and forwarded to the application in response to the instantiate request.
\(\mathit{status}\)が成功を示し、初期乱数源(すなわち完全エントロピー源)から\(\mathit{seed\_material}\)が返された場合、\(\mathrm{CTR\_DRBG}\)は\(\mathit{seed\_material}\)と\(\mathit{personalization\_string}\)を用いてシードされます([SP_800-90A]を参照)。インスタンス化のセキュリティ強度を含む内部状態を記録し、\(\mathit{status}\)とstate handleをroot(\(\mathrm{RBC}_1\))へ返し、インスタンス化要求への応答としてアプリケーションへ転送します。
If the \(\mathit{status}\) indicates an error, the internal state is not created. The \(\mathit{status}\) and an invalid state handle are returned to the root (\(\mathrm{RBC}_1\)) and forwarded to the application in response to the instantiate request.
\(\mathit{status}\)がエラーを示す場合、内部状態は作成しません。\(\mathit{status}\)と無効なstate handleをroot(\(\mathrm{RBC}_1\))へ返し、インスタンス化要求への応答としてアプリケーションへ転送します。
B.7.1.2. Instantiation of a Child RBGC Construction (\(\mathrm{RBGC}_2\))
B.7.1.2. 子RBGC構成(\(\mathrm{RBGC}_2\))のインスタンス化
A child RBGC construction can be instantiated by an application (e.g., \(\mathrm{Application}_{\mathrm{B}}\) in Fig. 52) after the root has been successfully instantiated. In this example, the \(\mathrm{HMAC\_DRBG}\) in \(\mathrm{RBGC}_2\) is implemented using SHA-256, so a maximum security strength of 256 bits is possible. However, since the root RBGC construction (i.e., the randomness source for \(\mathrm{RBGC}_2\)) can only support a security strength of 192 bits (see Appendix B.7.1.1), only requests for security strengths of 192 bits or less can be instantiated for \(\mathrm{RBGC}_2\).
rootのインスタンス化が成功した後、アプリケーション(例:図52の\(\mathrm{Application}_{\mathrm{B}}\))は子RBGC構成をインスタンス化できます。この例では、\(\mathrm{HMAC\_DRBG}\)を\(\mathrm{RBGC}_2\)内でSHA-256により実装するため、最大セキュリティ強度は256ビットまで可能です。ただし、root RBGC構成(すなわち\(\mathrm{RBGC}_2\)の乱数源)がサポートできるセキュリティ強度は192ビットに限られるため(付録B.7.1.1を参照)、セキュリティ強度 192ビット以下の要求だけを\(\mathrm{RBGC}_2\)に対してインスタンス化できます。
The DRBG in \(\mathrm{RBGC}_2\) is instantiated as follows:
\(\mathrm{RBGC}_2\)内のDRBGを次のとおりインスタンス化する:
1. An application (\(\mathrm{Application}_{\mathrm{B}}\)) requests the instantiation of the DRBG in \(\mathrm{RBGC}_2\) at a security strength of 128 bits:
1. アプリケーション(\(\mathrm{Application}_{\mathrm{B}}\))は、\(\mathrm{RBGC}_2\)内のDRBGをセキュリティ強度 128ビットでインスタンス化するよう要求する:
where “RBGC2 DRBG” is the personalization string, and \(\mathit{RBGC2\_DRBG\_state\_handle}\) is the name of the state handle to be assigned to the internal state of the DRBG in the \(\mathrm{RBGC}_2\) construction.
ここで、“RBGC2 DRBG”はpersonalization stringであり、\(\mathit{RBGC2\_DRBG\_state\_handle}\)は\(\mathrm{RBGC}_2\)構成内のDRBGの内部状態に割り当てるstate handleの名前です。
2. Upon receiving the instantiate request, the \(\mathrm{RBGC}_2\) construction executes the instantiate function for its DRBG:
2. インスタンス化要求を受け取ると、\(\mathrm{RBGC}_2\)構成は自身のDRBG用のインスタンス化関数を実行する:
The \(\mathbf{DRBG\_Instantiate}\) function in the DRBG sends a generate request to the root:
DRBG内の\(\mathbf{DRBG\_Instantiate}\)関数は、rootへgenerate要求を送る:
where:
ここで:
• \(\mathit{Root\_DRBG\_state\_handle}\) is the state handle for the internal state of the DRBG in the root (see Sec. 7.1.1).
• \(\mathit{Root\_DRBG\_state\_handle}\)は、root内のDRBGの内部状態を示すstate handleです(第7.1.1節参照)。
• The requested security strength is 128 bits, so for the \(\mathrm{HMAC\_DRBG}\) in \(\mathrm{RBGC}_2\), the number of bits requested from the root (i.e., \(\mathrm{RBGC}_2\)’s randomness source) is \(3s/2 = 192\) bits.
• 要求されたセキュリティ強度は128ビットであるため、\(\mathrm{HMAC\_DRBG}\)(\(\mathrm{RBGC}_2\)内のもの)については、root(すなわち\(\mathrm{RBGC}_2\)の乱数源)に要求するビット数は\(3s/2 = 192\)ビットとなります。
See Appendix B.7.2 for the handling of a generate request by an RBGC construction.
RBGC構成におけるgenerate要求の処理については、付録B.7.2を参照してください。
If the \(\mathit{status}\) returned from the randomness source (i.e., \(\mathrm{RBGC}_1\)) in response to the generate request indicates a success, the \(\mathrm{HMAC\_DRBG}\) in \(\mathrm{RBGC}_2\) is seeded using the \(\mathit{seed\_material}\) returned from the generate request (see Appendix B.7.2) and the \(\mathit{personalization\_string}\) (“RBGC2 DRBG”) from the instantiate request in step 1 (see [SP_800-90A]). The internal state is recorded (including the security strength of the instantiation), and the \(\mathit{status}\) and state handle are returned to the \(\mathrm{RBGC}_2\) construction to be forwarded to the application that requested the instantiation of the DRBG in the \(\mathrm{RBGC}_2\) construction (i.e., \(\mathrm{Application}_{\mathrm{B}}\)).
生成要求に対して乱数源(すなわち \(\mathrm{RBGC}_1\))から返された \(\mathit{status}\) が成功を示す場合、\(\mathrm{RBGC}_2\) 内の \(\mathrm{HMAC\_DRBG}\) は、その生成要求から返された \(\mathit{seed\_material}\)(付録B.7.2を参照)と、手順1のインスタンス化要求で与えた \(\mathit{personalization\_string}\)(“RBGC2 DRBG”)を用いてシードされます([SP_800-90A]を参照)。内部状態(インスタンス化のセキュリティ強度を含む)が記録され、\(\mathit{status}\) と状態ハンドルが \(\mathrm{RBGC}_2\) 構成に返されます。これらは、\(\mathrm{RBGC}_2\) 構成内の DRBG のインスタンス化を要求したアプリケーション(すなわち \(\mathrm{Application}_{\mathrm{B}}\))に転送されます。
If the \(\mathit{status}\) indicates an error, then the internal state is not created. The \(\mathit{status}\) and an invalid state handle are returned to the \(\mathrm{RBGC}_2\) construction to be forwarded to the application that requested the instantiation of the DRBG in the \(\mathrm{RBGC}_2\) construction.
\(\mathit{status}\)がエラーを示す場合、内部状態は作成しません。\(\mathit{status}\)と無効なstate handleを\(\mathrm{RBGC}_2\)構成へ返し、\(\mathrm{RBGC}_2\)構成内のDRBGのインスタンス化を要求したアプリケーションへ転送します。
B.7.2. Requesting the Generation of Pseudorandom Bits
B.7.2. 疑似乱数ビットの生成要求
1. An application or a child RBGC construction (e.g., \(\mathrm{Application}_{\mathrm{A}}\) or \(\mathrm{RBGC}_2\) in Fig. 52) requests the generation of pseudorandom bits as follows:
1. アプリケーションまたは子RBGC構成(例:図52の\(\mathrm{Application}_{\mathrm{A}}\)または\(\mathrm{RBGC}_2\))は、次のように擬似乱数ビットの生成を要求する:
where:
ここで、
• \(\mathit{DRBG\_state\_handle}\) is the state handle for the internal state of the DRBG in the RBGC construction requested to generate the bits. For this example, if \(\mathrm{Application}_{\mathrm{A}}\) is requesting the generation of bits from the root or the DRBG in \(\mathrm{RBGC}_2\) is requesting the root to generate bits, the state handle is \(\mathit{Root\_DRBG\_state\_handle}\). If \(\mathrm{Application}_{\mathrm{B}}\) is requesting the generation of bits from the \(\mathrm{RBGC}_2\) construction, the state handle is \(\mathit{RBG2\_DRBG\_state\_handle}\).
• \(\mathit{DRBG\_state\_handle}\)は、ビットの生成を要求されたRBGC構成内のDRBGの内部状態を示すstate handleです。この例では、\(\mathrm{Application}_{\mathrm{A}}\)がrootにビットの生成を要求する場合、または\(\mathrm{RBGC}_2\)内のDRBGがrootにビットの生成を要求する場合、state handleは\(\mathit{Root\_DRBG\_state\_handle}\)です。\(\mathrm{Application}_{\mathrm{B}}\)が\(\mathrm{RBGC}_2\)構成にビットの生成を要求する場合、state handleは\(\mathit{RBG2\_DRBG\_state\_handle}\)です。
• \(n\) is the number of bits to be generated using the DRBG in the RBGC construction.
• \(n\)は、そのRBGC構成内のDRBGで生成するビット数です。
• \(s\) is the required security strength to be supported by the DRBG in the RBGC construction.
• \(s\)は、そのRBGC構成内のDRBGがサポートする必要があるセキュリティ強度です。
2.Upon receiving the generate request, the RBGC construction executes the generate function for its DRBG:
2.生成要求を受け取ると、RBGC構成は自身のDRBGの生成関数を実行します。
If the returned \(\mathit{status}\) indicates success, the requested number of bits are returned (\(\mathit{seed\_material}\)) to the RBGC construction and forwarded to the requesting entity with the \(\mathit{status}\). The requesting entity is either an application or a child of the RBGC construction (e.g., \(\mathrm{Application}_{\mathrm{A}}\), \(\mathrm{Application}_{\mathrm{B}}\), or \(\mathrm{RBGC}_2\) in Fig. 52).
返された\(\mathit{status}\)が成功を示す場合、要求された数のビット(\(\mathit{seed\_material}\))をRBGC構成へ返し、\(\mathit{status}\)とともに要求元へ転送します。要求元は、アプリケーションまたはRBGC構成の子である(例:図52の\(\mathrm{Application}_{\mathrm{A}}\)、\(\mathrm{Application}_{\mathrm{B}}\)、または\(\mathrm{RBGC}_2\))。
If the returned status indicates an error, \(\mathit{seed\_material}\) is a \(\mathit{Null}\) bitstring. This could, for example, be the result of requesting a higher security strength than is instantiated for the DRBG requested to generate bits. The \(\mathit{status}\) and the \(\mathit{Null}\) bitstring are returned to the RBGC construction and forwarded to the requesting entity.
返されたstatusがエラーを示す場合、\(\mathit{seed\_material}\)は\(\mathit{Null}\)ビット列となります。これは、たとえば、ビットの生成を要求されたDRBGがインスタンス化されたセキュリティ強度よりも高いセキュリティ強度を要求した結果として生じうます。\(\mathit{status}\)と\(\mathit{Null}\)ビット列をRBGC構成へ返し、要求元へ転送します。
B.7.3. Reseeding an RBGC Construction
B.7.3. RBGC構成の再シード
The DRBG in an RBGC construction may be explicitly requested to be reseeded by an application, or the DRBG may automatically reseed itself (e.g., at the end of its seedlife or after some system interrupt).
アプリケーションからRBGC構成内のDRBGに明示的な再シードを要求できます。また、DRBGが自動的に再シードする場合もあります(例:seedlifeの終了時、またはシステム割込み後)。
1.An application requests the reseed of a DRBG in an RBGC construction as follows:
1.アプリケーションは次のように、RBGC構成内のDRBGに再シードを要求する:
\(\mathit{DRBG\_state\_handle}\) is \(\mathit{Root\_DRBG\_state\_handle}\) for \(\mathrm{RBGC}_1\) and \(\mathit{RBG2\_DRBG\_state\_handle}\) for \(\mathrm{RBGC}_2\).
\(\mathit{DRBG\_state\_handle}\) は、\(\mathrm{RBGC}_1\) では \(\mathit{Root\_DRBG\_state\_handle}\)、\(\mathrm{RBGC}_2\) では \(\mathit{RBG2\_DRBG\_state\_handle}\) です。
2.Upon receiving a reseed request or if scheduled for automatic reseeding, the RBGC construction executes the reseed function for its DRBG:
2.再シード要求を受信した場合、または自動再シードが予定されている場合、RBGC構成は自身のDRBG用再シード関数を実行する:
Appendix B.7.3.1 discusses the reseed function in the root’s DRBG, and Appendix B.7.3.2 discusses the reseed function in the DRBG of \(\mathrm{RBGC}_2\).
root内DRBGの再シード関数については付録B.7.3.1で、\(\mathrm{RBGC}_2\)内DRBGの再シード関数については付録B.7.3.2で説明します。
B.7.3.1. Reseeding the Root RBGC Construction
B.7.3.1. ルートRBGC構成の再シード
The \(\mathbf{DRBG\_Reseed}\) function in the root uses the initial randomness source to reseed in the same manner as for instantiation (by sending a \(\mathbf{Get\_entropy\_bitstring}\) request to the entropy source). For the \(\mathrm{CTR\_DRBG}\) in the root, 320 bits are again requested:
root内の\(\mathbf{DRBG\_Reseed}\)関数は、インスタンス化時と同じ方法で初期乱数源を用いて再シードします(エントロピー源に\(\mathbf{Get\_entropy\_bitstring}\)要求を送る)。root内の\(\mathrm{CTR\_DRBG}\)向けに、再び320ビットを要求する:
If the returned \(\mathit{status}\) indicates a success, \(\mathit{seed\_material}\) is returned from the initial randomness source, and the \(\mathrm{CTR\_DRBG}\) within the root is reseeded using the \(\mathit{seed\_material}\) (see [SP_800-90A]). The DRBG’s internal state is updated, and the \(\mathit{status}\) is returned to the application by the \(\mathbf{DRBG\_Reseed}\) function in the root RBGC construction.
返された\(\mathit{status}\)が成功を示す場合、初期乱数源から\(\mathit{seed\_material}\)が返され、root内の\(\mathrm{CTR\_DRBG}\)はこの\(\mathit{seed\_material}\)を用いて再シードされます([SP_800-90A]参照)。DRBGの内部状態を更新し、\(\mathit{status}\)は、root RBGC構成内の\(\mathbf{DRBG\_Reseed}\)関数がアプリケーションへ返します。
If the \(\mathit{status}\) indicates an error, then the internal state is not updated. The \(\mathit{status}\) is returned to the application.
\(\mathit{status}\)がエラーを示す場合、内部状態は更新しません。\(\mathit{status}\)をアプリケーションへ返します。
B.7.3.2. Reseeding a Child RBGC Construction
B.7.3.2. 子RBGC構成の再シード
The \(\mathbf{DRBG\_Reseed}\) function in the RBGC construction uses its randomness source in the same manner as for instantiation (by sending a \(\mathbf{DRBG\_Generate\_request}\) to its randomness source, which is the root in this example). In this example, the root RBGC construction is available, so an alternate source of randomness for reseeding is not necessary.
RBGC構成内の\(\mathbf{DRBG\_Reseed}\)関数は、インスタンス化時と同じ方法で乱数源を使用します(この例では、乱数源であるrootへ\(\mathbf{DRBG\_Generate\_request}\)を送る)。この例ではroot RBGC構成を利用できるため、再シード用に代替乱数源を用意する必要はありません。
For the \(\mathrm{HMAC\_DRBG}\) in \(\mathrm{RBGC}_2\), \(s = 128\) bits are requested from the root RBGC construction, where \(s\) is the security strength of the DRBG instantiation in \(\mathrm{RBGC}_2\) (see Appendix B.7.1.2).
\(\mathrm{HMAC\_DRBG}\)(\(\mathrm{RBGC}_2\)内)については、\(s = 128\)ビットをroot RBGC構成へ要求します。ここで\(s\)は、\(\mathrm{RBGC}_2\)内のDRBGのインスタンス化のセキュリティ強度です(付録B.7.1.2参照)。
where:
ここで:
• \(\mathit{Root\_DRBG\_state\_handle}\) is the state handle for the internal state of the DRBG in the root (see Appendix B.7.1.1).
• \(\mathit{Root\_DRBG\_state\_handle}\)は、root内のDRBGの内部状態を示すstate handleです(付録B.7.1.1参照)。
• The requested security strength is 128 bits, so for the \(\mathrm{HMAC\_DRBG}\) in \(\mathrm{RBGC}_2\), the number of bits requested from the root (\(\mathrm{RBGC}_2\)’s randomness source) is \(s = 128\) bits.
• 要求されたセキュリティ強度は128ビットであるため、\(\mathrm{HMAC\_DRBG}\)(\(\mathrm{RBGC}_2\)内)では、root(\(\mathrm{RBGC}_2\)の乱数源)に要求するビット数は\(s = 128\)ビットです。
Appendix B.7.2 discusses the handling of a generate request by an RBGC construction.
RBGC構成におけるgenerate要求の処理については、付録B.7.2で説明します。
Appendix C. List of Abbreviations, Acronyms, and Symbols
付録C. 略語、頭字語および記号の一覧
C.1. List of Abbreviations and Acronyms
C.1. 略語および頭字語の一覧
AES Advanced Encryption Standard49
AES Advanced Encryption Standard49
CAVP Cryptographic Algorithm Validation Program
CAVP Cryptographic Algorithm Validation Program(暗号アルゴリズム検証プログラム)
CMVP Cryptographic Module Validation Program
CMVP Cryptographic Module Validation Program(暗号モジュール検証プログラム)
DRBG Deterministic Random Bit Generator50
DRBG Deterministic Random Bit Generator50
FIPS Federal Information Processing Standard
FIPS Federal Information Processing Standard(連邦情報処理標準)
MAC Message Authentication Code
MAC Message Authentication Code(メッセージ認証コード)
NIST National Institute of Standards and Technology
NIST National Institute of Standards and Technology(米国国立標準技術研究所)
RBG Random Bit Generator
RBG Random Bit Generator(乱数ビット生成器)
SP (NIST) Special Publication
SP Special Publication(特別刊行物、NIST)
Sub-DRBG Subordinate DRBG
Sub-DRBG Subordinate DRBG(従属DRBG)
TDEA Triple Data Encryption Algorithm51
TDEA Triple Data Encryption Algorithm51
XOR Exclusive-Or (operation)
XOR Exclusive-OR(排他的論理和演算)
C.2. List of Symbols
C.2. 記号一覧
\(0^x\) A string of \(x\) zeroes.
\(0^x\) \(x\)個の0からなる文字列。
\(\lceil x \rceil\) The ceiling of \(x\); the least integer number that is not less than the real number \(x\). For example, \(\lceil 3 \rceil = 3\), and \(\lceil 5.5 \rceil = 6\).
\(\lceil x \rceil\) \(x\) の天井関数。実数 \(x\) 以上の最小の整数。例えば、\(\lceil 3 \rceil = 3\)、\(\lceil 5.5 \rceil = 6\) です。
\(\min(a, b)\) The minimum of \(a\) and \(b\).
\(\min(a, b)\) \(a\) と \(b\) の最小値。
\(s\) The security strength.
\(s\) セキュリティ強度。
\(X \oplus Y\) Boolean bitwise exclusive-or (also bitwise addition modulo 2) of two bitstrings \(X\) and \(Y\) of the same length.
\(X \oplus Y\) 2つのビット列\(X\)および\(Y\)(同じ長さ)に対するブール論理のビット単位排他的論理和(ビット単位の2を法とする加算でもある)。
\(+\) Addition over real numbers.
\(+\) 実数上の加算。
\(\mathrm{X} \parallel \mathrm{Y}\) The concatenation of two bitstrings \(X\) and \(Y\).
\(\mathrm{X} \parallel \mathrm{Y}\) 2つのビット列\(X\)および\(Y\)の連結。
Appendix D. Glossary
付録D. 用語集
additional input Optional additional information that could be provided in a generate or reseed request by a consuming application.
additional input(追加入力) 消費アプリケーションが生成要求または再シード要求で提供できる、任意の追加情報。
adversary A malicious entity whose goal is to determine, guess, or influence the output of an RBG.
adversary(攻撃者) RBG の出力を判定し、推測し、または操作することを目的とする悪意あるエンティティ。
alternative randomness source A sibling of the parent randomness source, an ancestor of the RBGC construction to be reseeded, or the initial randomness source.
alternative randomness source(代替乱数源) 親乱数源の兄弟、再シード対象の RBGC 構成の祖先、または初期乱数源。
ancestor (randomness source) A parent, grandparent, or other direct RBGC predecessor (including the root RBGC construction) of an RBGC construction.
ancestor (randomness source)(祖先(乱数源)) RBGC 構成の親、祖父母、またはその他の直接の RBGC の先行者(ルート RBGC 構成を含みます)。
approved An algorithm or technique for a specific cryptographic use that is specified in a FIPS or NIST recommendation, adopted in a FIPS or NIST recommendation, or specified in a list of NIST-approved security functions.
approved(承認済み) 特定の暗号用途に対するアルゴリズムまたは技術で、FIPS もしくは NIST 勧告に規定されているか、FIPS もしくは NIST 勧告で採用されているか、または NIST 承認のセキュリティ機能のリストに規定されているもの。
backtracking resistance A property of a DRBG that provides assurance that compromising the current internal state of the DRBG does not weaken previously generated outputs. See [SP_800-90A] for a more complete discussion. Contrast with prediction resistance.
backtracking resistance(後方追跡耐性) DRBG の現在の内部状態が危殆化しても、以前に生成された出力が弱体化しないことを保証する、DRBG の性質。より詳しい議論は[SP_800-90A]を参照してください。予測耐性と対比せよ。
biased A random variable is said to be biased if values of the finite sample space are selected with unequal probability. Contrast with unbiased.
biased(偏りがある) 有限標本空間の値が等しくない確率で選択される場合、確率変数に偏りがあるといいます。偏りがない(unbiased)と対比せよ。
big-endian format A format in which the most significant bytes (the bytes containing the high-order or leftmost bits) are stored in the lowest address with the following bytes in sequentially higher addresses.
big-endian format(ビッグエンディアン形式) 最上位バイト(上位ビットすなわち最左ビットを含むバイト)を最も小さいアドレスに格納し、続くバイトを順に大きいアドレスに格納する形式。
bitstring An ordered sequence (string) of 0s and 1s. The leftmost bit is the most significant bit.
bitstring(ビット列) 0 と 1 の順序付き列(文字列)。最左ビットが最上位ビットです。
block cipher A parameterized family of permutations on bitstrings of a fixed length; the parameter that determines the permutation is a bitstring called the key.
block cipher(ブロック暗号) 固定長のビット列上の置換のパラメータ化された族。置換を決定するパラメータは、鍵と呼ばれるビット列です。
computing platform A system’s hardware, firmware, operating system, and all applications and libraries executed by that operating system. Components that communicate with the operating system through a peripheral bus or a network, either physical or virtual, are not considered to be part of the same computing platform.
computing platform(コンピューティングプラットフォーム) システムのハードウェア、ファームウェア、オペレーティングシステム、およびそのオペレーティングシステムが実行するすべてのアプリケーションとライブラリ。物理的か仮想的かを問わず、周辺バスまたはネットワークを介してオペレーティングシステムと通信するコンポーネントは、同じコンピューティングプラットフォームの一部とはみなしません。
conditioning function (external) As used in SP 800-90C, a deterministic function that is used to produce a bitstring with full entropy or to distribute entropy across a bitstring.
conditioning function (external)(コンディショニング関数(外部)) SP 800-90C において、完全エントロピーのビット列を生成するため、またはビット列全体にエントロピーを分散させるために用いる決定論的関数。
consuming application An application that uses random outputs from an RBG.
consuming application(消費アプリケーション) RBG のランダム出力を使用するアプリケーション。
cryptographic boundary An explicitly defined physical or conceptual perimeter that establishes the physical and/or logical bounds of a cryptographic module and contains all the hardware, software, and/or firmware components of a cryptographic module.
cryptographic boundary(暗号境界) 暗号モジュールの物理的および/または論理的な範囲を確立し、暗号モジュールのすべてのハードウェア、ソフトウェア、および/またはファームウェアのコンポーネントを含む、明示的に定義された物理的または概念的な境界。
cryptographic module The set of hardware, software, and/or firmware that implements cryptographic functions (including cryptographic algorithms and key generation) and is contained within the cryptographic boundary.
cryptographic module(暗号モジュール) 暗号機能(暗号アルゴリズムおよび鍵生成を含む)を実装し、暗号境界内に含まれるハードウェア、ソフトウェアおよび/またはファームウェアの集合。
deterministic random bit generator (DRBG) An RBG that produces random bitstrings by applying a deterministic algorithm to seed material.
deterministic random bit generator (DRBG)(決定論的乱数ビット生成器) シード材料に決定論的アルゴリズムを適用して乱数ビット列を生成するRBG。
Note: A DRBG has access to a randomness source initially but may not have access to a randomness source thereafter.
注:DRBGは初期には乱数源にアクセスしますが、その後はアクセスできない場合があります。
digitization The process of generating raw discrete digital values from non-deterministic events (e.g., analog noise sources) within a noise source.
digitization(デジタル化) ノイズ源内の非決定的事象(例:アナログノイズ源)から、離散的な生デジタル値を生成するプロセス。
DRBG chain A chain of DRBGs in which one DRBG is used to provide seed material for another DRBG during instantiation.
DRBG chain(DRBGチェーン) インスタンス化時に、あるDRBGを別のDRBGへシード材料を提供するために用いるDRBGの連鎖。
DRBG tree A set of DRBGs within RBGC constructions that originate with the DRBG in a root RBGC construction. The root obtains seed material from an initial randomness source, but all other DRBGs receive seed material from another DRBG in the tree.
DRBG tree(DRBGツリー) root RBGC構成内のDRBGを起点とする、RBGC構成内のDRBGの集合。rootは初期乱数源からシード材料を取得し、それ以外のDRBGはツリー内の別のDRBGからシード材料を受け取ります。
entropy A measure of disorder, randomness, or variability in a closed system.
entropy(エントロピー) 閉じた系における無秩序性、ランダム性、または変動性の尺度。
Note1: The entropy of a random variable \(X\) is a mathematical measure of the amount of information gained by an observation of \(X\). Note2: The most common concepts are Shannon entropy and min-entropy. Min-entropy is the measure used in the SP 800-90 series.
注1:確率変数\(X\)のエントロピーは、\(X\)を観測することで得られる情報量の数学的尺度です。注2:最も一般的な概念はシャノンエントロピーとmin-entropyです。SP 800-90シリーズで用いる尺度はmin-entropyです。
entropy rate The validated rate at which an entropy source provides entropy in terms of bits per entropy-source output (e.g., five bits of entropy per 8-bit output sample).
entropy rate(エントロピー率) エントロピー源がエントロピーを提供する検証済みの率であり、エントロピー源の出力あたりのビット数で表します(例:8ビットの出力サンプルあたり5ビットのエントロピー)。
entropy source The combination of a noise source, health tests, and an optional conditioning component that produces bitstrings containing entropy. A distinction is made between entropy sources with physical noise sources and those having non-physical noise sources.
entropy source(エントロピー源) エントロピーを含むビット列を生成する、ノイズ源、ヘルステスト、および任意の条件付けコンポーネントの組合せ。物理ノイズ源を持つエントロピー源と、非物理ノイズ源を持つものとを区別します。
external conditioning function A vetted conditioning function that is implemented outside of the boundary of an SP 800-90B entropy source.
external conditioning function(外部条件付け関数) SP 800-90Bエントロピー源の境界外に実装される、審査済みの条件付け関数。
fresh entropy A bitstring that is output from a non-deterministic randomness source that has not been previously used to generate output or has not otherwise been made externally available.
fresh entropy(新鮮なエントロピー) 非決定的乱数源から出力されたビット列であり、出力の生成に以前使用されていないか、またはその他の方法で外部から利用可能になっていないもの。
Note: The randomness source should be an entropy source or RBG3 construction.
注:乱数源にはエントロピー源またはRBG3構成を用いるべきです。
fresh randomness A bitstring that is output from a randomness source that has not been previously used to generate output or has not otherwise been made externally available.
fresh randomness(新鮮な乱数) 乱数源から出力されたビット列であり、出力の生成に以前使用されていないか、またはその他の方法で外部から利用可能になっていないもの。
full-entropy bitstring A bitstring with ideal randomness (i.e., the amount of entropy per bit is equal to 1). This recommendation assumes that a bitstring has full entropy if the entropy rate is at least \(1 - \varepsilon\), where \(\varepsilon\) is at most \(2^{-32}\).
full-entropy bitstring(完全エントロピーのビット列) 理想的なランダム性を持つビット列、すなわちビットあたりのエントロピー量が1であるもの。この勧告では、エントロピー率が少なくとも\(1 - \varepsilon\)で、\(\varepsilon\)が最大でも\(2^{-32}\)であれば、ビット列は完全エントロピーを持つと仮定します。
full-entropy source An SP 800-90B-compliant entropy source that has been validated as providing output with full entropy or the validated combination of an SP 800-90B-compliant entropy source and an external conditioning function that provides full-entropy output.
full-entropy source(完全エントロピー源) 完全エントロピーを持つ出力を提供すると検証されたSP 800-90B準拠エントロピー源、または完全エントロピー出力を提供する、SP 800-90B準拠エントロピー源と外部条件付け関数の検証済みの組合せ。
hash function A (mathematical) function that maps values from a large (possibly very large) domain into a smaller range. The function satisfies the following properties:
hash function(ハッシュ関数) 大きな(非常に大きい場合もある)定義域の値を、より小さな値域へ写像する(数学的)関数。次の性質を満たす:
1.(One-way) It is computationally infeasible to find any input that maps to any pre-specified output.
1.(一方向性)あらかじめ指定した出力に写像される入力を見つけることは、計算上実行不可能です。
2.(Collision-free) It is computationally infeasible to find any two distinct inputs that map to the same output.
2.(衝突困難性)同じ出力へ写像される相異なる2つの入力を見つけることは、計算上実行不可能です。
health testing Testing within an implementation immediately prior to or during normal operation to obtain assurance that the implementation continues to perform as implemented and validated.
health testing(ヘルステスト) 通常運用の直前または運用中に実装内で行い、その実装が実装・検証されたとおりに引き続き動作していることを確認するためのテスト。
Note: Health tests are comprised of continuous tests and startup tests.
注:ヘルステストは継続テストと起動時テストからなります。
ideal randomness source The source of an ideal random sequence of bits. Each bit of an ideal random sequence is unpredictable and unbiased with a value that is independent of the values of the other bits in the sequence. Prior to an observation of the sequence, the value of each bit is equally likely to be 0 or 1, and the probability that a particular bit will have a particular value is unaffected by knowledge of the values of any or all the other bits. An ideal random sequence of \(n\) bits contains \(n\) bits of entropy.
ideal randomness source(理想乱数源) 理想的なランダムビット列の発生源。理想乱数列の各ビットは予測不可能かつ偏りがなく、他のビットの値から独立しています。列を観測する前は各ビットが0または1である確率は等しく、特定のビットが特定の値をとる確率は、他のいずれかまたはすべてのビット値を知っても変わりません。\(n\)ビットの理想乱数列は\(n\)ビットのエントロピーを含みます。
independent entropy sources Two entropy sources are independent if knowledge of the output of one entropy source provides no information about the output of the other entropy source.
independent entropy sources(独立したエントロピー源) 一方の出力を知っても他方の出力について情報が得られない場合、2つのエントロピー源は独立しています。
initial randomness source The randomness source for the root RBGC construction in a DRBG tree of RBGC constructions.
initial randomness source(初期乱数源) RBGC構成のDRBGツリーにおけるroot RBGC構成の乱数源。
instantiate The process of initializing a DRBG with sufficient randomness to generate pseudorandom bits at the desired security strength.
instantiate(インスタンス化する) 所望のセキュリティ強度で擬似乱数ビットを生成するのに十分な乱数を用いて、DRBGを初期化するプロセス。
internal state (of a DRBG) The collection of all secret and non-secret information about an RBG or entropy source that is stored in memory at a given point in time.
internal state (of a DRBG)(DRBGの内部状態) 特定の時点でメモリに保存されている、RBGまたはエントロピー源に関する秘密情報および非秘密情報の集合。
known answer test A test that uses a fixed input/output pair to detect whether a deterministic component was implemented correctly or continues to operate correctly.
known answer test(既知解テスト) 固定された入力/出力の組を用いて、決定論的コンポーネントが正しく実装されたか、または正しく動作し続けているかを検出するテスト。
legacy implementation (of DRBGs) DRBG implementations that may not conform to the current SP 800-90A version but do conform to a previous version of SP 800-90A.
legacy implementation (of DRBGs)(レガシー実装(DRBG の)) 現行版の SP 800-90A には適合しない場合がありますが、旧版の SP 800-90A には適合する DRBG の実装。
min-entropy A lower bound on the entropy of a random variable. The precise formulation for min-entropy is (\(-\log_2 \max p_i\)) for a discrete distribution having probabilities \(p_1, \ldots, p_k\). Min-entropy is often used as a measure of the unpredictability of a random variable.
min-entropy(最小エントロピー) 確率変数のエントロピーの下限。最小エントロピーの正確な定式化は、確率 \(p_1, \ldots, p_k\) を持つ離散分布に対する (\(-\log_2 \max p_i\)) です。最小エントロピーは、確率変数の予測不可能性の尺度としてよく用いられます。
must Used to indicate a requirement that may not be testable by a CAVP/CMVP testing lab.
must(しなければならない) CAVP/CMVP の試験機関では検証できない場合がある要件を示すために用います。
Note: Must may be coupled with not to become must not.
注:must は not と組み合わせて must not(してはならない)となる場合があります。
noise source A source of unpredictable data that outputs raw discrete digital values. The digitization mechanism is considered part of the noise source. A distinction is made between physical noise sources and non-physical noise sources.
noise source(ノイズ源) 生の離散デジタル値を出力する、予測不可能なデータの供給源。ディジタル化の仕組みはノイズ源の一部とみなします。物理ノイズ源と非物理ノイズ源を区別します。
non-physical entropy source An entropy source whose primary noise source is non-physical.
non-physical entropy source(非物理エントロピー源) 主たるノイズ源が非物理的であるエントロピー源。
non-physical noise source A noise source that typically exploits system data and/or user interaction to produce digitized random data.
non-physical noise source(非物理ノイズ源) 通常、システムデータおよび/またはユーザーとの対話を利用して、ディジタル化されたランダムデータを生成するノイズ源。
non-validated entropy source An entropy source that has not been validated by the CMVP as conforming to [SP_800-90B].
non-validated entropy source(非検証エントロピー源) CMVP により[SP_800-90B]への適合が検証されていないエントロピー源。
null string An empty bitstring.
null string(ヌル文字列) 空のビット列。
parent (randomness source) The randomness source used to seed a non-root RBGC construction during the instantiation of its DRBG.
parent (randomness source)(親(乱数源)) 非ルート RBGC 構成の DRBG をインスタンス化する際に、そのシードに用いる乱数源。
personalization string An optional input value to a DRBG during instantiation.
personalization string(個別化文字列) インスタンス化時の DRBG への任意の入力値。
physical entropy source An entropy source whose primary noise source is physical.
physical entropy source(物理エントロピー源) 主たるノイズ源が物理的であるエントロピー源。
physical noise source A noise source that exploits physical phenomena (e.g., thermal noise, shot noise, jitter, metastability or radioactive decay) from dedicated hardware designs (e.g., using diodes, ring oscillators) or physical experiments to produce digitized random data.
physical noise source(物理ノイズ源) 専用のハードウェア設計(例:ダイオードやリングオシレータの使用)または物理実験による物理現象(例:熱雑音、ショット雑音、ジッタ、メタスタビリティ、放射性崩壊)を利用して、ディジタル化されたランダムデータを生成するノイズ源。
physically secure channel A physical trusted and safe communication link that is established between an implementation of an RBG1 construction and its randomness source to securely communicate unprotected seed material without relying on cryptography. A physically secure channel protects against eavesdropping as well as physical or logical tampering by unwanted operators/entities, processes, or other devices between the endpoints.
physically secure channel(物理的に安全なチャネル) RBG1 構成の実装とその乱数源の間に確立される、物理的に信頼できる安全な通信リンク。暗号に依存せずに、保護されていないシード材料を安全に通信するために用います。物理的に安全なチャネルは、盗聴に加え、エンドポイント間における、望ましくない操作者/エンティティ、プロセス、その他のデバイスによる物理的または論理的な改ざんからも保護します。
prediction resistance For a DRBG, a property of a DRBG that provides assurance that compromising the current internal state of the DRBG does not allow future DRBG outputs to be predicted past the point where the DRBG has been reseeded with sufficient entropy from an entropy source or RBG3 construction. For an RBG, compromising the output of the RBG does not allow future outputs of the RBG to be predicted when the DRBG is reseeded. See [SP_800-90A] for a more complete discussion. Contrast with backtracking resistance.
prediction resistance(予測耐性) DRBG については、DRBG の現在の内部状態が危殆化しても、DRBG がエントロピー源または RBG3 構成からの十分なエントロピーで再シードされた時点より先の DRBG の将来の出力を予測できないことを保証する、DRBG の性質。RBG については、RBG の出力が危殆化しても、DRBG が再シードされれば、RBG の将来の出力を予測できないこと。より詳しい議論は[SP_800-90A]を参照してください。後方追跡耐性と対比せよ。
pseudocode An informal, high-level description of a computer program, algorithm, or function that resembles a simplified programming language.
pseudocode(擬似コード) 簡略化したプログラミング言語に似た、コンピュータプログラム、アルゴリズム、または関数の非公式で高水準の記述。
random bit generator (RBG) A device or algorithm that outputs a random sequence that is effectively indistinguishable from statistically independent and unbiased bits.
random bit generator (RBG)(乱数ビット生成器) 統計的に独立かつ偏りのないビットと実質的に区別できない乱数列を出力する装置またはアルゴリズム。
randomness The unpredictability of a bitstring. If the randomness is produced by a non-deterministic randomness source (e.g., an entropy source or RBG3 construction), the unpredictability is dependent on the quality of the source. If the randomness is produced by a deterministic randomness source (e.g., a DRBG), the unpredictability is based on the capability of an adversary to break the cryptographic algorithm for producing the pseudorandom bitstring.
randomness(ランダム性) ビット列の予測不可能性。非決定的乱数源(例:エントロピー源またはRBG3構成)が生成する場合、予測不可能性はその源の品質に依存します。決定論的乱数源(例:DRBG)が生成する場合、予測不可能性は擬似乱数ビット列を生成する暗号アルゴリズムを攻撃者が破る能力に依存します。
randomness source A source of randomness for an RBG. The randomness source may be an entropy source or an RBG construction.
randomness source(乱数源) RBGに乱数を供給する源。乱数源にはエントロピー源またはRBG構成を使用できます。
RBG1 construction An RBG construction with the DRBG and the randomness source in separate cryptographic modules.
RBG1 construction(RBG1構成) DRBGと乱数源が別々の暗号モジュールに存在するRBG構成。
RBG2 construction An RBG construction with one or more entropy sources and a DRBG within the same cryptographic module. This RBG construction does not provide full-entropy output.
RBG2 construction(RBG2構成) 1つ以上のエントロピー源とDRBGを同じ暗号モジュール内に持つRBG構成。この構成は完全エントロピー出力を提供しません。
Note: An RBG2 construction may be either an RBG2(P) or RBG2(NP) construction.
注:RBG2構成にはRBG2(P)構成またはRBG2(NP)構成があります。
RBG2(NP) construction A non-physical RBG2 construction that obtains entropy from one or more validated non-physical entropy sources and possibly from one or more validated physical entropy sources. This RBG construction does not provide full-entropy output.
RBG2(NP) construction(RBG2(NP)構成) 1つ以上の検証済み非物理エントロピー源から、場合によっては1つ以上の検証済み物理エントロピー源も加えてエントロピーを取得する非物理RBG2構成。この構成は完全エントロピー出力を提供しません。
RBG2(P) construction A physical RBG2 construction that includes a DRBG and one or more entropy sources in the same cryptographic module. Only the entropy from validated physical entropy sources is counted when fulfilling an entropy request within the RBG. This RBG construction does not provide full-entropy output.
RBG2(P) construction(RBG2(P)構成) DRBGと1つ以上のエントロピー源を同じ暗号モジュール内に含む物理RBG2構成。RBG内のエントロピー要求に応える際は、検証済み物理エントロピー源からのエントロピーのみを計数します。この構成は完全エントロピー出力を提供しません。
RBG3 construction An RBG construction that includes a DRBG and one or more entropy sources in the same cryptographic module. When working properly, bitstrings that have full entropy are produced. Sometimes called a non-deterministic random bit generator (NRBG) or true random number (or bit) generator.
RBG3 construction(RBG3構成) DRBGと1つ以上のエントロピー源を同じ暗号モジュール内に含むRBG構成。正常に動作している場合、完全エントロピーを持つビット列を生成します。非決定的乱数ビット生成器(NRBG)または真の乱数(ビット)生成器とも呼ばれます。
Note: An RBG3 construction may be either an RBG3(XOR) or RBG3(RS) construction.
注:RBG3構成にはRBG3(XOR)構成またはRBG3(RS)構成があります。
RBG3(RS) construction An RBG3 construction that uses one or more validated entropy sources to continuously reseed the DRBG in the construction.
RBG3(RS) construction(RBG3(RS)構成) 1つ以上の検証済みエントロピー源を使用して、構成内のDRBGを継続的に再シードするRBG3構成。
RBG3(XOR) construction An RBG3 construction that combines the output of one or more validated entropy sources with the output of an instantiated, approved DRBG using an exclusive-or operation.
RBG3(XOR) construction(RBG3(XOR)構成) 1つ以上の検証済みエントロピー源の出力と、インスタンス化済みの承認されたDRBGの出力とを排他的論理和演算で結合するRBG3構成。
RBGC construction An RBG construction used within a DRBG tree in which one DRBG is used to provide seed material for another DRBG. The construction does not provide full-entropy output.
RBGC construction(RBGC構成) DRBGツリーで用いるRBG構成であり、あるDRBGが別のDRBGにシード材料を提供します。この構成は完全エントロピー出力を提供しません。
reseed To refresh the internal state of a DRBG with seed material from a randomness source.
reseed(再シードする) 乱数源からのシード材料を用いてDRBGの内部状態を更新すること。
root RBGC construction The first RBGC construction in a DRBG tree of RBGC constructions.
root RBGC construction(root RBGC構成) RBGC構成からなるDRBGツリーで最初のRBGC構成。
sample space The set of all possible outcomes of an experiment.
sample space(標本空間) 実験で起こり得るすべての結果の集合。
security boundary For an entropy source, a conceptual boundary that is used to assess the amount of entropy provided by the values output from the entropy source. The entropy assessment is performed under the assumption that any observer (including any adversary) is outside of that boundary during normal operation.
security boundary(セキュリティ境界) エントロピー源については、エントロピー源から出力される値が提供するエントロピー量を評価するための概念的な境界。通常運用中は、攻撃者を含むすべての観測者がこの境界の外側にいると仮定してエントロピーを評価します。
For a DRBG, a conceptual boundary that contains the required DRBG functions and the DRBG’s internal state.
DRBGについては、必要なDRBG機能とDRBGの内部状態を含む概念的な境界。
For an RBG, a conceptual boundary that is defined with respect to one or more threat models that includes an assessment of the applicability of an attack and the potential harm caused by the attack.
RBGについては、1つ以上の脅威モデルに基づいて定義される概念的な境界。攻撃の適用可能性および攻撃によって生じる潜在的な損害を評価します。
security strength A number associated with the amount of work (i.e., the number of basic operations of some sort) that is required to “break” a cryptographic algorithm or system in some way. In this recommendation, the security strength is specified in bits and is a specific value from the set \(\{128, 192, 256\}\). If the security strength associated with an algorithm or system is \(s\) bits, then it is expected that (roughly) \(2^s\) basic operations are required to break it.
セキュリティ強度 暗号アルゴリズムまたはシステムを何らかの方法で「破る」ために必要な作業量(すなわち、何らかの基本演算の回数)に対応する数値。この勧告ではビット単位で指定し、集合\(\{128, 192, 256\}\)のいずれかの値をとります。アルゴリズムまたはシステムのセキュリティ強度が\(s\)ビットであれば、それを破るには(およそ)\(2^s\)回の基本演算が必要と見込まれます。
Note: This is a classical definition that does not consider quantum attacks. This definition will be revised to address quantum issues in the future.
注:これは量子攻撃を考慮しない古典的な定義です。今後、量子に関する問題に対応するよう改訂する予定です。
seed Verb: To initialize or update the internal state of a DRBG with seed material and (optionally) a personalization string or additional input. The seed material should contain sufficient randomness to meet security requirements.
seed(動詞:シードする) シード材料と(任意の)personalization stringまたはadditional inputを用いて、DRBGの内部状態を初期化または更新すること。シード材料は、セキュリティ要件を満たす十分なランダム性を含むべきです。
Noun: The combination of seed material and (optional) personalization string or additional input.
seed(名詞) シード材料と(任意の)personalization stringまたはadditional inputの組合せ。
seed material An input bitstring from a randomness source that provides an assessed minimum amount of randomness (e.g., entropy) for a DRBG.
シード材料 DRBGに対して、評価によって確認された最低量の乱数性(例:エントロピー)を提供する、乱数源からの入力ビット列。
seedlife The period of time between instantiating or reseeding a DRBG with seed material and either reseeding the DRBG with seed material containing new, unused randomness or uninstantiating the DRBG.
seedlife(シード寿命) シード材料を用いてDRBGをインスタンス化または再シードしてから、新たに未使用の乱数を含むシード材料で再シードするか、DRBGをインスタンス化解除するまでの期間。
shall The term used to indicate a requirement that is testable by a testing lab. See testable requirement.
shall(しなければならない) 試験機関が適合性を試験できる要件を示す用語。testable requirement(試験可能な要件)を参照してください。
Note: Shall may be coupled with not to become shall not.
注:shallにnotを付けるとshall notとなります。
should The term used to indicate an important recommendation. Ignoring the recommendation could result in undesirable results.
should(すべきである) 重要な推奨事項を示す用語。この推奨事項を無視すると、望ましくない結果につながる可能性があります。
Note: Should may be coupled with not to become should not.
注:shouldにnotを付けるとshould notとなります。
sibling (randomness source) A sibling of the parent randomness source for a non-root RBGC construction (the sibling can be considered the “aunt” or “uncle” in “human family” terms). The “grandparent” of the non-root RBGC construction is the parent of both the parent randomness source and the parent's sibling.
sibling (randomness source)(兄弟乱数源) 非ルートRBGC構成について、親乱数源の兄弟にあたる乱数源(人間の家族関係に当てはめると「おば」または「おじ」に相当します)。非ルートRBGC構成の「祖父母」は、親乱数源とその兄弟の両方の親です。
state handle A pointer to the internal state information for a particular DRBG instantiation.
state handle(状態ハンドル) 特定のDRBGインスタンス化における内部状態情報へのポインター。
subordinate DRBG (sub-DRBG) A DRBG that is instantiated by an RBG1 construction and contained within the same security boundary as the RBG1 construction.
subordinate DRBG (sub-DRBG)(従属DRBG) RBG1構成によってインスタンス化され、RBG1構成と同じセキュリティ境界内に含まれるDRBG。
support a security strength (by a DRBG) The DRBG has been instantiated at a security strength that is equal to or greater than the security strength requested for the generation of random bits.
support a security strength (by a DRBG)(DRBGがセキュリティ強度をサポートする) DRBGが、乱数ビットの生成に要求されたセキュリティ強度以上のセキュリティ強度でインスタンス化されていること。
targeted security strength The security strength that is intended to be supported by one or more implementation-related choices (e.g., algorithms, cryptographic primitives, auxiliary functions, parameter sizes, and/or actual parameters).
targeted security strength(目標セキュリティ強度) アルゴリズム、暗号プリミティブ、補助関数、パラメータサイズおよび/または実際のパラメータなど、1つ以上の実装関連の選択によってサポートすることを意図するセキュリティ強度。
terminate (an operation) Stop the operation.
terminate (an operation)(操作を終了する) 操作を停止すること。
testable requirement A requirement that can be tested for compliance by a testing lab via operational testing, code review, or a review of relevant documentation provided for validation. A testable requirement is indicated using a shall statement.
testable requirement(試験可能な要件) 運用試験、コードレビュー、または検証用に提出された関連文書のレビューを通じて、試験機関が適合性を試験できる要件。試験可能な要件はshall文で示します。
threat model A description of a set of security aspects that need to be considered. A threat model can be defined by listing a set of possible attacks along with the probability of success and the potential harm from each attack.
threat model(脅威モデル) 考慮すべきセキュリティ上の側面を記述したもの。想定される攻撃の一覧と、それぞれの成功確率および潜在的な損害を示して定義できます。
unbiased A random variable is said to be unbiased if all values of the finite sample space are chosen with the same probability. Contrast with biased.
unbiased(偏りのない) 有限標本空間のすべての値が同じ確率で選択される場合、確率変数に偏りがないといいます。biased(偏りのある)と対比。
uninstantiate The termination of a DRBG instantiation.
uninstantiate(インスタンス化解除する) DRBGのインスタンス化を終了すること。
validated entropy source An entropy source that has been successfully validated by the CAVP and CMVP for conformance to SP 800-90B.
validated entropy source(検証済みエントロピー源) SP 800-90Bへの準拠についてCAVPおよびCMVPによる検証に合格したエントロピー源。
















































