- Record voice notes in-browser, sent over the chunked AES-GCM file-transfer channel (per-file session key + signed SHA-256 integrity). - Captured as PCM and encoded to WAV for universal playback (incl. iOS/Safari); auto-accepted and played inline from an in-memory blob, never written to disk. - Composer mic button with live waveform + timer; desktop shows mic + send side by side, mobile swaps mic to send when typing. - CSP media-src now allows blob: so recorded/received audio can play. - Roadmap: Desktop Edition -> 5.0, new 5.5 'Secure Voice & Calls', later milestones shifted; version bumped to 5.4.5. - Update README, docs (security/API/cryptography), and CHANGELOG.
30 lines
1.4 KiB
Markdown
30 lines
1.4 KiB
Markdown
# Cryptography and Verification
|
|
|
|
## Release context
|
|
|
|
- Product release: `v5.4.5`
|
|
- Protocol version: `4.1`
|
|
|
|
## Session establishment
|
|
|
|
SecureBit.chat uses ECDH-derived session material, DTLS-protected WebRTC transport, and a mandatory Short Authentication String (SAS) verification step.
|
|
|
|
The SAS is deterministic for both peers in the same authenticated session. Users compare the displayed code through an out-of-band channel and enter the matching code manually. Local success alone is insufficient: the session becomes verified only after both peers confirm.
|
|
|
|
## Message protection
|
|
|
|
- encrypted payloads are validated before decryption
|
|
- decrypted chat text is sanitized before entering React state or the UI
|
|
- replay and ordering controls remain part of the session layer
|
|
- voice messages are transported over the file-transfer channel: each is
|
|
encrypted with a per-file AES-GCM session key and integrity-checked with a
|
|
signed SHA-256 hash before playback
|
|
|
|
## Local key metadata
|
|
|
|
Sensitive IndexedDB metadata is stored in encrypted envelopes. Legacy plaintext metadata remains readable through a migration path and is re-written in encrypted form when accessed. Corrupted encrypted metadata fails closed.
|
|
|
|
## Scope note
|
|
|
|
This document describes the current browser implementation behavior relevant to the v5.4.5 release. It does not replace independent cryptographic review.
|