|
Server : Apache/2.4.62 System : FreeBSD fbsdweb2.web.rcn.net 14.1-RELEASE FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC amd64 User : www ( 80) PHP Version : 8.3.8 Disable Function : NONE Directory : /domains/ap.belleisle/INFOSEC/stds/ |
Upload File : |
<HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> <META NAME="GENERATOR" CONTENT="Mozilla/4.02 [en] (Win95; U) [Netscape]"> <TITLE>Derived Test Requirements for FIPS 140-1 (Part 3 of 3)</TITLE> </HEAD> <BODY BACKGROUND="../yellow_p.gif"> <!This file must be accompanied by "fi1401f3.gif"> <CENTER> <H2> National Institute of Standards and Technology</H2></CENTER> <HR SIZE=4 WIDTH=75%> <CENTER> <H3> Derived Test Requirements<BR> for FIPS PUB 140-1,<BR> <I>Security Requirements for Cryptographic Modules</I></H3></CENTER> <HR SIZE=4 WIDTH=20%> <H2><CENTER>PART 3<BR> <EM>(Sections 8-11)</EM></CENTER></H2> <CENTER><B>March 1995</B></CENTER> <CENTER><B>Final</B></CENTER> <H4> <A HREF="140test1.htm">Part 1 (sections 1-4)</A></H4> <H4> <A HREF="140test2.htm">Part 2 (sections 5-7)</A></H4> <H4> <A HREF="140testA.htm">Appendix A</A></H4> <HR SIZE=4 WIDTH=75%> <H2> <A NAME="sec8"></A>8. CRYPTOGRAPHIC KEY MANAGEMENT</H2> <H4> <U>General</U></H4> <A NAME="as0801"></A><B>AS08.01: Documentation shall specify all aspects of key management for the cryptographic module. (1, 2, 3, and 4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve080101"></A><B>VE08.01.01</B>: The vendor documentation shall describe key management for the module. At a minimum, the documentation shall specify the following information:</LI> <P> <OL> <LI> Key material, such as:</LI> <OL TYPE=a> <LI> List all types of keys used by the module, both internally and externally generated</LI> <LI> Explain function of each key</LI> <LI> Specify format of all entered and output keys</LI> <LI> Discuss how all keys are protected</LI> </OL> <LI> Key generation, such as:</LI> <OL TYPE=a> <LI> Describe the key-generation process</LI> <LI> Specify whether the key generation algorithm is FIPS-approved</LI> <LI> Specify which types of keys are generated</LI> </OL> <LI> Key distribution, such as:</LI> <OL TYPE=a> <LI> Describe key distribution technique</LI> <LI> Indicate whether technique is FIPS-approved</LI> <LI> Indicate which types of keys must be distributed</LI> </OL> <LI> Key entry and output, such as:</LI> <OL TYPE=a> <LI> Describe key entry procedures</LI> <LI> Describe key output procedures</LI> <LI> Indicate whether manual or electronic key entry is used</LI> <LI> Indicate whether manual or electronic key output is used</LI> <LI> Indicate which types of keys are manually entered or output</LI> <LI> Indicate which types of keys are electronically entered or output</LI> <LI> Indicate form in which keys are entered or output (plaintext, encrypted form, under split knowledge procedures)</LI> <LI> Indicate use of a manual key entry test for verification of entered keys</LI> </OL> <LI> Key storage, such as:</LI> <OL TYPE=a> <LI> Indicate which types of keys are stored</LI> <LI> Indicate where they are stored</LI> <LI> Indicate the form in which they are stored (plaintext, encrypted form, under split knowledge procedures)</LI> </OL> <LI> Key destruction, such as:</LI> <OL TYPE=a> <LI> Describe key destruction technique and mechanisms</LI> <LI> Indicate any restrictions on when the module can be zeroized</LI> <LI> Indicate which types of keys are zeroized and why</LI> <LI> Indicate which security parameters are zeroized and why</LI> <LI> Indicate which types of keys and security parameters are not zeroized and why</LI> </OL> <LI> Key archiving, such as:</LI> <OL TYPE=a> <LI> Whether key archiving is used</LI> <LI> Describe key archiving technique</LI> <LI> Indicate which types of keys can be archived</LI> <LI> Indicate whether keys are encrypted for archiving</LI> </OL> </OL> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te080101"></A><B>TE08.01.01</B>: The tester shall review the vendor documentation to verify that, at a minimum, the information specified in VE08.01.01 is included.</LI> <P> <LI> <A NAME="te080102"></A><B>TE08.01.02</B>: The tester shall perform tests in these categories as specified by AS08.04-AS08.20.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as0802"></A><B>AS08.02: Secret keys and private keys shall be protected from unauthorized disclosure, modification and substitution. (1, 2, 3, and 4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve080201"></A><B>VE08.02.01</B>: The vendor documentation shall describe the protection of all secret and/or private keys internal to the module as required by item 1 under VE08.01.01. Protection shall include the implementation of mechanisms that protect against unauthorized disclosure, unauthorized modification, and unauthorized substitution.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te080201"></A><B>TE08.02.01</B>: The tester shall check the vendor documentation that describes the protection of secret and/or private keys. The tester shall verify that the documentation describes how thesekeys will be protected from unauthorized disclosure, unauthorized modification, and unauthorized substitution. The tester shall verify that, for each threat, the following topics are addressed:</LI> <P> <OL> <LI> Mechanisms used to protect against the threat</LI> <LI> Which keys are protected by the mechanisms</LI> </OL> The mechanisms used may include, but not be limited to, the following: <P> <OL TYPE=A> <LI> Entry or output of the keys in encrypted form or under split knowledge procedures (unauthorized disclosure)</LI> <LI> Use of a cryptographic checksum or some other mechanism that can detect modifications (unauthorized modification and substitution)</LI> <LI> Physical controls (unauthorized disclosure, modification, and substitution)</LI> <LI> Mechanisms that are part of the underlying operating system (unauthorized disclosure, modification, and substitution)</LI> </OL> <LI> <A NAME="te080202"></A><B>TE08.02.02</B>: The tester shall perform the following tests:</LI> <P> <OL> <LI> Attempt to access (by circumventing the documented protection mechanisms) secret and private keys for which the tester is not authorized to have access. If the module denies access or allows access only to encrypted or otherwise protected forms of the keys, the requirement is met.</LI> <LI> Modify all secret and private keys using any method not specified by the vendor documentation and attempt to load them into the module. The module should not allow any of the keys to be successfully loaded. The tester should also attempt to perform cryptographic operations using these keys; the module should not perform the operations, indicating that the keys were not loaded.</LI> </OL> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as0803"></A><B>AS08.03: Public keys shall be protected against unauthorized modification and substitution. (1, 2, 3, and 4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve080301"></A><B>VE08.03.01</B>: If the module supports public keys, the vendor documentation shall describe the protection of all public keys as required by item 1 under VE08.01.01. Protection shall include the implementation of mechanisms that protect against unauthorized modification and substitution.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te080301"></A><B>TE08.03.01</B>: If the module supports public keys, the tester shall verify that the vendor documentation describes how these keys will be protected from unauthorized modification and unauthorized substitution. The tester shall verify that, for each threat, the following topics are addressed:</LI> <P> <OL> <LI> 1. Mechanisms used to protect against the threat</LI> <LI> 2. Which keys are protected by the mechanisms</LI> </OL> The mechanisms used may include, but not be limited to, the following: <P> <OL TYPE=A> <LI> Use of a cryptographic checksum or some other mechanism that can detect modifications (unauthorized modification and substitution)</LI> <LI> Physical controls (unauthorized modification and substitution)</LI> <LI> Mechanisms that are part of the underlying operating system (unauthorized modification and substitution)</LI> </OL> <LI> <A NAME="te080302"></A><B>TE08.03.02</B>: The tester shall modify all public keys using any method not specified by the vendor documentation and shall attempt to load them into the module. The module should not allow any of the keys to be successfully loaded. The tester should also attempt to perform cryptographic operations using these keys; the module should not perform the operations, indicating that the keys were not loaded.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <H4> <U>Key Generation</U></H4> <A NAME="as0804"></A><B>AS08.04: A cryptographic module may optionally implement an internal key generation function. The module shall implement a FIPS-approved key generation algorithm. Documentation shall specify the FIPS-approved key generation algorithm that is implemented by the module. (1, 2, 3, and 4)</B><I></I> <P><I>(Relevant Guidance: <A HREF="1401ig-4.htm#8fipskeymeth">8.1</A> )</I> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve080401"></A><B>VE08.04.01</B>: See items 2a and 2b under VE08.01.01 for vendor documentation requirements. They include a description of the key generation process and the specification of the FIPS-approved key generation algorithm. The vendor shall also provide proof that the key generation algorithm is FIPS-approved. This proof shall consist of a validation certificate from a NIST-accredited laboratory asserting that the algorithm implemented in the module is a FIPS-approved algorithm. In the absence of a NIST-accredited laboratory that can validate the algorithm, the vendor organization shall provide a written affirmation asserting that the algorithm implemented in the module is a FIPS-approved algorithm.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te080401"></A><B>TE08.04.01</B>: Verification of vendor documentation was performed under TE08.01.01. If the vendor cannot prove that the key generation algorithm is FIPS-approved or if the algorithm is not documented, the assertion fails. In addition, the tester shall verify that the implemented algorithm matches the specified FIPS-approved algorithm and that it is implemented correctly.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as0805"></A><B>AS08.05: When a random number generator is used in the key generation process, all values shall be generated randomly or pseudo-randomly such that all possible combinations of bits and all possible values are equally likely to be generated. (1, 2, 3, and 4)</B> <P><I>(Relevant Guidance: <A HREF="1401ig-4.htm#8ivreqs">8.5</A> )</I> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve080501"></A><B>VE08.05.01</B>: If the module uses a random number generator, the vendor documentation of the key generation procedures specified in item 2 under VE08.02.01 shall also describe how the random number generator works.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te080501"></A><B>TE08.05.01</B>: If the module uses a random number generator, the tester shall test the random or pseudo random number generator using one or more of the statistical and continuous random number generator tests specified in section 4.11 of FIPS PUB 140-1.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as0806"></A><B>AS08.06: A seed key, if used, shall be entered in the same manner as cryptographic keys. (1, 2, 3, and 4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve080601"></A><B>VE08.06.01</B>: The key management documentation shall specify whether a seed key is used for key generation. If so, the key management documentation shall address entry of the seed key as well as of other keys.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te080601"></A><B>TE08.06.01</B>: The tester shall review the vendor documentation to determine whether a seed key is used for key generation. If so, the tester shall also review the key management documentation and verify that entry of the seed key is addressed and is identical to the entry of a cryptographic key.</LI> <P> <LI> <A NAME="te080602"></A>TE08.06.02: The tester shall enter a seed key and shall verify that the method used to enter it is consistent with the documented method.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as0807"></A><B>AS08.07: Intermediate key generation states and values shall not be accessible outside of the module in plaintext or otherwise unprotected form. (1, 2, 3, and 4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve080701"></A><B>VE08.07.01</B>: Key generation can be considered as one of the user service states (see AS04.05). Intermediate key generation states are those states through which the module passes between initiation and completion of the key generation process. Intermediate key generation values are interim results from mathematical calculations which eventually result in a cryptographic key. The finite state machine model (see requirement 4, "Finite State Machine Model") should not include these states and should not output any intermediate key states or values. The key generation procedures should not allow any output during the key generation process unless those values are encrypted.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te080701"></A><B>TE08.07.01</B>: The tester shall review the finite state machine model and shall verify that no states are defined between the initiation and the completion of the key generation process. The tester shall verify that intermediate values are not associated with either the initiation or completion states of the key generation process. The tester shall also check the key generation procedures and verify that any specified outputs are encrypted.</LI> <P> <LI> <A NAME="te080702"></A><B>TE08.07.02</B>: The tester shall generate a key and shall attempt to access cryptographic key values during the key generation process. The module should not display any intermediate values unless they are encrypted. The tester shall also observe the output interface of the module and shall verify that any output matches the documented output and therefore is not a plaintext intermediate value.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <H4> <U>Key Distribution</U></H4> <A NAME="as0808"></A><B>AS08.08: Key distribution may be performed by manual methods, automated methods, or a combination of automated and manual methods. A cryptographic module shall implement FIPS-approved key distribution techniques (e.g., FIPS 171--Key Management Using ANSI X9.17). Until such time as a FIPS-approved public key-based key distribution technique is established, commercially available public key methods may be used. Documentation shall specify the key distribution techniques that are implemented by the module. (1, 2, 3, and 4)</B> <P><I>(Relevant Guidance: <A HREF="1401ig-4.htm#8fipskeymeth">8.1</A> , <A HREF="1401ig-4.htm#8pubkeymeth">8.2</A> , <A HREF="1401ig-4.htm#8fips171">8.4</A> )</I><B></B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve080801"></A><B>VE08.08.01</B>: See items 3a and 3b under VE08.01.01 for vendor documentation requirements. These include a description of the key distribution technique and an indication of whether the technique is FIPS-approved. If the key distribution technique is FIPS-approved, the vendor shall provide proof in the form of a validation certificate issued by a NIST-accredited laboratory for the key distribution technique. In the absence of the certificate, the vendor organization shall provide written affirmation that the key distribution technique is FIPS-approved. If the key distribution technique is not FIPS-approved, the vendor documentation shall explicitly state this.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te080801"></A><B>TE08.08.01</B>: Verification of vendor documentation was performed under TE08.01.01. The tester shall determine whether the key distribution techniques are FIPS-approved; if not, the tester shall verify from the vendor documentation that a commercial public key-based key distribution technique is used. In addition, the tester shall verify that the implemented techniques match the specified FIPS-approved techniques, and that they are implemented correctly.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <H4> <U>Key Entry and Output</U></H4> <A NAME="as0809"></A><B>AS08.09: Manually distributed cryptographic keys may be entered into or output from a cryptographic module either by purely manual methods or by electronic methods. (1, 2, 3, and 4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve080901"></A><B>VE08.09.01</B>: See items 4a through 4f under VE08.01.01 for vendor documentation requirements.</LI> <P> <LI> <A NAME="ve080902"></A><B>VE08.09.02</B>: In implementing key entry and output procedures and mechanisms, the vendor shall follow the following guidelines:</LI> <P> <OL> <LI> If purely manual methods are used for key entry or key output, they may be one or more of, but not limited to, the following:</LI> <P> <UL TYPE=SQUARE> <LI> Keyboard</LI> <LI> Rotary switches</LI> <LI> Thumbwheels</LI> <LI> LCD displays</LI> </UL> <LI> If electronic means are used for key entry or key output, they may be one or more of, but not limited to, the following:</LI> <P> <UL TYPE=SQUARE> <LI> Memory card/token (e.g., magnetic-striped cards, IC chip devices)</LI> <LI> Smart card/token</LI> <LI> Electronic key loader</LI> </UL> </OL> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te080901"></A><B>TE08.09.01</B>: Verification of vendor documentation was performed under TE08.01.01. The vendor documentation should provide the required information on key entry and output procedures and the keys that are entered into and output by the module; if not, the assertion fails.</LI> <P> <LI> <A NAME="te080902"></A><B>TE08.09.02</B>: The tester shall enter and output each of the manually distributed keys and shall verify that they are entered and/or outputted according to the documentation.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as0810"></A><B>AS08.10: Electronically distributed secret and private keys shall be entered and output in encrypted form. (1, 2, 3, and 4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve081001"></A><B>VE08.10.01</B>: The vendor documentation shall specify which types of keys are electronically distributed and the form in which electronically distributed keys are entered into and output from the module.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te081001"></A><B>TE08.10.01</B>: If the module supports electronically distributed keys, the tester shall determine from the vendor documentation whether secret and private keys are electronically distributed. If so, the tester shall verify that the vendor documentation specifies that secret and private keys are entered and output only in encrypted form. If the documentation specifies that the keys are in any other form, the assertion fails.</LI> <P> <LI> <A NAME="te081002"></A><B>TE08.10.02</B>: The tester shall enter every electronically distributed secret and private key type and shall verify that the procedure used to enter each key is in accordance with the documented procedure, including the form that the keys are in when they are entered.</LI> <P> <LI> <A NAME="te081003"></A><B>TE08.10.03</B>: The tester shall output every electronically distributed secret and private key type and shall verify that the procedure used to output each key is in accordance with the documented procedure, including the form that the keys are in when they are output.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as0811"></A><B>AS08.11: Manually entered cryptographic keys shall be verified during entry into a cryptographic module for accuracy using the manual key entry test specified in section 4.11.2. (1, 2, 3, and 4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve081101"></A><B>VE08.11.01</B>: See item 4h under VE08.01.01.01 for vendor documentation requirements.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te081101"></A><B>TE08.11.01</B>: Verification of vendor documentation was performed under TE08.01.01. The results of the verification should indicate that the vendor documentation specifies that a manual key entry test is used to verify all manually entered keys; if not, the assertion fails.</LI> <P> <LI> <A NAME="te081102"></A><B>TE08.11.02</B>: The tester shall test the manual key entry test as documented in AS11.21. If the manual key entry test does not match the one specified in AS11.21 and if the validation of AS11.21 fails, this assertion fails.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as0812"></A><B>AS08.12: During key entry, keys and key components may be temporarily displayed to allow visual verification and to improve accuracy. When encrypted keys or key components are entered, the resulting plaintext secret or private keys shall not be displayed. (1, 2, 3, and 4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve081201"></A><B>VE08.12.01</B>: The documented key entry procedures shall allow, if necessary, the display of encrypted keys or key components during the key entry process, but shall preclude the display of plaintext secret or private keys that result from the entry of encrypted keys or key components.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te081201"></A><B>TE08.12.01</B>: The tester shall review the documented key entry procedures and shall determine whether encrypted keys or key components can be displayed during the key entry process. If so, the tester shall verify that the display of plaintext secret or private keys resulting from the entry of encrypted keys or key components is not allowed during the key entry process.</LI> <P> <LI> <A NAME="te081202"></A><B>TE08.12.02</B>: The tester shall enter every cryptographic key and shall verify that the keys can be temporarily displayed. When entering encrypted keys or key components, the tester shall also monitor the output interface of the module to verify that any resulting key material which is displayed is encrypted.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as0813"></A><B>AS08.13: A means shall be provided to ensure that a key entered into or output from a module is associated with the correct entities (i.e., person, group, or process) to which the key is assigned. (1, 2, 3, and 4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve081301"></A><B>VE08.13.01</B>: The documented key entry/output procedures shall describe the mechanisms or procedures used to ensure that each key will be associated with the correct entity.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te081301"></A><B>TE08.13.01</B>: The tester shall review the documented key entry/output procedures and shall verify that the procedures address how an entered or output key will be associated with the correct entity. This association can consist of two components; one resides with the key and the other resides with the entity. These components are pairwise unique in that only the combination of a particular entity component with the correct key component will result in the correct association. These components can include, but not be limited to:</LI> <P> <OL> <LI> Key component, such as:</LI> <P> <UL TYPE=SQUARE> <LI> Keytag</LI> <LI> Certificate</LI> <LI> Key encrypted under a hash of the entity component</LI> </UL> <LI> Entity component, such as:</LI> <P> <UL TYPE=SQUARE> <LI> Password</LI> <LI> Personal Identification Number (PIN)</LI> <LI> Possession of a physical key, token, or equivalent</LI> <LI> Biometrics (e.g., fingerprint, retina scan, keystroke dynamics)</LI> </UL> </OL> <LI> <A NAME="te081302"></A><B>TE08.13.02</B>: For each key that can be entered or output, the tester shall first output the key while assuming a particular entity. The tester shall then verify the association between key and entity by performing one or more of the following tests:</LI> <P> <OL> <LI> The tester shall assume a different entity from the one under which the key was output. The tester shall then attempt to enter the key and shall verify that key entry fails.</LI> <LI> The tester shall, if possible, alter the key component such that the key is associated with a different entity. The tester shall then assume the entity under which the key was output, attempt to enter the key, and shall verify that key entry fails.</LI> </OL> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as0814"></A><B>AS08.14: For security levels 1 and 2, when manually distributed secret keys or private keys are entered into or output from a cryptographic module, they may be entered or output as plaintext keys. Optionally, the keys may be entered or output either as follows: (1 and 2)</B> <P><B> </B> <OL> <LI> <B>In encrypted form</B></LI> <LI> <B>Under split knowledge procedures</B></LI> </OL> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve081401"></A><B>VE08.14.01</B>: See item 4g under VE08.01 for vendor documentation requirement.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te081401"></A><B>TE08.14.01</B>: Verification of the vendor documentation was performed under TE08.01.01. The results of the verification should indicate that the vendor documentation specifies the form in which all types of keys are entered and output.</LI> <P> <LI> <A NAME="te081402"></A><B>TE08.14.02</B>: The tester shall enter every manually distributed secret and private key and shall verify that the procedure used to enter each key is in accordance with the documented procedure, including the form that the keys are in when they are entered.</LI> <P> <LI> <A NAME="te081403"></A><B>TE08.14.03</B>: The tester shall output every manually distributed secret and private key and shall verify that the procedure used to output each key is in accordance with the documented procedure, including the form that the keys are in when they are output.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as0815"></A><B>AS08.15: For Security Levels 3 and 4, manually distributed secret keys or private keys shall not be entered into or output from a cryptographic module in plaintext form. When manually distributed, secret keys or private keys are entered into or output from a cryptographic module, they shall be output or entered in either of the following ways: (3 and 4)</B> <P><B> </B> <OL> <LI> <B>In encrypted form</B></LI> <LI> <B>Using split knowledge procedures (i.e., as two or more plaintext key components)</B></LI> </OL> <I>(Relevant Guidance: <A HREF="1401ig-4.htm#8keyload">8.3</A> , )</I> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve081501"></A><B>VE08.15.01</B>: See item 4g under VE08.01.01 for vendor documentation requirement.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te081501"></A><B>TE08.15.01</B>: Verification of the vendor documentation was performed under TE08.01.01. The results of the verification should indicate that the vendor documentation specifies the form in which all types of keys are entered or output (e.g., encrypted, plaintext, under split knowledge procedures). The tester shall also check the vendor documentation to verify that entry or output in plaintext form is not specified for a secret or private key.</LI> <P> <LI> <A NAME="te081502"></A><B>TE08.15.02</B>: The tester shall enter every manually distributed secret and private key and shall verify that the procedure used to enter each key is in accordance with the documented procedure, including the form that the keys are in when they are entered.</LI> <P> <LI> <A NAME="te081503"></A><B>TE08.15.03</B>: The tester shall output every manually distributed secret and private key and shall verify that the procedure used to output each key is in accordance with the documented procedure, including the form that the keys are in when they are output.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as0816"></A><B>AS08.16: When a manually distributed secret key or private key is entered or output under split knowledge procedures, the module shall provide the capability to separately authenticate the operator for each key component. Furthermore, the key components shall be entered directly into the cryptographic module or output directly from the cryptographic module (e.g., via a trusted path or directly attached cable) without traveling through any enclosing or intervening systems where the components could be stored, combined, or otherwise processed. (3 and 4) A related assertion is AS02.14.</B> <P><I>(Relevant Guidance: <A HREF="1401ig-4.htm#8keyload">8.3</A> , )</I><B></B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve081601"></A><B>VE08.16.01</B>: If manually distributed secret or private keys are entered or output under split knowledge procedures, the vendor documentation shall specify, in the description of the key entry procedure, that the operator is separately authenticated for each key component.</LI> <P> <LI> <A NAME="ve081602"></A><B>VE08.16.02</B>: The vendor requirement for the direct entry of the key components is covered under VE02.14.01.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te081601"></A><B>TE08.16.01</B>: If manually distributed, secret or private keys are entered or output under split knowledge procedures, the tester shall check the vendor documentation to verify that operator authentication is specified for each key component.</LI> <P> <LI> <A NAME="te081602"></A><B>TE08.16.02</B>: In addition to performing the validation specified by TE08.14.02-03, the tester shall check that authentication is performed for each key component and that the authentication is in accordance with the documented key entry and output procedures.</LI> <P> <LI> <A NAME="te081603"></A><B>TE08.16.03</B>: Validation of the direct entry of the split knowledge key components was performed under TE02.14.01. If the tester finds that split key components are not directly entered into the module, the assertion fails.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <H4> <U>Key Storage</U></H4> <A NAME="as0817"></A><B>AS08.17: When contained within a cryptographic module, secret and private keys may be stored in plaintext form. These plaintext keys shall not be accessible from outside the module. This assertion is related to assertion AS08.02. (1, 2, 3, and 4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve081701"></A><B>VE08.17.01</B>: See items 5a and 5c under VE08.01.01 for vendor documentation requirements.</LI> <P> <LI> <A NAME="ve081702"></A><B>VE08.17.02</B>: The vendor documentation shall describe the protection of all secret and private keys internal to the module as specified in VE08.02.01. Protection shall include the implementation of mechanisms that protect against unauthorized disclosure, modification, and substitution.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te081701"></A><B>TE08.17.01</B>: Verification of the vendor documentation specified in VE08.17.01 was performed under TE08.01.01. The results of the verification should indicate that the vendor documentation specifies which types of keys are stored and the form in which they are stored (plaintext, encrypted form, or under split knowledge procedures). Specifically, the vendor documentation shall indicate whether plaintext secret and private keys are stored in plaintext form.</LI> <P> <LI> <A NAME="te081702"></A><B>TE08.17.02</B>: As specified in TE08.02.01 and TE08.02.02, the tester shall check the vendor documentation to verify that it includes the specification of protection mechanisms for all secret and private keys and descriptions of how the mechanisms will protect against unauthorized disclosure, modification and substitution.</LI> <P> <LI> <A NAME="te081703"></A><B>TE08.17.03</B>: By using unauthorized means, the tester shall perform the tests specified in TE08.02.03 that attempt to access plaintext secret and/or private keys which the documentation designates as being stored in plaintext form. Note that, at Levels 1 and 2, manually distributed secret and private keys can be output from the module in plaintext form (see AS08.14). If any of the tests fail, this assertion fails.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as0818"></A><B>AS08.18: A means shall be provided to ensure that all keys are associated with the correct entities (i.e., person, group, or process) to which the keys are assigned. (1, 2, 3, and 4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve081801"></A><B>VE08.18.01</B>: Vendor documentation on key storage shall describe the mechanisms or procedures used to ensure that each key will be associated with the correct entity.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te081801"></A><B>TE08.18.01</B>: The tester shall review the documentation on key storage and shall verify that the procedures address how a stored key will be associated with the correct entity. This association can consist of two components; one resides with the key and the other resides with the entity. These components are pairwise unique in that only the combination of a particular entity component with the correct key component will result in the correct association. These components can include, but not be limited to:</LI> <P> <OL> <LI> Key component, such as:</LI> <P> <UL TYPE=SQUARE> <LI> Keytag</LI> <LI> Certificate</LI> <LI> Key encrypted under a hash of the entity component</LI> </UL> <LI> Entity component, such as:</LI> <P> <UL TYPE=SQUARE> <LI> Password</LI> <LI> Personal Identification Number (PIN)</LI> <LI> Possession of a physical key, token, or equivalent</LI> <LI> Biometrics (e.g., fingerprint, retina scan, keystroke dynamics)</LI> </UL> </OL> <LI> <A NAME="te081802"></A><B>TE08.18.02</B>: The tester shall alter the association of key and entity (e.g., swap keys that belong to two different entities). The tester shall then attempt to perform cryptographic functions as one of the entities and shall verify that these functions fail.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <H4> <U>Key Destruction</U></H4> <A NAME="as0819"></A><B>AS08.19: A cryptographic module shall provide the capability to zeroize all plaintext cryptographic keys and other unprotected critical security parameters within the module. Zeroization of cryptographic keys and other critical security parameters is not required if the keys and parameters are either encrypted or otherwise physically or logically protected (e.g., contained within an additional embedded FIPS PUB 140-1 cryptographic module. (1, 2, 3, and 4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve081901"></A><B>VE08.19.01</B>: See items 6 under VE08.01.01 for vendor documentation requirements.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te081901"></A><B>TE08.19.01</B>: Verification of the vendor documentation was performed under TE08.01.01. The results of the verification should indicate that the vendor documentation describes the key destruction mechanism and specifies any restrictions on when the module can be zeroized, which keys and security parameters are zeroized, and which keys and security parameters are not zeroized. In addition, the tester shall verify that all other keys and parameters that are not zeroized by the zeroize command are encrypted or are physically or logically protected.</LI> <P> <LI> <A NAME="te081902"></A><B>TE08.19.02</B>: The tester shall note which keys are present in the module and initiate the zeroize command. Following the completion of the zeroize command, the tester shall attempt to perform cryptographic operations using each of the keys that were stored in the module and that he or she can access. The tester shall verify that each key that could be accessed and used had been protected within the module and that every key that could not be accessed was stored in the module in plaintext form and was therefore zeroized.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <H4> <U>Key Archiving</U></H4> <A NAME="as0820"></A><B>AS08.20: A cryptographic module optionally may output keys for archiving purposes. Key outputs for archiving shall be encrypted. (1, 2, 3, and 4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve082001"></A><B>VE08.20.01</B>: If the module supports key archiving, see items 7a through 7d under VE08.01.01 for vendor documentation requirements.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te082001"></A><B>TE08.20.01</B>: Verification of the vendor documentation was performed under TE08.01.01. The results of the verification should indicate that the vendor documentation specifies whether key archiving is used, describes the key archiving technique, and specifies which types of keys can be archived and whether archived keys are encrypted.</LI> <P> <LI> <A NAME="te082002"></A><B>TE08.20.02</B>: The tester shall enter each key that can be archived and shall archive them. The tester shall compare the archived keys with the plaintext keys and shall verify that the archived keys are encrypted versions of the plaintext keys.</LI> <P> </UL> <HR SIZE=4 WIDTH=75%> <H2> <A NAME="sec9"></A>9. CRYPTOGRAPHIC ALGORITHMS</H2> <A NAME="as0901"></A><B>AS09.01: Cryptographic modules shall employ FIPS-approved cryptographic algorithms. (1, 2, 3, and 4)</B> <P><I>(Relevant Guidance: <A HREF="1401ig-4.htm#8ivreqs">8.5</A>, <A HREF="1401ig-4.htm#9fipsalgs">9.1</A> , <A HREF="1401ig-4.htm#9noalgs">9.2</A> , <A HREF="1401ig-4.htm#9shagran">9.3</A>, <A HREF="1401ig-4.htm#9tripleDES">9.4</A> )</I> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve090101"></A><B>VE09.01.01</B>: The vendor shall provide a NIST certificate that certifies that the cryptographic module uses FIPS-approved cryptographic algorithms, and that the implementation of these FIPS-approved cryptographic algorithms has been tested and passed NIST-approved procedures and tests at a NIST-accredited facility.</LI> <P> <B>Note</B>: The vendor may also incorporate other (i.e., nonFIPS-approved) cryptographic algorithms in the cryptographic module. <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te090101"></A><B>TE09.01.01</B>: The tester shall check to make sure that the vendor has provided a NIST certificate as described above.</LI> <P> </UL> <HR SIZE=4 WIDTH=75%> <H2> <A NAME="sec10"></A>10. ELECTROMAGNETIC INTERFERENCE/ELECTROMAGNETIC COMPATIBILITY (EMI/EMC)</H2> <A NAME="as1001"></A><B>AS10.01: Radios shall meet all applicable FCC requirements. (1, 2, 3, and 4)</B> <P><I>(Relevant Guidance: <A HREF="1401ig-4.htm#10fccreqs">10.1</A> )</I> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve100101"></A><B>VE10.01.01</B>: The vendor shall provide an FCC certificate certifying that the cryptographic module radio meets all applicable FCC requirements.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te100101"></A><B>TE10.01.01</B>: The tester shall check that the vendor has supplied the FCC certificate required under VE10.01.01.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as1002"></A><B>AS10.02: A cryptographic module shall conform to the EMI/EMC requirements specified in FCC Part 15, Subpart J, Class A (i.e., for business use). (1 and 2)</B> <P><I>(Relevant Guidance: <A HREF="1401ig-4.htm#10fccreqs">10.1</A> )</I> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve100201"></A><B>VE10.02.01</B>: The vendor shall provide an FCC certificate certifying that the cryptographic module conforms to the EMI/EMC requirements specified in FCC Part 15, Subpart J, Class A.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te100201"></A><B>TE10.02.01</B>: The tester shall check that the vendor has supplied the FCC certificate required under VE10.02.01.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as1003"></A><B>AS10.03: A cryptographic module shall conform to the EMI/EMC requirements specified in FCC Part 15, Subpart J, Class B (i.e., for home use). (3 and 4)</B> <P><I>(Relevant Guidance: <A HREF="1401ig-4.htm#10fccreqs">10.1</A> )</I> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve100301"></A><B>VE10.03.01</B>: The vendor shall provide an FCC certificate certifying that the cryptographic module conforms to the EMI/EMC requirements specified in FCC Part 15, Subpart J, Class B.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te100301"></A><B>TE10.03.01</B>: The tester shall check that the vendor has supplied the FCC certificate required under VE10.03.01.</LI> <P> </UL> <HR SIZE=4 WIDTH=75%> <H2> <A NAME="sec11"></A>11. SELF-TESTS</H2> <H4> <A NAME="sec11.1"></A>11.1 General</H4> <A NAME="as1101"></A><B>AS11.01: A cryptographic module shall be able to perform self-tests in order to ensure that the module is functioning properly. Certain self-tests shall be performed when the module is powered up (i.e., Power-Up Tests) and other self-tests shall be performed under various conditions, typically when a particular function or operation is performed (i.e., Conditional Tests). A module may optionally perform other self-tests in addition to the tests specified in this standard. (1, 2, 3, and 4)</B> <P><I>(Relevant Guidance: <A HREF="1401ig-2.htm#3maint">3.1</A> , )</I> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve110101"></A><B>VE11.01.01</B>: The vendor shall provide a list of all self-tests, both mandatory and optional, that the module can perform. This list shall include both power-up tests and conditional tests.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te110101"></A><B>TE11.01.01</B>: The tester shall inspect the list of self-tests to verify that it includes the following:</LI> <P> <OL> <LI> Power-up tests</LI> <P> <UL TYPE=SQUARE> <LI> Cryptographic algorithm test</LI> <LI> Software/firmware test</LI> <LI> Critical functions test</LI> <LI> Statistical random number generator tests (required at Levels 3 and 4)</LI> <LI> Other self-tests which are performed at power-up and on demand</LI> </UL> <LI> Conditional tests</LI> <P> <UL TYPE=SQUARE> <LI> Pairwise consistency test (if the module generates public and private keys)</LI> <LI> Software/firmware load test</LI> <LI> Manual key entry test</LI> <LI> Statistical random number generator test</LI> <LI> Other conditional tests</LI> </UL> </OL> All of the power-up and conditional self-tests are defined in section 4.11 of the FIPS and will be explicitly defined later in the appropriate assertions. <P> <LI> <A NAME="te110102"></A><B>TE11.01.02</B>: Specific validation requirements for these self-tests are specified under AS11.05 through AS11.22. Note that, in general, power-up self-tests cannot be verified by actual testing because they involve internals of the module to which the tester would not have access, such as the cryptographic algorithm. Causing the module to fail a particular self-test in order to verify that the correct failure indicator is output, for example, would be an appropriate test, but the module generally would not have a mechanism that would allow the tester to force it to fail. Therefore, the tester may have to resort to code and/or design review.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as1102"></A><B>AS11.02: Whenever a cryptographic module fails a self-test, the module shall enter an error state and output an error indicator via the status interface. (1, 2, 3, and 4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve110201"></A><B>VE11.02.01</B>: The vendor shall document all error states associated with each self-test and shall indicate for each error state the expected error indicator.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te110201"></A><B>TE11.02.01</B>: The tester shall inspect the vendor documentation, check that it lists every error state that the module enters upon failure of a self-test, and indicates the error indicator associated with each error state. The tester shall compare the list of error states to those defined in the finite state machine model (see AS04.01) to verify that they agree.</LI> <P> <LI> <A NAME="te110202"></A><B>TE11.02.02</B>: By inspecting the code and/or design documentation that specifies how each self-test handles errors, the tester shall verify that:</LI> <P> <OL> <LI> The module enters an error state upon failing a self-test.</LI> <LI> The error state is consistent with the documentation and the finite state machine model.</LI> <LI> The module outputs an error indicator.</LI> <LI> The error indicator is consistent with the documented error indicator.</LI> </OL> <LI> <A NAME="te110203"></A><B>TE11.02.03</B>: If the module design and operating procedures allow it, the tester shall run self-tests and cause the module to enter every error state. The tester shall compare the observed error indicator with the indicator specified in the vendor documentation. If they are not the same, the assertion is failed.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as1103"></A><B>AS11.03: The module shall not perform any cryptographic functions while in the error state and no data shall be output via the data output interface while the error condition exists. Related assertions are AS02.04 and AS04.07. (1, 2, 3, and 4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve110301"></A><B>VE11.03.01</B>: See VE02.04.01 for the vendor design requirement. Also, the vendor design shall ensure that cryptographic operations cannot be performed while the module is in the error state.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te110301"></A><B>TE11.03.01</B>: Tester verification of the inhibition of output was performed under TE02.04.01, TE02.04.02, and TE04.07.01. The results of the verification should indicate that:</LI> <P> <OL> <LI> The vendor documentation shows that all data output via the data output interface is inhibited whenever the module is in an error state.</LI> <LI> If testable, the module inhibits all data output when the module is in an error state.</LI> </OL> <LI> <A NAME="te110302"></A><B>TE11.03.02</B>: The tester shall check that vendor documentation indicates cryptographic functions are inhibited while the module is in an error state. Cryptographic functions include the following:</LI> <P> <OL> <LI> Encryption</LI> <LI> Decryption</LI> <LI> Secure message hashing</LI> <LI> Digital signature creation and verification</LI> <LI> Other operations that require the use of cryptography</LI> </OL> <LI> <A NAME="te110303"></A><B>TE11.03.03</B>: If the module design and operating procedures allow it, the tester shall put the module in an error state and verify that any cryptographic operations that the tester attempts to initiate are prevented.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as1104"></A><B>AS11.04: Each possible error condition shall be documented along with the actions necessary to clear the error and resume normal operation (possibly including maintenance, servicing or repair of the module). (1, 2, 3, and 4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve110401"></A><B>VE11.04.01</B>: The vendor documentation shall provide for each error condition, its name, the events that can produce it, and the actions necessary to clear it and resume normal operation. Note that necessary action may include sending the module to the manufacturer for repair.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te110401"></A><B>TE11.04.01</B>: The tester shall check that the information provided above is specified for each error condition.</LI> <P> <LI> <A NAME="te110402"></A><B>TE11.04.02</B>: If the module design and operating procedures allow it, the tester shall cause each error condition to occur and shall attempt to clear the error condition. The tester shall verify that actions necessary to clear the error condition are consistent with the vendor documentation. If the tester cannot cause each error condition to occur, the tester shall review the code listing and or design documentation to determine whether the actions necessary to clear each error condition are consistent with the descriptions in the vendor documentation.</LI> </UL> <HR SIZE=4 WIDTH=15%> <H4> <A NAME="sec11.2"></A>11.2. Power-Up Tests</H4> <H4> <U>General</U></H4> <A NAME="as1105"></A><B>AS11.05: After a cryptographic module is powered up, the module shall enter the self-test state and perform at least the following tests: cryptographic algorithm test, software/firmware test, critical functions test and statistical random number generator tests. The module may optionally perform additional tests. (1, 2, 3, and 4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve110501"></A><B>VE11.05.01</B>: See VE11.01.01 for the vendor requirement. Note that the running of statistical random number generator tests at power up is required for Level 4 and optional for the other levels. Also, the vendor shall document any optional power-up self-tests.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te110501"></A><B>TE11.05.01</B>: Verification of the documented list of power-up self-tests was performed under TE11.01. Verification that the module performs the self-tests as documented is done under validation requirements for AS11.10-AS11.18.</LI> <P> <LI> <A NAME="te110502"></A><B>TE11.05.02</B>: If the module design and operating procedures allow it, the tester shall perform all optional power-up self-tests and shall verify that they perform as documented. If the tester cannot perform tests on the self-tests to validate them, the tester shall review the code listing and/or design documentation to determine whether the optional self-tests have been implemented as documented. If the module has the capability of displaying which self-tests are running, the tester shall run the optional self-tests to verify that the module performs them.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as1106"></A><B>AS11.06: The power-up tests shall not require operator intervention in order to run. (1, 2, 3, and 4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve110601"></A><B>VE11.06.01</B>: The vendor documentation shall require that the running of power-up self-tests not involve any inputs from or actions by the operator.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te110601"></A><B>TE11.06.01</B>: To test that, upon power-up, the module performs the power-up self-tests without requiring any operator intervention, the tester shall power-up the module. If the tester must enter any inputs or perform any actions while the self-tests are running, the assertion fails.</LI> <P> <LI> <A NAME="te110602"></A><B>TE11.06.02</B>: To test that, upon command from an operator, the module performs the power-up self-tests without requiring any operator intervention, the tester shall command the module to perform the self-tests. If the tester must enter any inputs or perform any actions while the self-tests are running, the assertion fails.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as1107"></A><B>AS11.07: If all of the power-up tests are passed successfully, such an indication shall be output via the "status output" interface. (1, 2, 3, and 4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve110701"></A><B>VE11.07.01</B>: The vendor shall document the indicator that the module outputs upon successful completion of all of the power-up self-tests.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te110701"></A><B>TE11.07.01</B>: The tester shall check the vendor documentation and shall verify that it specifies an indicator that is output from the status output interface upon successful completion of all of the power-up self-tests.</LI> <P> <LI> <A NAME="te110702"></A><B>TE11.07.02</B>: To test the assertion, the tester shall power-up the module and shall monitor the status output interface. The expected indicator from the status output interface should be consistent with the documented indicator.</LI> <P> <LI> <A NAME="te110703"></A><B>TE11.07.03</B>: To test the assertion, the tester shall command the module to perform the self-tests and shall monitor the status output interface. The expected indicator from the status output interface should be consistent with the documented indicator.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as1108"></A><B>AS11.08: All data output shall be inhibited when these tests are performed. A related assertion is AS02.04. (1, 2, 3, and 4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve110801"></A><B>VE11.08.01</B>: See VE02.04.02 for the vendor documentation requirement.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te110801"></A><B>TE11.08.01</B>: Tester verification of the inhibition of output during self-tests was performed under TE02.04.03 and TE02.04.04. The results of the verification should indicate that:</LI> <P> <OL> <LI> The vendor documentation shows that all data output is inhibited when the module is in a self-test condition.</LI> <LI> If testable, the module inhibits all data output when running a self-test.</LI> </OL> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as1109"></A><B>AS11.09: The module shall provide a means to initiate the tests on demand for periodic testing of the module. (1, 2, 3, and 4)</B> <P><I>(Relevant Guidance: <A HREF="1401ig-4.htm#11perfst">11.1</A> )</I> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve110901"></A><B>VE11.09.01</B>: The vendor shall describe the procedure by which an operator can initiate the power-up self-tests on demand. All of the power-up self-tests must be included. Note that operator initiation of the statistical random number generator tests are optional for Levels 1 and 2.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te110901"></A><B>TE11.09.01</B>: The tester shall inspect the vendor documentation to verify that initiation of self-tests on demand is specified for all of the power-up self-tests. Note that, for Levels 1 and 2, operator initiation of statistical random number generator tests is optional. The documentation shall also include what steps an operator must take in order to initiate the self-tests.</LI> <P> <LI> <A NAME="te110902"></A><B>TE11.09.02</B>: To test that the necessary steps to initiate the self-tests (e.g., the actual command that the operator must send to the module) are consistent with that specified in the vendor documentation, the tester shall command the module to perform the power-up self-tests. If the steps that the tester performs are not consistent with those in the documentation, the assertion is failed.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <H4> <U>Cryptographic algorithm test</U></H4> <A NAME="as1110"></A><B>AS11.10: The cryptographic algorithms shall be tested by operating the algorithm on data for which the correct output is already known (i.e., a "known answer" test). The test is passed if the calculated output equals the previously generated output. (1, 2, 3, and 4)</B> <P><I>(Relevant Guidance: <A HREF="1401ig-4.htm#11dsakat">11.2</A> )</I> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve111001"></A><B>VE11.10.01</B>: The vendor shall document the known answer test that should be performed for the cryptographic algorithm test.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te111001"></A><B>TE11.10.01</B>: The tester shall inspect the vendor documentation to determine whether it includes the following steps for the cryptographic algorithm test:</LI> <P> <OL> <LI> Use of a known answer</LI> <LI> Calculations that should equal the known answer</LI> <LI> Comparison of the calculated answer against the known answer</LI> <LI> Successful indication if calculated equals known, otherwise failure</LI> </OL> <LI> <A NAME="te111002"></A><B>TE11.10.02</B>: By reviewing the code listing and/or design documentation and comparing it with the vendor documentation, the tester shall verify that the implementation of the known answer test is consistent with the vendor documentation.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as1111"></A><B>AS11.11: A known answer test shall be run for each cryptographic function (e.g., encryption, decryption, authentication) that is implemented. (1, 2, 3, and 4)</B> <P><I>(Relevant Guidance: <A HREF="1401ig-4.htm#11dsakat">11.2</A> )</I><B></B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve111101"></A><B>VE11.11.01</B>: In the vendor documentation of the known answer test, the vendor shall indicate that all of the cryptographic functions are tested by the known answer test and shall list them.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te111101"></A><B>TE11.11.01</B>: By checking the vendor documentation, the tester shall verify that a known answer test is associated with each cryptographic function. The list of cryptographic functions shall include the following:</LI> <P> <OL> <LI> Encryption</LI> <LI> Decryption</LI> <LI> Secure message hashing</LI> <LI> Digital signature creation and verification</LI> <LI> Other operations that require the use of cryptography</LI> </OL> <LI> <A NAME="te111102"></A><B>TE11.11.02</B>: By analyzing the code listing and/or design documentation, the tester shall verify that the implementation of the cryptographic algorithm test includes the initiation of known answer tests for all of the cryptographic functions.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as1112"></A><B>AS11.12: Message digest algorithms shall either have an independent known answer test or shall be included in the known answer test of the cryptographic algorithm in which they are included. (1, 2, 3, and 4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve111201"></A><B>VE11.12.01</B>: If the module implements message digest algorithms, the vendor shall specify which known answer test is used to test it.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te111201"></A><B>TE11.12.01</B>: The tester shall determine whether the module implements a message digest algorithm. If so, the tester shall verify that the vendor documentation specifies whether the message digest algorithm has its own known answer test or whether it is included in the known answer test of another algorithm.</LI> <P> <LI> <A NAME="te111202"></A><B>TE11.12.02</B>: By checking the code listing and/or design documentation, the tester shall verify that the module uses either a separate known answer test or the known answer test of an algorithm in order to test a message digest algorithm.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as1113"></A><B>AS11.13: A cryptographic module may omit the cryptographic algorithm test if the module includes two independent cryptographic algorithm implementations whose output are continually compared in order to ensure the correct functioning of the cryptographic algorithm. Whenever the output of the two implementations are not equal, the module shall enter an error state and output an error indicator via the status interface. (1, 2, 3, and 4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve111301"></A><B>VE11.13.01</B>: The vendor shall specify whether a known answer test or the comparison of the output of two independent cryptographic algorithm implementations (compared answer test) is used to test the module's cryptographic algorithm. If the compared answer test is used, the vendor shall document it.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te111301"></A><B>TE11.13.01</B>: The tester shall determine from the vendor documentation whether a known answer test or a compared answer test is used to test the module's cryptographic algorithm. If the compared answer test is used, the tester shall determine whether the documentation of the compared answer test includes:</LI> <P> <OL> <LI> Use of two independent cryptographic algorithm implementations</LI> <LI> Continual comparison of the outputs of the algorithm implementation</LI> <LI> Transition into an error state and output of an error indicator when the two outputs are not equal</LI> </OL> <LI> <A NAME="te111302"></A><B>TE11.13.02</B>: By checking the code and/or design documentation, the tester shall verify that the module implements the documented steps for performing a compared answer test.</LI> <P> <LI> <A NAME="te111303"></A><B>TE11.13.03</B>: Validation of whether the module enters the error state and outputs an error indicator upon failure of the self-test is performed under TE11.02.01, TE11.02.02, and TE11.02.03. If any of these tests fail, this assertion fails.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <H4> <U>Software/firmware test</U></H4> <A NAME="as1114"></A><B>AS11.14: An error detection code (EDC) or FIPS-approved authentication technique (e.g. the computation and verification of a data authentication code or NIST digital signature algorithm) shall be calculated on and stored with all software and firmware residing in the module (e.g., within EEPROM and RAM). This error detection code, data authentication code, or digital signature shall then be verified when the power-up self-tests are run. (1, 2, 3, and 4)</B> <P><I>(Relevant Guidance: <A HREF="1401ig-3.htm#7swauthent">7.1</A> , <A HREF="1401ig-4.htm#11edcreqs">11.4</A> )</I> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve111401"></A><B>VE11.14.01</B>: The vendor documentation shall specify whether an error detection code (EDC) or a FIPS-approved authentication technique (e.g., FIPS-approved data authentication code (DAC) or NIST digital signature) will be used to provide integrity for all resident software and firmware. If the module implements a FIPS-approved authentication technique, the vendor shall provide proof that shall consist of a validation certificate from a NIST-approved laboratory asserting that the authentication technique implemented in the module is FIPS-approved. In the absence of such a validation certificate, the vendor organization shall provide a written affirmation asserting that the authentication technique implemented in the module is FIPS-approved. The documentation shall describe the implemented integrity mechanism.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te111401"></A><B>TE11.14.01</B>: The tester shall determine from the proof provided by the vendor whether the authentication technique implemented in the module is FIPS-approved. If the tester cannot determine this, the assertion fails.</LI> <P> <LI> <A NAME="te111402"></A><B>TE11.14.02</B>: If the module implements EDCs for software/firmware integrity, the tester shall verify that the vendor documentation of the software/firmware test includes:</LI> <P> <OL> <LI> Description of EDC algorithm.</LI> <LI> Identification of software and firmware that is protected using EDCs.</LI> <LI> Calculation of the EDCs when the software and firmware is installed</LI> <LI> Recalculation of the EDCs when the self-test is initiated</LI> <LI> Comparison of the stored EDC against the recalculated EDC</LI> <LI> Failure of the self-test when the two EDCs are not equal</LI> </OL> <LI> <A NAME="te111403"></A><B>TE11.14.03</B>: If the module implements a DAC for software/firmware integrity, the tester shall verify that the vendor documentation of the software/firmware test fully describes the process bywhich the DAC is calculated and verified. The following example is the DES cipher-block chaining method for calculating DACs:</LI> <P> <OL> <LI> Divide software into 64-bit blocks</LI> <LI> Compute the XOR of the first block and an initialization vector</LI> <LI> Encrypt the result</LI> <LI> XOR the encrypted result with the next block and encrypt</LI> <LI> Repeat the XOR and encryption until the last block has been processed. The last block to be processed is the DAC.</LI> </OL> <LI> <A NAME="te111404"></A><B>TE11.14.04</B>: If the module implements the NIST digital signature for software/firmware integrity, the tester shall verify that the vendor documentation of the software/firmware test includes the following:</LI> <P> <OL> <LI> Description of digital signature algorithm</LI> <LI> Identification of software and firmware that is protected using digital signatures.</LI> <LI> Calculation of digital signatures when the software and firmware is installed</LI> <LI> Verification of the digital signature when the self-test is initiated</LI> <LI> Failure of the self-test upon failure of the digital signature verification</LI> </OL> <LI> <A NAME="te111405"></A><B>TE11.14.05</B>: By checking the code and/or design documentation, the tester shall verify that the implementation of the software/firmware test is consistent with either TE11.14.01, TE11.14.02, or TE11.14.03.</LI> <P> <LI> <A NAME="te111406"></A><B>TE11.14.06</B>: If possible, the tester shall test the module by modifying the stored software, firmware, or the implemented integrity mechanism and initiating the self-tests, and observing the output from the status output interface. If no indicator is output which indicates that the software/firmware self-test failed, the assertion fails.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <H4> <U>Critical functions test</U></H4> <A NAME="as1115"></A><B>AS11.15: All other functions that are critical to the secure operation of the module and can be tested as part of the power-up tests shall be tested. Documentation shall provide a complete specification of all critical functions and the nature of the power-up self-tests designed to test those functions. Other critical functions that are performed under certain specific conditions are tested as part of the conditional tests. (1, 2, 3, and 4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve111501"></A><B>VE11.15.01</B>: Critical functions can be defined as those functions that could lead to the disclosure of plaintext information, including data and cryptographic keys, if they fail. Examples of critical functions include random/pseudo-random number generation, operation of the cryptographic algorithm, and cryptographic bypass.</LI> <P> <LI> <A NAME="ve111502"></A><B>VE11.15.02</B>: The vendor shall provide a matrix of all critical functions. For each critical function, the vendor shall indicate:</LI> <P> <OL> <LI> Its purpose (e.g., why is it a "critical" function</LI> <LI> Which critical functions are tested by which power-up tests</LI> <LI> Which critical functions are tested by which conditional tests</LI> </OL> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te111501"></A><B>TE11.15.01</B>: The tester shall review the vendor-supplied matrix that identifies the critical functions and the self-tests that are designed to test them. This documentation shall include the following:</LI> <P> <OL> <LI> Identification and description of all critical functions</LI> <LI> Identification of at least one self-test for every critical function</LI> </OL> The critical functions must include, but not be limited to, random number generation and operation of the cryptographic algorithm. Optional critical functions, such as pseudo-random number generation and cryptographic bypass, must have critical functions tests only if they are implemented in the module. <P> <LI> <A NAME="te111502"></A><B>TE11.15.02</B>: By checking the code and/or design documentation, the tester shall verify that the module performs the specified self-tests for each critical function.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <H4> <U>Statistical Random Number Generator Tests</U></H4> <A NAME="as1116"></A><B>AS11.16: Cryptographic modules that implement a random or pseudorandom number generator shall incorporate the capability to perform statistical tests for randomness. The four tests specified in FIPS PUB140-1 are recommended. However, alternative tests which provide equivalent or superior randomness checking may be substituted. If any of the tests fail, the module shall enter an error state. A related assertion is AS11.02. (3 and 4)</B> <P><I>(Relevant Guidance: <A HREF="1401ig-4.htm#8ivreqs">8.5</A> )</I> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve111601"></A><B>VE11.16.01</B>: If the module implements a random or pseudorandom number generator, the vendor documentation shall specify statistical tests for randomness. These tests are optional at Levels 1 and 2. The randomness tests implemented by the module can consist of, but are not limited to, all of the following tests that are recommended by section 4.11.1 of FIPS PUB 140-1:</LI> <P> <OL> <LI> Monobit Test</LI> <LI> Poker Test</LI> <LI> Runs Test</LI> <LI> Long Run Test</LI> </OL> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te111601"></A><B>TE11.16.01</B>: If the module implements a random or pseudorandom number generator, the tester shall check the vendor documentation to verify that statistical tests for randomness are specified if the module is meant to meet either Level 3 or Level 4; if the module is a Level 1 or 2 module, the statistical random number generator tests are optional.</LI> <P> <LI> <A NAME="te111602"></A><B>TE11.16.02</B>: The tester shall determine from the vendor documentation whether the statistical tests recommended in section 4.11.1 of FIPS PUB 140-1 are implemented by the module. If so, the tester shall review the specification of the statistical tests in the code and/or design documentation to determine whether they have been implemented as specified in FIPS PUB 140-1 and that the module enters an error state if any of them fail. The specifications of the recommended tests are based on a single bit stream of 20,000 consecutive bits of output and are as follows:</LI> <P> <OL> <LI> Monobit Test</LI> <UL TYPE=SQUARE> <LI> Count the number of ones in the 20,000 bit stream. Denote this quantity by X.</LI> <LI> The test is passed if 9,654 < X < 10,346</LI> </UL> <LI> Poker Test</LI> <UL TYPE=SQUARE> <LI> Divide the 20,000 bit stream into 5,000 contiguous 4-bit segments. Count and store the number of occurrences of each of the 16 possible 4-bit values. Denote <I>f(i)</I> as the number of each 4-bit value <I>i</I> where 0 <= i <= 15</LI> <LI> Evaluate the following:</LI> <CENTER></CENTER> <CENTER><IMG SRC="fi1401f3.gif" ></CENTER> <LI> The test is passed if 1.03 < X < 57.4</LI> </UL> <LI> Runs Test</LI> <UL TYPE=SQUARE> <LI> A run is defined as a maximal sequence of consecutive bits of either all ones or all zeros, which is part of the 20,000 bit sample stream. The incidences of runs (for both consecutive zeros and consecutive ones) of all lengths (>= 1) in the sample stream should be counted and stored.</LI> <LI> The test is passed if the number of runs that occurs (of length 1 through 6) is each within the corresponding interval specified below. This must hold for both the zeros and ones; that is, all 12 counts must lie in the specified interval. For the purpose of this test, runs of greater than 6 are considered to be of length 6.</LI> <P> <TABLE BORDER CELLSPACING=3 CELLPADDING=2 > <TR> <TH><I>Length of Run</I></TH> <TH><I>Required Interval</I></TH> </TR> <TR> <TD ALIGN=CENTER>1</TD> <TD ALIGN=RIGHT>2,267-2733</TD> </TR> <TR> <TD ALIGN=CENTER>2</TD> <TD ALIGN=RIGHT>1,079-1,421</TD> </TR> <TR> <TD ALIGN=CENTER>3</TD> <TD ALIGN=RIGHT>502-748</TD> </TR> <TR> <TD ALIGN=CENTER>4</TD> <TD ALIGN=RIGHT>223-402</TD> </TR> <TR> <TD ALIGN=CENTER>5</TD> <TD ALIGN=RIGHT>90-223</TD> </TR> <TR> <TD ALIGN=CENTER>6 +</TD> <TD ALIGN=RIGHT>90-223</TD> </TR> </TABLE> </UL> <LI> Long Run Test</LI> <UL TYPE=SQUARE> <LI> A long run is defined to be a run of length 34 or more (of either zeros or ones).</LI> <LI> On the sample of 20,000 bits, the test is passed if there are NO long runs.</LI> </UL> </OL> <LI> <A NAME="te111603"></A><B>TE11.16.03</B>: If the module implements statistical tests other than those recommended in FIPS PUB 140-1, the tester shall determine from the vendor documentation whether they provide equivalent or superior randomness checking. If not, this assertion fails.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as1117"></A><B>AS11.17: For Level 3, the statistical tests shall be callable upon demand. A related assertion is AS11.09. (3)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve111701"></A><B>VE11.17.01</B>: See VE11.09.01 for the vendor documentation requirement for tests that can be initiated by the operator.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te111701"></A><B>TE11.17.01</B>: Verification of the vendor documentation and the ability to initiate the tests upon demand was performed under TE11.09.01-02. If the statistical tests cannot be initiated from at least one authorized role upon demand, this assertion fails.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <P><A NAME="as1118"></A><B>AS11.18: For Level 4, the statistical tests shall be performed at power-up and shall also be callable upon demand. Related assertions are AS11.05 and AS11.09. (4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve111801"></A><B>VE11.18.01</B>: See VE11.05.01 for the vendor requirement that statistical tests be performed at power-up. See VE11.09.01 for the vendor requirement that these tests be callable upon demand by an operator.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te111801"></A><B>TE11.18.01</B>: Verification of the vendor documentation was performed under TE11.05.01 and TE11.09.01. Verification that the tests are performed at power-up was performed under TE11.05.02. Verification that the tests can be initiated on demand by an operator was performed under TE11.09.02. If either of the verifications fail, this assertion fails.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <H4> <A NAME="sec11.3"></A>11.3 Conditional Tests</H4> <H4> <U>Pairwise consistency test</U></H4> <A NAME="as1119"></A><B>AS11.19: Cryptographic modules that generate public and private keys shall test the keys for pairwise consistency. If the keys are to be used only for the calculation and verification of digital signatures, then the consistency of the keys shall be tested by the calculation and verification of a signature. (1, 2, 3, and 4)</B> <P><I>(Relevant Guidance: <A HREF="1401ig-4.htm#11dsakat">11.2</A> )</I> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve111901"></A><B>VE11.19.01</B>: If the module generates public and private keys, the vendor documentation shall describe how the keys are used by the module. If the keys are used for encryption/decryption, the documentation shall describe a pairwise consistency test that is based on encryption/decryption. If the keys are used for the calculation and verification of digital signatures, either in addition to or in lieu of being used for encryption/decryption, the documentation shall describe a pairwise consistency test which is based on the calculation and verification of a digital signature.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te111901"></A><B>TE11.19.01</B>: The tester shall determine from the vendor documentation whether the module generates public and private keys. If so, the tester shall check that the documentation describes one or more pairwise consistency tests based on how the keys are used by the module (encryption/decryption, digital signatures, or both).</LI> <P> <LI> <A NAME="te111902"></A><B>TE11.19.02</B>: If public and private keys are used for encryption/decryption, the tester shall verify that the implementation of the pairwise consistency check is consistent with the vendor documentation by checking the code and/or design documentation. In performing the verification, the tester shall consider the following example of a pairwise consistency test for keys that are used to perform inverse functions:</LI> <P> <OL> <LI> Apply the public key to a plaintext value.</LI> <LI> Compare the result to the original plaintext; if they are the same, the test is failed.</LI> <LI> Apply the private key to the ciphertext value.</LI> <LI> Compare the result to the plaintext value; if they are not the same, the test is failed.</LI> </OL> <LI> <A NAME="te111903"></A><B>TE11.19.03</B>: If public and private keys are used for the calculation and verification of digital signatures, the tester shall verify the implementation of the pairwise consistency check is consistent with the vendor documentation by checking the code and/or design documentation. In performing the verification, the tester shall consider the following example, based on the NIST Digital Signature Standard (DSS), of a pairwise consistency test for keys that are used to calculate and verify digital signatures:</LI> <P> <OL> <LI> Apply a secure hash algorithm to a message to create a message digest</LI> <LI> Input the message digest and the private key into a digital signature algorithm to create the signature</LI> <LI> Input the message digest, the public key, and the signature into the verification algorithm</LI> <LI> The assertion is satisfied only if the verification succeeds</LI> </OL> </UL> <HR SIZE=4 WIDTH=15%> <H4> <U>Software/firmware load test</U></H4> <A NAME="as1120"></A><B>AS11.20: A cryptographic mechanism using a FIPS-approved authentication technique (e.g., a data authentication code or NIST digital signature algorithm) shall be applied to all validated software and firmware that can be externally loaded into a cryptographic module. This test shall verify the data authentication code or digital signature whenever the software or firmware is externally loaded into the module. (1, 2, 3, and 4)</B> <P><I>(Relevant Guidance: <A HREF="1401ig-4.htm#11loadcontrol">11.3</A> )</I><B></B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve112001"></A><B>VE11.20.01</B>: The vendor documentation shall describe the FIPS-approved authentication technique used to protect the integrity of all externally loaded software and firmware. The vendor shall provide proof that the technique is FIPS-approved. This proof shall consist of a validation certificate from a NIST-approved laboratory asserting that the authentication technique implemented in the module is FIPS-approved. In the absence of the validation certificate, the vendor organization shall provide a written affirmation asserting that the authentication technique implemented in the module is FIPS-approved.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te112001"></A><B>TE11.20.01</B>: The tester shall determine from the proof provided by the vendor whether the authentication technique implemented in the module is FIPS-approved. If the tester cannot determine this, the assertion fails.</LI> <P> <LI> <A NAME="te112002"></A><B>TE11.20.02</B>: If the module implements a DAC, the tester shall check the vendor documentation, code, and/or design documentation to verify that the software/firmware load test in the module fully implements the process by which the DAC is calculated and verified. The following example is the DES cipher-block chaining method for calculating DACs:</LI> <P> <OL> <LI> Divide software into 64-bit blocks</LI> <LI> Compute the XOR of the first block and an initialization vector</LI> <LI> Encrypt the result</LI> <LI> XOR the encrypted result with the next block and encrypt</LI> <LI> Repeat the XOR and encryption until the last block has been processed. The last block to be processed is the DAC.</LI> </OL> <LI> <A NAME="te112003"></A><B>TE11.20.03</B>: If the module implements the NIST digital signature for software/firmware integrity, the tester shall check the vendor documentation, code, and/or design documentation to verify that the software/firmware load test implemented in the module includes the following:</LI> <P> <OL> <LI> Description of digital signature algorithm</LI> <LI> Identification of software and firmware that is protected using digital signatures.</LI> <LI> Calculation of digital signatures when the software and firmware is installed</LI> <LI> Verification of the digital signature when the self-test is initiated</LI> <LI> Failure of the self-test upon failure of the digital signature verification</LI> </OL> <LI> <A NAME="te112004"></A><B>TE11.20.04</B>: The tester shall modify the software, firmware, DAC, or digital signature associated with software/firmware that must be loaded, load the software/firmware, and verify that the module fails the self-test.</LI> <P> </UL> <HR SIZE=4 WIDTH=15%> <H4> <U>Manual key entry test</U></H4> <A NAME="as1121"></A><B>AS11.21: When cryptographic keys or key components are manually entered into a cryptographic module, the keys shall have an error detection code (e.g., a parity check value) or shall use duplicate entries in order to verify the accuracy of the entered keys. A cryptographic module shall verify the error detection code or duplicate entries and provide an indication of the success or failure of the entry process. (1, 2, 3, and 4)</B> <P><B> </B> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve112101"></A><B>VE11.21.01</B>: The vendor shall document the manual key entry test. Depending on whether error detection codes or duplicate key entries are used, the manual key entry test shall include the following:</LI> <P> <OL> <LI> Error detection codes (EDCs):</LI> <P> <UL TYPE=SQUARE> <LI> Description of EDC calculation algorithm</LI> <LI> Description of verification process</LI> <LI> Expected outputs for success or failure of test</LI> </UL> <LI> Duplicate key entries:</LI> <P> <UL TYPE=SQUARE> <LI> Description of verification process</LI> <LI> Expected outputs for success or failure of test</LI> </UL> </OL> <LI> <A NAME="ve112102"></A><B>VE11.21.02</B>: If EDCs are associated with keys, then the vendor documentation that describes the format of the cryptographic keys (see AS08.01) shall include fields for the error detection codes.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te112101"></A><B>TE11.21.01</B>: The tester shall determine from the vendor documentation which method is used for the manual key entry test (error detection codes or duplicate key entries). Based on the method used, the tester shall check the vendor documentation, code, and/or design documentation that addresses the implementation of the manual key entry test to determine whether the following information is included:</LI> <P> <OL> <LI> Error detection codes:</LI> <P> <UL TYPE=SQUARE> <LI> Key format for all manually-entered keys, including fields for EDCs (see AS08.01)</LI> <LI> Description of EDC algorithm</LI> <LI> Description of EDC verification process</LI> <LI> All expected outputs for success or failure of the test</LI> </UL> <LI> Duplicate key entries:</LI> <P> <UL TYPE=SQUARE> <LI> Duplicate key entries for all manually-entered keys</LI> <LI> Description of duplicate key, entry verification process</LI> <LI> All expected outputs for success or failure of the test</LI> </UL> </OL> <LI> <A NAME="te112102"></A><B>TE11.21.02</B>: For manual key entry tests using EDCs, the tester shall perform the following tests:</LI> <P> <OL> <LI> The tester shall enter each type of manually-entered key without any errors and shall observe the status output interface. If no indicator is detected, or if the indicator does not match the documented indicator for the success of the manual key entry test, the test is failed.</LI> <LI> The tester shall attempt to perform cryptographic operations with each entered key to verify that it was entered correctly.</LI> <LI> The tester shall change either the EDC associated with each manually-entered key or the key itself and shall enter them into the module. The tester shall observe the indicator that is output from the status output interface; if no output is detected, or the indicator does not match the documented indicator for the failure of the manual key entry test, the test is failed.</LI> <LI> The tester shall attempt to perform cryptographic operations with each key that was not successfully entered. Each operation using each key should fail, verifying that the key was not entered.</LI> </OL> <LI> <A NAME="te112103"></A><B>TE11.21.03</B>: For manual key entry tests using duplicate key entries, the tester shall perform the following tests:</LI> <P> <OL> <LI> The tester shall enter each type of manually-entered key without any errors and shall observe the status output interface. If no indicator is detected, or if the indicator does not match the documented indicator for the success of the manual key entry test, the test is failed.</LI> <LI> The tester shall attempt to perform cryptographic operations with each entered key to verify that it was entered correctly.</LI> <LI> The tester shall alter the accuracy of one of the manually entered keys, either the first or second duplicate entry, and shall enter them into the module. The tester shall observe the indicator that is output from the status output interface; if no output is detected, or the indicator does not match the documented indicator for the failure of the manual key entry test, the test is failed.</LI> <LI> The tester shall attempt to perform cryptographic operations with each key that was not successfully entered. Each operation using each key should fail, verifying that the key was not entered.</LI> </OL> </UL> <HR SIZE=4 WIDTH=15%> <H4> <U>Continuous Random Number Generator Test</U></H4> <A NAME="as1122"></A><B>AS11.22: Cryptographic modules that implement a random or pseudorandom number generator shall test the generator for failure to a constant value. If the generator produces blocks of n bits, where n > 15, the first block generated after power-up shall not be used, but shall be saved for comparison with the next block to be generated. Upon each subsequent generation, the newly generated block is compared with the previously generated block. The test fails if the two compared blocks are equal. If each call to the generator produces fewer than 16 bits, then the first n bits generated after power-up, for some n > 15, shall not be used, but shall be saved for comparison with the next n generated bits. Each subsequent generation of n bits shall be compared with the previously generated n bits. The test fails if two compared n-bit sequences are equal. (1, 2, 3, and 4)</B> <P><I>(Relevant Guidance: <A HREF="1401ig-4.htm#8ivreqs">8.5</A> )</I> <H4> <I>Required Vendor Information</I></H4> <UL> <LI> <A NAME="ve112201"></A><B>VE11.22.01</B>: If the module implements a random or pseudorandom number generator, the vendor shall document the continuous random number generator test.</LI> <P> </UL> <H4> <I>Required Test Procedures</I></H4> <UL> <LI> <A NAME="te112201"></A><B>TE11.22.01</B>: The tester shall determine whether the module implements a random or pseudorandom number generator. If so, the tester shall check the documentation, code and/or design documentation that addresses of the continuous random number generator test to verify that it implements the specifics of the test. If the generator generates blocks of n bits, where n > 15, then the tester shall verify that the implementation of the test includes:</LI> <P> <OL> <LI> Storage of first block for comparison against the next block</LI> <LI> Comparison of each subsequently generated block against the previously generated block</LI> <LI> Failure of the test if two compared blocks are equal</LI> </OL> If the generator consistently generates fewer than 16 bits, then the tester shall verify that the implementation of the test includes the following: <P> <OL VALUE=4> <LI> Storage of the first n bits, where n > 15, for comparison against the next n generated bits</LI> <LI> Comparison of each subsequently generated n bits against the previously generated n bits</LI> <LI> Failure of the test if two compared n-bit sequences are equal</LI> </OL> </UL> <HR SIZE=4 WIDTH=75%> <P> <HR SIZE=4 WIDTH=75%> <P>Continue to <A HREF="140testA.htm">Appendix A</A>: A Cryptographic Module Security Policy </BODY> </HTML>