The foundations of end-to-end encryption: Domain separation (with code in Rust) | Heykuki News