On 04/02/2012 08:14 AM, dave.mclel...@emc.com wrote:
> In the draft User Guide for the FIPS Object Module 2.0, the official
> validated platforms are shown as Linux and Windows, 32- and 64-bit
> architectures, with or without assembler optimizations.   The draft
> Security Policy mentions only Android 2.2 and HP-UX 11i in section 2:
> Tested Configurations, and mentions changes to accommodate
> cross-compilation for UCLinux. 
> 
> QUESTION: The Security Policy for 1.2.2 specifically spells out the
> Linux and Windows validation platforms, but the draft 2.0 document
> does not.  What does this imply about what platforms will be
> considered validated on the 2.0 module?

The upcoming 2.0 module will include roughly 40 separate platforms,
either as initially awarded or shortly thereafter via "change letter"
modifications. The reason that the draft Security Policy you see only
mentions two platforms is that due to the long lead time for CMVP action
we submitted the formal paperwork as soon as possible and continued
working on the additional platforms (Operational Environments) in
parallel. Almost all of those OEs have since been tested and submitted,
and are waiting on action by the CAVP (the bureaucracy that handles the
algorithm validations that are prerequisites for the FIPS 140-2 validation).

> The User's Guide also mentions success with the build on a number of
> other Unix platforms, and also uses 'Solaris 10' as an example of a
> platform appearing in section 5.5 in the statement of use of the
> Module.
> 
> QUESTION: even though Solaris is not shown as a validated platform,
> can we, having implemented with (OpenSSL 1.0.1 and FIPS 2.0) safely
> make a statement similar to the sample in Section 5.5 on the
> non-validated platforms?  That is, if we implement additionally on
> Solaris, HP, and Linux IA, for example, can we responsibly make the
> claim that we are using the validated Module on those platforms?

Solaris 10 on SPARCv9 happens to be one of the additional platforms this
validation will include.

However, assuming it was not (or taking the case of a platform that
definitely is not included, Linux on Itanium, say): this is a tricky
question. Can a user of the module on platform X claim that usage as
validated when platform X does not correspond directly to any
Operational Environment?

Ok, deep breath... I will give three different answers, a) simple, b)
nuanced and conservative, and c) nuanced and liberal.

a) The simplistic answer is no. If your target platform does not
directly correspond to a validation OE then you need to be very careful
about direct claims about validation.

b) A more nuanced conservative answer is "it depends". The key concepts
here are "code path" and "processor core".

The "code path" is the set of object code that is generated when the
FIPS module is built from source. That object code maps more or less
directly to the C source code when using pure C code (i.e., a "no-asm"
build), but for many platforms assembler optimizations are generated by
default, resulting in different object code.  For instance, for the
ARMv7+ processors NEON specific optimizations will be generated for NEON
capable build systems (or specified in a cross-compile environment).
Three different optimization levels are supported for the x86 processor
family: no optimization, SSE2 optimization, and AES-NI+PCLMULQDQ+SSSE3
optimization. If the object code corresponding to a specific level of
optimization was not included in any of the validation OEs then that
optimization level cannot be considered validated.

The "processor core" is the ABI (Application Binary Interface) of the
processor ... in this context the set of machine instructions supported
by that processor.  The OEs processors are (especially of late)
specified in tedious detail (e.g., "Qualcomm QSD 8250" and "NVIDIA Tegra
250 T20" instead of "ARMv7"). Clearly the applicability of validations
for general purpose software modules would be quite limited if each and
every permutation of a processor had to be separately tested.

The general consensus appears to be that an OE is applicable to all
processors sharing the same fundamental processor capability, e.g. a
module validated on one processor with an ARMv4 core is validated on all
such processors. Likewise for operating system families, a module
validated for Solaris 10, Android 2.2, or Fedora 14 is valid for all
similar permutations (kernel upgrades, etc.) of those O/S distributions.

One rule of thumb we use in determining whether a given target platform
corresponds to a formally tested OE is the "drop-in" test: build the
module on the formally tested OE and then copy the resulting FIPS module
object file *as-is* to the prospective target platform. If it runs
correctly there then it is a good candidate to be considered as validated.

By this criteria Linux on IA and HP-UX on PA-RISC would *not* be
validated even though the FIPS module will build and run just fine on
those platforms (presumably, not having actually tested on those
platforms recently).

c) Finally a nuanced and hopeful answer is "yes"; if the module builds
and runs on your platform then it can probably be claimed as validated
by virtue of the "vendor affirmation" or "user affirmation" as described
in section G.5 of the Implementation Guidance document
(http://csrc.nist.gov/groups/STM/cmvp/documents/fips140-2/FIPS1402IG.pdf).
Note G.5 provides a pretty broad latitude for use of a module on "any
general purpose computer" and a "compatible single user operating
system" (the "single use" part is another can of worms I'll save for
later). Note that recompilation to "port" to other platforms is
specifically permitted. Normally recompilation would only be done by the
vendor of record (OSF for this validation), but for the OpenSSL FIPS
Object Module series of validations compilation from source is part of
the module installation process.

So, if you're willing to "affirm" validation indirectly the validation
is applicable to a very broad range of platforms. For marketing reasons
some software vendors aren't comfortable with saying that they are
indirectly "affirming" validation per I.G. G.5, rather than than
directly from the original validation. In some cases minor source code
tweaks are necessary to accommodate new platforms, in which case user
affirmation is not possible. When vendor affirmation isn't feasible the
solution is to obtain a "maintenance letter" or "change letter"
modification of the original validation to add the new platform(s) of
interest as formally tested OEs. The change letter process is *much*
faster and cheaper than a full validation -- usually only a few weeks
and a few thousand dollars per platform.

By the I.G. G.5 criteria Linux on IA, HP-UX on PA-RISC, etc. could be
claimed as validated via user and/or vendor affirmation.

Important caveat #1: note in this discussion, windy as it is, I am still
glossing over some potential complications.

Important caveat #2: FIPS 140-2 is a topic with a lot of unwritten lore
and many issues with varying levels of confusion and contention. I have
given my best understanding of the situation here but there will surely
be some in the FIPS 140-2 community who disagree on one or more points.

Important caveat #3: only the CMVP is in a position to make
authoritative pronouncements of any kind about FIPS 140-2. In general
they will respond to vendor and end user queries, so when in doubt
that's probably a better option than trusting some rant you found on the
internet.

-Steve M.

-- 
Steve Marquess
OpenSSL Software Foundation, Inc.
1829 Mount Ephraim Road
Adamstown, MD  21710
USA
+1 877 673 6775 s/b
+1 301 874 2571 direct
marqu...@opensslfoundation.net
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to