The popular mobile messaging application WhatsApp Messenger has a major design flaw in its cryptographic implementation that could allow attackers to decrypt intercepted messages, according to a Dutch developer.
The problem is that the same key is used to encrypt both outgoing and incoming streams between the client and the WhatsApp server, said Thijs Alkemade, a computer science and mathematics student at Utrecht University in the Netherlands and lead developer of the open-source Adium instant messaging client for Mac OS X.
"RC4 is a PRNG [pseudo-random number generator] that generates a stream of bytes, which are xored [a crypto operation] with the plaintext that is to be encrypted. By xoring the ciphertext with the same stream, the plaintext is recovered," Alkemade said Tuesday in a blog post that describes the issue in detail.
Because of this, if two messages are encrypted with the same key and an attacker can intercept them, like on an open wireless network, he can analyze them to cancel out the key and eventually recover the original plaintext information.
Reusing the key in this manner is a basic crypto implementation error that the WhatsApp developers should have been aware of, Alkemade said Wednesday. It's a mistake made by the Soviets in the 1950s and by Microsoft in its VPN software in 1995, he said.
Alkemade released proof-of-concept exploit code for the vulnerability, but initially tested it on the WhatsPoke open-source library, not on the official WhatsApp client. Since then he has confirmed that the issue exists in the WhatsApp clients for Nokia Series 40 and Android devices.
"I don't think the situation will be different with the iOS client," he said.
WhatsApp also uses the same RC4 encryption key for HMAC (hash-based message authentication code) operations to authenticate messages.
This allows an attacker to intercept a message sent by a user to the server and resend it back to the user as if it came from the WhatsApp server, but this is not something that can be easily exploited, Alkemade said.
The Dutch developer didn't attempt to contact WhatsApp before disclosing the issue publicly. "I thought that it's important for people to know that WhatsApp is not secure and I didn't expect them to fix it rapidly," he said.
WhatsApp did not immediately respond to a request for comment on Wednesday.
Fixing this doesn't require rethinking the entire encryption implementation, Alkemade said. If they add a method to generate different keys for encryption in both directions, as well as for message authentication, then the problem is solved, he said.
According to Alkemade, users for now should assume that anyone who can intercept their WhatsApp connections can also decrypt their messages and should consider their previous WhatsApp conversations compromised.
Until the issue is fixed the only thing that users can do to protect themselves is to stop using the application, Alkemade said.