Cryptographic Data Fields Reference
This reference describes the AgileSec Analytics cryptographic asset data model to represent cryptographic findings collected across an infrastructure. It covers document structure and every field and sub-field, including variable types, where the value comes from, and whether it is required. This reference also lists all enumerations.
1 Document Structure
Every AgileSec document represents a single cryptographic finding. The document structure is:
{
"@timestamp" — populated at pre-insert processing
"first_found" — populated at post-insert processing
"version" — populated by sensor
"object" — populated at pre-insert processing
"observation" — required; populated by sensor
├── "sensor" — required
├── "source" — required
└── "file" — optional
"crypto" — required; populated by sensor
├── algorithm
├── db
├── key
├── keystore
├── library
├── protocol
├── token
└── x509
"analysis" — populated at post-insert processing
"labels" — optional; populated by sensor
"custom" — optional
"_unmapped" — optional; populated by migration tool
}
Document-level required fields: version, observation, crypto
2 Top-Level Fields
Field | Type | Required | Populated By | Description |
|---|---|---|---|---|
| date-time | No | Pre-insert-processing | The last time this document was inserted into OpenSearch. Provided by indexing service. |
| date-time | No | Post-insert processing | The first time this document was inserted into OpenSearch. |
| string | Yes | Sensor | Schema version in |
| object | No* | Pre-insert-processing | High-level summary of the finding derived from |
| object | Yes | Sensor / Unified Sensor | All non-cryptographic context about the finding. |
| object | Yes | Sensor / Unified Sensor | Cryptographic details of the finding. Exactly one subtype must be present. |
| object | No* | Pre-insert / Postprocessing | Policy, priority, and cryptographic analysis results. *Planned to be required in future version |
| array | No | Sensor | Scan-level custom key-value metadata. Not mapped in OpenSearch. |
| object | No | Custom Sensors | Custom sensor-specific fields. Mapped in OpenSearch; can be used for visualization. |
| object | No | Data Conversion Tool | Fields that could not be migrated to the new schema. Not mapped in OpenSearch. |
3 object
High-level summary of the finding, computed and populated by pre-insert-processing.
Field | Type | Required | Description |
|---|---|---|---|
| string | Yes | Human-readable summary of the finding. Pattern: |
| string | Yes | SHA256 hash of the cryptographic object itself, independent of location. The same certificate found in two different places will have the same fingerprint but different UIDs. Lowercase hex, 64 chars. |
| string | Yes | Type of the cryptographic object. See |
| string | No | Subtype of the cryptographic object. See |
| string | Yes | Unique ID for this specific finding in OpenSearch. Calculated as |
| object | No | Resolution status of this finding. |
| boolean | Yes (if present) |
|
| date-time | No | Date when the object was removed from the infrastructure. |
| string | No | Reason for resolution. |
3.1 object.summary Format
The summary follows the pattern "<ObjectType>: <friendly_name>-<parameters>".
Object Type | Format | Example |
|---|---|---|
Algorithm |
|
|
X.509 Certificate |
|
|
Cryptographic Key |
|
|
Keystore |
|
|
Cryptographic Token |
|
|
Cryptographic Library |
|
|
Cryptographic Protocol | (object block not present for protocol documents) | — |
DB | (object block not present for db documents) | — |
4 observation
All non-cryptographic context about the finding. sensor and source are required.
4.1 observation.sensor
Information about the sensor that produced the finding.
Field | Type | Required | Description |
|---|---|---|---|
| string | Yes | Sensor type, e.g. |
| string | Yes | Sensor display name. Typically mirrors |
| string | Yes | Sensor ID. Default |
| string | Yes | Execution ID for this sensor run. Default |
| integer | No | Message sequence number within this execution. |
| string | No | How the sensor was executed. Enum: |
4.2 observation.source
Describes the source system where the cryptographic asset was found.
Required: type + at least one of name or ip.
Field | Type | Required | Description |
|---|---|---|---|
| string | Yes | Type of source system. See |
| string | Conditional | Unique name of the source (hostname, repo URL, filename). Required when |
| string (IP) | Conditional | Source IP address. Required when |
| string | No | Full unique location of the asset within the infrastructure. Format depends on source type — see Location Format table below. |
| string | No | Display-friendly short version of the location. |
| string | No | Repository branch where the asset was found. GIT sources only. |
| string | No | Unique ID assigned to this object by the source system. |
| integer | No | Port number. Network and protocol sources only. |
| string | No | Operating system of the machine where the asset was found. Host-based sensors only. |
| string (IP) | No | Client IP. Used for network sniffing where the sensor is not the client. |
| array[IP] | No | Network interface IPs of the source machine. |
| string | No | Whether the interface IPs are |
| string | No | Process name where the asset was found. Network sources only. |
| string | No | Application name. SSH protocol sources only, e.g., |
| string | No | Hostname. Network sources only. |
| string | No | SHA256 hash of the source file. File Upload sources only. |
| object | No | Start position in source code: |
| object | No | End position in source code: |
| string | No | Code snippet where the asset appears. Source Code Repository only. |
4.2.1 Location Format by Source Type
Source Type |
|
|
|---|---|---|
Host |
|
|
Source Code Repository |
|
|
Network |
|
|
File Upload | Full storage URL (e.g. S3 URL) | Filename only |
4.3 observation.file
Describes the file in which the cryptographic asset was found. Optional.
Required fields (if present): path, name, directory, extension, size
Field | Type | Required | Description |
|---|---|---|---|
| string | Yes | Absolute file path. No |
| string | Yes | Filename including extension. e.g. |
| string | Yes | Directory path of the file. No |
| string | Yes | File extension without dot, e.g., |
| integer | Yes | File size in bytes. Must be ≥ 0. |
| boolean | No | Whether this file is inside an archive. Default |
| integer | No | Byte offset within the file where the asset starts. |
| string | No | File type enriched by the backend, e.g., |
| string | No | File owner username. |
| string | No | Semantic path type, e.g., |
| string | No | SHA256 hash of the file contents. Lowercase hex, 64 chars. |
| date-time | No | File creation time. Use |
| date-time | No | Last modification time. |
| date-time | No | Last access time. |
| object | No | POSIX permissions. Contains |
| object | No | Access Control List entries keyed by entity type. Each entry is an array of |
| object | No | Additional file metadata. Not mapped in OpenSearch. |
| object | No | When the file is inside an archive: |
5 crypto
Contains the cryptographic details of the finding. Exactly one of the following subtypes must be present per document.
5.1 crypto.algorithm
Describes an algorithm-type cryptographic asset.
Required fields: name, fingerprint_sha256, function, type
Field | Type | Required | Description |
|---|---|---|---|
| string | Yes | Algorithm name. Lowercase with |
| string | Yes | Primary cryptographic function of the algorithm. See |
| string | Yes | Cryptosystem classification. See |
| string | No | Whether this is a |
| string | Yes | SHA256 fingerprint of the algorithm object. Lowercase hex, 64 chars. |
| string | No | OID of the algorithm. |
| string | No | Operational context where this algorithm is used. See |
| object | No | Algorithm parameters. May contain: |
| string | No | Name of the library implementing this algorithm. |
| string | No | Programming language of the implementing library. |
5.2 crypto.x509
Describes an X.509 certificate-type cryptographic asset.
Required fields: fingerprint_sha256, fingerprint_sha1, issuer, self_signed, serial_number, signature_algorithm, subject, public_key, exp
Field | Type | Required | Description |
|---|---|---|---|
| string | Yes | SHA256 fingerprint of the certificate. Lowercase hex, 64 chars. |
| string | Yes | SHA1 fingerprint of the certificate. Lowercase hex, 40 chars. |
| boolean | Yes |
|
| string | Yes | Certificate serial number. Uppercase hex, no separators, e.g., |
| string | Yes | Signature algorithm in normalized uppercase form, e.g., |
| string | No | Raw signature bytes. Uppercase hex. |
| object | Yes | Certificate subject. See Subject / Issuer fields. |
| object | Yes | Certificate issuer. See Subject / Issuer fields. |
| key object | Yes | The subject public key. Has the same structure as |
| date-time | Yes | Certificate expiry ( |
| date-time | No | Certificate valid-from ( |
| integer | No | X.509 version. Typically |
| string | No | Calculated certificate usage. Enum: |
| array[string] | No | Detailed usage. Values: |
| object | No | Parsed certificate extensions. See Extensions. |
5.2.1 X.509 Subject / Issuer Fields
Both subject and issuer share the same structure. All values are arrays of strings. Omit null fields.
Field | DN Attribute | Description |
|---|---|---|
| CN | Common name |
| O | Organization name |
| OU | Organizational unit |
| L | Locality or city |
| S | State or province |
| C | Two-letter country code |
5.2.2 X.509 Extensions
Extension | OID | Required sub-fields | Optional sub-fields |
|---|---|---|---|
|
|
|
|
|
|
| — |
|
|
| — |
|
|
| — |
|
|
| — |
|
|
|
|
|
|
| — |
| any | — | Array of |
5.3 crypto.key
Describes a cryptographic key asset. This structure is also used inline as crypto.x509.public_key and crypto.db.x509.public_key.
Required fields: algorithm, classification, size, format, fingerprint_sha256, is_encrypted, type
Field | Type | Required | Description |
|---|---|---|---|
| string | Yes | Key algorithm. Uppercase, e.g., |
| string | Yes | Key type. Enum: |
| string | Yes | Cryptographic classification. Enum: |
| integer | Yes | Key size in bits, e.g., |
| string | Yes | Key encoding format, e.g., |
| string | Yes | SHA256 fingerprint of the key. Lowercase hex, 64 chars. |
| boolean | Yes | Whether the key is encrypted at rest. |
| object | No | ECC-specific parameters. Fields: |
| object | No | RSA-specific parameters. Fields: |
| object | No | DSA-specific parameters. Fields: |
| object | No | Extra metadata from third-party vaults or HSMs. See Key Meta fields below. |
5.3.1 Key Meta Fields
Field | Type | Description |
|---|---|---|
| string | Key lifecycle state. Enum: |
| array[string] | Permitted operations. Values: |
| array[string] | Additional attributes applied to the key. |
| date-time | Key creation time. |
| date-time | Last update time. |
| date-time | Key expiry time. |
| date-time | Key valid-from time. |
| object | Free-form tags. Not mapped in OpenSearch. |
5.4 crypto.keystore
Describes a keystore-type cryptographic asset.
Required fields: type
Field | Type | Required | Description |
|---|---|---|---|
| string | Yes | Keystore type, in |
5.5 crypto.token
Describes a JWT or JWE token-type cryptographic asset.
Required fields: fingerprint_sha256, algorithm, header, payload, subtype, type
Field | Type | Required | Description |
|---|---|---|---|
| string | Yes | Signing or encryption algorithm, e.g., |
| string | Yes | Token type. Enum: |
| string | Yes | Token subtype. Enum: |
| string | Yes | SHA256 fingerprint of the token. Lowercase hex, 64 chars. |
| string | No | SHA1 fingerprint of the token. Lowercase hex, 40 chars. |
| object | Yes | Token header. Must contain either ( |
| string | Yes | Signing algorithm declared in the header. |
| string | Conditional | Token type ( |
| string | Conditional | Encryption algorithm (JWE). Required if |
| object | Yes | Token payload. |
| string | No | Issuer (RFC 7519). |
| string | No | Subject (RFC 7519). |
| string | No | Audience (RFC 7519). |
| date-time | No | Expiration time (RFC 7519). |
| date-time | No | Not before (RFC 7519). |
| date-time | No | Issued at (RFC 7519). |
| string | No | JWT ID (RFC 7519). |
| object | No | All non-RFC 7519 payload fields. e.g. |
⚠️ Any payload field that is not one of
iss, sub, aud, exp, nbf, iat, jtimust be placed insidepayload.other.
5.6 crypto.library
Describes a cryptographic library-type asset.
Required fields: name, version
Field | Type | Required | Description |
|---|---|---|---|
| string | Yes | Library name. Lowercase, e.g., |
| string | Yes | Library version. Underscore-separated, e.g., |
| string | No | Semantic version extracted from |
| string | No | Programming language of the library. |
| string | No | Operating system or platform. |
5.7 crypto.protocol
Describes a network protocol-type cryptographic asset.
Note: Protocol documents do not include an
objectblock or@timestamp.
Required fields: name, ciphers
Field | Type | Required | Description |
|---|---|---|---|
| string | Yes | Protocol name, e.g., |
| array[string] | Yes | List of cipher suites supported. |
| array[string] | No | Protocol version(s), e.g., |
| array[string] | No | MAC algorithms. SSH only. |
| array[string] | No | Key exchange algorithms. |
| array[string] | No | Host key algorithms. SSH only. |
| string | No | The actually negotiated protocol version. Default |
5.8 crypto.db
Describes an encrypted database-type cryptographic asset.
Field | Type | Required | Description |
|---|---|---|---|
| object | No | Details of the database encryption. See Encryption fields below. |
| x509 object | No | Certificate used to protect the database encryption key. Has the same structure as |
5.8.1 crypto.db.encryption Fields
Required fields: algorithm, db_name
Field | Type | Required | Description |
|---|---|---|---|
| string | Yes | Encryption algorithm, e.g., |
| string | Yes | Name of the encrypted database. |
| string | No | Encryption method, e.g., |
| date-time | No | When the Data Encryption Key was created. |
| string | No | Type of key protector, e.g., |
| string | No | Fingerprint of the key protector. Lowercase hex. |
| string | No | Encryption status, e.g., |
Note: Database-specific metadata (compatibility level, host, edition, port, recovery model, version, user) not mapped to the schema is stored in
_unmapped.database.
6 analysis
Policy, priority, and cryptographic analysis results. Populated by pre-insert-processing and postprocessing.
6.1 analysis.policy
Required fields: cve, flag, init, init_version, score_value, priority_score, severity_score, severity
Field | Type | Required | Description |
|---|---|---|---|
| boolean | Yes | Whether the policy has been initialized for this object. |
| integer | Yes | Policy initialization version. e.g. |
| array[string] | Yes | Policy flags triggered for this finding. See |
| array[string] | Yes | CVE IDs related to this finding. Empty array if none. |
| number | Yes | Combined cryptographic score (0–10). |
| number | Yes | Relevancy / priority of the finding (0–3). |
| number | Yes | Technical severity (0–3). |
| object | Yes | Map of |
| string | No | Human-readable remediation guidance. |
6.2 analysis.policy_pqc
Post-quantum cryptography policy assessment.
Required fields: priority_score, severity_score
Field | Type | Required | Description |
|---|---|---|---|
| number | Yes | PQC relevancy score (0–3). Same scale as |
| number | Yes | PQC technical severity. |
| string | No | The algorithm being assessed, e.g., |
| string | No | Human-readable PQC assessment description. |
| array[string] | No | PQC vulnerability flags. See |
| boolean | No | Whether the algorithm is post-quantum safe. |
| integer | No | Key size in bits used for quantum vulnerability assessment. |
| integer | No | Estimated number of logical qubits a quantum computer would need to break this object. |
6.3 analysis.cryptography
Required fields: type, algorithms, pq_types
Field | Type | Required | Description |
|---|---|---|---|
| string | Yes | Underlying crypto system type: |
| array[string] | Yes | Names of the algorithms in use. |
| string | Yes | Post-quantum type of the weakest underlying algorithm. See |
| string | No | Mathematical foundation. See |
| integer | No | Classical security strength in bits, e.g., |
| integer | No | Quantum security strength in bits. |
| integer | No | NIST security level (1–5). |
6.4 analysis.proirity
Field | Type | Description |
|---|---|---|
| boolean | True = This finding is at a high-priority location. |
| boolean | True = This finding is a high-priority object type. |
| boolean | True = This finding is at a low-priority location. |
| boolean | True = This finding is a low-priority object type. |
| object | Priority details object. |
6.5 Other analysis Fields
Field | Type | Description |
|---|---|---|
| string | SHA256 fingerprint of the correlated public key (used to link private keys to their certificates). |
| boolean | Whether the certificate issuer is a known/trusted CA. |
| boolean | Whether the certificate issuer is a corporate CA. |
| boolean | Whether the certificate subject is a known entity. |
| boolean | Whether the certificate subject is a corporate entity. |
| boolean | Whether the vendor is known. |
| boolean | Whether the vendor is a corporate entity. |
| boolean | Whether another finding exists with the same file hash or location. |
| boolean | Whether the certificate validity period is under 90 days ( |
6.6 labels, custom, _unmapped, transport
Field | Type | Mapped | Description |
|---|---|---|---|
| array | No | Scan-level custom metadata. Array of |
| object | Yes | Custom sensor-specific fields. Free-form. Can be used for OpenSearch visualization. |
| object | No | Catch-all for fields with no mapping in the schema (e.g., database metadata in DB documents). |
| array | No | Raw payload used for sensor-to-Unified-Sensor transport. Each item has the format: |
7 Common Types
Type Name | Format | Pattern / Constraint | Example |
|---|---|---|---|
| ISO 8601 UTC | Ends with |
|
| Lowercase hex |
|
|
| Lowercase hex |
|
|
| Uppercase hex |
|
|
| String |
|
|
| Standard base64 |
| — |
7.1 Datetime Normalization Rules
All datetime values must follow UTC Z format with no milliseconds:
Input | Normalized |
|---|---|
|
|
|
|
|
|
7.2 Hex Case Rules
Context | Case |
|---|---|
| Lowercase |
| Lowercase |
| Lowercase |
| Lowercase |
| Lowercase |
| Uppercase |
| Uppercase |
RSA | Uppercase |
ECC | Uppercase |
8 Enumerations
8.1 algorithm.application_context
storage_encryptiontransport_encryptiondigital_signatureauthenticationsecure_bootpassword_hashingkey_wrappingsecure_channel
8.2 algorithm.function
encryptiondecryptionhashingsigningverificationkey_encapsulationkey_agreementkey_derivationrandom_number_generationmessage_authentication""
8.3 algorithm.mathematical_basis
integer_factorization_problemdiscrete_logarithm_problemelliptic_curve_discrete_logarithm_problemisogeny_basedcode_basedlattice_basedmultivariate_polynomial_basedhash_basedhybrid
8.4 analysis.policy.flag
algorithm_insecurealgorithm_pqcalgorithm_weakalgorithm_weak_cipheralgorithm_weak_digestalgorithm_weak_modecertificate_blocklistcertificate_ca_long_lifecertificate_endentity_long_lifecertificate_expiredcertificate_expiring_30dayscertificate_intermediate_ca_long_lifecertificate_self_signed_end_entitycertificate_weak_public_keycertificate_weak_signature_algorithmhsm_extractable_keyhsm_multipurpose_keykey_hardcodedkey_private_clear_textkey_private_unprotectedkey_private_unprotected_allusers_aclkey_private_unprotected_no_aclkey_weak_sizekeystore_in_source_codelibrary_heartbleedlibrary_old_versionlibrary_openssl3_vulnerableprivate_key_in_source_codeprotocol_insecure_cipherprotocol_insecure_kexprotocol_insecure_macprotocol_insecure_versionprotocol_weak_ciphertoken_expiredtoken_insecure_algorithmtoken_long_lifetoken_no_expiration
8.5analysis.policy_pqc.flag
dlp_shor_attackecdlp_shor_attackifp_shor_attack
8.6 common.cryptosystem_type
classicalpostquantumhybrid""
8.7 key.classification
asymmetricsymmetricunknown""
8.8 key.meta.operations
signverifyencryptdecryptwrapunwrapagreementderiveencapsulatedecapsulate
8.9 key.meta.state
pre-activationactivesuspendeddeactivatedcompromiseddestroyed
8.10 key.type
publicprivatesecretunknown""
8.11 object.subtype
Private KeyPublic Key"SSH Private KeySSH Public KeyRoot CAIntermediate CAEnd-EntityNetwork ConnectionNetwork EndpointData-at-Rest Encryption
8.12 object.type
Cryptographic KeyKeystoreX.509 CertificateAlgorithmCryptographic LibraryCryptographic TokenEncryptionCryptographic Protocol
8.13 observation.sensor.exec_type
PlatformAPIRemote
8.14 observation.sensor.type
AWS KMSAzure Key VaultBitbucketCipherInsightsContainerGitHubGitLabGIT Repository/GIT SensorHost CertstoreHost FilesystemHost Network ProcessJROG Artifactory/Artifactory SensorKeyfactor CommandMSSQL DatabaseNetwork SensorPKCS#11Qualys NetworkTenable NetworkThales CTMThales Luna HSMVenafi TLS Protect
8.15 observation.source.type
Artifact RepositoryCertificate ManagementCI/CDContainer RepositoryDatabaseFile UploadHardware Security ModuleHostKey Management ServiceNetworkSource Code RepositoryOther
8.16 token.subtype
Static TokenAutomated App Token
8.17 token.type
JWTJWE""
8.18 x509.usage
CAIntermediate CAEnd-Entity
8.19 x509.usage_details
URLTimestampOCSPCode Signing