mirror of
https://github.com/shadowsocks/shadowsocks-libev.git
synced 2026-10-24 17:33:46 +00:00
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>
34 lines
1.2 KiB
Plaintext
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::"
|
|
|