Complete reference of every protocol, cipher suite, and algorithm detected by TYCHON PQC Scanner
Customer-facing reference — detection methods, PQC readiness assessment, and NDJSON event mappings
Network Protocols
Host Crypto
Quick Reference
The scanner performs a full TLS handshake against each target port, offering all known cipher suites and collecting the server's negotiated cipher, protocol version, certificate chain, and key exchange group. A fast-path probe (-cipherscanquick) collects the single negotiated suite without full enumeration.
| Version | Status | PQC Readiness | Notes |
|---|---|---|---|
TLS 1.3 | Recommended | transitional | Only AEAD cipher suites; forward secrecy mandatory; supports PQC/hybrid key exchange groups |
TLS 1.2 | Acceptable | transitional | ECDHE/DHE suites with AEAD are acceptable; RSA key exchange and CBC are flagged |
TLS 1.1 | Deprecated | vulnerable | RFC 8996 deprecated; no AEAD; SHA-1 MACs common |
TLS 1.0 | Deprecated | vulnerable | RFC 8996 deprecated; BEAST/POODLE applicable; disable immediately |
SSLv3 | Broken | vulnerable | POODLE attack; RFC 7568 prohibited; any server supporting SSLv3 is flagged critical |
DTLS 1.2 | Acceptable | transitional | UDP-based TLS for VoIP, gaming, IoT; same cipher suite coverage as TLS 1.2 |
| Suite Name | IANA ID | Encryption | HMAC | PQC Readiness |
|---|---|---|---|---|
TLS_AES_256_GCM_SHA384 | 0x1302 | AES-256-GCM | AEAD | safe Recommended |
TLS_CHACHA20_POLY1305_SHA256 | 0x1303 | ChaCha20-Poly1305 | AEAD | safe |
TLS_AES_128_GCM_SHA256 | 0x1301 | AES-128-GCM | AEAD | safe |
TLS_AES_128_CCM_SHA256 | 0x1304 | AES-128-CCM | AEAD | safe |
TLS_AES_128_CCM_8_SHA256 | 0x1305 | AES-128-CCM-8 | AEAD | safe |
Note: TLS 1.3 symmetric encryption is quantum-safe; however the key exchange (ECDH, DHE) is still classically-based and vulnerable to Shor's algorithm unless a PQC/hybrid group is used.
| Suite Name | IANA ID | Key Exchange | Encryption | MAC | PQC Readiness |
|---|---|---|---|---|---|
ECDHE-RSA-AES256-GCM-SHA384 | 0xC030 | ECDHE | AES-256-GCM | AEAD | transitional |
ECDHE-RSA-AES128-GCM-SHA256 | 0xC02F | ECDHE | AES-128-GCM | AEAD | transitional |
ECDHE-ECDSA-AES256-GCM-SHA384 | 0xC02C | ECDHE | AES-256-GCM | AEAD | transitional |
ECDHE-ECDSA-AES128-GCM-SHA256 | 0xC02B | ECDHE | AES-128-GCM | AEAD | transitional |
ECDHE-RSA-CHACHA20-POLY1305 | 0xCCA8 | ECDHE | ChaCha20-Poly1305 | AEAD | transitional |
ECDHE-ECDSA-CHACHA20-POLY1305 | 0xCCA9 | ECDHE | ChaCha20-Poly1305 | AEAD | transitional |
DHE-RSA-AES256-GCM-SHA384 | 0x009F | DHE | AES-256-GCM | AEAD | transitional |
DHE-RSA-AES128-GCM-SHA256 | 0x009E | DHE | AES-128-GCM | AEAD | transitional |
DHE-RSA-CHACHA20-POLY1305 | 0xCCAA | DHE | ChaCha20-Poly1305 | AEAD | transitional |
AES256-GCM-SHA384 | 0x009D | RSA | AES-256-GCM | AEAD | vulnerable |
AES128-GCM-SHA256 | 0x009C | RSA | AES-128-GCM | AEAD | vulnerable |
| Suite Name | IANA ID | Key Exchange | Encryption | MAC | PQC Readiness |
|---|---|---|---|---|---|
ECDHE-RSA-AES256-SHA384 | 0xC028 | ECDHE | AES-256-CBC | SHA-384 | transitional |
ECDHE-RSA-AES128-SHA256 | 0xC027 | ECDHE | AES-128-CBC | SHA-256 | transitional |
ECDHE-RSA-AES256-SHA | 0xC014 | ECDHE | AES-256-CBC | SHA-1 | vulnerable |
ECDHE-RSA-AES128-SHA | 0xC013 | ECDHE | AES-128-CBC | SHA-1 | vulnerable |
DHE-RSA-AES256-SHA256 | 0x006B | DHE | AES-256-CBC | SHA-256 | transitional |
DHE-RSA-AES128-SHA256 | 0x0067 | DHE | AES-128-CBC | SHA-256 | transitional |
AES256-SHA256 | 0x003D | RSA | AES-256-CBC | SHA-256 | vulnerable |
AES128-SHA256 | 0x003C | RSA | AES-128-CBC | SHA-256 | vulnerable |
AES256-SHA | 0x0035 | RSA | AES-256-CBC | SHA-1 | vulnerable |
AES128-SHA | 0x002F | RSA | AES-128-CBC | SHA-1 | vulnerable |
| Suite Name | IANA ID | Key Exchange | Encryption | Risk |
|---|---|---|---|---|
ECDHE-RSA-DES-CBC3-SHA | 0xC012 | ECDHE | 3DES-CBC | Critical |
DHE-RSA-DES-CBC3-SHA | 0x0016 | DHE | 3DES-CBC | Critical |
DES-CBC3-SHA | 0x000A | RSA | 3DES-CBC | Critical |
RC4-SHA | 0x0005 | RSA | RC4-128 | Critical |
RC4-MD5 | 0x0004 | RSA | RC4-128 | Critical |
ECDHE-RSA-RC4-SHA | 0xC011 | ECDHE | RC4-128 | Critical |
DES-CBC-SHA | 0x0009 | RSA | DES-CBC | Critical |
NULL-MD5 / NULL-SHA | 0x0001/0x0002 | RSA | None | Critical — No Encryption |
| Suite Name | Key Exchange | Encryption | Origin Standard | PQC Readiness |
|---|---|---|---|---|
ECDHE-RSA-CAMELLIA256-SHA384 | ECDHE | Camellia-256-CBC | ISO/IEC 18033-3, RFC 6367 | transitional |
ECDHE-RSA-CAMELLIA128-SHA256 | ECDHE | Camellia-128-CBC | ISO/IEC 18033-3 | transitional |
ECDHE-RSA-ARIA256-GCM-SHA384 | ECDHE | ARIA-256-GCM | Korean IETF RFC 6209 | transitional |
ECDHE-RSA-ARIA128-GCM-SHA256 | ECDHE | ARIA-128-GCM | Korean IETF RFC 6209 | transitional |
| Group Name | ID | Type | PQC? | Detection Method | Standard |
|---|---|---|---|---|---|
X25519MLKEM768 | 0x11EC | Hybrid (X25519 + ML-KEM-768) | Yes | Full handshake | NIST FIPS 203 + RFC 7748 |
SecP256r1MLKEM768 | 0x11EB | Hybrid (P-256 + ML-KEM-768) | Yes | Full handshake | NIST FIPS 203 + FIPS 186-5 |
SecP384r1MLKEM1024 | 0x11ED | Hybrid (P-384 + ML-KEM-1024) | Yes | Full handshake | NIST FIPS 203 + FIPS 186-5 |
MLKEM512 | 0x0200 | Pure ML-KEM | Yes | Full handshake | NIST FIPS 203 |
MLKEM768 | 0x0201 | Pure ML-KEM | Yes | Full handshake | NIST FIPS 203 |
MLKEM1024 | 0x0202 | Pure ML-KEM | Yes | Full handshake | NIST FIPS 203 |
BIKE-L1 / BIKE-L3 / BIKE-L5 | OQS | Code-based KEM | Yes | Passive HRR | OQS / IETF draft |
FrodoKEM-640/976/1344 (AES & SHAKE) | OQS | Lattice KEM (conservative) | Yes | Passive HRR | OQS / IETF draft |
x25519_mlkem512, p256_mlkem512, bp256_mlkem512 | OQS | Hybrid ML-KEM (non-IANA) | Yes | Passive HRR | OQS draft |
bp384_mlkem768, p384_mlkem768, x448_mlkem768 | OQS | Hybrid ML-KEM (non-IANA) | Yes | Passive HRR | OQS draft |
bp512_mlkem1024, p521_mlkem1024 | OQS | Hybrid ML-KEM (non-IANA) | Yes | Passive HRR | OQS draft |
X25519 | 0x001D | Classical ECDH | No | Full handshake | RFC 7748 |
X448 | 0x001E | Classical ECDH | No | Full handshake | RFC 7748 |
secp256r1 (P-256) | 0x0017 | NIST ECC | No | Full handshake | FIPS 186-5, RFC 8422 |
secp384r1 (P-384) | 0x0018 | NIST ECC | No | Full handshake | FIPS 186-5, RFC 8422 |
secp521r1 (P-521) | 0x0019 | NIST ECC | No | Full handshake | FIPS 186-5, RFC 8422 |
ffdhe2048 – ffdhe8192 | 0x0100–0x0104 | Finite-Field DH | No | Full handshake | RFC 7919 |
secp256k1 | 0x0016 | ECC (Bitcoin curve) | No | Full handshake | Non-NIST, legacy |
tychon.cipher_negotiation.kex.* fields including quantum_safe and cnsa_20_level.
Blue rows: Server's required group is identified via passive TLS HelloRetryRequest parsing — TLS presence, cipher suite, and KEX group name are all captured without completing the handshake. Validated against all 721 ports of the Open Quantum Safe interop server.
| Port | Protocol | STARTTLS Method |
|---|---|---|
| 21 | FTP | AUTH TLS |
| 25 | SMTP | STARTTLS |
| 110 | POP3 | STLS |
| 143 | IMAP | STARTTLS |
| 389 | LDAP | STARTTLS |
| 587 | SMTP (submission) | STARTTLS |
| 3306 | MySQL | MySQL SSL handshake |
| 5432 | PostgreSQL | SSLRequest |
| 6379 | Redis | STARTTLS |
The scanner performs a full SSH handshake, collecting all negotiated algorithms for key exchange, host key type, symmetric encryption, and MAC. No authentication is attempted.
| Algorithm Category | Algorithm Name | PQC Readiness | Notes |
|---|---|---|---|
| Key Exchange | |||
| Key Exchange | curve25519-sha256 | transitional | Most deployed modern KEX; no PQC protection |
| Key Exchange | ecdh-sha2-nistp256/384/521 | transitional | NIST ECC; forward secrecy; no PQC |
| Key Exchange | diffie-hellman-group-exchange-sha256 | transitional | RFC 4419; group size determines classical security |
| Key Exchange | diffie-hellman-group14-sha1 | vulnerable | SHA-1 MAC; 2048-bit DH; deprecated |
| Key Exchange | diffie-hellman-group1-sha1 | broken | 768-bit DH; LOGJAM applicable; disabled by default in modern OpenSSH |
| Host Key Type | |||
| Host Key | ssh-ed25519 | transitional | EdDSA on Curve25519; modern default |
| Host Key | ecdsa-sha2-nistp256/384/521 | transitional | ECDSA; forward-secrecy for host auth |
| Host Key | rsa-sha2-256 / rsa-sha2-512 | transitional | RSA host key with SHA-2; acceptable key sizes ≥3072 |
| Host Key | ssh-rsa | vulnerable | RSA with SHA-1; deprecated RFC 8332 |
| Symmetric Encryption | |||
| Encryption | aes256-gcm@openssh.com | safe Recommended | AES-256-GCM AEAD; preferred |
| Encryption | aes128-gcm@openssh.com | safe | AES-128-GCM AEAD |
| Encryption | chacha20-poly1305@openssh.com | safe | ChaCha20-Poly1305 AEAD; preferred on CPUs without AES-NI |
| Encryption | aes256-ctr / aes192-ctr / aes128-ctr | safe | AES-CTR; requires separate MAC; acceptable |
| Encryption | aes256-cbc / aes128-cbc | transitional | AES-CBC; Lucky13 risk if no EtM MAC |
| MAC | |||
| MAC | hmac-sha2-256-etm@openssh.com | safe | Encrypt-then-MAC; preferred |
| MAC | hmac-sha2-512-etm@openssh.com | safe Recommended | Encrypt-then-MAC; preferred |
| MAC | hmac-sha1 | vulnerable | SHA-1 collision risk; deprecate |
| MAC | hmac-md5 | broken | MD5 broken; disable immediately |
An SMB2 NEGOTIATE Request is sent to 127.0.0.1:445 offering all dialects 2.0.2 through 3.1.1. The server's NEGOTIATE Response is parsed for the negotiated dialect and, for SMB 3.1.1, the NegotiateContextList encryption cipher IDs. On Windows the LanmanServer EncryptData registry DWORD is also checked.
| Detected State | Cipher / Condition | PQC Readiness | Quantum Risk | Migration Priority |
|---|---|---|---|---|
| SMBv1 response | No encryption — SMBv1 | vulnerable | Critical | Critical |
| SMB 2.0.2 / 2.1 negotiated | No encryption (SMB2 lacks native encryption) | vulnerable | High | High |
| SMB 3.0 / 3.0.2 negotiated | AES-128-CCM (only option) | safe | Low | Low |
| SMB 3.1.1 — AES-128-GCM | AES-128-GCM | safe | Low | Low |
| SMB 3.1.1 — AES-256-GCM | AES-256-GCM (preferred) | safe Recommended | Low | Low |
| SMB 3.1.1 — AES-128-CCM | AES-128-CCM | safe | Low | Low |
| SMB 3.1.1 — AES-256-CCM | AES-256-CCM | safe | Low | Low |
Note: SMB symmetric encryption (AES-GCM/CCM) is quantum-safe. The primary risk is unencrypted SMBv1/v2 traffic which can be captured and replayed. Upgrade path: enable SMB 3.1.1 with EncryptData=1 (Windows) and prefer AES-256-GCM.
No active network probe is sent (USM responses require valid credentials). On Linux/macOS /etc/snmp/snmpd.conf is parsed for createUser directives, collecting auth and priv protocol names. On Windows the SNMP service registry key is checked — Windows SNMP supports only v1/v2c (community strings, no encryption).
| Category | Protocol | USM Role | PQC Readiness | Quantum Risk |
|---|---|---|---|---|
| Authentication | ||||
| Insecure auth | MD5 | Auth | vulnerable | Medium |
| Weak auth | SHA / SHA-1 | Auth | vulnerable | Medium |
| Acceptable auth | SHA-256 | Auth | transitional | Low |
| Acceptable auth | SHA-384 | Auth | transitional | Low |
| Acceptable auth | SHA-512 | Auth | transitional | Low |
| Privacy (Encryption) | ||||
| Broken priv | DES / CBC-DES | Priv | vulnerable | Critical |
| Broken priv | 3DES / 3DES-EDE | Priv | vulnerable | Critical |
| Acceptable priv | AES-128 / CFB-AES-128 | Priv | safe | Low |
| Preferred priv | AES-256 / CFB-AES-256 | Priv | safe Recommended | Low |
| Windows SNMP Service | ||||
| SNMPv1/v2c only | Community string auth — no encryption | Both | vulnerable | Critical |
Windows reads SupportedEncryptionTypes from the Group Policy or LSA registry key (or infers the OS-version default). Linux/macOS parses /etc/krb5.conf [libdefaults] for permitted_enctypes, default_tkt_enctypes, and allow_weak_crypto. RC4-HMAC is exploitable via Kerberoasting (RFC 8429 deprecates it); DES is banned by CNSA 2.0.
| Enctype | Bitmask Bit (Windows) | Category | PQC Readiness | Quantum Risk |
|---|---|---|---|---|
DES-CBC-CRC | 0x01 | Broken / banned | vulnerable | Critical |
DES-CBC-MD5 | 0x02 | Broken / banned | vulnerable | Critical |
RC4-HMAC | 0x04 | Deprecated — Kerberoastable | vulnerable | Critical |
AES128-CTS-HMAC-SHA1-96 | 0x08 | Acceptable | transitional | Medium |
AES256-CTS-HMAC-SHA1-96 | 0x10 | Preferred | transitional | Medium |
AES256-CTS-HMAC-SHA384-192 | krb5.conf only | Preferred (SHA-384) | transitional | Medium |
arcfour-hmac / arcfour-hmac-md5 | krb5.conf only | Deprecated — RC4 alias | vulnerable | Critical |
VPN clients are detected by process name, registry presence, and configuration file paths. Tunnel protocol, cipher suite, and key exchange algorithm are extracted from config files when available.
| VPN Client | Platforms | Primary Protocol | Detection Method |
|---|---|---|---|
| Cloudflare WARP | Win / Mac / Linux | WireGuard / MASQUE | Process, Registry, Config |
| Palo Alto GlobalProtect | Win / Mac / Linux | IPSec/IKEv2, SSL/TLS | Process, Registry, Config |
| Cisco AnyConnect / Secure Client | Win / Mac / Linux | DTLS, TLS, IPSec | Process, Registry, Config |
| Fortinet FortiClient | Win / Mac / Linux | SSL-VPN, IPSec/IKEv2 | Process, Registry, Config |
| Zscaler Client Connector | Win / Mac / Linux | TLS, DTLS | Process, Registry |
| Check Point Endpoint Security | Win / Mac / Linux | IPSec, SSL-VPN | Process, Registry |
| WireGuard | Win / Mac / Linux | WireGuard (ChaCha20-Poly1305) | Process, Config (wg0.conf) |
| OpenVPN | Win / Mac / Linux | SSL/TLS over UDP/TCP | Process, Config (.ovpn) |
| Tailscale | Win / Mac / Linux | WireGuard | Process, Config |
| Ivanti Pulse Secure | Win / Mac | SSL-VPN | Process, Registry |
| NordVPN / NordLayer | Win / Mac / Linux | NordLynx (WireGuard), OpenVPN | Process, Config |
| Perimeter81 / Check Point Harmony | Win / Mac / Linux | WireGuard, IPSec | Process, Config |
| ProtonVPN | Win / Mac / Linux | WireGuard, OpenVPN, IKEv2 | Process, Config |
| ExpressVPN | Win / Mac / Linux | Lightway (wolfSSL), OpenVPN | Process, Config |
| Surfshark | Win / Mac / Linux | WireGuard, OpenVPN, IKEv2 | Process, Config |
| Windows Built-in VPN | Win | IKEv2, L2TP/IPSec, PPTP, SSTP | Registry, WMI |
| SoftEther VPN | Win / Linux | SSL-VPN, L2TP, OpenVPN | Process, Config |
| Twingate | Win / Mac / Linux | WireGuard | Process |
| CyberGhost | Win / Mac | WireGuard, OpenVPN, IKEv2 | Process, Registry |
| Implementation | Platforms | Config File | IKE Versions |
|---|---|---|---|
| Windows Built-in IPSec | Windows | Registry / PowerShell | IKEv1, IKEv2 |
| strongSwan | Win / Mac / Linux | ipsec.conf, swanctl.conf | IKEv1, IKEv2 |
| libreswan | Linux | ipsec.conf | IKEv1, IKEv2 |
| openswan | Linux (legacy) | ipsec.conf | IKEv1 |
| Linux Kernel IPSec (xfrm) | Linux | iproute2 / netstat | IKEv1, IKEv2 |
Fields captured: protocol (IKEv1/IKEv2), mode (tunnel/transport), authentication method (PSK/certificate/EAP), encryption algorithm, integrity algorithm, DH group, tunnel endpoint addresses.
| Cipher Suite | Key Length | CNSA 2.0 | PQC Readiness | Score |
|---|---|---|---|---|
GCM-AES-256 | 256-bit | Yes | safe | 80 / 100 |
GCM-AES-256-XPN | 256-bit | Yes | safe | 80 / 100 |
GCM-AES-128 | 128-bit | No (CNSA 2.0 requires 256) | transitional | 50 / 100 |
GCM-AES-128-XPN | 128-bit | No | transitional | 50 / 100 |
| Unknown / none | — | No | vulnerable | 20 / 100 |
Additional flags assessed: encrypt (authentication-only vs. confidentiality), replay_protect (replay window size), MKA (802.1X key agreement) enabled, validate: strict/check/disabled.
IBM MQ uses TLS at the TCP layer — the TLS handshake completes before any MQ protocol bytes are exchanged. On port 1414 (standard listener), a 28-byte MQTSH probe is sent after TLS fails; a TSH signature in the response confirms MQ presence without TLS. Port 1415 (dedicated SSL listener) and port 9443 (MQ REST API) receive a direct TLS ClientHello. TLS-protected MQ channels are also detected by the standard TLS probe and labeled ibmmq+tls.
| Configuration | Port | Detection Method | PQC Readiness | Quantum Risk | Action |
|---|---|---|---|---|---|
| MQ channel with TLS 1.3 + PQC hybrid KEX | 1414 / 1415 | TLS probe → ibmmq+tls | transitional | Medium | Upgrade KEX to X25519MLKEM768 when IBM MQ supports it |
| MQ channel with TLS 1.2 (ECDHE-AES-GCM) | 1414 / 1415 | TLS probe → ibmmq+tls | transitional | High | Upgrade to TLS 1.3; add PQC hybrid KEX |
| MQ channel with TLS 1.0 / 1.1 or weak cipher | 1414 / 1415 | TLS probe → ibmmq+tls | vulnerable | Critical | Disable TLS 1.0/1.1; enforce TLS 1.2+ with AEAD ciphers |
| MQ channel — no TLS (SSLCIPH not set) | 1414 | MQTSH binary probe | vulnerable | Critical | Set SSLCIPH on all channels; enforce SSLPEER; require TLS 1.2+ |
MQTSH probe: 28-byte Transmission Segment Header (StrucId="TSH ", SegmentType=INITIAL). IBM MQ responds with a recognizable error frame when TLS is absent, exposing the channel without authentication or encryption. Common IBM MQ process names monitored: amqrmppa, runmqlsr, amqzmgr0.
Local NFS mounts and server exports are parsed from the OS mount table — no network probing required for local detection. For remote scans, port 2049 receives a direct TLS ClientHello (RFC 9289 NFS-over-TLS) first; if TLS fails, a 40-byte ONC RPC NULL call (XID 0x12345678, Program 100003 / NFS, Procedure 0) confirms NFS presence. Security flavor is classified from mount options or export configuration.
Security Flavor (sec=) | Encrypted | Auth | PQC Readiness | Quantum Risk | Action |
|---|---|---|---|---|---|
tls — NFS-over-TLS (RFC 9289) | Yes | TLS certificate | transitional | Medium | Upgrade TLS cipher to 1.3 with PQC hybrid KEX |
krb5p — Kerberos privacy | Yes (AES256-CTS) | Kerberos | transitional | Medium | Symmetric AES is quantum-safe; Kerberos session KEX is not — await PQC Kerberos RFC |
krb5i — Kerberos integrity | No (data plaintext) | Kerberos + HMAC | vulnerable | High | Upgrade to krb5p for data encryption or migrate to NFS-over-TLS |
krb5 — Kerberos auth only | No | Kerberos | vulnerable | High | Upgrade to krb5p for data encryption or migrate to NFS-over-TLS |
sys — AUTH_SYS (UID/GID) | No | None (spoofable) | vulnerable | Critical | Replace with krb5p or NFS-over-TLS immediately; AUTH_SYS provides no real authentication |
| No security (NFSv2 / v3, no sec option) | No | None | vulnerable | Critical | Upgrade to NFSv4.1+ with Kerberos or NFS-over-TLS |
NFS version detected from mount options (vers= or nfsvers=). Linux server exports are read from /proc/fs/nfsd/exports; client mounts from /proc/mounts. macOS mount table parsed via /sbin/mount. Windows NFS stub returns no results (Windows NFS client usage is rare in enterprise environments). Remote detection: port 2049 labeled nfs+tls when TLS succeeds.
| Key Algorithm | Key Size / Curve | PQC Readiness | Quantum Risk | Migration Priority |
|---|---|---|---|---|
| RSA | < 2048 bits | vulnerable | Critical | Critical |
| RSA | 2048 bits | transitional | High | High |
| RSA | 3072 / 4096+ bits | transitional | High | Medium |
| ECDSA | P-256 / P-384 / P-521 | transitional | High | High |
| ED25519 | 255 bits (Curve25519) | transitional | Medium | Medium |
| DSA | 1024 / 2048 bits | vulnerable | Critical | Critical |
Cert metadata captured: subject, issuer, serial, not-before, not-after, SHA-1 and SHA-256 fingerprints, key usage / EKU, SANs, chain depth, CRL/OCSP endpoints, FIPS 140 certification flag, signature algorithm.
| Keystore Format | Extension(s) | Platform | Encryption Assessed |
|---|---|---|---|
| JKS — Java KeyStore | .jks | All (Java) | PBEWithSHA1AndDESede (weak), AES-256 (strong) |
| PKCS#12 | .p12, .pfx | All | PBKDF2, PKCS12KDF; AES-256-CBC; MAC SHA-256 |
| PEM | .pem, .crt, .cer, .key | All | AES-128/256-CBC passphrase encryption detected |
| DER | .der, .cer | All | Binary format; no container encryption |
| Windows Certificate Store | Registry | Windows | CNG encryption for private keys |
| macOS Keychain | Security framework | macOS | Secure Enclave or system keychain encryption |
| Linux NSS database | cert8.db, cert9.db | Linux | SQLite3 / Berkeley DB; PBKDF2 |
| Linux system CA store | /etc/ssl/certs/, /var/lib/ca-certificates/ | Linux | Public roots only; no private key material |
The Security framework SecItemCopyMatching(kSecClassIdentity) enumerates all certificate+private key pairs in the process's keychain search list (login + System keychains). Private key bytes never leave securityd or the Secure Enclave — only metadata is accessed via SecKeyCopyAttributes. Common identities include Microsoft AAD, GlobalProtect VPN, and MDM enrollment certificates.
| Key Type | Bits / Curve | PQC Readiness | Quantum Risk | Migration Priority |
|---|---|---|---|---|
| RSA | < 2048 | vulnerable | Critical | Critical |
| RSA | 2048 | transitional | High | High |
| RSA | 3072 / 4096+ | transitional | High | Medium |
| EC (ECDSA) | P-256 / P-384 / P-521 | transitional | High | High |
| ED25519 | 255-bit Curve25519 | transitional | Medium | Medium |
| Library | Min PQC-Capable Version | PQC Status | PQC Algorithms | Notes |
|---|---|---|---|---|
| OpenSSL | 3.5.0+ (Apr 2025) | PQC Capable | ML-KEM, ML-DSA, SLH-DSA (FIPS 140-3) | Via built-in FIPS provider |
| OpenSSL | 3.0 – 3.4 | Partial | ML-KEM (oqs-provider only) | OQS provider required |
| OpenSSL | < 3.0 | Not Capable | None | EOL; upgrade required |
| LibreSSL | — | Not Capable | None | OpenSSL 1.x API compatibility fork |
| BoringSSL (Google) | 2023+ | Partial | X25519Kyber768 hybrid (TLS only) | No standalone PQC API |
| NSS (Mozilla) | 3.94+ (Oct 2024) | Partial | ML-KEM-768 hybrid (TLS 1.3) | IETF draft spec; Firefox 132+ |
| Mbed TLS | 3.6.0+ | Partial | ML-KEM (experimental) | Requires compile-time flag; not production-ready |
| wolfSSL | 5.7.0+ | Partial | ML-KEM, ML-DSA, SLH-DSA | Compile-time flags required; FIPS module is paid |
| Botan | 3.4.0+ | PQC Capable | ML-KEM, ML-DSA, SLH-DSA (finalized) | Full NIST FIPS 203/204/205 implementation |
| Botan | 3.0 – 3.3 | Partial | Draft Kyber / Dilithium | Pre-standardization drafts |
| GnuTLS | — | Not Capable | None | No mainline PQC as of 2026 |
| Apple Security (CommonCrypto, CoreTLS, CryptoKit) | — | Not Capable | None | No public PQC APIs as of 2026 |
| Windows SChannel / CNG / CAPI | — | Not Capable | None | No native PQC as of 2026; Preview available in Insider |
| BouncyCastle (Java) | 1.77+ (beta) | Partial | ML-KEM, ML-DSA, SLH-DSA (beta) | Detected via Java process memory scan |
Private key bytes are never read from memory. Library detection uses shared-object paths, version strings, and module signatures found in process memory maps. Java crypto libraries are detected via class loading patterns in the JVM heap.
The quantum readiness score is a composite of four independently scored dimensions. Scores influence the letter-grade (A–F) and readiness status reported in tychon.quantum_readiness.
| Dimension | Max Score | Key Factors |
|---|---|---|
| Hardware | 40 pts | CPU architecture (x86_64/ARM64), AES-NI, AVX2/NEON instructions, RAM capacity, TPM version, HSM presence, Secure Boot |
| OS & Crypto API | 30 pts | OS version / patch level, TLS 1.3 native support, FIPS mode enabled, modern cipher API availability, IPv6 support |
| Crypto Libraries | 20 pts | OpenSSL version, PQC-capable libraries detected, no legacy library presence |
| Network | 10 pts | Estimated bandwidth, TLS 1.3 negotiation success rate, IPv6 availability |
| event.dataset | event.action | Protocol / Source | One event per |
|---|---|---|---|
tychon.cipher | cipher_negotiation | TLS (all versions) | Negotiated cipher suite per port |
tychon.cipher_quick | quick_cipher_scan | TLS (fast path) | Single negotiated suite per port |
tychon.ssh | ssh_crypto_detected | SSH | SSH algorithm set per port |
tychon.non_tls_cipher | non_tls_cipher_detected | SMB3, SNMPv3, Kerberos, SMTP, IMAP, LDAP, PostgreSQL, IBM MQ, NFS | One cipher profile per detected protocol instance |
tychon.vpn_client | vpn_client_detected | VPN clients | Detected VPN client installation |
tychon.ipsec_tunnel | ipsec_tunnel_detected | IPSec | IPSec tunnel or policy |
tychon.macsec | macsec_interface_detected | MACsec | MACsec interface |
tychon.filesystem_certificate | certificate_discovered | Filesystem | X.509 certificate file |
tychon.keystore_certificate | keystore_discovered | JKS / PKCS12 / etc. | Certificate within a keystore |
tychon.keystore | keystore_discovered | JKS / PKCS12 / etc. | Keystore file (summary) |
tychon.crypto_library | crypto_library_detected | Memory scan | Crypto library per process |
tychon.java_crypto_library | crypto_library_detected | JVM memory scan | Java crypto library per process |
tychon.quantum_readiness | quantum_readiness_assessed | Composite assessment | One per scan |
tychon.pqc_inventory | pqc_inventory | App + port pairs | Application + port with cipher data |
tychon.application | application_detected | App-centric mode | Application (process executable) |
tychon.connected_quick | connected_quick_scan | Active connections | Outbound connection probe |
tychon.installed_app | installed_app_detected | OS app registry | Installed application |
tychon.browser_extension | browser_extension_detected | Browser profiles | Browser extension |
| Algorithm / Configuration | Protocol Context | pqc_readiness | quantum_risk | migration_priority | Reason |
|---|---|---|---|---|---|
| ML-KEM hybrid KEX (X25519+ML-KEM-768) | TLS 1.3 | safe | Low | Low | NIST FIPS 203; CNSA 2.0 compliant |
| AES-256-GCM (symmetric) | TLS, SMB3, MACsec, IPSec | safe | Low | Low | 256-bit key resists Grover's algorithm |
| AES-128-GCM (symmetric) | TLS, SMB3, MACsec | safe | Low | Low | 128-bit effectively 64-bit post-Grover; acceptable |
| ChaCha20-Poly1305 (symmetric) | TLS, WireGuard VPN | safe | Low | Low | 256-bit key symmetric; quantum-safe |
| ECDHE key exchange | TLS 1.2 / 1.3 | transitional | High | High | Shor's algorithm breaks ECDH on a CRQC |
| DHE key exchange | TLS 1.2 | transitional | High | High | Shor's algorithm breaks discrete logarithm |
| RSA key exchange / signature | TLS, certificates | transitional | High | High | Shor's algorithm factors RSA modulus |
| ECDSA / ED25519 signatures | Certificates, SSH | transitional | High | High | Shor's algorithm breaks ECC |
| AES128-CTS-HMAC-SHA1-96 (Kerberos) | Kerberos | transitional | Medium | Medium | Symmetric AES session; no PQC Kerberos standard yet |
| AES-256 SNMPv3 priv + SHA-256 auth | SNMPv3 | transitional | Low | Low | Best available; no PQC SNMPv3 standard yet |
| SHA-1 / MD5 MACs | TLS, SSH, SNMPv3 | vulnerable | High | High | Classical collision attacks (Grover accelerates) |
| 3DES / Triple-DES | TLS, IPSec, SNMPv3, Kerberos | vulnerable | Critical | Critical | SWEET32 (classical); 112-bit key = 56-bit post-Grover |
| RC4 | TLS, Kerberos | vulnerable | Critical | Critical | Classically broken; RFC 7465 prohibits in TLS |
| DES | Kerberos, SNMPv3, SMB | vulnerable | Critical | Critical | 56-bit key; broken classically since 1998 |
| NULL encryption | TLS | vulnerable | Critical | Critical | No encryption — authentication only |
| RSA < 2048 bits | Certificates, TLS key exchange | vulnerable | Critical | Critical | Below minimum classical security; quantum makes it worse |
| SMBv1 | SMB | vulnerable | Critical | Critical | No encryption; WannaCry; EternalBlue |
| SNMPv1 / v2c (community strings) | SNMP | vulnerable | Critical | Critical | Cleartext; no authentication integrity |
| IBM MQ — no TLS (SSLCIPH not set) | IBM MQ | vulnerable | Critical | Critical | Plaintext message queues; no authentication or encryption |
| IBM MQ — TLS 1.2+ channel | IBM MQ | transitional | High | High | Classical asymmetric KEX; upgrade to TLS 1.3 + PQC hybrid |
NFS sec=sys / no sec | NFS | vulnerable | Critical | Critical | No encryption, no real authentication (UID/GID spoofable) |
NFS sec=krb5 / krb5i | NFS | vulnerable | High | High | Auth only or integrity only; data in plaintext |
NFS sec=krb5p | NFS | transitional | Medium | Medium | AES256-CTS data encryption; KEX is quantum-vulnerable |
| NFS-over-TLS (RFC 9289) | NFS | transitional | Medium | Medium | TLS 1.3 with classical KEX; add PQC hybrid group |
| Detection Category | Windows | macOS | Linux | Detection Method |
|---|---|---|---|---|
| TLS / SSL cipher scanning | ✓ | ✓ | ✓ | Active TCP probe |
| SSH algorithm scanning | ✓ | ✓ | ✓ | Active TCP probe |
| SMB3 encryption (network probe) | ✓ | ✓ | ✓ | TCP NEGOTIATE packet |
| SMB encryption enforcement | ✓ | — | — | Registry: LanmanServer\EncryptData |
| SNMPv3 (config file) | — | ✓ | ✓ | Parse /etc/snmp/snmpd.conf |
| SNMP service (Windows v1/v2c) | ✓ | — | — | Registry: services\SNMP |
| Kerberos enctypes (registry) | ✓ | — | — | Registry: SupportedEncryptionTypes bitmask |
| Kerberos enctypes (krb5.conf) | — | ✓ | ✓ | Parse /etc/krb5.conf [libdefaults] |
| VPN client detection | ✓ | ✓ | ✓ | Process, Registry, Config files |
| IPSec tunnel detection | ✓ | ✓ | ✓ | Config files, service status, process |
| MACsec interface detection | ✓ | ✓ | ✓ | sysfs, ip link, Registry |
| Filesystem certificate scan | ✓ | ✓ | ✓ | Walk configured paths |
| Windows Certificate Store | ✓ | — | — | CryptoAPI / Windows registry |
| macOS Keychain identities | — | ✓ | — | Security framework (CGO) |
| Linux NSS database | — | — | ✓ | SQLite / BDB cert9.db |
| JKS / PKCS12 keystores | ✓ | ✓ | ✓ | Filesystem walk + OpenSSL |
| Crypto library memory scan | ✓ | ✓ | ✓ | Process memory maps + version detection |
| Java crypto library scan | ✓ | ✓ | ✓ | JVM heap / class path analysis |
| Quantum readiness scoring | ✓ | ✓ | ✓ | Composite of all above |
| NTLM LmCompatibilityLevel | ✓ | — | — | Registry — HKLM\...\Lsa\LmCompatibilityLevel |
| UEFI / Secure Boot firmware type | ✓ | ✓ | ✓ | Registry (Win) / EFI sysfs (Linux) / hardware assumption (macOS) |
| WiFi encryption (active connection) | ✓ | ✓ | ✓ | WLAN profile XML (Win) / wpa_supplicant + NM conf (Linux) / interface detection (macOS) |
| STARTTLS cipher probing | ✓ | ✓ | ✓ | Protocol-native handshake: SMTP, IMAP, LDAP, PostgreSQL on localhost |
| IBM MQ channel detection (port 1414) | ✓ | ✓ | ✓ | MQTSH binary probe (no TLS) + standard TLS probe (TLS channels) |
| IBM MQ SSL listener (port 1415) | ✓ | ✓ | ✓ | Direct TLS ClientHello |
| NFS client mount detection | — | ✓ | ✓ | macOS: /sbin/mount | Linux: /proc/mounts |
| NFS server export detection | — | — | ✓ | Linux: /proc/fs/nfsd/exports |
| NFS remote probe (port 2049) | ✓ | ✓ | ✓ | TLS ClientHello (RFC 9289) + ONC RPC NULL call fallback |