<div dir="ltr"><div><div><div><div><div>In section 5.3 under the description of ReadMessage():<br><br>    For "e": Sets re to the next DHLEN bytes from the<br>    message.  Calls MixHash(re.public_key).<br><br></div>That should probably read as:<br><br>    For "e": Sets re to the next DHLEN bytes from the<br>    message.  If "e" is the null public key value, then<br>    abort the handshake with an error.  Otherwise call<br>    MixHash(re.public_key).<br><br></div>While implementing ReadMessage() today, I realised that a hostile party could downgrade the security of the handshake to "none at all" by specifying a null ephemeral key in their first packet.  That will cause all future encryption key values to become predictable to an eavesdropper.<br><br></div>It may also be worth being more explicit as to exactly what circumstances a null static key can be used in accordance with "9.1. Dummy static public keys".  Can every handshake pattern involving static keys use them, or only a certain subset under certain strictly defined conditions with everything else rejected?<br><br></div>Cheers,<br><br></div>Rhys.<br></div>