D

D. J. Bernstein

cr.yp.to · Personal blog · on HN since 2008

Daniel J. Bernstein's site, with his cryptography and security software, such as qmail and djbdns, and papers and essays on security.

What HN saysCommenters praise his code as elegant, low on bugs, and a lesson in writing secure C. His site is also admired for its minimalism.
641HN people shared it
540linked it in comments
184stories submitted
4.1Kstory points
3 months agolast shared
2008people per year2026

Most-shared posts

  1. 1
    The IPv6 Mess
    40 people · 86 points · first shared 2008 · 68 comments on HN
  2. 2
  3. 3
    Daniel Bernstein Is Probably Right About Everything
    35 people · 1 points · first shared 2008 · 1 comments on HN
  4. 4
    The qmail security guarantee
    33 people · 66 points · first shared 2009 · 70 comments on HN
  5. 5
    A plea for lean software (1995) [pdf]
    29 people · 199 points · first shared 2014 · 100 comments on HN
  6. 6
    Internet Mail 2000
    25 people · 77 points · first shared 2008 · 66 comments on HN
  7. 7
    Placing documents into the public domain (2008)
    23 people · 22 points · first shared 2010 · 19 comments on HN
  8. 8
    Cache timing attack on AES [pdf]
    23 people · 1 points · first shared 2009 · discussion on HN
  9. 9
    Daemontools
    23 people · first shared 2009
  10. 10
    Memory Errors and SECDED
    22 people · 1 points · first shared 2009 · discussion on HN
  11. 11
    D. J. Bernstein
    21 people · 2 points · first shared 2009 · discussion on HN
  12. 12
    DJB Netstrings
    19 people · 6 points · first shared 2008 · 1 comments on HN
  13. 13
    Crit-bit Trees: the best way to store sets
    18 people · 212 points · first shared 2008 · 41 comments on HN
  14. 14
  15. 15
    Software User's Rights (2000)
    15 people · 1 points · first shared 2009 · discussion on HN

What HN people wrote when they linked it

DyslexicAtheist · 2020-03-08
not recent projects but everything that DJB implemented is absolutely elegant, low on bugs and great as a lesson for how to write secure C. e.g. qmail, djbdns, daemontools, there is a lot of ideas there you can learn from: https://cr.yp.to/ It also helps to build up (and refactor) your toolset over time, memory handling wrappers, logging, I/O, daemonize (https://github.com/jirihnidek/daemon) etc, so that you don't have to keep reinventing the wheel. if I'd recommend one book then it's: https://en.wikipedia.org/wiki/Advanced_Programming_in_the_Unix_Environ…
sigil · 2016-10-27
Agreed, http://cr.yp.to/ is a triumph of minimalism, and the best trailing argument to `wget --mirror` you'll probably ever find.
beagle3 · 2011-01-12
for C code: Anything by djb. http://cr.yp.to Unconventional, but top quality. for C or Python code: Anything by Avery Pennarun (http://apenwarr.ca - his stuff is on GitHub) for C or Lua code: Anything by Mike Pall (http://luajit.org) The Python interpreter is mostly a joy to read. FLTK is a great example of C++ code from the days before template worms ate everyone's brains.
jacquesm · 2009-10-19
I think he would have my vote, but there are some other 'great' programmers out there. how about this for minimalism: http://cr.yp.to/
mesrik · 2025-11-02
It was the "Great to see _some_ 3letter guy into this" underlined some that. It felt bit like s/some/random/g perhaps would apply when reading it. Intentional or not by writer. It made me long and write my comment. There are many 3letter user accounts, which some are more famous than others. To my generation not because they were early users, but great things what they have done. I'm early user too and done things then still quite widely being used with many distributions, but wouldn't compare my achievements to those who became famous and known widely by their account, short or long. Anyhow I thought that "djb" ring bell anyone having been around for while. Not just those who have been around early 90 or so when he was held renegade opinions he expressed programming style (qmail, dj dns, etc.), dragged to court of ITAR issues etc. But because of his latter work with cryptography and running cr.yp.to site for quite long time. https://cr.yp.to/ I was just wondering, did not intend to start argument fight.
johnea · 2025-04-14
I thought more emphasis should have been given to DJB. The article does mention that he created the ChaCha20 algorithm, and that he first characterized the timing side channel attack, but his extremely small, simple and fast source libraries are publicly available. They are fully self contained, no dependencies, and small enough to easily include in small-ish embedded systems: https://nacl.cr.yp.to/ Elliptic curve vulnerability to quantum computing is discussed here: https://pqcrypto.org/ DISCLAIMER: I'm not a crypto expert, just an occasional user DJB has been at the forefront of advancing crypto for decades, and has a very strong emphasis on simplicity and security. Any article on the subject really should reference his original source pages: http://cr.yp.to/ I've always been a fan of "the DJB way", which is a very simple method of initializing and managing unix type systems. The voidlinux distro roughly follows these principles today.
cxr · 2020-09-24
> 2 of them have normal sized text and 1 has [...] No, one of them (Wikiwand) has "normal sized text", and the other two have objectively shrunken text. This is not a matter of opinion; this is fact. Both HN and Wikipedia, like I mentioned before, are overriding the text size in their stylesheets to force the main body text to display at a size smaller than the UA preferred size. Wikiwand is using the correct font scaling. If you have a problem with the size of the text on the Wikiwand page, it's because your UA is configured to show text at a size that you have a problem with. It's up to you to deal with that. For an example of what properly-sized text looks like, have a look at http://cr.yp.to or http://danluu.com. These sites are not sending any "designer" styles to your browser (aside from the 8 lines of CSS for the latter, which don't affect the text size). Besides that, your criticism of Wikiwand's design is dominated by details about its layout and not its text size. But I didn't say Wikiwand was the best layout in the world; it's not, and I don't even use it. But it's still not worse than Wikipedia's overly-designed Vector skin.
wolfi1 · 2026-07-19
if you want a little more in depth explanation of the whole multiplication thing Ican recommend TAOCP volume 2. it has a section called 'How fast can we multiply?' it should provide more insight. there is a paper from djb (Daniel J Bernstein),which I can also recommemd: https://cr.yp.to/lineartime/multapps-20080515.pdf
timschmidt · 2025-10-05
> Have you read the complaint? It's not about engineering concerns, it's about whether procedures were followed correctly. This complaint? https://cr.yp.to/2025/20250812-non-hybrid.pdf Engineering concerns start in section 2 and continue through section 4. It seems you haven't read it.
1oooqooq · 2025-01-08
because everyone recommending those things work on both sides. they recommend 2048 and use 4096 themselves because if they need to ever break your 2048 it's less bad than if you were recommended to use 4069. wink wink same with everyone recommending ed22519 when ed448 is as good and as fast to encode. but all the arguments point to encode speed from a Bernstein paper which used a pentium iii! https://cr.yp.to/ecdh/curve25519-20060209.pdf
greggyb · 2024-11-13
Not so much about timeouts, but related in that it is based around managing children processes: The lineage of tools descending from daemontools for service management is worth exploring: daemontools: http://cr.yp.to/daemontools.html runit: https://smarden.org/runit/ s6: https://skarnet.org/software/s6/ dinit: https://davmac.org/projects/dinit/
Gracana · 2024-10-22
I just found this explanation on the linked site: Many Germans incorrectly believe that copyrights cannot be abandoned. The actual situation in German law is as follows: "Nutzungsrechte" (literally "usage rights") include the rights of copying, modification, distribution, etc. These rights can be waived, as in other countries. "Urheberrechte" (literally "originator rights") include reputation rights and generally cannot be waived. This protection against fraud, libel, etc. has nothing to do with whether something is in the public domain. https://cr.yp.to/publicdomain.html
red_admiral · 2024-09-16
Most of what I've learnt here was less from books and more from colleagues/seminars and reading research papers. You can get a brief introduction at https://soatok.blog/2020/04/26/a-furrys-guide-to-digital-signature-alg… (your own choice if you want that open in a tab at work or not, but there's nothing NSFW in the usual sense in there), and then read the details of each scheme in the RFCs. Some of the RFCs even talk about security implications. "djb" as he is known in the crypto world has a good paper at https://eprint.iacr.org/2024/1265 , it's 68 pages so "almost a book". He also has a lot of resources on his page https://cr.yp.to . Be aware that he is sometimes ... controversial (not racist or anything, just has strong opinions on FIPS and the NSA and has actually taken the US government to court in the past over this). He's the author of Curve25519.
jmspring · 2024-07-10
Apparently my memory is false, I thought originally the salsa20 variants and machine code were on cryp.to in my memory, but Dan Berstein's site is - https://cr.yp.to/ While at a startup when we were looking at data at rest encryption, streaming encryption and other such things. Dan had a page with different implementations (cross compiled from his assembler representation) to target chipsets and instruction sets. Using VMs (this was the early/mid 2000s) and such, it was interesting to see what of those instruction sets were supported. In testing, there would be occasional hiccups where an implementation wasn't fully supported though the VM claimed such.
kurlberg · 2024-07-01
There is a nice picture of the "best" for different ranges of sizes of numbers to be multiplied at http://gmplib.org/devel/log.i7.1024.png More context and explanation can be found at: http://gmplib.org/devel/ BTW, I like Bernstein's survey of different multiplication algorithms at https://cr.yp.to/papers/m3.pdf (there is a unifying theme about using ring isomorphisms to explain many of the "standard" routines.)
tmoertel · 2024-03-01
To make daemons easier to write, more uniform, and secure, djb created https://cr.yp.to/daemontools.html and used it for many of his projects In the corresponding FAQ list, he says this about daemons that detach themselves: > How can I supervise a daemon that puts itself into the background? When I run inetd, my shell script exits immediately, so supervise keeps trying to restart it. > Answer: The best answer is to fix the daemon. Having every daemon put itself into the background is bad software design.
numeromancer · 2024-01-22
He built several utilities for doing what is described here. https://cr.yp.to/ucspi-tcp.html These are great for duct-taping connections. I created a whole suite of utilities for another programs for uploading firmware updates. I was able to create one program for handling the uploads with several different comms protocols and devices, without having to handle details of tcp connections, serial connections, UDP, etc. socat is another great tool for this.
cmplxconjugate · 2024-01-05
His plea for lean software [1] is always worth a read. [1] https://cr.yp.to/bib/1995/wirth.pdf
gjvc · 2024-01-03
now would be a good time read this in his memory https://cr.yp.to/bib/1995/wirth.pdf Also, his Oberon system provides a rich seam to mine. This, from a symposium held at ETH Zurich on the occasion of his 80th birthday in 2014, is a whirlwind retrospective. "Reviving a computer system of 25 years ago" https://www.youtube.com/watch?v=EXY78gPMvl0 One of the greats.
lproven · 2023-10-23
Here's a 5 page one from its author: https://cr.yp.to/bib/1995/wirth.pdf Here's a plain text version on my own blog: https://liam-on-linux.dreamwidth.org/88032.html Michael Franz' classic Oberon -- the Overlooked Jewel is also short and highly readable: https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.90.7173&…
nailer · 2023-06-05
DJB might be more of an privacy/infosec/Unix thing, so if you're a different type of programmer then fair enough. He is famous in crypto (as in cryptography) circles for: - Ed25519 for fast + safe asymmetric crypto - chacha/poly for fast symmetric crypto He is also famous in Unix circles for: - qmail - djbdns - his init system daemontools and a bunch of other bits. He also fought the US government for your right to use encryption when encryption was considered a munition. More at https://en.wikipedia.org/wiki/Daniel_J._Bernstein or https://cr.yp.to Jensen is NVIDIA. Left MSI, took on the #1 competitor in the space (3DFX) and dominated them, now supplies the hardware for most of high end gaming and ML, appeared in his kitchen for an announcement once, and announced a little while after that the entire scene was done with high quality physics based rendering and nobody knew.
JdeBP · 2023-05-25
The irony is that Daniel J. Bernstein said in the late 1990s that switching to HTML is the answer. And here we are, almost a quarter of a century later: Most of the people claiming that they are reading manual pages are actually reading HTML documents with WWW browsers. (All of the people following the hyperlinks to man pages found in this very discussion are doing that, for example.) * https://cr.yp.to/slashdoc.html Strictly speaking it's not advocating HTML, but "browser-compatible" documents, which in fact includes DocBook XML.
voytec · 2023-03-14
yp.to - D. J. Bernstein's[1] domain registered in 1997 preceeds Bitcoin[2] by 12 years. [1] https://cr.yp.to/ [2] https://bitcoin.org/bitcoin.pdf
livrem · 2023-01-12
I did not really understand what they were trying to say, but I think the dynamics for free (especially non-commercial, community-driven projects) vs non-free are different The former do not have the same strong need to keep adding stuff beyond what makes sense. I am increasingly happy to see small tools that does what they need to do and can almost immediately move to maintenance-mode forever and just provide important bug-fixes and every now and then add support for new platforms. But what about progress? A fork can do that. Or some competing free tool. Also the link to the article by Wirth at the end of the article, A Plea for Lean Software, was great and I never read that before, so I am happy that The Register linked to it (https://cr.yp.to/bib/1995/wirth.pdf).
nly · 2022-07-14
The DNS "master file"/"zone file" format is a bloody disaster for the same reason, and practically unparseable. Every implementation parses them differently when it comes to parenthesis. From the grammar in RFC 1035: <domain-name><rr> [<comment>] <blank><rr> [<comment>] <rr> contents take one of the following forms: [<TTL>] [<class>] <type> <RDATA> [<class>] [<TTL>] <type> <RDATA> All the columns being optional creates the ambiguity between the <class> and <domain-name> columns in the TTL missing/2nd form. In the real world <class> is always "IN". It's even worse since the set of <type>'s is unbounded and the <RDATA> grammar depends on <type> I believe this is one reason why tinydns has its own format https://cr.yp.to/djbdns/tinydns-data.html
crawdog · 2022-05-11
I have used card database files before with success. https://cr.yp.to/cdb.html Have your process regularly update the CDB file from a blob store like S3. Any deltas can be pulled from S3 or you can use a message bus if the changes are small. Every so often pull the latest CDB down and start aggregating deltas again. CDB performs great and can scale to multiple GBs.
syntax-rules · 2021-12-28
This is a really excellent way to manage packages in a system, I ran lots of systems a long time ago this way because of Dan Bernstein https://cr.yp.to/slashpackage/management.html
1vuio0pswjnm7 · 2021-09-26
"In my mind, the best software engineering is where you solve a problem once and your solution just works and needs no configuration or maintenance or updates." https://cr.yp.to/software.html
madars · 2021-04-23
Yup! From https://cr.yp.to/ecdh.html > How do I validate Curve25519 public keys? > Don't. The Curve25519 function was carefully designed to allow all 32-byte strings as Diffie-Hellman public keys. (minor exceptions follow)
stevepike · 2020-11-01
There are fancier modern things but https://cr.yp.to/daemontools.html still works great for keeping a simple script running.

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close