Files
Max LvandClaude 553cdc7945 Add opt-in printable TCP salt experiment for ss-local (#3063)
Add `ss-local --printable-salt` / `"printable_salt": true`, disabled by
default. For each outgoing TCP salt it picks a prefix length uniformly
from 6-12 bytes and samples those bytes as printable ASCII (0x20-0x7e)
immediately before key derivation. The salt stays 32 bytes with no
framing or markers, so the wire format is unchanged and any stock
server interoperates. Only chacha20-ietf-poly1305 and aes-256-gcm are
accepted; other ciphers fail at startup. UDP, server responses, and
AEAD-2022 are untouched.

Crypto unit tests cover length distribution, empty first writes, exact
framing overhead, salt-tail preservation, byte-at-a-time decryption,
tampering and replay rejection. CLI tests check local-only exposure and
cipher rejection via flag, config key and bad config type. interop.py
gains --printable-salt and --server-bin for independent stock servers.

docs/printable-salt.md records the design, entropy bound, fingerprint
caveats and route-experiment procedure; docs/encoding-experiments.md
and tests/experiments/ hold the Base85/lowpop85/TLS outer-transport
prototypes. docs/measurements/printable-salt-2026-09-23/ archives the
sanitized results of the aborted field trials.

Co-authored-by: Claude <noreply@anthropic.com>
2026-10-13 09:09:51 +08:00

34 lines
1.2 KiB
Plaintext

#compdef ss-local
local ciphers
ciphers='(rc4-md5 aes-128-gcm aes-192-gcm aes-256-gcm aes-128-cfb aes-192-cfb aes-256-cfb aes-128-ctr aes-192-ctr aes-256-ctr camellia-128-cfb camellia-192-cfb camellia-256-cfb bf-cfb chacha20-ietf-poly1305 xchacha20-ietf-poly1305 salsa20 chacha20 chacha20-ietf)'
_arguments "-h::" \
"-s:server host:_hosts" \
"-p:server port:" \
"-l:local port:" \
"-k:password:" \
"-m:encrypt method:$ciphers" \
"-a:run as user:_users" \
"-f:pid file:_files" \
"-t:timeout:" \
"-c:configure file:_files" \
"-n:max number of open files:" \
"-i:bind interface:_net_interfaces" \
"-b:local address:(127.0.0.1 \:\:1 0.0.0.0 \:\:)" \
"-u:enable udp:" \
"-U:udp only:" \
"-v:verbose mode:" \
"--reuse-port::" \
"--fast-open::" \
"--acl:acl file:_files" \
"--mtu::" \
"--mptcp::" \
"--printable-salt[Experimental printable TCP salt]" \
"--no-delay::" \
"--key:key in base64:" \
"--plugin:plugin name:" \
"--plugin-opts:plugin options:" \
"--help::"