Signal has moved to always store all data AES-encrypted on the device a few years ago. So, it is reasonable to assume that reading conversation data from a device at rest should be impossible.

However, access protection for a running phone, which is its default state, looks relatively weak to me. In fact, the user can even deactivate the unlock combination and open the app entirely without credential verification. This means that the AES key must be sitting somewhere where it can be accessed without any authorisation.

If I understand correctly, Signal may use some operating system security features as hinted as in this answer, which I have no understanding of. So, the question boils down to

  1. How can there be encryption of data without need for authorisation / very weak authorisation?
  2. Can any data be extracted from a running phone by a malicious party? Assuming there is an engaged screen lock or the app is set to lock (and is locked).
  • "it is possible to deactivate even the unlock combination and open the app entirely without credential verification..." - Like how? I don't see any design vulnerability in at rest encryption that can allow a breach like this.
    – defalt
    Commented Jun 12 at 10:17
  • @defalt I clarified that passage. I meant that the user can change this in the settings. It might even be the default.
    – bitmask
    Commented Jun 12 at 11:51
  • If the user is the device owner, removing the authentication is not a weak security design. The authentication is strong, removing it with consent is a feature.
    – defalt
    Commented Jun 12 at 15:48
  • @defalt: I think the point is that the key itself doesn't have any authentication requirements, even though this would be possible.
    – Ja1024
    Commented Jun 12 at 19:20

1 Answer 1


Signal stores the data in an SQLite database encrypted with SQLCipher. The key for the database is kept in the key store provided by the operating system. In the case of Android, this is the Android Keystore. In the case of iOS, it's the Keychain.

To get initial access to the data, the legitimate Signal app or an attacker has to obtain the key from the OS key store. While both iOS and Android support many different ways for protecting the key, Signal sets up the key to only require an unlocked phone. So no matter how strong or weak your unlocking mechanism is, this is sufficient to obtain the key from the key store and then decrypt the data. The Signal developers could have increased the key protection, but they haven't, possibly due to usability concerns.

After the key has been loaded, it's kept in memory within the app process. Other apps generally cannot access this part of the memory. However, if the phone is rooted, then it's possible to create a memory dump and read the plaintext key. In case of a screen lock, an attacker with physical access to the phone needs a vulnerability (like this one) to bypass the lock without resetting the phone.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .