Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI
This information is Copyright 2009 Sun Microsystems
1. Introduction
   1.1 Project/Component Working Name:
       Kernel Cryptographic Framework support for FIPS 140-2
   1.2 Name of Document Author/Supplier:
       Anthony Scarpino


Technical Description

   The Interface taxonomy is Consolidation Private.
   The Release taxonomy is Patch/Micro

   Diff-marked draft manpages, cspi design, and header files are included
   in the case directory.

Background

   Among the many requirement FIPS 140-2 documents, one is that of
   each algorithm modules in the boundary to perform a POST (Power-On
   Self Tests) when an algorithm modules loads.  A FIPS 140 boundary is defined
   as a set of binaries that will be verified before crypto operations are
   allowed from any binary in the boundaries.

   Another requirement is that the API, which FIPS 140 support is provided
   through, cannot operate until the boundary has been verified by approved
   FIPS 140 means.

   In the Kernel Cryptographic Framework, a providers (or algorithm module) 
   registers with the kcf kernel module when it loads using the existing 
   Service Provider Interface (SPI).  This allows the Cryptographic 
   Framework to know what functions the provider supports, among many other
   things, before the provider is allowed to operate.

   Simply by defining a POST function does not the make the module
   FIPS 140-compliant.  This is just one piece of the validation process with
   which involves a lab that specializes in FIPS 140 validations.


Proposal

    For POST support, extending the existing SPI so algorithm modules
    can register an entry point for a POST function, it allows kcf to
    orchestrate the running of POST for each of the algorithm modules
    when the framework is configured in FIPS 140-2 mode.

    This case would add another structure to the crypto_ops(9s),
    crypto_fips140_ops(9s) and increment the SPI version to 4.
    The algorithms modules that support FIPS 140 will be modified to use
    the version 4 SPI entry point (spi.h).  crypto_fips140_ops will contain
    one entry point:

        void (*fips140_post)(int *);


    With regard to preventing operations on FIPS 140 boundary modules until
    the boundary has been verified.  In nearly all the cases modifying
    existing code can support this operation, but random is the exception.
    The kcf random API requires two new functions that will delay
    operations until the boundary can be verified.  The existing random
    functions must remain untouched because some consumers of those
    functions cannot operate properly immediately without random data.
    All consumers using random, desiring to operate under FIPS 140-2
    compliance, must use the new APIs.  This case does not change the
    RNG or PRNG at all.

    The new functions are:

    int random_get_bytes_fips140(uint8_t *ptr, size_t len);
    int random_get_pseudo_bytes_fips140(uint8_t *ptr, size_t len);


Compatibility

       The SPI interface was introduced by PSARC 2001/553. The have
       been incremented by PSARC 2005/576 and PSARC/2007/092.
       The kernel kcf module will remain backwards compatible with
       version 1, 2, and 3 providers.

Bug/RFE Number(s): 6870299

Exported Interfaces:

+--------------------------------+---------------------------+--------------+
|   Interface                    |  Classification           | Comments     |
+--------------------------------+---------------------------+--------------+
|   impl.h                       |  Consolidation            | include file |
|                                |  Private                  |              |
|                                |                           |              |
|   spi.h                        |  Consolidation            | include file |
|                                |  Private                  |              |
|                                |                           |              |
|   ioctladmin.h                 |  Project Private          | include file |
|                                |                           |              |
|   sched_impl.h                 |  Project Private          | include file |
|                                |                           |              |
|   random.h                     |  Contracted Consolidation | include file |
|                                |  Private                  |              |
|                                |                           |              |
+--------------------------------+---------------------------+--------------+


6. Resources and Schedule
    6.4. Steering Committee requested information
        6.4.1. Consolidation C-team Name:
                ON
    6.5. ARC review type: FastTrack
    6.6. ARC Exposure: open


Reply via email to