WhatsApp‘s End to End Encryption, How does it work?
You must have heard about WhatsApp using end to end encryption.
What is it?
In layman’s words, every message that you sent to your friend, is encrypted on your device, this encrypted message passes through network and a whole bunch of servers, reaches your friend’s device, and finally, it is decrypted on friend’s device. So as long as underlying cryptography is intact, you can be assured that no one else other than your friend knows about your dirty little secret.
Is it as simple as it sounds?
No. Purpose of this post is to give you the sneak peek of what is actually happening behind the scene.
Features of a secure messaging system
So what possible features such system should have? I will introduce a few characters in the system. I will choose Ankita, Bud, and Mayank. (Cryptography literature uses Alice, Bob, and Mallory. The names are chosen based on their roles). Ankita and Bud want to exchange messages. Mayank is evil, and he wants to listen on the conversation between Ankita and Bud, and possibly want to send messages to Ankita acting as Bud and to Bud acting as Ankita. We want our system to have the following properties:
- Confidentiality: Mayank can’t know what messages Ankita and Bud send to each other.
- Integrity: If Bud receives a message from Ankita, He can check if the message was modified by Mayank on the way.
- Authenticity: When Bud receives a message from Ankita, He can be sure it is from Ankita and not from Mayank.
Another feature that we might want is deniability, i.e., if someone recovers Ankita’s or Bob’s old messages in future, it can’t be linked to them and they can deny having sent that message.
(1) could be achieved using encryption/decryption mechanism. (2) and (3) could be achieved through MACs and Digital Signatures. These primitives require secure exchange of some secret (In case of Symmetric Key Cryptography) or establishment of each other’s public information (case of Public Key Cryptography). Public Key Cryptography is nice in the sense that you don’t need to share a secret with someone you want to send a message to, as long you know each other’s public key or (identity). Problem with that approach is that Ankita needs to be assured that she actually has Bud’s public key and it is not of Mayank’s and so She can securely communicate with Bud by encrypting the messages with Bud’s public key. Only Bud, who has the corresponding private key can decrypt the message. Similarly, In the case of symmetric key cryptography, Mayank and Ankita need a mechanism to share the secret (Maybe meet in person and exchange), which they will use for encryption/decryption. In the former case, it is okay if Mayank learns about Ankita and Bud’s public key (It’s Public).
WhatsApp’s E2E Encryption protocol
I will summarize these primitive before putting them all together to understand Signal Protocol.
Understanding Primitives
Prekeys
These are Curve25519 key pairs generated on device during install time. There is one Signed Prekey Pair and several one time prekey pairs. The Identity Public key and the Public keys of the prekey pairs are signed by a long term Identity Secret Key(Curve25519 private key correspond to Identity public key) and sent to the server during registration. Server stores these keys along with Identity Public key.
Curve25519
Elliptic curve used as part of Diffie Hellman Key Exchange Protocol. I will discuss Elliptic Curve Cryptography in separate post. Its security is based on difficulty of discrete logarithm problem in large finite groups.
Diffie Hellman Key Agreement
Diffie Hellman Key Agreement or Triple Diffie Hellman Handshake allows two parties to agree on a shared secret over public channel (Mayank is able to listen to message exchanged by Ankita and Bud). It is based on modulo arithmetic large prime p and it basically works as follows,
0. Ankita and Bud agree on protocol parameters, large prime p and generator g. g is the generator of multiplicative group modulo p. Generator is between 1 and p-1 and has this nice property, that every element in [1, p] can be represented as g^k mod p where k is in [0,p-2].
1. Ankita selects a random number x between 1 and p-1 , her private key.
2. Bud selects a random number y between 1 and p-1, his private key.
3. Ankita sends Bud, x_p = g^x mod p , her public key.
4. Bud sends Ankita y_p = g^y mod p, his public key.
5. Ankita computes ss_a = y_p^x mod p.
6. Bud computes ss_b = x_p^y mod p.
After completion of protocol Ankita and Bud have a shared secret ss_a = ss_b = g^(xy) mod p.
Mayank on the network sees x_p and y_p, and it is computationally infeasible for him to determine shared secret without knowledge of x or y.
We assume here that Mayank only see the messages on channel between Bud and Ankita but doesn’t tamper them.
Extended Triple Diffie Hellman Key Agreement (X3DH)
X3DH is an extension of diffie hellman protocol for asynchronous setting. Imagine Ankita wants to establish a shared key with Bud to send the encrypted message to him. Above agreement works smoothly when Bud is online.
What if Bud is offline?.
She would have to wait for Bob to come online.
Also, In the above key agreement, Ankita and Bud have no way to determine if they are talking to each other. They may be both talking to Mayank (Man-in-the-middle) thinking they are talking to each other. The protocol might end up as Ankita and Mayank sharing a secret, Mayank and Bud agreeing on a key.
X3DH solves both these problems using a trusted third party and Prekeys. Ankita and Bud register signed prekeys (Signed using their long-term private keys) on a trusted server. Each time one of them one wants to establish a shared secret with other, the former fetches the signed prekey bundle of latter. Let’s assume Ankita is the sender.
Now, Ankita does her part, performs DH Operation (raising a public key with a private key, operation 5 in DH Agreement) 3 or 4 times (depending on the prekeys she fetched from server). These operations are between,
- Ankita’s long term private key(IKa) and Bud’s signed prekey(SPKb).
- Ankita’s ephemeral private key(Eka) (from key pair generated specifically for this exchnage and deleted afterwards) and Bud’s signed prekey(SPKb).
- Ankita’s ephemeral private key (EKa) and Bud’s long term public key(IKb).
- (if prekey bundle has a one time public key) Ankita’s ephemeral private key(EKa) and Bud’s One time public key(OPKb).
The outputs from the above steps are combined used as a key material i.e. master secret. These keys derived from master secret are used in Double Ratchet described below to send subsequent encrypted messages to Bud, all of them include Ankita’s ephemeral public key, long-term identity key, and information on which of Bud’s one time public key is used ( in case it is in step 4.)are included in header (plaintext). This ends x3dh from Ankita’s side. The messages sent can be received by Bud if he is online or can be stored on the server where Bud can fetch it later. When Bud receives the messages later, he can derive the same master secret by using his private keys and Ankita’s public keys in the message header.
This scheme allows Ankita and Bud to authenticate each other and derive shared secret to be used as a key material.
HMAC_SHA256
It is keyed cryptographic hash function. Apart from the value to be hashed, this function also takes input a key. Unlike hash function which is easy to compute for a given input, keyed hash function require knowledge of the key. Here it is used as a key derivation function and MAC.
Double Ratchet
Ratchet is the name of a device that moves only in one direction. Double Ratchet uses two cryptographic Ratchets, i.e., deriving new keys from current keys and moving forward, while forgetting old keys. The two Ratchets used are Diffie-Hellman ratchet and Hashing ratchet. Each time a Diffie Hellman ratchet move forward, a secret is established between sender and receiver using Diffie Hellman described above, and the secret is used to derive two new keys (root key and chain key). Hashing Ratchet moves forward by using a Key Derivation Function using chain key to generate a message key to encrypt a message to be sent, and a chain key to be used for the next ratchet movement. This Ratcheting provides a useful property to a protocol known as forward secrecy, i.e., if Ankita or Bud comprise their keys in future, their previous messages cant be comprised (decrypted), as long as ratchet works as expected (old keys are deleted).
Putting Everything Together
I have attempted to summarize the primitives used in the protocol which could be difficult to digest all at once. Assuming the primitives work as expected, following steps will describe the working of protocol in much simpler language. These steps occur when Ankita wants to send a message to Bud using WhatsApp:
- Registration of Clients with whatsapp server (Mobile apps on Ankita’s and Bud’s phone). It includes registering signed prekeys.
On Ankita’s Side
- Session setup by Ankita using x3dh.
- In step 2, Ankita calculates master secret and Using DH Ratchet step, derives a root key and a chain key to be used by Hashing Ratchet.
- Ankita derives a message key and next chain key using the chain key using Hashing Ratchet.
- She encrypts her message using message key ( AES256 in CBC mode ).
- Every time she sends a message her Hashing Ratchet moves forward.
- Every time she receives a response from Bud, which includes a new public key in header, she advances her DH Ratchet, calculates a new root key and a new chain key.
On Bud’s Side
- When he retrieves first message from Ankita, he completes the session setup by deriving the master secret, root key, chain key and the message key.
- Uses messages key to decrypt.
- If he wants to send message, he generates a new ephemeral key pair, moves his DH ratchet forward using the root key and ephemeral private key and replaces his chain key and message key.
- New message key is derived from chain key and message is encrypted.
- Encrypted message is sent with Bud’s ephemeral key in header.
In the image below (Assuming it’s Ankita’s Phone), message in white boxes are ones received and green ones are the messages sent. Each pair of continuous boxes can help you visualize ratchet movements.
- White -> White:Hashing Ratchet of Bud moves forward by 1 step (new message key and next chain keys are derived).
- Green -> Green: Hashing Ratchet of Ankita moves forward by 1 step (she derives new message key and chain key).
- White -> Green: Ankita’s DH Ratchet moves forward by 1 step(she derives new root key and chain key)
- Green -> White: Bud’s DH Ratchet moves 1 step forwards (He derives new root key and chain key)
Media Attachements and Files
Media files are encrypted and uploaded to the blob store. When Ankita sends an image or video to Bud, the pointer to the location of encrypted image or video file in blob store is encrypted and sent using above pairwise scheme.
Group Messages
- Whenever a group member sends his/her 1st message, he/she generates a sender key which is distributed to all group members using one-to-one protocol described above.
- For subsequent messages, messages are encrypted using new message key derived by Hashing Ratchet (this is different from the one used in one-to-one).
- Since each member has every other member’s sender key, they can move, ratchet corresponding to the sender to decrypt the message.
- Whenever a member leaves the group, sender keys are renegotiated (step 1).
Calling
Calling is synchronous/real-time. Whenever Ankita calls bud, she generates a random SRTP secret.
This secret is sent to Bud using the pairwise system. If he responds to call, the encrypted session begins.
Miscellaneous
Apart from the end to end encryption, the the channel between the whatsApp client and whatsApp server is secure. Plaintext Headers are not visible to anyone listing on channels. This is server’s extra wrapping over Ankita’s already wrapped gift(message) to Bud.
Wrapping Up
So you might have wondered at some point, based on an ad you saw or perhaps a whatsApp forward, that whatsApp is probably reading your messages, As you sometimes happen to see ads of things on your facebook feed which you happen to discuss on whatsapp chats. Lets uncover some possibilities and conspiracy theories.
End to end encrypted whatsapp что такое
For years, in order to safeguard the privacy of people’s messages, WhatsApp has provided end-to-end encryption by default so messages can be seen only by the sender and recipient, and no one in between. Now, we’re planning to give people the option to protect their WhatsApp backups using end-to-end encryption as well.
People can already back up their WhatsApp message history via cloud-based services like Google Drive and iCloud. WhatsApp does not have access to these backups, and they are secured by the individual cloud-based storage services.
But now, if people choose to enable end-to-end encrypted (E2EE) backups once available, neither WhatsApp nor the backup service provider will be able to access their backup or their backup encryption key.
How E2EE backups work
Generating encryption keys and passwords
To enable E2EE backups, we developed an entirely new system for encryption key storage that works with both iOS and Android. With E2EE backups enabled, backups will be encrypted with a unique, randomly generated encryption key. People can choose to secure the key manually or with a user password. When someone opts for a password, the key is stored in a Backup Key Vault that is built based on a component called a hardware security module (HSM) — specialized, secure hardware that can be used to securely store encryption keys. When the account owner needs access to their backup, they can access it with their encryption key, or they can use their personal password to retrieve their encryption key from the HSM-based Backup Key Vault and decrypt their backup.
The HSM-based Backup Key Vault will be responsible for enforcing password verification attempts and rendering the key permanently inaccessible after a limited number of unsuccessful attempts to access it. These security measures provide protection against brute-force attempts to retrieve the key. WhatsApp will know only that a key exists in the HSM. It will not know the key itself.
Storing keys in the Backup Key Vault
WhatsApp’s front-end service, ChatD, handles client connections and client-server authentication, and will implement a protocol that sends the keys to the backups to and from WhatsApp’s servers. The client and HSM-based Backup Key Vault will exchange encrypted messages, the contents of which will not be accessible to ChatD itself.
The HSM-based Backup Key Vault will sit behind ChatD and provide highly available and secure storage for the encryption keys to the backups. The backups themselves will be generated as a continuous stream of data that is encrypted using symmetric encryption with the generated key. With E2EE backups enabled, upon being encrypted, a backup can then be stored off device (e.g., to iCloud or Google Drive).
WhatsApp serves over 2 billion people, and one of the core challenges of this product was to make sure the HSM-based Backup Key Vault operates reliably. To help ensure that the system is always available, the HSM-based Backup Key Vault service will be geographically distributed across multiple data centers to keep it up and running in case of a data center outage.
Backups can be end-to-end encrypted using a 64-digit encryption key. Backups can also be secured with a password, in which case the encryption key is saved to the HSM-based Backup Key Vault.
The HSM-based Backup Key Vault and the encryption and decryption process
When the account owner uses a personal password to protect their end-to-end encrypted backup, the HSM-based Backup Key Vault will store and safeguard it.
When someone wants to retrieve their backup:
- They enter their password, which is encrypted and then verified by the Backup Key Vault.
- Once the password is verified, the Backup Key Vault will send the encryption key back to the WhatsApp client.
- With the key in hand, the WhatsApp client can then decrypt the backups.
Alternatively, if an account owner has chosen to use the 64-digit key alone, they will have to manually enter the key themselves to decrypt and access their backups.
E2EE backups will be available on iOS and Android in the coming weeks. Check out the end-to-end encrypted backups white paper to learn more about the technical details.
Что означает сквозное шифрование WhatsApp и на что оно влияет
WhatsApp является наиболее широко используемой программой обмена мгновенными сообщениями с более чем двумя миллиардами активных пользователей. SMS-сообщения были заменены сообщениями WhatsApp давным-давно. Каждый день миллионы людей делятся текстом, аудио, фотографиями и медиафайлами через WhatsApp.
Сквозное шифрование WhatsApp применяется официальным лицом WhatsApp с 2016 года.
Часть 1: Что такое сквозное шифрование WhatsApp
Итак, что такое сквозное шифрование в WhatsApp?
- WhatsApp End-to-End Encryption — это система, созданная для решения проблем конфиденциальности и безопасности пользователей. Функция сквозного шифрования направлена на предотвращение доступа потенциальных третьих сторон посередине, таких как интернет-провайдеры и сетевые администраторы, к ключам шифрования, необходимым для расшифровки разговора.
- Сквозное шифрование — это протокол безопасности, также известный как E2EE или E2E. Этот протокол, используемый Whatsapp, гарантирует, что ваши сообщения зашифрованы и переданы другой стороне. Сообщение расшифровывается, когда оно достигает другой стороны. То есть отправляемые вами сообщения шифруются по получателю, а этот ключ шифрования расшифровывается только на устройствах отправителя и получателя.
- Сквозное шифрование WhatsApp означает чувствовать себя в безопасности; таким образом, то, чем вы делитесь в WhatsApp, не будет отслеживаться не только WhatsApp или сторонними приложениями, но и телекоммуникационными компаниями, хакерами и официальными органами, которые отслеживают сбор разведданных.
- Так является ли эта функция только для сообщений? Зашифрован ли видеозвонок WhatsApp от начала до конца? Да, шифрование также распространяется на все медиафайлы, такие как видео, изображения и аудиосообщения.
Хотя существуют опасения по поводу конфиденциальности и безопасности персональных данных на каждой платформе, включая социальные сети, ожидание конфиденциальности для полностью личного и двухличного общения, такого как WhatsApp, вполне оправдано.
Часть 2: Как работает сквозное шифрование
- WhatsApp шифрует все данные, которыми делятся на этапе обмена сообщениями, используя алгоритм, использующий протокол безопасности сквозного шифрования.
- Затем закодированные данные защищаются ключом шифрования, который разблокирует данные и восстанавливает их в исходное состояние.
Благодаря функции сквозного шифрования данные шифруются на отправляющем устройстве и возвращаются в исходный вид на принимающем устройстве с помощью ключа шифрования. Процесс выполняется в фоновом режиме.
Таким образом, только люди, включенные в сообщение, могут посмотреть, что вы пишете в WhatsApp. Даже у WhatsApp нет ключей для разблокировки пароля обмена мгновенными сообщениями. Это связано с тем, что функция сквозного шифрования рассматривает всех, включая компанию, предоставляющую услугу, как третью сторону.
Часть 3: Как проверить, зашифрован ли WhatsApp
Уверенность, предлагаемая шифрованием, звучит хорошо. Так как же мы можем быть уверены? Действительно ли whatsApp сквозное шифрование работает?
Существует метод проверки, чтобы убедиться, что ваши сообщения Whatsapp зашифрованы. Проверить безопасность можно, отсканировав QR-код между двумя устройствами из контактной / групповой информации чатов WhatsApp.
-
Нажмите на имя человека или группы, которым вы отправляете сообщение, и нажмите «Проверить код безопасности» в появившемся меню.
Вы увидите QR-код и 60-значное шифрование на экране.
Примечание: Если не удается отсканировать QR-код, например, если камера устройства неисправна, можно сравнить 60 цифр под кодом. Чтобы использовать эту функцию, вы должны установить последнюю версию WhatsApp из App Store для iOS и Google Play Store для Android.
Это не та функция, которую мы обычно должны проверять. Тем не менее, приятно быть представленным как метод проверки, тем не менее. Короче говоря, шифрование сигнала от начала до конца работает отлично.
Бонусный совет: Бесплатный инструмент резервного копирования iOS WhatsApp на ПК
Если вы ищете компьютерный инструмент резервного копирования WhatsApp, то Tenorshare iCareFone Transfer — отличный выбор для вас. iCareFone Transfer может создавать резервные копии ваших данных WhatsApp (чаты, изображения, файлы, видео и т. Д.) На компьютере одним щелчком мыши. Пользователям iOS бесплатно создавать резервные копии своих чатов WhatsApp.
Tenorshare iCareFone Transfer предназначен не только для резервного копирования WhatsApp, но и для трансферации ваших чатов WhatsApp между iOS и Android.
Загрузите и установите iCareFone Transfer на свой компьютер. Затем запустите программу и подключите устройство к компьютеру. Выберите WhatsApp из его основного интерфейса, а затем выберите «Резервное копирование» на левой панели инструментов. Нажмите «Создать резервную копию сейчас», чтобы продолжить.
Затем дождитесь завершения процесса резервного копирования. Пожалуйста, не отключайте устройство во время резервного копирования.
Теперь ваши данные WhatsApp успешно скопированы. Вы можете просмотреть данные и экспортировать/восстановить их в любое удобное для вас время.
Заключение
Сквозное шифрование WhatsApp — это функция, которая укрепляет надежное лидерство WhatsApp среди программ обмена мгновенными сообщениями, обеспечивая безопасность связи, защищая личные данные и позволяя пользователям конфиденциально обмениваться данными. Передача наших данных находится в надежных руках, но давайте не будем забывать о необходимости backup, а также безопасности.
End-to-End шифрование в месседжере WhatsApp
Здравствуйте, друзья! После предыдущего поста на меня подписалось аж 55 человек, за что Вам большое спасибо! Также хочу выразить благодарность людям, которые указывали на недочеты — это помогает делать материал лучше.
Некоторые читатели предыдущего поста задавали вопросы про End-to-End шифрование (оно же сквозное) и просили рассказать о нем подробнее. Чтобы не было разночтений, буду писать на примере сквозного шифрования в месседжере WhatsApp.
Описание системы шифрования есть в оригинальной статье на английском (ссылка в конце статьи). Повествование хочется сделать доступным для большинства людей, поэтому математические преобразования не привожу. Они есть в оригинале, если Вам это интересно.
Для начала немножко теории. Почти все современные средства шифрования используют криптографию с открытым ключом (асимметричная криптография). Ключ представляет из себя пару чисел, которые называют открытым и закрытым ключами. Между этими ключами есть зависимость: один ключ шифрует — другой дешифрует. Существуют различные варианты использования этих ключей в зависимости от алгоритма.
Современная асимметричная криптография использует эллиптические кривые ввиду того, что при меньшей длине ключа она гарантирует большую стойкость взломам. А некоторые реализации “эллиптических” алгоритмов работают намного быстрее “классических”. Одним из таких алгоритмов является Curve25519, который используется в криптографическом протоколе Signal, используемом в WhatsApp.
В приложении используются три основных типа ключей:
1. Ключ идентификации (Identity key pair) — генерируется при установке приложения. Как правило, меняется только принудительно или при переустановке приложения.
2. Ключ подписи (Signed key pair) — генерируется при помощи идентифицирующего ключа и периодически изменяется.
3. Набор одноразовых ключей (One-time pre keys) — набор ключей, которые используются для различных нужд, пополняются постоянно.
Из основных ключей генерируются сессионные ключи:
1. Корневой ключ (Root key) — используется для создания цепи ключей.
2. Цепь ключей (Keys Chain) — используется для создания Ключей сообщения.
3. Ключ сообщения (Message Key) — 80-байтовое значение для шифрования сообщений, из них 32 используется для AES-256, 32 для HMAC-SHA256 (подпись) и 16 для IV. Ключ для шифрования сообщений.
При регистрации клиент отправляет на сервер публичные идентифицирующий, подписывающий и одноразовые ключи. Сервер хранит эти ключи, но не имеет к ним доступа. Закрытые части ключей хранятся только на устройстве абонента.
Создание защищенной сессии
Перед тем как общаться, клиенты должны инициализировать сессию. После настройки зашифрованного сеанса, его не нужно перестраивать. Новый сеанс требуется только в случае переустановки приложения или смене устройства одним из пользователей.
Алгоритм создания защищенной сессии:
A — клиент, который инициирует первое соединение
B — клиент, которому нужно доставить сообщение
1. A запрашивает открытые ключи (идентифицирующий, подписывающий и одноразовый (один)) B с сервера.
2. Сервер возвращает эти ключи. Одноразовый ключ удаляется с сервера.
Если на сервере нет одноразовых ключей, а B не может пополнить их (оффлайн), то сервер не вернет публичный одноразовый ключ.
3. A сохраняет ключи B.
4. Из своих и ключей B A получает секретное выражение (secret), которое будет использовано для получения корневого ключа и цепи ключей.
5) A передает слепок своих ключей, чтобы B смог получить идентичное выражение (secret). B удаляет одноразовый ключ, который был использован A для создания секрета.
После этих шагов оба абонента имеют одинаковый secret и генерируют идентичные ключи сессии.
Шифрование сообщений
Для шифрования используется блочный алгоритм шифрования AES-256. Предположу, что дело в более высокой скорости работы и надежности данного алгоритма, чем большинства асимметричных.
Ключ цепи и корневой ключ генерируются алгоритмом Диффи-Хеллмана на эллиптических кривых. Ключ цепи обновляется после каждого использования. Тут есть важный момент, который отмечают сами авторы криптографической системы. Так как цепочка используется для одного сообщения один раз, то сообщения должны приходить в строгой последовательности (цепочка обновляется только вперед). Пока нам не придет предыдущее сообщение, мы не сможем расшифровать следующее.
Вместо заключения
Действия, описанные выше гарантируют, что Ваша переписка останется тайной для всех, кроме Вашего собеседника. Конечно, если Вы не потеряете телефон, т.к. в этом случае сообщения уже будут расшифрованы на Вашем устройстве.
Если Вам интересна данная тематика, то в следующем посте могу рассказать о том, как шифруются прикрепляемые файлы, групповые сессии и голосовые вызовы.
Спасибо Вам за то, что прочитали! 🙂
надо нашем законотворцам кстати сказать чтоб не «пароли просили» а разработку квантовых компов финансировали . для них все эти aes 256 на один зубок
У него же закрытые исходники, откуда знать что бэкдора для доступа нет? Да и бэкаппы он хранит вроде как во всяких айклаудах, а значит и ключ доступа тоже
Ля ты крыса
Лучшая функция
Лучшая функция для любого месседжера: «этот пользователь запретил отправлять ему голосовые сообщения»
Whatsapp хранит переписку на смартфоне в открытом виде
Однажды, почти случайно, залез я посмотреть что хранит Whatsapp в своих базах данных на смартфоне. Изначально цель была не эта, но потом стало интересно.
Мой смартфон — на андроиде. Поскольку есть рут и я не боюсь экспериментов над своим девайсом, мне не составляет труда изредка пользоваться приложением, название которого я не назову 🙂 Во-первых, это может спровоцировать кого-то на неразумные действия в чей-то адрес, а такую ответственность брать на себя мне не хочется, а во-вторых, пикабушники люто не одобряют рекламные (либо похожие на таковые) посты.
Приложение позволяет на рутованном андроиде включать и отключать разные компоненты других приложений, например, выключить активность («окно»), которое отображает полноэкранную рекламу, либо выключить сервис, в фоне отправляющий какую-то инфу чёрт знает кому. А также даёт просматривать и изменять хранимые другими приложениями данные в их базах данных.
В андроиде есть встроенный механизм баз данных (на движке SQLite). Мулечка в том, что любое приложение может иметь БД в защищённом хранилище системы, где будет накапливать и хранить свои данные. Это если на пальцах объяснять, более опытные разработчики могут внести дополнения в комментах.
Я не силён в шифрованиях, устройстве мессенджеров и шизой на тему информационной безопасности не страдаю. Однако обнаружил любопытную вещь.
После появления Телеграма, Whatsapp начал хвастаться сквозным шифрованием. Даже если оно есть по факту и работает, то почему в БД этого месссенджера хранятся все данные в открытом виде и никак (от слова совсем) не зашифрованы?
Отправляю тестовое сообщение:
Смотрю в базу (БД msgstore, таблица messages):
Список всех баз данных:
Там хранятся различные настройки, которые в рамках данного поста неинтересны.
Список всех таблиц самой интересной БД msgstore:
Если вкратце, тут хранятся служебные данные о чатах, местоположениях и всяком таком.
В том числе — сами переписки.
Список чатов (таблица chat_list). Это тот список контактов, с которыми у вас уже начато общение, и который вы видите в первую очередь, открывая приложение.
Ещё раз покажу таблицу messages — список всех сообщений.
Отображается ИД собеседника (поле key_remote_jid, значения включают номер телефона), само сообщение в открытом виде (data), Unix-метка даты сообщения (timestamp), прямая ссылка на медиа-контент (адрес ведёт на сервера Whatsapp; поле media_url), подпись к медиа-контенту в открытом виде (к фотографии, например; поле media_caption)и много чего ещё.
Поле data пустое там, где вместо чистого текста отправлено, например, фото или состоялся звонок.
Ссылка на медиа примерно следующая: https://mmi652.whatsapp.net/d/кучарандомныхсимволов/кучадруг.
Эту ссылку можно открыть в браузере. Если она действительна, то скачивается файл file.enc, который, к счастью, зашифрован: это может быть фото, аудио, видео, что угодно ещё. Если ссылка оказывается недействительной, то в браузере ответом будет строка Media object not found.
Ниже таблица messages_fts_content (есть ещё аналогичная messages_fts). Тут тоже сообщения, и они тоже в открытом виде. Предназначение таблицы мне непонятно, ибо детально не разбирался.
Чем это опасно?
Если смартфон попадёт в руки опытного и знающего подлеца, получить все ваши переписки в Whatsapp ему не составит никакого труда. Вообще никакого. Защищены только медиафайлы, которые зашифрованы и хранятся на серверах WA.
К слову, для тех, кто не в курсе: это объясняет тот факт, что после удаления папки Whatsapp из памяти телефона, где хранится кеш фотографий, зашифрованные бекапы чатов и прочее, медиа-контент заново выкачивается при открытии чата.
Послесловие
На закуску — вот что хранит Telegram. Одна БД, предназначенная для сбора статистики об использовании приложения для отправки в Google. И все таблицы этой БД пусты!
Может быть, это общеизвестный факт в кругах (около)айтишников, но знать об этом надо каждому. Подумайте, прежде чем отдавать смартфон, например, в сервисный центр (увы, там часто работают нездоровые идиоты) или подпускать к нему идиота типа меня 🙂