123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- .\" $OpenBSD: arc4random.3,v 1.19 2005/07/17 08:50:55 jaredy Exp $
- .\"
- .\" Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de>
- .\" All rights reserved.
- .\"
- .\" Redistribution and use in source and binary forms, with or without
- .\" modification, are permitted provided that the following conditions
- .\" are met:
- .\" 1. Redistributions of source code must retain the above copyright
- .\" notice, this list of conditions and the following disclaimer.
- .\" 2. Redistributions in binary form must reproduce the above copyright
- .\" notice, this list of conditions and the following disclaimer in the
- .\" documentation and/or other materials provided with the distribution.
- .\" 3. All advertising materials mentioning features or use of this software
- .\" must display the following acknowledgement:
- .\" This product includes software developed by Niels Provos.
- .\" 4. The name of the author may not be used to endorse or promote products
- .\" derived from this software without specific prior written permission.
- .\"
- .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- .\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- .\"
- .\" Manual page, using -mandoc macros
- .\"
- .Dd April 15, 1997
- .Dt ARC4RANDOM 3
- .Os
- .Sh NAME
- .Nm arc4random ,
- .Nm arc4random_stir ,
- .Nm arc4random_addrandom
- .Nd arc4 random number generator
- .Sh SYNOPSIS
- .Fd #include <stdlib.h>
- .Ft uint32_t
- .Fn arc4random "void"
- .Ft void
- .Fn arc4random_stir "void"
- .Ft void
- .Fn arc4random_addrandom "u_char *dat" "int datlen"
- .Sh DESCRIPTION
- The
- .Fn arc4random
- function provides a high quality 32-bit pseudo-random
- number very quickly.
- .Fn arc4random
- seeds itself on a regular basis from the kernel strong random number
- subsystem described in
- .Xr random 4 .
- On each call, an ARC4 generator is used to generate a new result.
- The
- .Fn arc4random
- function uses the ARC4 cipher key stream generator,
- which uses 8*8 8-bit S-Boxes.
- The S-Boxes can be in about (2**1700) states.
- .Pp
- .Fn arc4random
- fits into a middle ground not covered by other subsystems such as
- the strong, slow, and resource expensive random
- devices described in
- .Xr random 4
- versus the fast but poor quality interfaces described in
- .Xr rand 3 ,
- .Xr random 3 ,
- and
- .Xr drand48 3 .
- .Pp
- The
- .Fn arc4random_stir
- function reads data from a pseudo-random device, usually
- .Pa /dev/urandom,
- and uses it to permute the S-Boxes via
- .Fn arc4random_addrandom .
- .Pp
- There is no need to call
- .Fn arc4random_stir
- before using
- .Fn arc4random ,
- since
- .Fn arc4random
- automatically initializes itself.
- .Sh SEE ALSO
- .Xr rand 3 ,
- .Xr rand48 3 ,
- .Xr random 3
- .Sh HISTORY
- An algorithm called
- .Pa RC4
- was designed by RSA Data Security, Inc.
- It was considered a trade secret.
- Because it was a trade secret, it obviously could not be patented.
- A clone of this was posted anonymously to USENET and confirmed to
- be equivalent by several sources who had access to the original cipher.
- Because of the trade secret situation, RSA Data Security, Inc. can do
- nothing about the release of the ARC4 algorithm.
- Since
- .Pa RC4
- used to be a trade secret, the cipher is now referred to as
- .Pa ARC4 .
- .Pp
- These functions first appeared in
- .Ox 2.1 .
|