Loading...
Loading...
Verify AI model training data provenance without exposing proprietary datasets. Uses zero-knowledge proofs, secure enclaves, and cryptographic attestations.
Prove training data compliance without revealing the data.
Verification within hardware-isolated execution environments.
Distributed verification across multiple parties.
Signed cryptographic proofs of data lineage.
DRD supports four complementary verification methods. Each provides different trade-offs between proof strength, computation cost, and privacy guarantees.
Generate Groth16 proofs via snarkjs that a model was trained on datasets matching specific license hashes. The verifier learns nothing about the actual data.
Run training verification inside a Trusted Execution Environment (TEE). The enclave attests that training data matched license records without exposing data.
Collect verification attestations from multiple data providers. Each provider independently confirms their data was used under valid license terms.
Verify that all personally identifiable data in training sets has valid consent records. Maps data subjects to consent tokens with expiration tracking.
For maximum assurance, combine ZKP with Federated Proofs. The ZKP proves license coverage while federated attestations confirm individual data provider consent. This satisfies both EU AI Act Article 53 and GDPR Article 6 requirements simultaneously.
A typical verification follows four stages from proof request to on-chain anchoring.
A verifier (regulator, auditor, or automated compliance check) requests proof that a model's training data is properly licensed.
DRD generates the appropriate proof type. For ZKP: compiles the circuit, generates witness, and produces Groth16 proof. For enclaves: initiates TEE attestation.
The verifier validates the proof using the public verification key. ZKP verification is fast (<100ms) regardless of dataset size.
The proof hash is anchored to an immutable audit trail with timestamp, verifier identity, and result. Optionally anchored to a blockchain for public verifiability.
Data Privacy
Proof Time
Verify Time
Hardware Req
Offline Verify
Audit Trail
EU AI Act
import { DRD } from '@drd/sdk';
const drd = new DRD({ token: 'drd_live_sk_...' });
const verification = await drd.training.createVerification({
modelId: 'model_abc123',
verificationMethod: 'zero_knowledge',
proofType: 'zksnark',
proofData: { circuit: 'training_compliance_v2', publicInputs: [...] },
datasetDescriptor: 'ImageNet-2025-licensed',
});
// Verify the proof
await drd.training.verifyProof({
id: verification.id,
verifierName: 'DRD Verification Service',
});Track consent status for each data source used in training.
{
"verificationId": "ver_abc123",
"dataOwner": "Creative Commons Foundation",
"dataCategory": "images",
"consentStatus": "granted",
"consentProof": "ipfs://Qm..."
}curl -X POST https://api.drd.io/v1/models/verify \
-H "Authorization: Bearer drd_ws_sk_live_Abc123..." \
-H "Content-Type: application/json" \
-d '{
"modelId": "mdl_01JM7XBN4RTYP",
"method": "zkp",
"config": {
"circuit": "license-coverage",
"curve": "bn128",
"protocol": "groth16"
}
}'
// Response
{
"ok": true,
"data": {
"verificationId": "ver_01JM7XBN4RTYP",
"modelId": "mdl_01JM7XBN4RTYP",
"method": "zkp",
"status": "generating",
"estimatedTimeSeconds": 90,
"createdAt": "2026-02-14T12:00:00Z"
}
}curl "https://api.drd.io/v1/models/verify/ver_01JM7XBN4RTYP" \
-H "Authorization: Bearer drd_ws_sk_live_Abc123..."
// Response
{
"ok": true,
"data": {
"verificationId": "ver_01JM7XBN4RTYP",
"modelId": "mdl_01JM7XBN4RTYP",
"method": "zkp",
"status": "verified",
"result": {
"valid": true,
"datasetsVerified": 3,
"licenseCoverage": 1.0,
"proofHash": "sha256:e4f5g6h7...",
"verificationKey": "vk_01JM7XBN4RTYP"
},
"completedAt": "2026-02-14T12:01:30Z",
"anchoredAt": "2026-02-14T12:01:35Z"
}
}Complete training verification workflow with the DRD TypeScript SDK.
import { DRD } from '@drd/sdk';
const drd = new DRD({ apiKey: process.env.DRD_API_KEY });
// Start a ZKP verification
const verification = await drd.training.createVerification({
modelId: 'mdl_01JM7XBN4RTYP',
verificationMethod: 'zero_knowledge',
proofType: 'zksnark',
config: {
circuit: 'license-coverage',
protocol: 'groth16',
},
});
// Poll for completion
const result = await drd.training.waitForCompletion(
verification.id,
{ timeoutMs: 120_000 }
);
console.log(`Verification: ${result.status}`);
console.log(`Datasets verified: ${result.result.datasetsVerified}`);
console.log(`License coverage: ${(result.result.licenseCoverage * 100).toFixed(0)}%`);
console.log(`Proof hash: ${result.result.proofHash}`);
// Verify a proof (as a third-party verifier)
const isValid = await drd.training.validateProof({
proofHash: result.result.proofHash,
verificationKey: result.result.verificationKey,
});
console.log(`Proof valid: ${isValid}`);