[BACK]Return to crypto.html CVS log [TXT][DIR] Up to [local] / www

File: [local] / www / crypto.html (download) (as text)

Revision 1.12, Mon Feb 23 19:43:46 1998 UTC (26 years, 3 months ago) by millert
Branch: MAIN
Changes since 1.11: +3 -2 lines

Mention RIPEMD-160

<!DOCTYPE HTML PUBLIC  "-//IETF//DTD HTML Strict Level 2//EN//2.0">
<html>
<head>
<title>Cryptography in OpenBSD</title>
<link rev=made href=mailto:www@openbsd.org>
<meta name="resource-type" content="document">
<meta name="description" content="OpenBSD cryptography">
<meta name="keywords" content="openbsd,cryptography">
<meta name="distribution" content="global">
<meta name="copyright" content="This document copyright 1997 by OpenBSD.">
</head>

<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#23238E">

<img alt="[OpenBSD]" SRC="/images/smalltitle.gif">

<p>
<h3><font color=#e00000><strong>OpenBSD Cryptography</strong></font></h3>
The OpenBSD project is based in Canada.<p>

The <a href=http://axion.physics.ubc.ca/ECL.html>Export Control
List of Canada</a> places no significant restriction on the export of
cryptographic software, and is even more explicit about the free
export of freely-available cryptographic software.  Marc Plumb has
done
<a href=http://insight.mcmaster.ca/org/efc/pages/doc/crypto-export.html>
some research to test the cryptographic laws.</a>
<p>

Hence the OpenBSD project has embedded cryptography into numerous places
in the operating system.  We require that the cryptographic software we
use be <a href=policy.html>freely available and with good licenses</a>.
We do not use cryptography with nasty patents.
We also require that such software is from a countries with useful export
licenses because we do not wish to break the laws of any country.<p>

When we make OpenBSD releases or snapshots we do our build processes
in free countries to assure that the sources and binaries we provide
to users are free of tainting.  In the past our release binary builds
have been done in Canada, Sweden, and Germany.<p>

Today cryptography is an important mean for enhancing the security
of an operating system.  The cryptography utilized in OpenBSD
can be classified into three different aspects:<p>

<ul>
<li><a href=#prng>Pseudo Random Number Generators</a> (PRNG): ARC4, ...
<li><a href=#hash>Cryptographic Hash Functions</a>: MD5, SHA1, ...
<li><a href=#trans>Cryptographic Transforms</a>: DES, Blowfish, ...
</ul>

<p>
<a name=prng>
<h3><font color=#e00000><strong>Pseudo Random Number Generators</strong></font></h3>
A Pseudo Random Number Generator (PRNG) provides applications with a stream of 
numbers which have certain important properties for system security:<p>

<ul>
<li>It should be impossible for an outsider to predict the output of the
	random number generator even with knowledge of previous output.
<li>The generated numbers should not have repeating patterns which means
	the PRNG should have a very long cycle length.
</ul>

Since a PRNG is normally just an algorithm where the same initial
starting values will yield the same output. On a multiuser operating
system there are many sources which allow seeding the PRNG with random
data. The OpenBSD kernel uses the mouse interrupt timing, network data
interrupt latency, inter-keypress timing and disk IO information to
fill an entropy pool.  Random numbers are available for kernel
routines and are exported via devices to userland programs.
In OpenBSD random numbers are used in many places, such as<p>
<ul>
<li>ports of a bound socket,
<li>PIDs of processes,
<li>RPC transaction IDs,
<li>DNS Query-IDs,
<li>inode generation numbers and
<li>password salts.
</ul>

<p>
<a name=hash>
<h3><font color=#e00000><strong>Cryptographic Hash Functions</strong></font></h3>
A Hash Function compresses its input data to a string of
constant size. For a Cryptographic Hash Function it is infeasible to find
<ul>
<li>two inputs which have the same output (collision resistant),
<li>a different input for a given input with the same output
	(2nd preimage resistant).
</ul>

In OpenBSD MD5, SHA1, and RIPEMD-160 are used as Cryptographic Hash Functions,
e.g.
<ul> 
<li>in S/Key to provide one time passwords,
<li>in <a href=http://wserver.physnet.uni-hamburg.de/provos/photuris/>
	IPSec or Photuris</a> to authenticate the data origin of packets
	and to ensure packet integrity.
</ul>

<p>
<a name=trans>
<h3><font color=#e00000><strong>Cryptographic Transforms</strong></font></h3>
Cryptographic Transforms are used to encrypt and decrypt data. These
are normally used with an encryption key for data encryption and with
a decryption key for data decryption. The security of a Cryptographic
Transform should rely only on the keying material.<p>

OpenBSD provides transforms like DES and Blowfish for the kernel and userland
programs, which are used in many places like
<ul>
<li>in libc for creating Blowfish passwords,
<li>in <a href=http://wserver.physnet.uni-hamburg.de/provos/photuris/>IPSec</a>
	to provide confidentiality for the network layer,
<li>in kerberized telnet,
<li>in Photuris to protect the exchanged packet content.
</ul>

<p>
<hr>
<a href=/index.html><img src=/back.gif border=0 alt=OpenBSD></a>
<a href=mailto:www@openbsd.org>www@openbsd.org</a>
<br>
<small>$OpenBSD: crypto.html,v 1.12 1998/02/23 19:43:46 millert Exp $</small>

</body>
</html>