<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2014-04-15 22:46 GMT+02:00 Peter Fairbrother <span dir="ltr"><<a href="mailto:zenadsl6186@zen.co.uk" target="_blank">zenadsl6186@zen.co.uk</a>></span>:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div id=":4c3" class="a3s" style="overflow:hidden">The specific advice may have been meant only for me in my situation, but it contains a basic truth - languages are, or can be, too powerful.<br>

(...)<br>
Or best of all, I think we need better compilers. Better in the sense that they will only compile secure code. And which can prevent coders from doing bad things.</div></blockquote></div><br>The problem is that a programmer (human) is not a processor (computer). A programmer translates intent into processing steps. For me powerful means expressive but also how much it resembles intent. In other words: how much translating from idea to program.</div>

<div class="gmail_extra"><br></div><div class="gmail_extra">C is not at all expressive. It's nearly assembly macro's. Maybe not nearly, but you can still see the metal baselayer shining through.</div><div class="gmail_extra">

<br></div><div class="gmail_extra">It's always small mistranslations at a lower level. From SQL-injections to buffer overflows to forgetting a "check security" statement. </div><div class="gmail_extra"><br>
</div>
<div class="gmail_extra">It's like raindances, maybe. You want to have rain. You know you have to raindance for rain. But if you curve your toe (too much) you get lightning. That's only a problem in some cases (when it has to be safe), and then you'll forget.</div>

<div class="gmail_extra"><br></div><div class="gmail_extra">Aside from this, yes: a code checker will help in many cases. But code checkers are not at all trivial, and they are no replacement for proper code review and writing code in such a way that review would expose errors. OpenSSL with only 1 reviewer definitely did not. Which is strange, considering how important the project is.</div>

<div class="gmail_extra"><br></div><div class="gmail_extra">I also feel a strong need for minimalism, to reduce possible problems and make checking easier.</div><div class="gmail_extra"><br></div><div class="gmail_extra">

I also feel like using 3 different implementations and a sort of proxy comparing the three outputs and only relaying if they are the same would be a good idea. That way an exploit in a single *SSL will not turn into an error. Just a whole lot of "MAGICSSL WARNING: INCONSISTENT RESULTS, CONNECTION DESTROYED". </div>

<div class="gmail_extra"><br></div></div>