Kyle Hamilton wrote:
> The answer to your question is: there might be, but this is FAR
> beyond the level where anyone other than a specialist will be able to
> help you.

How true.  I've hesitated to weigh in on this thread because of the
complications that make my head hurt.

> This can be done if (and only if) ALL of the following are true: 1)
> you can cobble up an environment where you create the fipscanister
> using only unmodified sources into a binary that will load and run in
>  your monolithic environment, only using one of the four command
> lines allowed by the Security Policy; 2) you can link the
> fipscanister.o file into your proprietary kernel, including all its
> validation mechanisms (fips_premain.c); 3) you can port the OpenSSL
> code, 0.9.8j or later, into your proprietary kernel; 4) you can
> perform any steps necessary to configure 0.9.8j to realize that the
> FIPS canister is there.
>
> The security policy states only that the fipscanister.o must be
> created in the manner detailed in the security policy, and
> fips_premain.c must be compiled and linked in.  Once it's created,
> you can copy it anywhere, you can do anything with it, as long as you
>  don't violate the process of creation.  (the process of creation
> includes the embedding of the keyed MAC into the fipscanister.o
> library.)  You also cannot edit fips_premain.c, and your build
> environment must include the fipscanister.o.sha1 and
> fips_premain.c.sha1 files.

A good point.  Once you have properly embedded fipscanister.o in an
application you can treat that application just like any other
software.  A deployed (installed) validated module is both a thing (the
shared library or special object module in this case) and an
installation process, both of which are constrained by a set of rules
(the Security Policy).  The installation process for most validated
products is typically "run setup.exe" or "copy the file(s) from the
distribution CD".  In our case the installation process is more
involved.  The first part of that installation process which creates
fipscanister.o is a push-button process with little room for creative
license -- you untar the one true tarball, ./config fips, make.  The
part of the installation process that takes that fipscanister.o and
incorporates it into an application is *slightly* less constrained.

> More notably, the security policy does NOT state that you must use
> the provided fipsld script to link.  As long as all the steps
> performed by the fipsld script are performed, then you will be able
> to use FIPS_mode_set() from within your monolithic kernel.

Yes, the fipsld script proper is not required (for the Windows platform
it isn't used at all).  However, the two step linking operation that
fipsld performs is required.  In this sense the cryptographic module
boundary at the point where fipscanister.o has been created consists not
only of that file but also the ancillary files fipscanister.o.sha1,
fips_premain.c, and fips_premain.c.sha1 files.

So, can the v1.2 fipscanister.o be legitimately used in a linux kernel
module?  Theoretically I think it *may* be possible in a technical
sense, though I haven't written any kernel modules myself.  Start with
fipscanister.o and the ancillary files, and roll your own fipsld
equivalent that performs the two step link.  However, the kernel
contains other crypto that isn't validated (and isn't even from
openssl), so it's an interesting philosophical question to say under
what circumstances what parts of that Linux system can claim to be FIPS
validated.  The usual block diagrams included in FIPS validations show
the operating system as one monolithic block, and kernel modules could
legitimately be considered to be part of the core O/S and hence not part
of any userspace application at all.

So, if the reason for adding the crypto to a kernel module was to
support a userspace application one could speculate that the application
could be FIPS validated independently of that kernel and hence that
kernel module.  If the reason was to claim FIPS validation for the
entire kernel then you have a much bigger problem because of the other
existing crypto in the kernel.

At any rate I think that's a scripture question that would have to be
interpreted by the priesthood (the CMVP).  It's certainly above my pay
grade.

-Steve M.

-- 
Steve Marquess
Open Source Software institute
marqu...@oss-institute.org

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to