Tychon Output Format

Enhanced NDJSON format with threat intelligence and ECS compliance

Overview

The Tychon format is an enhanced NDJSON output optimized for security platforms and SIEM systems. It includes threat intelligence, ECS-compliant field names, and denormalized data for efficient searching and analysis.

⚠️ Important: Flat JSON Structure

All tychon format events use completely flat JSON with dot notation (e.g., crypto.key_algorithm, tls.certificate.subject). No nested objects are supported - all fields are at the root level with descriptive dot-separated names.

Key Features

  • • ECS (Elastic Common Schema) compliant
  • • Enhanced threat intelligence
  • • Post-quantum vulnerability analysis
  • • Asset tracking with active/inactive status
  • • Enterprise VPN client discovery NEW
  • • IPSec tunnel configuration analysis NEW
  • • Digital certificate keystore discovery NEW
  • • System quantum readiness assessment NEW

Usage

.\certscanner-windows-amd64.exe -host example.com `
  -outputformat tychon `
  -output security-scan.tychon.ndjson

Event Types

Cipher Events (tychon.type: "cipher")

Network TLS cipher suites with complete certificate and threat intelligence

Key Fields: cipher.name, cipher.protocol, certificate.*, server.*, service.*

Library Events (tychon.type: "library")

Cryptographic libraries discovered in process memory

Key Fields: library.*, process.*, file.*, crypto.*

Filesystem Events (tychon.type: "filesystem")

Certificates and crypto files found on disk

Key Fields: file.*, certificate.*, x509.*

Archive Events (tychon.type: "archivefile")

Encrypted Outlook archive files discovered

Key Fields: file.*, archive.*, encryption.*

VPN Client Events (tychon.type: "vpn_client")

VPN client software discovered on the system

Key Fields: vpn.*, file.*, process.*

IPSec Tunnel Events (tychon.type: "ipsec_tunnel")

IPSec tunnel configurations discovered

Key Fields: ipsec.*, network.*, security.*

Quantum Readiness Events (event.dataset: "tychon.quantum_readiness") NEW

System quantum readiness assessment (local mode only)

Key Fields: quantum.*, observer.*

Keystore Events (event.dataset: "tychon.keystore") NEW

Digital certificate keystores discovered on the system

Key Fields: keystore.*, file.*, observer.*

Keystore Certificate Events (event.dataset: "tychon.keystore_certificate") NEW

Individual certificate details from keystore discovery

Key Fields: keystore.*, crypto.*, tls.certificate.*, vulnerability.*, pqc.*

Core Schema Fields

Universal Fields (All Events)

Field Type Description
@timestampStringISO 8601 event timestamp
idStringUnique SHA-1 hash for finding
tychon.typeStringEvent type classification
tychon.scan_modeStringScan mode (local/remote/connected)
tychon.activeBooleanAsset active status from tracking
tychon.pqc_vulnerableBooleanQuantum vulnerability assessment
tagsArrayUser-defined scan tags

Certificate Fields

Field Type Description
certificate.subject.common_nameStringCertificate subject CN
certificate.issuer.common_nameStringCertificate issuer CN
certificate.not_afterStringCertificate expiration
certificate.signature_algorithmStringSignature algorithm
certificate.fingerprint_sha256StringSHA-256 fingerprint
certificate.is_fileString"true" for filesystem certs

Sample Records

Cipher Event Record

{"@timestamp":"2025-09-02T13:00:17.123Z","id":"abc123def456","tychon.type":"cipher","tychon.scan_mode":"remote","tychon.active":true,"tychon.pqc_vulnerable":false,"server.address":"example.com","server.port":443,"service.protocol.type":"TLS","service.protocol.name":"TLSV1.3","cipher.name":"TLS_AES_256_GCM_SHA384","cipher.key_length_bits":256,"cipher.negotiated_group":"X25519MLKEM768","cipher.is_preferred":true,"cipher.intel.security_level":"high","cipher.intel.pqc_ready":true,"certificate.subject.common_name":"example.com","certificate.issuer.common_name":"DigiCert TLS RSA SHA256 2020 CA1","certificate.not_after":"2025-03-01T23:59:59Z","certificate.fingerprint_sha256":"ab:cd:ef:12:34:56:78:90","certificate.is_file":"false","tags":["production","quarterly-scan"]}

Library Event Record

{"@timestamp":"2025-09-02T13:00:17.456Z","id":"def789abc123","tychon.type":"library","tychon.scan_mode":"local","tychon.active":true,"process.pid":1234,"process.name":"nginx","process.executable":"/usr/sbin/nginx","file.path":"/usr/lib/libssl.so.3","library.name":"libssl.so.3","library.crypto_type":"TLS Library","library.company_name":"OpenSSL Project","library.detected_apis":"SSL_connect,SSL_accept,TLS_method","tags":["server","crypto-audit"]}

Filesystem Certificate Record

{"@timestamp":"2025-09-02T13:00:17.789Z","id":"ghi456jkl789","tychon.type":"filesystem","tychon.scan_mode":"local","tychon.active":true,"file.path":"/etc/ssl/certs/ca-cert.pem","certificate.subject.common_name":"Internal Root CA","certificate.issuer.common_name":"Internal Root CA","certificate.not_after":"2033-01-01T00:00:00Z","certificate.signature_algorithm":"SHA256-RSA","certificate.is_self_signed":true,"certificate.is_file":"true","tags":["filesystem-scan"]}

Keystore Certificate Record NEW

{"@timestamp":"2025-09-17T20:35:45.267Z","event.action":"keystore_certificate_detected","event.category":"security","event.type":"info","event.dataset":"tychon.keystore_certificate","id":"52d4362845b11fdaadc28c459bb340211a33cc72","observer.hostname":"workstation-01","observer.name":"tychon-pqc-scanner","observer.type":"scanner","observer.version":"1.0.61","file.path":"macOS:Login","file.name":"macOS:Login","file.extension":"","file.mtime":"2025-09-17T16:23:20.093843-04:00","crypto.key_algorithm":"RSA","crypto.key_size":2048,"crypto.signature_algorithm":"SHA256-RSA","crypto.fingerprint_sha1":"7afc9d01a62f03a2de9637936d4afe68090d2de18d03f29c88cfb0b1ba63587f","tls.certificate.subject":"CN=Developer ID Certification Authority,OU=Apple Certification Authority,O=Apple Inc.,C=US","tls.certificate.issuer":"CN=Apple Root CA,OU=Apple Certification Authority,O=Apple Inc.,C=US","tls.certificate.serial_number":"1763908746353189132","tls.certificate.not_before":"2012-02-01T22:12:15Z","tls.certificate.not_after":"2027-02-01T22:12:15Z","tls.certificate.version":3,"tls.certificate.alias":"Developer ID Certification Authority","tls.certificate.is_ca":true,"tls.certificate.is_self_signed":false,"tls.certificate.has_private_key":false,"keystore.type":"macOS-Keychain","keystore.accessible":true,"keystore.requires_auth":false,"keystore.cert_count":18,"vulnerability.is_vulnerable":false,"vulnerability.risk_level":"medium","vulnerability.risk_reason":"RSA key size below recommended 3072 bits for PQC","pqc.vulnerable":true,"pqc.reason":"RSA key size 2048 bits is below recommended 3072 bits for PQC","tychon.scan_mode":"local","tychon.asset_type":"keystore_certificate","tychon.keystore_type":"macOS-Keychain","tychon.certificate_usage":"stored"}

Keystore Summary Record NEW

{"@timestamp":"2025-09-17T20:35:45.123Z","event.action":"keystore_discovered","event.category":"security","event.type":"info","event.dataset":"tychon.keystore","id":"8a1b2c3d4e5f6789abcd","observer.hostname":"workstation-01","observer.name":"tychon-pqc-scanner","observer.type":"scanner","observer.version":"1.0.61","file.path":"macOS:System","file.name":"macOS:System","file.extension":"","file.mtime":"2025-09-17T16:23:20.093Z","keystore.type":"macOS-Keychain","keystore.accessible":true,"keystore.requires_auth":false,"keystore.cert_count":45,"keystore.vulnerable_certificates":8,"keystore.pqc_vulnerable_certificates":12,"keystore.expired_certificates":2,"keystore.expiring_soon_certificates":3,"keystore.certificate_types":"ca:15,end_entity:30","keystore.key_algorithms":"RSA:35,ECDSA:8,DSA:2","tychon.scan_mode":"local","tychon.asset_type":"keystore","tychon.keystore_type":"macOS-Keychain"}

Enhanced Intelligence Features

Post-Quantum Analysis

  • tychon.pqc_vulnerable: Quantum attack vulnerability
  • cipher.intel.pqc_ready: Post-quantum readiness
  • tychon.host.os.quantum_ready: OS PQC support
  • cipher.negotiated_group: Hybrid PQC groups detected

Asset Tracking

  • tychon.active: Current asset status
  • tychon.last_seen: Last detection timestamp
  • Historical tracking: Asset lifecycle management
  • Change detection: New and removed assets

Complete Schema Reference

Core Fields (All Events)

Field Type Description
@timestampStringISO 8601 timestamp for the event (formatted as "2006-01-02T15:04:05.000Z")
idStringA unique SHA-1 hash identifying the specific finding
tychon.typeStringEvent type: "cipher", "library", "filesystem", "java_crypto_library", "archivefile", or "connected"
tychon.scan_modeStringScan mode: "local", "remote", or "connected"
tychon.scan_timestampStringISO 8601 timestamp when the scan was performed
tychon.scanner_versionStringVersion of the certscanner tool that generated this event
tychon.activeBooleanTrue if the asset is currently active/seen (from DB tracking)
tychon.last_seenStringISO 8601 timestamp of when an inactive asset was last seen
tychon.pqc_vulnerableBooleanTrue if the asset is vulnerable to quantum computing attacks
tychon.host.machine_serial_numberStringHardware serial number of the scanning machine
tychon.host.bios_serial_numberStringBIOS serial number of the scanning machine
tychon.host.organizationStringOrganization name of the scanning system
tychon.host.domainStringDomain of the scanning system
tychon.host.os.quantum_readyBooleanWhether the host OS is considered Post-Quantum ready
tychon.host.os.quantum_ready_whenStringEstimate of when the host OS will no longer be secure (e.g., "now", "2030", "never")
certificate.is_fileString"true" if certificate found on filesystem, "false" if from network
tagsArrayUser-defined tags applied to the scan results

Network Service Fields (cipher/connected types)

Field Type Description
server.addressStringThe IP address or hostname of the scanned target
server.ipStringThe IP address of the target
server.portIntegerThe port number of the service
service.protocol.typeStringThe high-level protocol ("TLS", "SSH")
service.protocol.nameStringThe specific protocol version (e.g., "TLSV1.2")

Process & File Fields (library/filesystem types)

Field Type Description
process.pidIntegerProcess ID
process.nameStringProcess name
process.command_lineStringFull command line of the process
process.ownerStringUser that owns the process
process.executableStringPath to the process executable
file.pathStringPath to the file (executable or library)
file.nameStringName of the file
file.directoryStringDirectory of the file
file.extensionStringFile extension
file.sizeIntegerFile size in bytes
file.createdStringISO 8601 timestamp of file creation
file.accessedStringISO 8601 timestamp of last file access
file.mtimeStringISO 8601 timestamp of last file modification
file.hash.sha1StringSHA-1 hash of the file
file.hash.sha256StringSHA-256 hash of the file
pe.file_versionStringFile version from PE header
pe.product_versionStringProduct version from PE header
pe.descriptionStringFile description from PE header
pe.companyStringCompany name from PE header
pe.productStringProduct name from PE header

TLS & Cipher Fields (cipher type)

Field Type Description
tls.cipherStringIANA name of the cipher suite
tls.cipher_opensslStringOpenSSL name of the cipher suite
tls.curveStringThe key exchange group/curve used
tls.macStringThe MAC algorithm used in the cipher suite
tls.versionStringThe TLS version number (e.g., "1.2")
tls.version_protocolStringThe protocol name ("TLS")
tls.server.protocol.weightIntegerA risk score based on the protocol version
tls.server.cipher.weightIntegerA risk score based on the cipher suite strength
tls.server.signature_hash.weightIntegerA risk score based on the signature hash
tychon.cipher.is_preferredBooleanTrue if this is the server's preferred cipher
tychon.cipher.key_length_bitsIntegerThe bit length of the symmetric encryption key
tychon.cipher.ephemeral_key_length_bitsIntegerThe bit length of the ephemeral key
tychon.cipher.peer_signing_digestStringThe digest used for peer signing
tychon.cipher.alpn_protocolStringThe negotiated ALPN protocol
tychon.cipher.session_idStringThe session ID of the TLS session
tychon.cipher.session_ticket_lifetime_hint_secondsIntegerThe lifetime hint for the session ticket
tychon.cipher.extended_master_secret_supportedBooleanTrue if Extended Master Secret is supported
tychon.cipher.tls13_early_data_supportedBooleanTrue if TLS 1.3 early data is supported
tychon.cipher.renegotiation_forbiddenBooleanTrue if renegotiation is forbidden
tychon.cipher.compression_methodStringThe compression method used

X.509 Certificate Fields (cipher/filesystem types)

Field Type Description
x509.version_numberIntegerThe X.509 version
x509.serial_numberStringThe certificate's serial number
x509.signature_algorithmStringThe algorithm used to sign the certificate
x509.issuer.common_nameStringIssuer's Common Name
x509.issuer.countryStringIssuer's Country
x509.issuer.distinguished_nameStringIssuer's full Distinguished Name
x509.issuer.localityStringIssuer's Locality
x509.issuer.organizationStringIssuer's Organization
x509.issuer.organizational_unitStringIssuer's Organizational Unit
x509.issuer.state_or_provinceStringIssuer's State or Province
x509.subject.common_nameStringSubject's Common Name
x509.subject.countryStringSubject's Country
x509.subject.distinguished_nameStringSubject's full Distinguished Name
x509.subject.localityStringSubject's Locality
x509.subject.organizationStringSubject's Organization
x509.subject.organizational_unitStringSubject's Organizational Unit
x509.subject.state_or_provinceStringSubject's State or Province
x509.not_beforeStringISO 8601 timestamp for the start of validity
x509.not_afterStringISO 8601 timestamp for the end of validity
x509.is_validBooleanTrue if the certificate is currently valid
x509.public_key_algorithmStringThe public key algorithm
x509.public_key_sizeIntegerThe bit size of the public key
x509.public_key_curveStringThe curve name for EC keys
x509.key_usageStringComma-separated list of key usages
x509.enhanced_key_usageStringComma-separated list of extended key usages
x509.is_self_signedBooleanTrue if the certificate is self-signed
x509.hashStringThe SHA-256 fingerprint of the certificate
x509.subject_key_identifierStringThe subject key identifier

Library Fields (library/java_crypto_library types)

Field Type Description
library.nameStringThe name of the library
library.versionStringThe version of the library
library.pathStringThe path to the library file or JAR
library.typeStringThe type of library (e.g., "java_crypto")
library.crypto_featuresStringComma-separated list of crypto features
library.detection_timeStringISO 8601 timestamp of when the library was detected
java.vendorStringThe vendor of the Java runtime
java.versionStringThe version of the Java runtime
java.manifestObjectA map of key-value pairs from the JAR's MANIFEST.MF file

Archive Fields (archivefile type)

Field Type Description
archive.typeStringType of archive (e.g., "outlook_pst", "outlook_ost")
archive.encryption.enabledBooleanTrue if the archive is encrypted/password-protected
archive.encryption.typeStringType of encryption used for the archive
archive.encryption.strengthStringDescription of encryption strength
archive.format.versionStringVersion of the archive file format

VPN Client Fields (vpn_client type)

Field Type Description
vpn.client_nameStringName of the VPN client software
vpn.vendorStringVPN vendor/manufacturer
vpn.versionStringVPN client version
vpn.typeStringVPN type (SSL, IPSec, OpenVPN, etc.)
vpn.config_countIntegerNumber of configured VPN profiles
vpn.is_activeBooleanWhether VPN is currently active
vpn.install_pathStringInstallation path of VPN client
vpn.config_pathStringPath to VPN configuration files
vpn.service_nameStringName of the VPN service
vpn.service_statusStringStatus of VPN service (running, stopped)
vpn.last_connectionStringTimestamp of last VPN connection
vpn.protocols_supportedArrayList of supported VPN protocols
vpn.detection_methodStringHow the VPN was detected (registry, service, file)

IPSec Tunnel Fields (ipsec_tunnel type)

Field Type Description
ipsec.tunnel_nameStringName of the IPSec tunnel
ipsec.tunnel_typeStringType (site-to-site, client-to-site)
ipsec.local_endpointStringLocal endpoint IP address
ipsec.remote_endpointStringRemote endpoint IP address
ipsec.local_subnetStringLocal subnet CIDR
ipsec.remote_subnetStringRemote subnet CIDR
ipsec.authentication_methodStringAuthentication method (PSK, Certificate)
ipsec.encryption_algorithmStringEncryption algorithm used
ipsec.integrity_algorithmStringIntegrity/hash algorithm used
ipsec.dh_groupStringDiffie-Hellman group
ipsec.key_lifetimeIntegerKey lifetime in seconds
ipsec.pfs_enabledBooleanPerfect Forward Secrecy enabled
ipsec.statusStringTunnel status (connected, disconnected)
ipsec.bytes_inIntegerBytes received through tunnel
ipsec.bytes_outIntegerBytes sent through tunnel
ipsec.last_connectedStringLast connection timestamp
ipsec.pqc_vulnerableBooleanWhether tunnel is vulnerable to quantum attacks

Cipher Intelligence Fields

Field Type Description
tychon.cipher.detail.nist_security_categoryStringNIST security classification (e.g., "Recommended", "Legacy-Use")
tychon.cipher.detail.is_quantum_readyBooleanWhether the cipher is resistant to quantum attacks
tychon.cipher.detail.friendly_nameStringHuman-readable name for the cipher algorithm
tychon.cipher.detail.algo.authStringAuthentication algorithm (e.g., "RSA", "ECDSA")
tychon.cipher.detail.algo.hashStringHash/MAC algorithm (e.g., "SHA256", "AEAD")
tychon.cipher.detail.algo.vulnerabilitiesStringComma-separated list of known vulnerabilities
tychon.cipher.detail.securityStringNIST security category (e.g., "Recommended", "Legacy-Use")
tychon.cipher.detail.overall_riskStringOverall risk assessment (e.g., "Low", "Medium", "High")
tychon.cipher.detail.recommendationsStringSecurity recommendations for the cipher
tychon.cipher.detail.bit_operatorStringHexadecimal cipher suite identifier (e.g., "0xC0,0x30")
tychon.cipher.detail.openssl_nameStringOpenSSL name for the cipher suite

Keystore Fields NEW

Fields present in keystore and keystore_certificate events (local mode only). Note: All tychon format fields use flat JSON with dot notation - no nested objects.

Field Type Description
keystore.typeStringType of keystore (Windows-CAPI, macOS-Keychain, PKCS12, JKS, etc.)
keystore.accessibleBooleanWhether the keystore is accessible/readable
keystore.requires_authBooleanWhether keystore requires authentication
keystore.cert_countIntegerTotal number of certificates in keystore
keystore.ownerStringOwner of the keystore file/object
keystore.permissionsStringFile system permissions
keystore.error_messageStringError message if keystore access failed
crypto.key_algorithmStringPublic key algorithm (RSA, ECDSA, etc.)
crypto.key_sizeIntegerKey size in bits
crypto.signature_algorithmStringSignature algorithm used
crypto.fingerprint_sha1StringSHA-1 fingerprint of certificate
tls.certificate.subjectStringCertificate subject DN
tls.certificate.issuerStringCertificate issuer DN
tls.certificate.serial_numberStringCertificate serial number
tls.certificate.not_beforeStringCertificate valid from timestamp
tls.certificate.not_afterStringCertificate valid until timestamp
tls.certificate.aliasStringCertificate alias/friendly name in keystore
tls.certificate.is_caBooleanWhether certificate is a Certificate Authority
tls.certificate.is_self_signedBooleanWhether certificate is self-signed
tls.certificate.has_private_keyBooleanWhether private key is present in keystore
vulnerability.is_vulnerableBooleanWhether certificate has known vulnerabilities
vulnerability.risk_levelStringRisk level (low, medium, high, critical)
vulnerability.risk_reasonStringReason for vulnerability assessment
pqc.vulnerableBooleanWhether certificate is vulnerable to quantum attacks
pqc.reasonStringReason for post-quantum vulnerability
observer.hostnameStringHostname of scanning system
observer.nameStringName of scanning tool
observer.typeStringType of observer (scanner)
observer.versionStringVersion of scanning tool
observer.fips_mode_enabledBooleanFIPS 140-2 mode status
observer.bigfix_client_installedBooleanIndicates if BigFix client is installed
observer.bigfix_client_idStringBigFix client ID for asset correlation

Quantum Readiness Assessment Fields NEW

Fields present in quantum_readiness events (local mode only)

Field Type Description
quantum.assessment_idStringUnique identifier for the quantum readiness assessment
quantum.fips_mode_enabledBooleanFIPS 140-2 mode status at assessment time
quantum.system_typeStringClassification of system type (workstation, server)
quantum.criticality_levelStringSystem criticality (critical, important, standard)
quantum.overall_scoreIntegerTotal quantum readiness score (0-100)
quantum.hardware_scoreIntegerHardware assessment score (0-40)
quantum.hardware_max_scoreIntegerMaximum possible hardware score
quantum.os_scoreIntegerOperating system score (0-30)
quantum.os_max_scoreIntegerMaximum possible OS score
quantum.crypto_scoreIntegerCrypto library score (0-25)
quantum.crypto_max_scoreIntegerMaximum possible crypto score
quantum.network_scoreIntegerNetwork readiness score (0-5)
quantum.network_max_scoreIntegerMaximum possible network score
quantum.readiness_statusStringReadiness status (Ready, Partially Ready, Update Required, Not Ready)
quantum.status_colorStringStatus visualization color (green, yellow, orange, red)
quantum.ready_timelineStringEstimated timeline to quantum readiness
quantum.recommendationsStringComma-separated actionable recommendations

SIEM Integration

Elasticsearch Integration

# Direct streaming to Elasticsearch
.\certscanner-windows-amd64.exe -host production-hosts.txt -cipherscan `
  -outputformat tychon `
  -posttoelastic -elasticnode "https://siem.company.com:9200" `
  -elasticapikey "$env:ELASTIC_API_KEY" `
  -elasticindex "crypto-intelligence"

# Continuous monitoring with asset tracking
.\certscanner-windows-amd64.exe -mode local -scanfilesystem -scanmemory `
  -outputformat tychon -tags "continuous-monitoring" `
  -posttoelastic -elasticnode "$env:ELASTIC_URL"

Query Examples

# Find PQC-vulnerable assets
GET crypto-intelligence/_search
{
  "query": {
    "term": { "tychon.pqc_vulnerable": true }
  }
}

# Find inactive crypto libraries
GET crypto-intelligence/_search
{
  "query": {
    "bool": {
      "must": [
        { "term": { "tychon.type": "library" }},
        { "term": { "tychon.active": false }}
      ]
    }
  }
}

# Find expiring certificates
GET crypto-intelligence/_search
{
  "query": {
    "range": {
      "certificate.not_after": {
        "lte": "now+30d"
      }
    }
  }
}