跳转到内容

Steady traffic

此内容尚不支持你的语言。

Steady traffic is an optional setting, off by default (Settings, under Extra traffic protection). While rChat is open and connected, it sends a steady stream of same-size packets, so the timing of your messages reveals less, to the network and to the relay. It reduces what timing reveals; it does not hide it.

  • One packet per slot. rChat sends one packet at a fixed rhythm: every 0.5 s by default, or every 1 s or 2 s (Send every). The rhythm is not randomised.
  • Same size. Every packet carries exactly 1 KiB inside its encryption.
  • Random destination. Each packet goes to one of your open conversations, chosen at random.
  • What rides in a slot. A text message (up to 1,018 bytes), receipts, and a change to a chat’s disappearing-message timer go in the next slot to that contact. When there is nothing to send, the slot carries a dummy packet, which the other phone drops without answering.
  • Only in the foreground. It stops when rChat goes to the background (iOS suspends apps), and it is not used during background checks.
  • It replaces Extra traffic protection while it is on.
SettingSent while rChat is open
0.5 s (default)about 10 MB an hour
1 sabout 5 MB an hour
2 sabout 2.6 MB an hour
  • Received data. Each contact who also uses steady traffic and has a conversation open with you sends up to one packet per slot of theirs to one of their open conversations, so with many such contacts you receive up to that much as well.
  • Delay. A message waits for a slot to its contact: on average about the slot length times the number of open conversations (with 4 open chats at 0.5 s, about 2 seconds), and at most about four times that.
  • Battery. A steady stream keeps the radio busy while rChat is open.
  • It works fully only when both of you use it. A contact without it answers your real messages with receipts at their own times, which shows which of your packets were real. They don’t answer dummies.
  • Photos, files, voice messages and texts over 1,018 bytes are larger than one packet and go outside the stream, at their normal time and size. So do key-rotation notices, message requests, the start of a new session and keepalives.
  • Reconnects. When a connection drops and comes back, messages that were in flight are sent again, unchanged, outside the rhythm. Someone who recorded the earlier packets can then tell which of them carried those messages.
  • A message that waits too long takes the next slot even if its contact was not drawn. That keeps messages from starving, and it is the one timing leak inside the stream.
  • It doesn’t hide that you are online, or that rChat is open.

If a contact stops answering (their connection dropped), rChat stops sending them dummies after 64 packets, until something arrives from them again. Their messages still go, the normal way. Relays also cap packets of the steady size so they can’t take more than half of anyone’s offline queue (500 of 1,000 messages). Ordinary messages that pad to the same 1 KiB size share that half, and the relay can’t tell senders apart: about 8 contacts in steady mode can fill it while someone is away, after which their 1 KiB messages to that person are refused (the senders keep them and send them later) until the person comes back. Messages of other sizes still use the rest of the queue.