https://twitter.com/kennwhite/status/759360544260300805
That conversation had plenty of pronouncements of absolute certainty. So I followed the breadcrumbs (some of which I quote here), and read the papers that Tony (@bascule) quoted. Like so:
- "Telegram is *still* using known-to-be-broken crypto..."
(My take: no, you probably mean "assumed to be breakable")
https://twitter.com/bascule/status/759090321804230657
- "Telegram is broken..."
(My take: No, definitely not based on these papers you quote)
https://twitter.com/bascule/status/759195089264443392
- "Here is what duckduckgo ...:
(My take: WTF? A search engine screenshot!)https://twitter.com/bascule/status/759507261056135168

I'll just stop here. I think it shows adequately that @bascule may have been ranting or even deliberately trolling @durov, though many in his timeline were taking it seriously. I can't. Not any more.
Before I get too far off, let me link to the papers.
- https://eprint.iacr.org/2015/1177.pdf
- https://cs.au.dk/~jakjak/master-thesis.pdf
I encourage interested readers to go read them. Pay attention to the attack results - what exactly did the attacks achieve and how they matter. It seems to me that the conclusions imply more damage than the available proof.
In my summary below, for brevity, I'm skipping quoting IND-CCA, INT-CTXT etc., hopefully without altering the essence.
- Padding Length Extension - summary: Not the message itself, but the padding can be increased by an MITM. Telegram still delivers the message intact.
Neither confidentiality nor integrity have been violated. - Padding Plaintext Collision / Last-Block Substitution - summary: It takes roughly 24 days to alter the last block undetected by Telegram.
This implies violation of message integrity - except, it doesn't. For it to remain undetected, the message bytes in the last block must remain the same. - Replay / Mirroring Attacks - summary: Old versions of Telegram are vulnerable, not the new.
Thank you for saving us some time. - Timing Attacks - summary: If the attacker has another app installed on the client device, (s)he can know whether or not a message decryption succeeded.
Sounds like a big deal, except - an attacker with such an app on your device could do things that can make you cringe. Someone discovering whether Telegram messages have failed decryption and using that info to painstakingly reconstruct keys (yes, chosen plaintext + padding oracle attacks) is probably the least of their worries.
No Kenn, I'm afraid it's NOT spot on. Not by a mile. It is one thing to impugn motives and imply collusion (as in the case of accusations of Telegram's collusion with Iranian Govt). It is another thing altogether to say crypto is broken based on the above. I must respectfully reject any claim of insecurity -exclusively- on the basis of theoretical arugments.
So let me conclude this part with that venerable InfoSec chant: POC || GTFO
No, I'm not done. Just a few last bits remain.
- Trust is a key component of security. Do I trust Telegram or even Signal for that matter. No. I don't have sufficient basis. When I use them, I use them grudgingly, figuratively looking over my shoulder.
- Even if Telegram's server-side source code were open-sourced (last time I checked, it wasn't), it still wouldn't mean that the specific code running on the servers all the time conforms to what was published. Pretty much like a good percentage of Tor nodes, if you know what I mean. The non-permanent session keys or at a minimum, _all_ the parameters used to generate them, must pass through the servers, however briefly. Even with Signal and WhatsApp. Make of it, what you will.
- Alt implementations are possible, but they fail usability standards pretty badly.
- Finally, even if the audited version of Telegram / Signal / <your-fav-app here> were secure, compromise is only one app-update away. Please feel free to trust your vendor not to do it.
If they say that Signal is great and Telegram is broken, I must assume they've been trolled by someone they trust; or, they're trolling me.
However, I will continue to keep an open mind to being wrong in this; and not make absolute statements based on muddled logic.
