docs: reconcile protocol docstrings with implementation (#1374)

- BitchatProtocol.swift: stop advertising "timing obfuscation prevents
  traffic analysis" — what exists is randomized relay jitter
  (RelayController, 10-220 ms) and PKCS#7-style padding to
  256/512/1024/2048-byte blocks (MessagePadding); there is no cover
  traffic or per-message timing obfuscation. Also update the stale
  Message Types list (Delivery/Read are Noise payloads, no Version
  negotiation type; add CourierEnvelope/RequestSync/FileTransfer).
- MessageType.swift: header said "6 essential" types; the enum has 9
  cases.

WHITEPAPER.md needed no changes: the #1372 rewrite already replaced the
old Bloom-filter and MessageRetryService claims, and its numbers
(dedup 1000/5min, jitter, outbox 100/peer 24h 8 attempts, courier
16 KiB/24h/40-20-5-2 quotas, spray 4/8, gossip 1000/15s/6h) all match
the code.

Co-authored-by: jack <jackjackbits@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
jack
2026-07-07 14:10:58 +02:00
committed by GitHub
co-authored by jack Claude Fable 5
parent 5fdc15d5af
commit 201dbac49a
2 changed files with 10 additions and 8 deletions
+9 -7
View File
@@ -18,7 +18,7 @@
/// - Efficient binary message encoding /// - Efficient binary message encoding
/// - Message fragmentation for large payloads /// - Message fragmentation for large payloads
/// - TTL-based routing for mesh networks /// - TTL-based routing for mesh networks
/// - Privacy features like padding and timing obfuscation /// - Privacy features: message padding and randomized relay jitter
/// - Integration points for end-to-end encryption /// - Integration points for end-to-end encryption
/// ///
/// ## Protocol Design /// ## Protocol Design
@@ -38,18 +38,20 @@
/// 7. **Decoding**: Binary data parsed back to message objects /// 7. **Decoding**: Binary data parsed back to message objects
/// ///
/// ## Security Considerations /// ## Security Considerations
/// - Message padding obscures actual content length /// - Message padding (to 256/512/1024/2048-byte blocks) obscures actual content length
/// - Timing obfuscation prevents traffic analysis /// - Randomized relay jitter reduces the traffic-analysis signal; there is no
/// cover traffic or per-message timing obfuscation
/// - Integration with Noise Protocol for E2E encryption /// - Integration with Noise Protocol for E2E encryption
/// - No persistent identifiers in protocol headers /// - No persistent identifiers in protocol headers
/// ///
/// ## Message Types /// ## Message Types
/// - **Announce/Leave**: Peer presence notifications /// - **Announce/Leave**: Peer presence notifications
/// - **Message**: User chat messages (broadcast or directed) /// - **Message**: Public chat messages
/// - **Fragment**: Multi-part message handling /// - **Fragment**: Multi-part message handling
/// - **Delivery/Read**: Message acknowledgments /// - **NoiseHandshake/NoiseEncrypted**: Encrypted channel establishment and
/// - **Noise**: Encrypted channel establishment /// all private payloads (messages, delivery acks, read receipts)
/// - **Version**: Protocol version negotiation /// - **CourierEnvelope**: Sealed store-and-forward mail
/// - **RequestSync/FileTransfer**: Gossip history sync and media transfer
/// ///
/// ## Future Extensions /// ## Future Extensions
/// The protocol is designed to be extensible: /// The protocol is designed to be extensible:
@@ -7,7 +7,7 @@
// //
/// Simplified BitChat protocol message types. /// Simplified BitChat protocol message types.
/// Reduced from 24 types to just 6 essential ones. /// Consolidated from the original 24 wire types down to the 9 cases below.
/// All private communication metadata (receipts, status) is embedded in noiseEncrypted payloads. /// All private communication metadata (receipts, status) is embedded in noiseEncrypted payloads.
public enum MessageType: UInt8 { public enum MessageType: UInt8 {
// Public messages (unencrypted) // Public messages (unencrypted)