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 Architect a Secure Data Sharing System for VASPs

A technical guide for developers building a secure, private, and compliant data exchange system between Virtual Asset Service Providers to meet FATF Travel Rule requirements.
Chainscore © 2026
introduction
TECHNICAL GUIDE

Introduction to VASP Data Sharing Architecture

A practical guide to designing secure, interoperable data-sharing systems for Virtual Asset Service Providers (VASPs) to comply with regulations like the FATF Travel Rule.

Virtual Asset Service Providers (VASPs)—including exchanges, custodians, and wallet providers—are required by the Financial Action Task Force (FATF) Travel Rule to share sender and recipient information for cryptocurrency transactions. This mandate necessitates a secure, standardized architecture for data exchange between often competing entities. A well-designed system must balance data privacy, regulatory compliance, and operational efficiency without creating a single point of failure or exposing sensitive customer data.

The core architectural challenge is enabling trustless data exchange. A naive approach of direct API calls between VASPs is fraught with security risks and scalability issues. Instead, modern architectures often employ a decentralized or federated model. Protocols like the InterVASP Messaging Standard (IVMS101) define a common data format, while systems leverage public-key infrastructure (PKI) for identity verification and end-to-end encryption (e.g., using AES-256-GCM) for data in transit. The goal is to ensure that only the intended recipient VASP can decrypt the payload.

A robust architecture typically consists of several key components. The VASP Directory is a critical service, often implemented as a decentralized identifier (DID) registry, that allows VASPs to discover each other's public keys and compliance endpoints. The Messaging Gateway handles the secure packaging, encryption, and routing of IVMS101 data packets. On-chain components, such as hashing transaction details onto a public ledger (e.g., Ethereum or a purpose-built L2), can provide non-repudiation and an audit trail without leaking private data.

Implementing the data flow involves specific steps. When a user initiates a withdrawal, the originating VASP (OVASP) must: 1) Query the directory for the beneficiary VASP's (BVASP) public key and endpoint, 2) Construct an IVMS101-compliant JSON object with required originator and beneficiary data, 3) Encrypt this payload specifically for the BVASP, 4) Transmit the encrypted packet via a secure channel (e.g., HTTPS with mutual TLS), and 5) Optionally, post a proof (like a hash) of the message to a blockchain. The BVASP then decrypts and validates the data against the transaction.

Security is paramount. Architectures must guard against man-in-the-middle attacks, data leakage, and denial-of-service. Using mutual TLS (mTLS) for all network communication authenticates both parties. Private data should never be stored on a public blockchain in clear text; only cryptographic commitments (hashes) should be used. Regular key rotation and adherence to hardware security module (HSM) standards for key storage are essential for maintaining long-term system integrity and trust.

Looking forward, architectures are evolving with blockchain-native solutions. Decentralized Travel Rule protocols like OpenVASP and TRP API offer standardized, open-source frameworks. Some solutions use zero-knowledge proofs (ZKPs) to allow VASPs to prove compliance (e.g., that they have shared required data) without revealing the data itself. The ultimate goal is an interoperable ecosystem where compliance is seamless, secure, and does not hinder the legitimate use of virtual assets.

prerequisites
FOUNDATION

Prerequisites and System Requirements

Before architecting a secure data sharing system for Virtual Asset Service Providers (VASPs), you must establish a robust technical and operational foundation. This involves selecting compliant infrastructure, defining data schemas, and implementing core security protocols.

The primary prerequisite is a clear understanding of the regulatory frameworks governing your VASP's operations, such as the Travel Rule (FATF Recommendation 16). Your system's architecture must be designed to collect, validate, and transmit the required Personally Identifiable Information (PII) and transaction data between originating and beneficiary VASPs. This dictates your data model, which should be aligned with industry standards like the InterVASP Messaging Standard (IVMS 101) for beneficiary data to ensure interoperability.

From a technical standpoint, you will need a secure, scalable backend infrastructure. This typically involves: - A relational database (e.g., PostgreSQL) or a distributed ledger for immutable audit trails to store transaction and customer data. - A message queue or broker (e.g., RabbitMQ, Apache Kafka) for reliable, asynchronous communication between your internal systems and external VASP networks. - API endpoints built with a framework like Node.js, Python (Django/FastAPI), or Go to handle inbound and outbound data requests securely.

Core security requirements are non-negotiable. You must implement end-to-end encryption (E2EE) for all data in transit, using TLS 1.3 and libraries like OpenSSL or libsodium. For data at rest, implement field-level encryption for sensitive PII. A robust Key Management System (KMS), such as HashiCorp Vault or AWS KMS, is essential for managing encryption keys and signing certificates separately from your application logic.

Your system must integrate with a Travel Rule solution provider or a Decentralized VASP network. For direct integration, you'll need to handle their specific APIs (e.g., Sygna Bridge, Notabene, TRP). For decentralized networks like TravelRule.com (using the OpenVASP protocol) or VerifyVASP, you will need to run a node or client that can interact with the underlying blockchain (often Ethereum or a sidechain) to send and receive signed, encrypted messages.

Finally, establish rigorous Identity and Access Management (IAM). Implement role-based access control (RBAC) to ensure only authorized personnel can view sensitive data. All access must be logged for audit purposes. You should also plan for data retention policies in accordance with local regulations, which will influence your database archiving and purging strategies.

core-architecture-overview
CORE SYSTEM ARCHITECTURE OVERVIEW

How to Architect a Secure Data Sharing System for VASPs

Designing a secure data exchange for Virtual Asset Service Providers requires a layered approach that prioritizes privacy, compliance, and interoperability.

A secure VASP data sharing system is built on a zero-trust architecture, where no entity is inherently trusted. The core components include a permissioned blockchain or distributed ledger for auditability, a decentralized identity (DID) framework for entity verification, and a secure messaging layer for confidential data transfer. This architecture ensures that sensitive information, such as transaction originator/beneficiary details for the Travel Rule, is shared only between verified counterparties under strict cryptographic guarantees, without relying on a central database vulnerable to single points of failure.

The system's security hinges on end-to-end encryption (E2EE) and selective disclosure. When VASP A needs to share customer data with VASP B, the data is encrypted with a key that only VASP B can decrypt, often using public-key cryptography. Advanced systems implement zero-knowledge proofs (ZKPs) or secure multi-party computation (sMPC) to allow verification of compliance (e.g., confirming a sender is not on a sanctions list) without exposing the underlying private data. This minimizes data leakage and aligns with principles of data minimization mandated by regulations like GDPR.

Interoperability is critical, as VASPs may use different protocols. The architecture must support standards like the InterVASP Messaging Standard (IVMS 101) for data format and the Travel Rule Protocol (TRP) or OpenVASP for communication. A common design employs a gateway or adapter layer that translates between a VASP's internal systems and the standardized messaging protocol. This allows a VASP using the TRP API to seamlessly exchange data with another using the OpenVASP protocol, ensuring industry-wide compatibility without forcing a single vendor solution.

For resilience and performance, the system should be decentralized yet manageable. A consortium blockchain like Hyperledger Fabric or Corda is often chosen, governed by a group of trusted VASPs or a standards body. Smart contracts automate compliance checks and log interactions immutably. The architecture must also include a robust key management system (KMS), often using Hardware Security Modules (HSMs), to protect cryptographic keys. Monitoring and alerting for anomalous data access patterns are essential for operational security and regulatory reporting.

Implementing this architecture requires careful planning. Start by defining the data schema (using IVMS 101) and the authentication flow (using DIDs and Verifiable Credentials). Develop and audit the smart contracts that govern data-sharing agreements. Finally, integrate the secure messaging layer with existing VASP infrastructure, ensuring all PII is encrypted in transit and at rest. This layered, standards-based approach creates a system that is not only secure and compliant today but also adaptable to future regulations and technological advancements.

key-concepts
VASP DATA ARCHITECTURE

Key Technical Concepts

Core technical components for building a secure, compliant data sharing system for Virtual Asset Service Providers (VASPs).

implement-ivms-101-schema
FOUNDATION

Step 1: Implement the IVMS 101 Data Standard

The first technical step in building a secure VASP data sharing system is adopting the IVMS 101 data standard, which ensures interoperability and reduces compliance risk.

The InterVASP Messaging Standard (IVMS) 101 is the global, open-source data model for sharing originator and beneficiary information between Virtual Asset Service Providers (VASPs). Developed by the Joint Working Group on interVASP Messaging Standards, its primary purpose is to create a common language for Travel Rule compliance, eliminating the need for custom mapping between different proprietary formats. Without a standard like IVMS 101, VASPs face significant integration overhead and increased risk of data errors during cross-border transactions.

At its core, IVMS 101 defines a structured JSON schema for NaturalPerson and LegalPerson identities. A NaturalPerson record includes mandatory fields like natural_person_name (with name_identifiers for first/last name) and national_identification, while a LegalPerson includes legal_person_name and legal_person_identification. The standard also defines a unified Address type and critical metadata like the Originator and Beneficiary roles within a transaction payload. This structured approach ensures all required FATF Travel Rule data points are captured consistently.

Implementing IVMS 101 involves integrating a library or building serializers/deserializers for your stack. For example, the official IVMS 101 repository on GitHub provides JSON Schema and Protobuf definitions. A basic implementation in a Node.js service might involve creating a validation function using the JSON schema. Using a validated standard format prevents ambiguous or missing data, which is a common failure point in compliance audits and a source of transaction delays.

Beyond basic identity, IVMS 101 is designed for extensibility. It includes fields for geographic_address and customer_number for aligning with internal records. The standard also accommodates future regulatory needs through its structured design. By adopting IVMS 101 as your internal canonical model for counterparty data, you simplify integrations with other VASPs, Travel Rule solution providers like Notabene or Sygna, and blockchain analytics tools, creating a future-proof foundation for your compliance architecture.

implement-encryption-layer
SECURITY CORE

Step 2: Design the Encryption and Key Management Layer

This step details the cryptographic architecture for protecting sensitive transaction data, focusing on secure key generation, storage, and access control for VASP-to-VASP communication.

The core of a secure data-sharing system is its encryption and key management layer. For VASPs, this layer must ensure that sensitive Travel Rule data, such as beneficiary names and wallet addresses, is only accessible to authorized counterparties. The standard approach is to use asymmetric cryptography. Each VASP generates a public/private key pair, where the public key is shared openly to encrypt data, and the private key is kept secret to decrypt it. This model underpins protocols like the IVMS 101 data standard and is central to solutions from the Travel Rule Universal Solution Technology (TRUST) and OpenVASP.

A critical decision is the key storage mechanism. For maximum security and auditability, private keys should never be stored in plaintext on application servers. Instead, use a Hardware Security Module (HSM) or a cloud-based key management service (KMS) like AWS KMS, GCP Cloud KMS, or Azure Key Vault. These services provide FIPS 140-2 validated hardware, secure key generation, and strict access policies. For on-chain components or decentralized architectures, consider using smart contract-based key management or multi-party computation (MPC) wallets to eliminate single points of failure.

Key lifecycle management is essential. Implement automated processes for key rotation (e.g., every 90 days) and key revocation. If a VASP's private key is compromised or an employee leaves, you must be able to immediately revoke the old key pair, generate a new one, and broadcast the new public key to your network or directory service. This process is often governed by a Public Key Infrastructure (PKI), where a trusted certificate authority can issue and revoke digital certificates binding a VASP's identity to its public key.

For the actual data encryption in transit, use a hybrid approach. First, generate a unique symmetric key (e.g., an AES-256 key) to encrypt the payload data—this is efficient for large datasets. Then, encrypt this symmetric key with the recipient VASP's public key. The final message contains the AES-encrypted data and the RSA-encrypted symmetric key. Only the recipient with the corresponding private key can unlock the symmetric key and decrypt the message. This pattern is known as envelope encryption.

Here is a simplified code example illustrating the encryption flow using Node.js and the crypto module:

javascript
// 1. Generate a random symmetric key for AES-256-GCM
const crypto = require('crypto');
const symmetricKey = crypto.randomBytes(32);

// 2. Encrypt the IVMS101 data payload with AES
const iv = crypto.randomBytes(12);
const cipher = crypto.createCipheriv('aes-256-gcm', symmetricKey, iv);
let encryptedData = cipher.update(JSON.stringify(ivms101Data), 'utf8', 'hex');
encryptedData += cipher.final('hex');
const authTag = cipher.getAuthTag();

// 3. Encrypt the symmetric key with the recipient's public RSA key
const encryptedSymmetricKey = crypto.publicEncrypt(
  recipientPublicKey,
  symmetricKey
);

// 4. Transmit the package: { encryptedData, iv, authTag, encryptedSymmetricKey }

Finally, integrate this layer with your identity and directory service from Step 1. Before encrypting data for another VASP, your system must query the directory to retrieve their current, validated public key. This lookup ensures you are always using the correct and active key, preventing man-in-the-middle attacks and data loss. The combination of a reliable directory, robust key storage, and proper envelope encryption creates a trustless yet verifiable channel for sharing sensitive compliance data across the VASP ecosystem.

build-secure-api-gateway
ARCHITECTURE

Step 3: Build a Secure API Gateway

Design and implement the core component that enables secure, programmatic data exchange between your VASP and external parties, such as Travel Rule providers.

An API gateway acts as the single, controlled entry point for all external requests to your VASP's Travel Rule system. Its primary functions are authentication, authorization, rate limiting, and request routing. Instead of exposing your core compliance engine directly, the gateway validates API keys or JWT tokens, checks request quotas, and forwards only legitimate traffic to the appropriate internal service, such as your TransactionScreeningService or CustomerDataVault. This pattern, known as the API Gateway pattern, is critical for security and manageability in microservices architectures.

Implement robust authentication using standards like OAuth 2.0 or API key authentication with HMAC signatures. For high-security VASP-to-VASP communication, consider using mutual TLS (mTLS) to establish encrypted, bi-directionally authenticated channels. The gateway should validate all incoming payloads against a strict JSON schema before processing to prevent malformed data or injection attacks. Log all access attempts—both successful and denied—with sufficient detail for audit trails, but ensure no sensitive Personally Identifiable Information (PII) is written to these logs.

Here is a simplified Node.js example using the express and jsonwebtoken libraries to validate a JWT and route a request:

javascript
const express = require('express');
const jwt = require('jsonwebtoken');
const router = express.Router();

// Middleware to verify JWT from 'Authorization' header
const authenticateJWT = (req, res, next) => {
  const authHeader = req.headers.authorization;
  if (authHeader) {
    const token = authHeader.split(' ')[1]; // Expects 'Bearer <token>'
    jwt.verify(token, process.env.JWT_SECRET, (err, user) => {
      if (err) {
        return res.sendStatus(403); // Forbidden
      }
      req.user = user; // Attach decoded token payload to request
      next();
    });
  } else {
    res.sendStatus(401); // Unauthorized
  }
};

// Protected route for submitting a Travel Rule request
router.post('/api/v1/travel-rule/request', authenticateJWT, async (req, res) => {
  // Forward the validated request to the internal service
  const response = await internalTravelRuleService.process(req.body);
  res.json(response);
});

For production systems, use a dedicated gateway solution like Kong, Tyk, or AWS API Gateway. These platforms provide out-of-the-box features for rate limiting policies, IP whitelisting, and detailed analytics dashboards. They also handle SSL/TLS termination, reducing the cryptographic burden on your application servers. Configure your gateway to only accept connections from known Travel Rule solution providers or partner VASPs, and implement DDoS protection rules to mitigate volumetric attacks aimed at disrupting your compliance operations.

Finally, document your API comprehensively using the OpenAPI Specification (Swagger). A well-documented API allows partner VASPs and integrators to understand the available endpoints, required request formats, and authentication methods without needing to inspect your codebase. Tools like Swagger UI or Redoc can generate interactive documentation from your OpenAPI spec, making integration testing and development for your partners significantly easier and more secure.

DATA AT REST

Encryption Standard Comparison for VASP Data

Comparison of encryption algorithms for securing stored VASP data, including transaction logs, KYC documents, and customer records.

Feature / MetricAES-256-GCMChaCha20-Poly1305XChaCha20-Poly1305

Algorithm Type

Symmetric Block Cipher

Symmetric Stream Cipher

Symmetric Stream Cipher

Key Size

256 bits

256 bits

256 bits

Authentication

GCM (Galois/Counter Mode)

Poly1305 MAC

Poly1305 MAC

Standardization

NIST FIPS 197

IETF RFC 8439

IETF Draft / Common Practice

Hardware Acceleration

Performance on Mobile/ARM

Slower without AES-NI

Consistently Fast

Consistently Fast

Nonce Size

96 bits

96 bits

192 bits

Nonce Reuse Risk

Catastrophic

Catastrophic

Very Low

Common Use Case

Database fields, File encryption

TLS 1.3, WireGuard VPN

High-volume APIs, Mobile apps

implement-audit-logging
DATA INTEGRITY

Step 4: Implement Immutable Audit Logging

Immutable audit logs create a tamper-proof record of all data access and sharing events, which is a critical requirement for VASP compliance and security incident response.

An immutable audit log is a chronological, append-only record of every action taken on the data sharing platform. For VASPs, this includes events like transaction requests, customer data queries, consent grants, and administrative changes. The log's immutability ensures that once an event is recorded, it cannot be altered or deleted, providing a single source of truth for forensic analysis and regulatory audits. This is a foundational component for meeting standards like the Travel Rule (FATF Recommendation 16), which mandates secure information sharing between VASPs.

To implement this, you must architect a logging system that cryptographically secures each entry. A common pattern involves generating a cryptographic hash (e.g., SHA-256) for each log entry and linking it to the previous entry's hash, creating a hash chain. This structure makes tampering evident, as altering any historical entry would invalidate all subsequent hashes. Log entries should be structured data (e.g., JSON) containing essential metadata: a timestamp, event type, acting user/VASP identifier, target data subject, and the action's outcome.

For maximum integrity, the hash chain's latest state should be periodically anchored to a public blockchain. This involves taking the current chain tip's hash and publishing it as a transaction on a network like Ethereum or Bitcoin. This provides an external, decentralized proof of the log's state at a specific point in time. Tools like OpenTimestamps or custom smart contracts can facilitate this anchoring process. This step moves your audit trail from being internally verifiable to being cryptographically verifiable by any third party, such as a regulator or an auditor.

Here is a simplified conceptual example of a log entry and hash chain in pseudocode:

code
// Log Entry Structure
entry_n = {
  timestamp: "2023-10-27T10:30:00Z",
  event: "DATA_QUERY",
  actor: "vasp_b",
  subject: "0xabc123...",
  details: {txHash: "0xdef456..."}
}
// Calculate this entry's unique hash
hash_n = sha256(entry_n + previous_hash_n-1)
// Store: {entry: entry_n, hash: hash_n, prev_hash: previous_hash_n-1}

Each new entry's hash depends on the entire history, sealing the chain.

Access to the audit log itself must be strictly controlled. While the data is immutable, read access should be permissioned. Implement role-based access controls (RBAC) to ensure only authorized compliance officers or auditors can query the full log. The system should support efficient querying for specific time ranges, VASPs, or transaction IDs to facilitate investigations. Consider using dedicated time-series databases or indexed storage solutions optimized for append-only data to maintain performance as the log grows over years of operation.

Finally, define clear procedures for using the audit log. This includes regular integrity checks to verify the hash chain, processes for responding to audit requests from other VASPs or regulators, and protocols for investigating discrepancies. The immutable log is not just a technical feature; it's a core compliance asset that demonstrates your VASP's commitment to transparent and secure operations within the digital asset ecosystem.

VASP DATA SHARING

Frequently Asked Questions (FAQ)

Common technical questions and troubleshooting for architects building secure data sharing systems for Virtual Asset Service Providers (VASPs) using blockchain and zero-knowledge proofs.

The Travel Rule (FATF Recommendation 16) requires VASPs to share specific originator and beneficiary information for cryptocurrency transactions exceeding a threshold (e.g., $3,000/€1,000). The required data fields typically include:

  • Originator's name
  • Originator's account number (wallet address)
  • Originator's physical address, national identity number, or customer ID
  • Beneficiary's name
  • Beneficiary's account number (wallet address)

Architecting a compliant system requires securely transmitting this Personally Identifiable Information (PII) while ensuring data integrity and non-repudiation, which is where decentralized identifiers (DIDs) and verifiable credentials become critical.

conclusion-next-steps
ARCHITECTURE REVIEW

Conclusion and Next Steps

This guide has outlined the core components for building a secure, compliant data-sharing system between Virtual Asset Service Providers (VASPs).

A robust VASP data-sharing architecture rests on three pillars: a standardized API for interoperability, a decentralized identity (DID) framework for entity verification, and zero-knowledge proofs (ZKPs) for privacy-preserving compliance. By implementing these components, you can create a system that facilitates the secure exchange of Travel Rule data (like originator/beneficiary information) without exposing sensitive customer data on-chain or to intermediaries. This approach directly addresses key FATF Recommendation 16 requirements while mitigating counterparty risk.

For production deployment, start by integrating a DID standard like did:web or did:key for VASP identification, using libraries such as did-jwt-vc. Your API should follow the IVMS 101 data model and consider adopting the TRISA protocol or similar open standards for message structure. Implement ZKPs for specific checks, such as proving a transaction is below a reporting threshold or that a wallet address is not on a sanctions list, without revealing the underlying amounts or the list itself. Frameworks like circom and snarkjs can be used to design these circuits.

The next step is to rigorously test the system's security assumptions. Conduct audits on the smart contracts managing DID registries and ZK verifiers. Perform penetration testing on your API endpoints. Furthermore, establish clear governance and key rotation policies for the decentralized identifiers to prevent single points of failure. Remember, the technical architecture must be supported by legal agreements (like the Travel Rule Universal Protocol Agreement) that define liability and procedures for dispute resolution between participating VASPs.

To stay current, monitor the evolving regulatory landscape and technical standards from bodies like the InterVASP Messaging Standards Association. Experiment with emerging privacy-enhancing technologies (PETs) such as multi-party computation (MPC) for collaborative risk scoring or fully homomorphic encryption (FHE) for computations on encrypted data. The goal is a system that is not only compliant today but also adaptable to future regulations and technological advancements in cryptographic privacy.