<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'><font face="Calibri">Hello Nadim,</font><div><font face="Calibri"><br></font></div><div><font face="Calibri">Don't be ashamed. Shit happens. I hope you don't get frustrated by all this. Keep working. It's easy to criticize the work of others, but whats hard is believing in and developing a great project such as cryptocat.</font></div><div><font face="Calibri"><br></font></div><div><font face="Calibri">This kind of work is really important. Of course, we have to be careful with these things, but... Keep going ;)<br id="FontBreak"></font><br><br><div><br></div><div><font size="1" face="Courier New"><br></font></div><div></div><div><hr></div><div><font face="Courier New" size="1"><br></font></div><div><font face="Courier New" size="1">gpg --keyserver pgp.mit.edu --search-keys EEE5A447</font></div><div><font face="Courier New" size="1">http://pgp.mit.edu:11371/pks/lookup?search=0xEEE5A447&op=vindex</font></div><div><br></div><br><br><div>> From: nadim@nadim.cc<br>> Date: Sun, 7 Jul 2013 22:34:24 +0200<br>> To: liberationtech@lists.stanford.edu<br>> Subject: Re: [liberationtech] DecryptoCat<br>> <br>> <br>> On 2013-07-07, at 2:25 PM, CodesInChaos <codesinchaos@gmail.com> wrote:<br>> <br>> > > So introductory-level programming course mistakes are right out.<br>> > <br>> > In my experience it's quite often a really simple mistake that gets you,<br>> > even when you're an experienced programmer. I'm quite afraid of simple off-by-one bug,<br>> > places which I didn't fix in copy&paste, basic logic mistakes etc.<br>> > IMO Nadim's main mistake wasn't the actual bug, mistakes like that can happen to anybody,<br>> > but it was designing a really weird API that invites mistakes. Nobody sane return decimal digits<br>> > from a cryptographic PRNG.<br>> <br>> That's not what the CSPRNG does exactly, but we routed it through an all-purpose function that wields it to present types of data on demand, be it random ASCII lowercase, random ASCII uppercase, random digits, random bytes. And then I messed up and asked it to produce random digits instead of random bytes and BOOM  security disaster, end of the world etc.<br>> <br>> For the record, I feel deeply ashamed about this blunder. But I can't give up this project simply because bugs like this are bound to pop up for any project with this kind of goals and ambition, and our goals are, in my view, deeply necessary.<br>> <br>> NK<br>> <br>> > <br>> > For example a really basic cryptography mistake is reusing a nonce in AES-CTR. Still it happens to people experienced<br>> > in both coding and cryptography. For example Tarsnap had since vulnerability for several versions, despite a competent developer.<br>> > http://www.daemonology.net/blog/2011-01-18-tarsnap-critical-security-bug.html<br>> > <br>> > In my own programs I'm really careful about nonces and randomness, but still I wouldn't be surprised if a trivial bug slipped through in that area.<br>> > Writing tests which detect such mistakes is really hard.<br>> > --<br>> > Too many emails? Unsubscribe, change to digest, or change password by emailing moderator at companys@stanford.edu or changing your settings at https://mailman.stanford.edu/mailman/listinfo/liberationtech<br>> <br>> --<br>> Too many emails? Unsubscribe, change to digest, or change password by emailing moderator at companys@stanford.edu or changing your settings at https://mailman.stanford.edu/mailman/listinfo/liberationtech<br></div></div>                                           </div></body>
</html>