Dan Bernstein (commonly known by his initials, djb) is an Associate Professor in the Department of Mathematics, Statistics and Computer Science at the University of Illinois at Chicago. Although his work covers a range of mathematical subjects, his best known academic work is in the field of cryptography.
Possibly his greatest influence on the world of cryptography, however, has been a legal one; in 1995 he sued the United States government in federal court (Bernstein v. United States) challenging the constitutionality of the United States' restrictions on the export of cryptographic software. He has won his case several times in court, but the case is still open, thanks to a combination of Government appeals and the shifting sands of Government regulation in this field. So far each round has confirmed his view that the Government's restrictions on cryptographic software are a clear violation of the First Amendment. It could be argued that this case has had a major part to play in the relaxing of restrictions on the export of cryptography since 1995.
Dan is also the author of a quite prodigous amount of software and proposed software standards. He has been most active in the fields of mathematical tools (obviously), Internet email, the Domain Name System, Internet publication (FTP and HTTP), time software, and UNIX utility software.
A (necessarily partial) list of his software projects is included below.
DJB is also a rather notorious Internet personality; he is iconoclastic, inflexible, arrogant, and has has a sharp eye for naked Emperors. Although abrasive, all too often he is, to his detractors' chagrin, right.
He has proven adept at looking at the sacred cows of the Internet, such as Sendmail and BIND among others, and finding them, rightly, wanting. He then points out, bluntly, exactly what he thinks of them and proceeds to implement his own replacement: qmail for Sendmail, djbdns for BIND.
Many, however, don't like his alternatives; either because they don't like Dan, or because they don't like the way his software works (DJB's software is highly idiosyncratic and doesn't work like anyone else's), or because they don't like his licensing. The latter is one of the bitterest disagreements; Dan does not believe in open source. All of his software is free to download, use and modify, but (in a manner very similar to TeX) he does not permit the redistribution of source or binary packages that are modified in any way. This makes his software anathema to open-source zealots, but also brings up the legitimate question of his programs' future should he not be able to continue their development, or indeed if he loses interest.
A full discussion of Dan's software techniques is beyond the scope of this writeup, but things of note include an extreme distrust of system and other library functions (Dan's programs rarely call anything from the C library but system calls - he reimplements everything), and the use of many small programs in a technique sometimes called Bernstein chaining - rather than the typical fork()/exec() typically used by UNIX developers, Dan's little programs call each other via exec(), remaining the same process but a different program.
I suspect that, whether or not Dan Bernstein's own software becomes the Internet standard, the impetus for change and improvement he has been will be a lasting legacy, and his software products are spare and beautiful designs, clearly from the mind of a mathematician, and well worth study.
This list of Dan Bernstein's software packages, and their descriptions, is largely gleaned from Dan's own website, http://cr.yp.to/.
Mathematical and Cryptographic Software
- djbfft: compute power-of-2 complex DFTs
- focus: enumerate locally square values of polynomials
- nistp224: share secret keys using the NIST P-224 elliptic curve
- primegen: generate prime numbers in order
- Psibound: compute bounds on smooth numbers
- sigs: create and verify public-key signatures
- smallfactors: find all small prime divisors
- sortedsums: enumerate solutions to some equations
- threecubes: find small sums of three cubes
- Zmodexp: compute modular integer powers
- Zmult: compute integer products
- djbdns: small modular DNS server and DNS cache
- dnsroot: be your own root server
- libtai: store and manipulate accurate dates and times
UNIX utility software