# signalapp/Signal-Desktop

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/signalapp-signal-desktop).**

16,049 stars · 2,962 forks · TypeScript · agpl-3.0

## Links

- GitHub: https://github.com/signalapp/Signal-Desktop
- Homepage: https://signal.org/download
- awesome-repositories: https://awesome-repositories.com/repository/signalapp-signal-desktop.md

## Description

Signal-Desktop is a cross-platform messaging application that provides end-to-end encrypted communication. It implements the Signal Protocol to secure messages and voice calls, ensuring that only intended recipients can access content. The application manages asynchronous key exchange and session initialization to maintain secure communication channels between parties who are not online simultaneously.

The project distinguishes itself through advanced cryptographic protections, including hybrid post-quantum security that combines classical elliptic curve cryptography with lattice-based algorithms to defend against future decryption threats. It further protects user privacy by obfuscating message headers with rotating keys, which prevents traffic analysis and the correlation of conversation participants. To ensure reliability over constrained networks, the application utilizes erasure-coded data transmission to reconstruct messages despite potential packet loss.

The software provides comprehensive data management and synchronization capabilities, allowing users to link desktop clients to mobile accounts for consistent conversation history. It secures local data through encrypted message archives and provides automated lifecycle management to handle message retention. The application also includes robust identity verification mechanisms, enabling users to authenticate correspondents via public key fingerprint comparison to prevent impersonation.

## Tags

### Security & Cryptography

- [Encrypted Messaging Platforms](https://awesome-repositories.com/f/security-cryptography/encrypted-messaging-platforms.md) — Ships a cross-platform desktop client for private, end-to-end encrypted messaging and voice calls.
- [End-to-End Encrypted Messaging Frameworks](https://awesome-repositories.com/f/security-cryptography/end-to-end-encrypted-messaging-frameworks.md) — Provides end-to-end encrypted messaging to ensure that only intended recipients can access conversation content.
- [End-to-End Encryption](https://awesome-repositories.com/f/security-cryptography/end-to-end-encryption.md) — Provides end-to-end encrypted messaging to ensure only intended recipients can access conversation content. ([source](https://signal.org/docs/specifications/sesame/))
- [Asynchronous Key Exchange Protocols](https://awesome-repositories.com/f/security-cryptography/asynchronous-key-exchange-protocols.md) — Implements asynchronous key exchange protocols to facilitate secure session establishment between parties who are not online simultaneously.
- [Cryptographic Protocols](https://awesome-repositories.com/f/security-cryptography/cryptographic-protocols.md) — Implements the Signal Protocol for asynchronous, forward-secret, and end-to-end encrypted messaging.
- [Post-Quantum Cryptography](https://awesome-repositories.com/f/security-cryptography/post-quantum-cryptography.md) — Protects digital communications against future decryption threats using advanced post-quantum cryptographic security.
- [End-to-End Encryption](https://awesome-repositories.com/f/security-cryptography/privacy-data-protection/data-encryption/end-to-end-encryption.md) — Implements end-to-end encryption to ensure that only intended recipients can access message content and metadata.
- [Ratchet Protocols](https://awesome-repositories.com/f/security-cryptography/ratchet-protocols.md) — Implements symmetric-key and Diffie-Hellman ratchets to derive unique message keys for every transmission, ensuring forward secrecy. ([source](https://signal.org/docs/specifications/doubleratchet/))
- [Key Derivation Protocols](https://awesome-repositories.com/f/security-cryptography/key-derivation-protocols.md) — Derives new keys for every message to ensure forward secrecy and prevent decryption of past or future communications. ([source](https://signal.org/docs/))
- [Multi-Device Synchronization](https://awesome-repositories.com/f/security-cryptography/multi-device-synchronization.md) — Links desktop and mobile accounts to maintain consistent conversation history and contact lists across devices.
- [Post-Quantum Key Exchange](https://awesome-repositories.com/f/security-cryptography/post-quantum-key-exchange.md) — Implements post-quantum key encapsulation to protect communication channels against future decryption threats.
- [Secure Multi-Device Synchronization](https://awesome-repositories.com/f/security-cryptography/secure-multi-device-synchronization.md) — Coordinates encrypted state across multiple linked clients by securely distributing session keys and message history.
- [Encrypted Persistence](https://awesome-repositories.com/f/security-cryptography/data-encryption/encrypted-persistence.md) — Secures message archives and user state on the local disk using strong encryption.
- [Digital Signature Schemes](https://awesome-repositories.com/f/security-cryptography/digital-signature-schemes.md) — Validates cryptographic signatures using elliptic curve mathematics to ensure message authenticity and integrity. ([source](https://signal.org/docs/))
- [Encryption Key Management](https://awesome-repositories.com/f/security-cryptography/encryption-key-management.md) — Rotates identity and one-time keys to maintain forward secrecy and secure message initiation. ([source](https://signal.org/docs/specifications/x3dh/))
- [Hybrid Cryptographic Protocols](https://awesome-repositories.com/f/security-cryptography/hybrid-cryptographic-protocols.md) — Integrates hybrid cryptographic ratchets combining classical and post-quantum algorithms for layered security. ([source](https://signal.org/docs/specifications/doubleratchet/))
- [Account Linking](https://awesome-repositories.com/f/security-cryptography/identity-access-management/identity-management/account-linking.md) — Enables secure linking of desktop clients to mobile accounts via QR code scanning for synchronized history. ([source](https://signal.org/download/))
- [Identity & Key Management](https://awesome-repositories.com/f/security-cryptography/identity-key-management.md) — Verifies correspondent identities via public key fingerprint comparison to prevent impersonation. ([source](https://signal.org/docs/specifications/sesame/))
- [Key Agreement Protocols](https://awesome-repositories.com/f/security-cryptography/key-agreement-protocols.md) — Bootstraps messaging sessions by deriving initial root keys from established key agreement protocols. ([source](https://signal.org/docs/specifications/doubleratchet/))
- [Key Management Protocols](https://awesome-repositories.com/f/security-cryptography/key-management-protocols.md) — Publishes and retrieves prekey bundles to facilitate asynchronous session establishment. ([source](https://signal.org/docs/specifications/pqxdh/))
- [Local Data Storage](https://awesome-repositories.com/f/security-cryptography/local-data-storage.md) — Secures local message archives and conversation history to prevent unauthorized access on the device.
- [Session Lifecycle Management](https://awesome-repositories.com/f/security-cryptography/session-lifecycle-management.md) — Rotates and expires cryptographic sessions based on inactivity to maintain security and clean up stale device state. ([source](https://signal.org/docs/specifications/sesame/))
- [Encrypted Backups](https://awesome-repositories.com/f/security-cryptography/encrypted-backups.md) — Encrypts local message archives to prevent unauthorized access if the physical device is compromised. ([source](https://support.signal.org/))
- [Message Authentication Systems](https://awesome-repositories.com/f/security-cryptography/message-authentication-systems.md) — Applies ratcheted message authentication codes to verify the integrity and origin of key exchange payloads. ([source](https://signal.org/docs/specifications/mlkembraid/))
- [Message Encryption](https://awesome-repositories.com/f/security-cryptography/message-encryption.md) — Coordinates encrypted message state across multiple devices and asynchronous environments to ensure consistent communication. ([source](https://signal.org/docs/))
- [Code Signing](https://awesome-repositories.com/f/security-cryptography/code-signing.md) — Generates digital signatures using XEdDSA to ensure the authenticity and integrity of signed content. ([source](https://signal.org/docs/specifications/xeddsa/))
- [Cryptographic Signature Verification](https://awesome-repositories.com/f/security-cryptography/cryptographic-signature-verification.md) — Validates XEdDSA digital signatures to confirm message origin and integrity. ([source](https://signal.org/docs/specifications/xeddsa/))
- [Error Recovery Protocols](https://awesome-repositories.com/f/security-cryptography/error-recovery-protocols.md) — Handles decryption failures by requesting message re-transmission to ensure reliable delivery despite synchronization errors. ([source](https://signal.org/docs/specifications/sesame/))
- [Account Migration Protocols](https://awesome-repositories.com/f/security-cryptography/identity-migration-tools/account-migration-protocols.md) — Transfers user message history and account information between devices to ensure continuity during setup. ([source](https://support.signal.org/))
- [Key Exchange Protocols](https://awesome-repositories.com/f/security-cryptography/key-exchange-protocols.md) — Exchanges large cryptographic keys in incremental chunks to ensure reliability over constrained networks. ([source](https://signal.org/docs/specifications/mlkembraid/))
- [Verifiable Random Function Signatures](https://awesome-repositories.com/f/security-cryptography/message-authentication-systems/verifiable-random-function-signatures.md) — Produces verifiable random function outputs alongside digital signatures to provide unique, deterministic message authenticity. ([source](https://signal.org/docs/specifications/xeddsa/))
- [Signature Verification Tools](https://awesome-repositories.com/f/security-cryptography/signature-verification-tools.md) — Confirms the validity of verifiable random function signatures to ensure message authenticity. ([source](https://signal.org/docs/specifications/xeddsa/))

### Networking & Communication

- [Message Synchronization](https://awesome-repositories.com/f/networking-communication/message-synchronization.md) — Synchronizes desktop clients with mobile accounts to maintain consistent conversation history across platforms. ([source](https://cdn.jsdelivr.net/gh/signalapp/Signal-Desktop@main/README.md))
- [Header Obfuscation](https://awesome-repositories.com/f/networking-communication/traffic-obfuscation/header-obfuscation.md) — Protects message metadata by encrypting packet headers with rotating keys to prevent traffic analysis.
- [Erasure Coding Libraries](https://awesome-repositories.com/f/networking-communication/erasure-coding-libraries.md) — Utilizes erasure coding to ensure reliable message reconstruction over constrained or unreliable network connections.
- [Data Transmission Reliability](https://awesome-repositories.com/f/networking-communication/data-transmission-reliability.md) — Splits large cryptographic messages into robust chunks using erasure codes to ensure successful delivery. ([source](https://signal.org/docs/specifications/mlkembraid/))

### Data & Databases

- [Data Lifecycle Management](https://awesome-repositories.com/f/data-databases/data-lifecycle-management.md) — Manages message retention and storage efficiency through automated lifecycle policies for local records. ([source](https://signal.org/docs/specifications/sesame/))
