Reference Tables
Quick lookup tables for pqc-flow.
PQC Flags
Flag Values
| Flag |
Value |
Meaning |
PQC_KEM_PRESENT |
1 |
PQC/hybrid key exchange offered or negotiated |
PQC_SIG_PRESENT |
2 |
PQC/hybrid signature present |
HYBRID_NEGOTIATED |
4 |
Chosen algorithm is hybrid (classical + PQC) |
PQC_OFFERED_ONLY |
8 |
PQC offered by client but server chose classical |
PQC_CERT_OR_HOSTKEY |
16 |
Server certificate uses PQC signature |
RESUMPTION_NO_HANDSHAKE |
32 |
Session resumed (no full handshake) |
Common Combinations
| Value |
Flags |
Interpretation |
| 0 |
(none) |
Classical cryptography only |
| 1 |
KEM |
PQC KEM present (non-hybrid) |
| 2 |
SIG |
PQC signature only |
| 3 |
KEM + SIG |
PQC KEM and signature |
| 4 |
HYBRID |
Hybrid negotiated (unusual alone) |
| 5 |
KEM + HYBRID |
Hybrid PQC (most common) |
| 7 |
KEM + SIG + HYBRID |
Full PQC with hybrid |
| 9 |
KEM + OFFERED_ONLY |
PQC offered but server chose classical |
| 32 |
RESUMPTION |
Session resumed, no handshake |
Detected Algorithms
KEM Algorithms (Key Encapsulation)
| Token |
Algorithm Family |
Example |
Status |
ml-kem |
NIST ML-KEM |
X25519+ML-KEM-768 |
Standard |
kyber |
Kyber (pre-NIST) |
X25519Kyber768 |
Deployed |
sntrup |
NTRU Prime |
sntrup761x25519 |
Production |
ntru |
NTRU |
ntruhrss701 |
Legacy |
bike |
BIKE |
bike-l1 |
Research |
hqc |
HQC |
hqc-128 |
Research |
frodo |
FrodoKEM |
frodokem640 |
Research |
Signature Algorithms
| Token |
Algorithm Family |
Status |
ml-dsa |
NIST ML-DSA (Dilithium) |
Standard |
dilithium |
Dilithium (pre-NIST) |
Deployed |
slh-dsa |
NIST SLH-DSA (SPHINCS+) |
Standard |
sphincs |
SPHINCS+ (pre-NIST) |
Deployed |
falcon |
Falcon |
Standard |
TLS Group IDs
Classical Groups
| Group Name |
Hex Code |
Standard |
x25519 |
0x001d |
RFC 7748 |
secp256r1 (P-256) |
0x0017 |
NIST |
secp384r1 (P-384) |
0x0018 |
NIST |
secp521r1 (P-521) |
0x0019 |
NIST |
Hybrid PQC Groups (Production)
| Group Name |
Hex Code |
Vendor |
X25519Kyber768 |
0x11ec |
Chrome |
X25519Kyber1024 |
0x11ed |
Chrome |
X25519Kyber768Draft00 |
0x6399 |
Cloudflare/Google |
X25519Kyber768Draft00 |
0xfe31 |
Alternate code |
Hybrid PQC Groups (NIST Standard)
| Group Name |
Hex Code |
Standard |
X25519+ML-KEM-768 |
0x2001 |
NIST draft |
X25519+ML-KEM-1024 |
0x2002 |
NIST draft |
P-256+ML-KEM-768 |
0x2005 |
NIST draft |
P-384+ML-KEM-1024 |
0x2006 |
NIST draft |
SecP256r1+ML-KEM-768 |
0x2003 |
NIST draft |
SecP384r1+ML-KEM-1024 |
0x2004 |
NIST draft |
SSH KEX Algorithms
PQC/Hybrid KEX
| Algorithm |
Type |
Availability |
sntrup761x25519-sha512@openssh.com |
Hybrid |
OpenSSH 9.0+ |
mlkem768x25519-sha256 |
Hybrid |
Emerging |
kyber512 |
Pure PQC |
Research |
kyber768 |
Pure PQC |
Research |
kyber1024 |
Pure PQC |
Research |
Classical KEX (Reference)
| Algorithm |
Security |
curve25519-sha256 |
Classical |
ecdh-sha2-nistp256 |
Classical |
diffie-hellman-group16-sha512 |
Classical |
Filtered Ports
pqc-flow only processes traffic on these ports:
| Port |
Protocol |
Service |
| 22 |
TCP |
SSH |
| 443 |
TCP |
HTTPS/TLS |
| 443 |
UDP |
QUIC/HTTP3 |
| 500 |
UDP |
IKE |
| 4500 |
UDP |
IKE NAT-T |
| 51820 |
UDP |
WireGuard |
JSON Output Fields
Core Fields
| Field |
Type |
Description |
ts_us |
int |
Timestamp (microseconds since epoch) |
proto |
int |
IP protocol (6=TCP, 17=UDP) |
sip |
string |
Source IP |
dip |
string |
Destination IP |
sp |
int |
Source port |
dp |
int |
Destination port |
smac |
string |
Source MAC |
dmac |
string |
Destination MAC |
PQC Fields
| Field |
Type |
Description |
pqc_flags |
int |
PQC feature bitmask |
pqc_reason |
string |
Detected tokens (pipe-delimited) |
Protocol Fields
| Field |
Protocol |
Description |
ssh_kex_negotiated |
SSH |
Negotiated KEX algorithm |
ssh_kex_offered |
SSH |
Offered KEX algorithms |
ssh_sig_alg |
SSH |
Signature algorithm |
tls_negotiated_group |
TLS |
Server-selected group |
tls_supported_groups |
TLS |
Client-offered groups |
tls_server_sigalg |
TLS |
Server signature algorithm |
quic_tls_negotiated_group |
QUIC |
TLS group in QUIC |
ike_ke_chosen |
IKEv2 |
Selected key exchange |
live |
- |
1 if live capture mode |
Memory Usage
| Scenario |
Memory |
| Base (ring buffer + hash table) |
~130 MB |
| Per concurrent flow |
~24 KB |
| 1,000 concurrent flows |
~154 MB |
| 10,000 concurrent flows |
~370 MB |
| Metric |
Value |
| SSH handshake detection |
~25-50 ms |
| TLS handshake detection |
~40-100 ms |
| Throughput (4-core laptop) |
50K pps |
| Throughput (8-core server) |
150K pps |