Skip to main content

Appendix Q: Cryptographic Modules

Cryptographic Modules Implemented for Data-in-Transit (DIT)

This page needs work:

  • The examples needs to be converted to YAML
  • A description of the YAML constructs needs to be provided

OSCAL's component model treats independent validation of products and services as if that validation were a separate component. This means when using components with FIPS 140 validated cryptographic modules, there must be two component assemblies:

  • The Validation Definition: A component that provides details about the validation.

  • The Product Definition: A component that describes the hardware or software product.

The validation definition is a component that provides details about the independent validation. Its type must have a value of "validation". In the case of FIPS 140 validation, this must include a link field with a rel value set to "validation-details". This link must point to the cryptographic module's entry in the NIST Computer Security Resource Center (CSRC) Cryptographic Module Validation Program Database.

The product definition is a product with a cryptographic module. It must contain all of the typical component information suitable for reference by inventory-items and control statements. It must also include a link field with a rel value set to "validation" and an href value containing a URI fragment. The fragment must start with a hashtag (#) and include the UUID value of the validation component. This links the two together.

system security plan cryptographic modules page image
Component Representation: Example Product with FIPS 140-2 Validation
<!-system-security-plan:
  uuid: 11111111-2222-4000-8000-000000000000
  system-implementation:
    components:
    - system-characteristicsuuid: 11111111-2222-4000-8000-009000300003
      type: software
      title: OpenSSL
      description: 'Provide a description and any pertinent note regarding the use
        of this CM.


        For data-at-rest modules, describe type of encryption implemented (e.g., full
        disk, file, record-level, etc.)


        Lastly, provide any supporting notes on FIPS status (e.g. historical) or lack
        of FIPS compliance (e.g., Module in Process).'
      props:
      --> <system-implementation>name: <!-asset-type
        value: cryptographic-module
      - username: version
        value: 3.0.8
      --> <!-name: vendor-name
        ns: http://fedramp.gov/ns/oscal
        value: OpenSSL FIPS Provider
      - Minimumname: Requiredfunction
        Componentsns: http://fedramp.gov/ns/oscal
        value: data-in-transit
        remarks: Usage statement
      links:
      - href: '#11111111-2222-4000-8000-009001200002'
        rel: validation
        text: A link to the 3rd party validation information related to this cryptographic
          module.
      status:
        state: operational

    -> <!--uuid: 11111111-2222-4000-8000-009001200002
      type: validation
      title: OpenSSL FIPS 140-2 Validation
      Certificatedescription: InformationDescribe -->
    <!-- Include a separate component for eachany relevant certificateinformation regarding this validation of
        the CM.
      props:
      - name: asset-type
        value: cryptographic-module
      -> <componentname: uuid="uuid-value"validation-type
        type="validation">value: <title>Module Name</title>
        <description><p>FIPS fips-140-2
      Validated Module</p></description>
        <prop ns="https://fedramp.gov/ns/oscal" name="asset-type" 
              value="cryptographic-module" />
        <prop ns="https://fedramp.gov/ns/oscal" name="vendor-name" 
              value="CM Vendor"/>
        <prop ns="https://fedramp.gov/ns/oscal" name="cryptographic-module-usage" 
              value="data-in-transit"/>
        <prop name="validation-type" value="fips-140-2"/>
        <prop name="validation-reference" value="0000"/>
        <link href="https://csrc.nist.gov/projects/cryptographic-module-validation-program/Certificate/0000" rel="validation-details" />
        <status state="operational" />
    </component>
    
    <!-- FIPSname: 140-2validation-reference
        Validatedvalue: Product'4811'
      -->status:
        <componentstate: uuid="uuid-value" type="software" >
        <title>Product Name</title>
        <description><p>A product with a cryptographic module.</p></description>
        <link href="#uuid-of-validation-component" rel="validation" />
        <status state="operational" />
    </component>
    
    <!-- service -->
</system-implementation>
<!-- control-implementation -->operational

Cryptographic Modules Implemented for Data-at-Rest (DAR)

The approach is the same as in the cryptographic module data-in-transit section.

ssp-figure-22.png

Component Representation: Example Product with FIPS 140-2 Validation
<!-system-security-plan:
  uuid: 11111111-2222-4000-8000-000000000000
  system-implementation:
    components:
    - system-characteristicsuuid: 11111111-2222-4000-8000-009000300012
      type: software
      title: Database Row Encryption Module
      description: Briefly describe the cryptographic module.
      props:
      --> <system-implementation>name: <!-asset-type
        value: cryptographic-module
      - username: version
        value: 1.2.3
      --> <!--name: Minimumvendor-name
        Requiredns: Components -->
    
    <!-- FIPS 140-2 Validation Certificate Information -->
    <!-- Include a separate component for each relevant certificate -->
    <component uuid="uuid-value" type="validation">
        <title>Module Name</title>
        <description><p>FIPS 140-2 Validated Module</p></description>
        <prop ns="https:http://fedramp.gov/ns/oscal"oscal
        name="asset-type"value: value="cryptographic-module"Databases-R-Us
      />- <propname: ns="https:function
        ns: http://fedramp.gov/ns/oscal"oscal
        name="vendor-name"value: value="CM Vendor"/>
        <prop ns="https://fedramp.gov/ns/oscal" name="cryptographic-module-usage" 
              value="data-at-rest"/>rest
        <propremarks: name="validation-type"Used value="fips-140-2"/>to <propencrypt name="validation-reference"and value="0000"/>decrypt <linkrows href="https://csrc.nist.gov/projects/cryptographic-module-validation-program/Certificate/0000"in rel="validation-details"the />database.
      <statusstatus:
        state="operational"state: />operational

    </component>
    
    <!-- FIPSuuid: 140-211111111-2222-4000-8000-009001200001
      Validatedtype: Productvalidation
      -->title: <componentDatabase uuid="uuid-value"Row type="software"Encryption >Module <title>Product(DREM)
      Name</title>description: <description><p>ABriefly productdescribe with athe cryptographic module.</p></description>
      <linkprops:
      href="#uuid-of-validation-component" rel="validation" />
        <status state="operational" />
    </component>
    
    <!-- servicename: asset-type
        value: cryptographic-module
      --> </system-implementation>name: <!-validation-type
        value: fips-140-2
      - control-implementationname: -->validation-reference
        value: '0000'
      status:
        state: operational