Skip to content
  • Daniel Gultsch's avatar
    aecb771a
    use 16 byte IVs for http upload files larger than 768KiB · aecb771a
    Daniel Gultsch authored
    Ever since Android 9+ switched to Conscrypt we can no longer efficiently
    encrypt (and decrypt) large files with AES-GCM. We did’t notice this before
    because when using 16 byte IVs even modern Androids will fall back to bouncy
    castle. However the 'bug'/'feature' in Conscrypt surfaced when we switched over
    to 12 byte IVs (which uses Conscrypt on Android 9+)
    Switching back entirely to 16 byte IVs is undesirable as this would break
    compatibility with Monal. So we end up with a weird compromise where we use
    12 byte for normale plain text OMEMO messages and 'small' files where the
    inefficiencies aren’t a problem.
    
    The result of this commit is that Monal won’t be able to receive our files
    larger than 768KiB. However the alternative is that Conversations would always
    OOM when attempting to send larger files (where large depends on the available
    RAM.)
    
    fixes #3653
    aecb771a
    use 16 byte IVs for http upload files larger than 768KiB
    Daniel Gultsch authored
    Ever since Android 9+ switched to Conscrypt we can no longer efficiently
    encrypt (and decrypt) large files with AES-GCM. We did’t notice this before
    because when using 16 byte IVs even modern Androids will fall back to bouncy
    castle. However the 'bug'/'feature' in Conscrypt surfaced when we switched over
    to 12 byte IVs (which uses Conscrypt on Android 9+)
    Switching back entirely to 16 byte IVs is undesirable as this would break
    compatibility with Monal. So we end up with a weird compromise where we use
    12 byte for normale plain text OMEMO messages and 'small' files where the
    inefficiencies aren’t a problem.
    
    The result of this commit is that Monal won’t be able to receive our files
    larger than 768KiB. However the alternative is that Conversations would always
    OOM when attempting to send larger files (where large depends on the available
    RAM.)
    
    fixes #3653
Loading