Skip to content
Snippets Groups Projects
Forked from briar / briar
Source project has a limited visibility.
  • akwizgran's avatar
    358166bc
    Don't try to erase secrets from memory. · 358166bc
    akwizgran authored
    1. The things we're really trying to protect - contact identities,
    message contents, etc - can't be erased from memory because they're
    encapsulated inside objects we don't control.
    
    2. Long-term secrets can't be protected by erasing them from memory
    because they're stored in the database and the database key has to be
    held in memory whenever the app's running.
    
    3. If the runtime uses a compacting garbage collector then we have no
    way to ensure an object is erased from memory.
    
    4. Trying to erase secrets from memory makes the code more complex.
    
    Conclusion: Let's not try to protect secrets from an attacker who can
    read arbitrary memory locations.
    358166bc
    History
    Don't try to erase secrets from memory.
    akwizgran authored
    1. The things we're really trying to protect - contact identities,
    message contents, etc - can't be erased from memory because they're
    encapsulated inside objects we don't control.
    
    2. Long-term secrets can't be protected by erasing them from memory
    because they're stored in the database and the database key has to be
    held in memory whenever the app's running.
    
    3. If the runtime uses a compacting garbage collector then we have no
    way to ensure an object is erased from memory.
    
    4. Trying to erase secrets from memory makes the code more complex.
    
    Conclusion: Let's not try to protect secrets from an attacker who can
    read arbitrary memory locations.