Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
LABS
Guides

How to Conduct a Cryptographic Inventory and Risk Assessment

A systematic guide for developers to identify, catalog, and assess the quantum vulnerability of all cryptographic components in a blockchain system to prioritize PQC migration.
Chainscore © 2026
introduction
SECURITY FUNDAMENTALS

How to Conduct a Cryptographic Inventory and Risk Assessment

A systematic guide to identifying and evaluating cryptographic assets and their associated risks within a Web3 project.

A cryptographic inventory and risk assessment is the foundational security practice for any Web3 project. It involves creating a comprehensive catalog of all cryptographic assets—such as private keys, smart contract addresses, and signing authorities—and then analyzing the risks associated with their storage, access, and usage. This process is not a one-time audit but an ongoing discipline, crucial for preventing catastrophic losses from key mismanagement, access control failures, or protocol upgrades. For developers and security teams, it transforms security from an abstract concern into a manageable, actionable framework.

The first step is to build the inventory. This is a living document that should detail every cryptographic component. Key items to catalog include: - Private Keys & Mnemonics: For EOAs (Externally Owned Accounts), validator nodes, and admin wallets. - Smart Contract Addresses: For all deployed contracts, including proxies, implementations, and associated multi-sig wallets. - Access Control Lists: Mapping of which keys or addresses hold specific permissions (e.g., OWNER_ROLE, UPGRADER_ROLE). - External Dependencies: Oracles, cross-chain bridges, and other third-party protocols that hold or can move funds. Tools like cast from Foundry (cast wallet address) or the ethers library in a script can help programmatically generate parts of this list.

Once the inventory is established, the risk assessment phase begins. This evaluates each asset against threats like theft, loss, and unauthorized use. For each private key, assess: - Storage Security: Is it in a hardware wallet, an encrypted cold storage solution, or a vulnerable hot wallet? - Access Complexity: How many signatures are required (e.g., 2-of-3 multi-sig)? Who are the signers? - Recovery Procedures: What is the process if a key is lost or compromised? For smart contracts, analyze risks related to upgradeability, admin key rotation, and the time-lock duration for privileged operations. A common finding is an OWNER key with unilateral upgrade power stored in a single MetaMask wallet, representing a critical single point of failure.

The final, critical step is implementing mitigations and monitoring based on the assessment. High-risk findings demand immediate action. This may involve: - Migrating assets to a more secure vault or a multi-signature wallet like Safe{Wallet}. - Using smart account abstractions (ERC-4337) for programmable security policies and social recovery. - Setting up continuous monitoring with services like OpenZeppelin Defender or Chainscore to alert on anomalous transactions, ownership changes, or deviations from known behavior patterns. The goal is to reduce the attack surface and ensure that the security posture evolves alongside the project.

prerequisites
PREREQUISITES AND SCOPE DEFINITION

How to Conduct a Cryptographic Inventory and Risk Assessment

A systematic approach to identifying and evaluating cryptographic assets and their associated vulnerabilities within a Web3 protocol or application.

A cryptographic inventory is a foundational security practice that involves cataloging all cryptographic components within a system. This includes key material (e.g., private keys, seed phrases, API keys), signature schemes (e.g., ECDSA secp256k1, Ed25519), hash functions (e.g., Keccak-256, SHA-256), and encryption algorithms (e.g., AES-GCM). The goal is to create a comprehensive map of where cryptography is used, from smart contract function modifiers and multi-signature wallets to off-chain backend services and client-side libraries. Without this inventory, security reviews are inherently incomplete, as unknown assets cannot be protected or assessed.

Defining the scope is critical before beginning the inventory. For a decentralized application (dApp), this typically includes the smart contracts on-chain, any off-chain indexers or oracles, the frontend application code, and backend services handling sensitive data. You must also consider the development and deployment infrastructure, such as CI/CD pipelines and secret management systems like HashiCorp Vault or AWS Secrets Manager. A clearly bounded scope prevents the assessment from becoming unmanageable and ensures all relevant attack surfaces, including indirect dependencies like imported libraries using cryptography, are considered.

The inventory process itself is methodical. Start by auditing the codebase: use static analysis tools like Slither or manual code review to flag calls to cryptographic functions (e.g., ecrecover, keccak256 in Solidity). For off-chain components, examine configuration files, environment variables, and infrastructure-as-code templates. Each discovered item should be logged in a structured format, noting its location, purpose, key strength/algorithm, ownership, and rotation policy. For example: Asset: Treasury Multisig Private Key Shard | Location: Hardware Security Module (HSM) A | Algorithm: secp256k1 | Rotation: Quarterly.

Following the inventory, the risk assessment evaluates each item against potential threats. Use a framework like STRIDE (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege) to model attacks. For each cryptographic asset, ask: Is the private key stored in an environment variable (risk of Information Disclosure)? Is a weak random number generator used for nonce generation (risk of Spoofing)? Are signature verification checks missing in a smart contract (risk of Tampering)? Assign a risk rating (e.g., Critical, High, Medium, Low) based on the likelihood of exploitation and the potential impact on funds or system integrity.

The final output is a risk register and an action plan. The register should detail each vulnerability, its root cause, and the recommended mitigation. For a critical finding like "Admin private key stored in a plaintext file," the mitigation is immediate key rotation and migration to a secure, access-controlled secret manager. Medium-risk findings, such as using a deprecated hashing algorithm, should be scheduled for updates in the next development cycle. This assessment is not a one-time event; it establishes a baseline for continuous monitoring and should be integrated into the software development lifecycle, especially before major upgrades or deployments.

inventory-tools
CRYPTOGRAPHIC INVENTORY

Tools for Cryptographic Discovery

A systematic cryptographic inventory is the foundation of any security audit. These tools help developers discover, categorize, and assess the cryptographic primitives and dependencies in their Web3 projects.

05

Manual Code Review Checklist

Automated tools miss context. A structured manual review is mandatory for a complete inventory.

Key Areas to Audit:

  • Hashing: Usage of keccak256 for commitments, Merkle proofs, and storage keys. Check for length extension vulnerabilities.
  • Signatures: Verification of ecrecover return values (address(0) check), use of nonces to prevent replay attacks, and implementation of EIP-712.
  • Randomness: Sources of on-chain entropy. Flag any use of blockhash, block.timestamp, or block.difficulty for critical randomness.
  • Key Management: How private keys, mnemonics, or API secrets are handled off-chain in bots or backend services.
step1-inventory-protocol
SECURITY AUDIT PRIMER

Step 1: Inventory Core Protocol Cryptography

A systematic approach to cataloging and evaluating the cryptographic primitives, dependencies, and implementation details that form the security foundation of any blockchain protocol.

The first step in any security assessment is creating a comprehensive cryptographic inventory. This is not a cursory checklist but a deep technical audit of every cryptographic component. You must document the specific algorithms (e.g., secp256k1 for ECDSA, BLS12-381 for pairing-based cryptography), their implementations (e.g., library, version, language), and their precise role within the protocol's state machine. For example, note whether a signature scheme is used for transaction validation, validator attestations, or cross-chain message verification. This inventory becomes the single source of truth for all subsequent analysis.

Beyond listing algorithms, you must assess their integration and dependencies. Identify where cryptographic operations are performed: in smart contracts (e.g., using ecrecover), within a node's consensus client, or in off-chain provers. Scrutinize the libraries in use—are they audited, well-maintained projects like OpenZeppelin or libsecp256k1, or custom, unaudited code? A critical risk vector is the reliance on precompiled contracts or host functions in environments like the Ethereum Virtual Machine (EVM), which abstract away implementation details but introduce trust assumptions about the underlying execution environment.

Your inventory must also capture the cryptographic parameters and configurations. This includes curve parameters, hash function output lengths (e.g., Keccak-256 vs. SHA-256), key derivation paths, and randomness sources. For consensus mechanisms like Proof-of-Stake, document the exact slashing conditions and how signatures are aggregated. A common pitfall is inconsistent parameter usage across different client implementations, which can lead to network forks. Use tools like static analyzers and dependency graphs (e.g., slither, cargo-audit for Rust) to automate parts of this discovery process.

Finally, translate the inventory into a risk matrix. Categorize each component by its criticality (e.g., compromise leads to fund loss vs. denial of service) and attack surface (e.g., novel cryptographic assumption vs. battle-tested standard). Prioritize components that use novel or complex cryptography, such as zero-knowledge proof systems (ZKPs) or threshold signatures, for deeper review. This structured output from Step 1 directly informs the threat modeling and code review phases, ensuring no cryptographic assumption is overlooked in the security assessment.

step2-inventory-smart-contracts
SECURITY AUDIT

Step 2: Inventory Smart Contract Cryptography

Systematically catalog and evaluate every cryptographic primitive used in your smart contracts to identify vulnerabilities and ensure implementation correctness.

A cryptographic inventory is a structured audit of all cryptographic operations within your smart contract system. This process involves creating a comprehensive list of every function, library, and dependency that performs cryptographic tasks. Key items to catalog include signature verification (ECDSA, EdDSA), hash functions (Keccak256, SHA256), random number generation, key derivation, and any custom cryptographic logic. For each item, document its purpose, location in the codebase, the specific library or implementation used (e.g., OpenZeppelin's ECDSA.sol, Solidity's keccak256), and any relevant parameters or configurations. This creates a map of your system's cryptographic attack surface.

Once inventoried, each component must undergo a risk assessment. This evaluation focuses on common failure modes. For signature schemes, verify the use of ecrecover with proper address recovery and check for missing signature malleability guards or nonce reuse. Assess hash functions for susceptibility to length-extension attacks or incorrect usage in commitment schemes. The most critical risk area is pseudo-random number generation (PRNG). On-chain entropy is notoriously difficult to secure. Evaluate any source of randomness—such as blockhash, block.timestamp, or block.difficulty—for predictability by miners or validators. Contracts relying on these for critical outcomes (e.g., selecting a winner in a lottery) are high-risk.

The assessment must also cover integration risks and dependency hygiene. Examine how cryptographic primitives interact with other contract logic. A common flaw is signing data where the same signature could be replayed in a different context (a different contract or chain). Verify that signed messages include a domain separator (EIP-712), a nonce, and a specific contract address. For dependencies, audit the exact version of any imported cryptographic libraries. Using an outdated version of OpenZeppelin's ECDSA library, for instance, could mean missing critical security patches. Pin library versions and verify their integrity.

Document your findings in a risk matrix. Categorize each identified issue by its likelihood and potential impact (e.g., High/Medium/Low). A high-likelihood, high-impact finding—like a predictable random number generator governing fund distribution—requires immediate remediation before proceeding. Medium-risk issues might include using a deprecated hash function or missing extra data in a signed message format. This prioritized list becomes the actionable output of Step 2, directly informing the focused code review and mitigation strategies in subsequent audit steps.

step3-inventory-infrastructure
CRYPTOGRAPHIC INVENTORY

Step 3: Inventory Supporting Infrastructure

This step involves cataloging all cryptographic assets, keys, and infrastructure within your Web3 application to establish a baseline for security analysis.

A cryptographic inventory is a systematic catalog of all cryptographic assets and their supporting infrastructure within your application. This includes private keys, mnemonic seed phrases, API keys, RPC endpoints, smart contract admin keys, and oracle signers. The goal is to create a complete map of trust relationships and access points. For example, a DeFi protocol's inventory would list the multisig signers for its treasury, the private keys for its frontend RPC provider, and the API keys for its price feed oracles. Without this inventory, risk assessment is impossible, as you cannot secure what you do not know exists.

Begin the inventory process by auditing your codebase and deployment configurations. Use tools like grep or truffle/ hardhat configuration files to search for hardcoded strings and environment variable usage. Look for patterns indicating secrets: PRIVATE_KEY=, MNEMONIC, INFURA_API_KEY, ALCHEMY_URL. For on-chain components, use block explorers like Etherscan to identify all contract owner addresses and proxy admin contracts. Document each item's purpose (e.g., "Treasury Multisig Signer #1"), location (e.g., "AWS Secrets Manager, env var SIGNER_KEY"), access level (e.g., "Requires 3-of-5 signatures"), and associated risk (e.g., "Single point of failure").

Next, assess the key management lifecycle for each inventoried item. How is each key generated, stored, rotated, and retired? A private key in a .env file presents a different risk profile than one in a hardware security module (HSM) or a distributed key generation (DKG) scheme. Evaluate the signing environment: is signing done on an air-gapped machine, a cloud VM, or directly in a browser extension? Document these processes. For infrastructure like RPC nodes, assess their provenance and security. Are you using a private, dedicated node or a public endpoint? The compromise of an RPC provider can lead to transaction manipulation or frontrunning.

The final output of this step should be a living document, such as a spreadsheet or a dedicated secrets management platform log. This inventory becomes the foundation for the subsequent risk assessment, allowing you to methodically evaluate threats like key leakage, insider threats, supply chain attacks on dependencies, and protocol upgrades. Regularly update this inventory with every code change, dependency update, or infrastructure migration. Automated monitoring tools like GitGuardian or TruffleHog can help detect secrets accidentally committed to code repositories, ensuring your inventory and its associated security posture remain current.

RISK PRIORITIZATION

Cryptographic Risk Assessment Matrix

A framework for evaluating and scoring cryptographic risks based on likelihood and impact to prioritize mitigation efforts.

Risk CategoryLow Likelihood / Low ImpactMedium Likelihood / Medium ImpactHigh Likelihood / High Impact

Key Management

Single, air-gapped cold wallet for treasury

Multisig with 3/5 signers, keys on dedicated hardware

Private key stored in plaintext on internet-connected server

Algorithm Obsolescence

Using SHA-256 for integrity checks

Using secp256k1 for signatures (Ethereum standard)

Using MD5 or SHA-1 for any security purpose

Implementation Flaws

Audited library from major provider (e.g., OpenZeppelin)

Custom implementation with internal review

Unaudited, forked code from unknown GitHub repository

Entropy Source

Hardware random number generator (HRNG)

System entropy combined with multiple sources

Predictable seed (e.g., blockhash, timestamp)

Cryptographic Agility

Protocol supports scheduled key rotation and algorithm upgrades

Upgrade requires a hard fork or complex migration

No mechanism to change algorithms or parameters post-deployment

Quantum Resistance

Planned migration path to post-quantum cryptography (PQC)

Using algorithms believed to be quantum-vulnerable long-term

Using algorithms known to be broken by quantum computers (e.g., ECDSA, RSA)

Side-Channel Attacks

Constant-time implementations for critical operations

Implementation may have timing variations in non-critical paths

Key-dependent branches or table lookups in signing operations

step4-prioritize-migration
ANALYZE AND PRIORITIZE MIGRATION

How to Conduct a Cryptographic Inventory and Risk Assessment

Before migrating to post-quantum cryptography, you must systematically catalog your cryptographic assets and evaluate their quantum vulnerability. This step is critical for prioritizing what to migrate first.

A cryptographic inventory is a comprehensive list of all cryptographic assets within your system. This includes all instances of algorithms like RSA, ECDSA, and ECDH used for digital signatures and key exchange, as well as symmetric ciphers like AES and hash functions like SHA-256. You must identify where these are deployed: in TLS certificates, code signing, blockchain smart contracts, database encryption, hardware security modules (HSMs), and internal API authentication. Tools like tls-scan for network services and static code analysis can automate discovery, but a manual review of architecture diagrams and configuration files is often necessary for a complete picture.

Once inventoried, each asset must undergo a quantum risk assessment. The primary threat from quantum computers is to public-key cryptography. Use the NIST categorization to assess risk: Category 1 (High Risk) includes all systems using RSA, ECDSA, or ECDH for long-term secrets or signatures, such as root CA certificates or blockchain validator keys. Category 2 (Medium Risk) involves symmetric cryptography with insufficient key size (e.g., AES-128, which requires doubling to 256-bit for quantum resistance) or hash functions with small output (e.g., SHA-1). Category 3 (Low Risk) covers systems with already-sufficient symmetric algorithms, like AES-256 or SHA-384, which are considered quantum-resistant with proper implementation.

Prioritize migration based on the assessed risk, the asset's cryptographic agility, and its business criticality. Systems with high-risk public-key crypto that are also highly exposed (like internet-facing APIs) or protect high-value data (like master encryption keys) should be migrated first. Evaluate each component's ability to switch algorithms—agile systems using libraries like OpenSSL 3.0 or frameworks with abstracted crypto providers are easier to update. Create a migration roadmap that sequences updates, starting with test environments, then non-critical internal systems, and finally, production and external-facing services. This phased approach minimizes disruption while systematically eliminating quantum vulnerabilities.

CRYPTOGRAPHIC INVENTORY

Frequently Asked Questions

Common questions from developers and security engineers on implementing and auditing cryptographic assets in Web3 systems.

A cryptographic inventory is a comprehensive, structured record of all cryptographic assets within a system. This includes private keys, seed phrases, API keys, smart contract admin keys, multi-sig signer addresses, and RPC endpoints. In Web3, it's critical because assets are directly controlled by these keys, not by usernames. Without an inventory, teams risk:

  • Shadow IT: Undocumented keys created by developers for testing.
  • Orphaned Assets: Funds or control locked in wallets whose keys are lost.
  • Attack Surface Bloat: Every unused API key or admin function is a potential vulnerability.

Maintaining an inventory is the first step in applying the principle of least privilege and is foundational for audits and incident response.

conclusion-next-steps
SECURITY BEST PRACTICES

Conclusion and Next Steps

A cryptographic inventory and risk assessment is not a one-time audit but an ongoing security discipline. This guide has provided a framework for systematically cataloging your assets, evaluating their exposure, and implementing controls.

The core takeaway is that proactive key management is foundational to Web3 security. By establishing a cryptographic inventory, you create a single source of truth for all signing authorities—from admin keys for your ProxyAdmin to the multisig signers governing your DAO treasury. This visibility is the first step in mitigating risks like single points of failure, key leakage, and unauthorized upgrades. Regular reviews, ideally quarterly or after major protocol changes, ensure this inventory remains accurate and reflects your current security posture.

Your next steps should focus on actionable remediation. Prioritize findings from your risk matrix: address critical items like unprotected private keys immediately. For high and medium risks, develop a mitigation plan. This could involve migrating to a more secure wallet (e.g., from an EOA to a smart contract wallet like Safe), implementing formalized governance procedures for key usage, or adding time-locks to sensitive functions. Document every action taken to create an audit trail.

To operationalize this process, consider integrating checks into your development workflow. Tools like Slither or Foundry's forge inspect can be scripted to automatically flag new, un-reviewed contracts in pull requests. Frameworks such as OpenZeppelin's Defender Admin can help manage upgrade processes securely. The goal is to shift security left and make key hygiene a continuous part of your development and operations cycle, rather than a periodic scramble.

Finally, remember that security is a layered endeavor. A robust cryptographic setup complements other critical practices: regular smart contract audits, bug bounty programs, and comprehensive monitoring with services like Chainscore Alerts or Tenderly. By treating your keys with the same rigor as your smart contract code, you build a more resilient and trustworthy protocol for your users.

How to Conduct a Cryptographic Inventory and Risk Assessment | ChainScore Guides