Harden transport security and add opt-in encrypted local cache
From a whole-repo security review (no critical/high issues; TLS cert and hostname validation were already intact): - Don't offer the plaintext "None" transport in manual account setup; it would send credentials in the clear. The enum value stays only for local test servers. - Relabel the advanced toggle "Allow insecure STARTTLS fallback" with a warning subtitle: it relaxes (does not enable) STARTTLS and permits a plaintext downgrade when on. Default stays off/secure. - Set mail.<proto>.ssl.checkserveridentity=true explicitly on IMAP/SMTP as insurance over the (already-true) Angus default. - Add a Content-Security-Policy meta to the reader WebView (JavaScript is already disabled). - Strip Log.d/Log.v in release builds and drop the account address from the IDLE log; mark new-mail notifications VISIBILITY_PRIVATE. Add opt-in at-rest encryption of the Room cache (Settings -> "Encrypt local cache", off by default) using SQLCipher. The DB passphrase is a random key sealed by the existing Keystore crypto and kept in a separate DataStore. DatabaseEncryption performs a self-healing, atomic plaintext<->encrypted migration at startup that preserves PRAGMA user_version, so toggling applies on next launch without data loss. Verified end-to-end on an API 37 emulator (DatabaseEncryptionTest round-trip, 7 instrumented tests) plus 12 unit tests and a release R8 build. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -106,6 +106,9 @@
|
||||
<string name="settings_advanced">Advanced Settings</string>
|
||||
<string name="settings_advanced_summary">Power-user options for sync and connections</string>
|
||||
<string name="settings_adv_idle">Push mail (IMAP IDLE)</string>
|
||||
<string name="settings_adv_starttls">Allow STARTTLS</string>
|
||||
<string name="settings_adv_starttls">Allow insecure STARTTLS fallback</string>
|
||||
<string name="settings_adv_starttls_summary">Connect even when the server can\'t upgrade to an encrypted (STARTTLS) connection. Leave this off unless a specific server requires it — while on, your username and password may be sent unencrypted.</string>
|
||||
<string name="settings_adv_remote_images">Load remote images by default</string>
|
||||
<string name="settings_adv_encrypt_cache">Encrypt local cache</string>
|
||||
<string name="settings_adv_encrypt_cache_summary">Encrypt cached mail stored on this device, using a key held in the Android Keystore. Applies the next time you open LibreMail.</string>
|
||||
</resources>
|
||||
|
||||
Reference in New Issue
Block a user