WhatsApp's Signal Protocol integration is now complete
This is really excellent. A few thoughts:<p>1) They seem to have replaced TLS&#x2F;SSL between client and server with &quot;Noise Pipes&quot;. Based on a couple of minutes Googling this seems to be a brand new one-man protocol from Trevor Perrin (the same guy who did Axoltl on which Signal is based). At least, I&#x27;d never heard of it. I wonder if this is the first inkling of a post-TLS future?<p><a href="http:&#x2F;&#x2F;noiseprotocol.org&#x2F;noise.html" rel="nofollow">http:&#x2F;&#x2F;noiseprotocol.org&#x2F;noise.html</a><p>2) It&#x27;s a shame to see key words be killed off by internationalisation concerns. 12 words seems so much more friendly, at least to English speakers, than a 50 digit number. In practice I doubt any non-trivial numbers of people will ever compare codes by reading out such a number. I hope further research here can develop better replacements for encoding short binary strings in i18n friendly ways (perhaps with icons instead of specific words? if you don&#x27;t speak a common language with your chat partner then the app is useless anyway).<p>3) What&#x27;s the next step? My feeling is that the next step is securing the build and distribution pipeline. WhatsApp could partner with security firms around the world, like Kaspersky Lab in Moscow, perhaps one in Germany and another in Iran, to make it harder for the software to be forcibly backdoored by a single decision of a single government representative. This would require splitting the RSA signing keys used by the app stores. I have some code in my inbox that claims it can do this (it&#x27;s written by some academics and I obtained it after a bit of a runaround) but I never found the time to play with it.<p>Of course, getting a bunch of security firms to sign off on every update, no matter how trivial that update is, might prove politically difficult inside Facebook. If mobile platforms supported in-app sandboxing better then the app could slowly be refactored to be more like Chrome, where the base layer doesn&#x27;t trust the upper layers. Those upper layers wouldn&#x27;t have access to key material and could then be updated more freely than the higher privileged components.