ποΈ AWS KMS Architecture Diagrams β
Visual guide to the KMS + Hedera integration architecture
Table of Contents β
System Overview β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β LafaekStreet Backend β
β β
β ββββββββββββββββββββ ββββββββββββββββββββ β
β β API Endpoint β β Hedera Service β β
β β /api/v1/reports ββββββββββΆβ β β
β β β β - Initialize β β
β β POST new report β β - Create TX β β
β ββββββββββββββββββββ β - Submit to HCS β β
β ββββββββββ¬ββββββββββ β
β β β
β β calls β
β βΌ β
β ββββββββββββββββββββ β
β β KMS Service β β
β β β β
β β 1. keccak256() β β
β β 2. sign() β β
β β 3. parse_der() β β
β ββββββββββ¬ββββββββββ β
β β β
βββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββ
β
β AWS SDK (boto3)
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AWS Cloud β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β AWS KMS β β
β β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β KMS Key: ECC_SECG_P256K1 (SIGN_VERIFY) β β β
β β β β β β
β β β ββββββββββββββββββββββββββββββββββββββββββββββββ β β β
β β β β Private Key (NEVER leaves HSM) β β β β
β β β β - Generated in HSM β β β β
β β β β - Cannot be exported β β β β
β β β β - Used only for signing β β β β
β β β ββββββββββββββββββββββββββββββββββββββββββββββββ β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β Operations: Sign(digest) β signature | GetPublicKey() β key β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β AWS CloudTrail: Logs all KMS operations for audit β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
β Signed Transaction
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Hedera Network β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Hedera Consensus Service (HCS) β β
β β Topic: 0.0.7855971 (Reports) β β
β β β β
β β 1. Verify signature with public key β β
β β 2. Reach consensus across nodes β β
β β 3. Record on blockchain (immutable) β β
β β 4. Return transaction ID β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β HashScan Explorer: https://hashscan.io/testnet/transaction/{tx_id} β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββTransaction Signing Flow β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Step-by-Step Signing Process β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
1. CREATE REPORT
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β User submits report via API β
β { "issue_type": "pothole", "severity": "high", ... } β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
2. BUILD PAYLOAD
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Hedera Service creates blockchain payload β
β { "report_id": "LS-260220-0001", "timestamp": "...", ...}β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
3. CREATE TRANSACTION
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β TopicMessageSubmitTransaction β
β - Topic: 0.0.7855971 β
β - Message: JSON payload β
β - Freeze with client β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
4. HASH TRANSACTION
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β KMS Service: keccak256(transaction_bytes) β
β β
β Input: [0x12, 0x34, 0x56, ...] (transaction bytes) β
β Output: [0xa3, 0xf5, 0xe8, ...] (32-byte hash) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
5. SIGN WITH KMS
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AWS KMS: Sign(hash, key_id) β
β β
β Request: β
β KeyId: f903385b-86db-478f-b7d0-84e45b657c9c β
β Message: a3f5e8d2... (digest) β
β MessageType: DIGEST β
β SigningAlgorithm: ECDSA_SHA_256 β
β β
β Response: DER-encoded signature (70-72 bytes) β
β β
β π Private key NEVER leaves AWS HSM β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
6. PARSE SIGNATURE
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β KMS Service: parse_der_signature() β
β β
β Input: DER-encoded (70-72 bytes) β
β Parse: Extract r and s integers (32 bytes each) β
β Output: Raw signature r || s (64 bytes) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
7. SUBMIT TRANSACTION
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Hedera Network: Execute transaction β
β β
β 1. Verify signature with public key β
β 2. Reach consensus across nodes β
β 3. Record on blockchain β
β β
β Receipt: β
β Transaction ID: 0.0.6255873@1708473892.123456789 β
β Status: SUCCESS β
β β
β β
Transaction recorded on blockchain β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
8. RETURN RECEIPT
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β API Response to user β
β { β
β "report_id": "LS-260220-0001", β
β "blockchain": { β
β "transaction_id": "0.0.6255873@...", β
β "explorer_url": "https://hashscan.io/..." β
β } β
β } β
β π Report successfully submitted! β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββData Flow Diagram β
ββββββββββββ
β Mobile β
β App β
ββββββ¬ββββββ
β POST /api/v1/reports
β {issue_type, severity, location, ...}
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Backend API β
β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β Validate βββββΆβ Store in βββββΆβ Submit to β β
β β Request β β PostgreSQL β β Hedera β β
β ββββββββββββββββ ββββββββββββββββ ββββββββ¬ββββββββ β
β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β βΌ β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Hedera Service β β
β β 1. Create payload β β
β β 2. Hash user_id, images β β
β β 3. Build transaction β β
β β 4. Call KMS for signing β β
β β 5. Submit to HCS β β
β ββββββββββββββββ¬ββββββββββββββββββββββββββββββββ β
β β β
β β sign_transaction(tx_bytes) β
β βΌ β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
β β KMS Service β β
β β 1. digest = keccak256(tx_bytes) β β
β β 2. der_sig = kms.sign(digest) β β
β β 3. raw_sig = parse_der(der_sig) β β
β β 4. return raw_sig (64 bytes) β β
β ββββββββββββββββ¬ββββββββββββββββββββββββββββββββ β
β β β
βββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββ
β
β boto3.kms.sign()
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AWS KMS β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β HSM (Hardware Security Module) β β
β β Private Key: [NEVER EXPORTED] β β
β β ECDSA Sign(digest) using secp256k1 β β
β β Output: DER Signature β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββ
β
β Signed Transaction
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Hedera Network β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Consensus Nodes: Verify β Consensus β Record β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Mirror Nodes: History β REST API β HashScan β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββSecurity Layers β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 5 Security Layers β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Layer 1: AWS IAM
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β IAM User: hedera-kms-user β
β Permissions: β
β β kms:Sign β
β β kms:GetPublicKey β
β β kms:DescribeKey β
β β kms:ScheduleKeyDeletion (denied) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Layer 2: KMS Key Policy
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Key: ECC_SECG_P256K1 (Hedera-compatible) β
β - Only specific IAM users can use β
β - CloudTrail logging enabled β
β - Key rotation enabled β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Layer 3: HSM (Hardware Security Module)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Private key generated inside HSM β
β β Private key NEVER leaves HSM β
β β Cannot be exported β
β β FIPS 140-2 Level 2 validated β
β β Tamper-resistant hardware β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Layer 4: Application Security
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Environment variables for secrets β
β β No private keys in code β
β β TLS for all AWS communication β
β β Input validation & error handling β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Layer 5: Audit & Monitoring
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AWS CloudTrail logs every KMS operation: β
β - Who (IAM user) | What (Sign, GetPublicKey) β
β - When (timestamp) | Where (source IP) β
β - Result (success/failure) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββRelated Documentation β
- Overview - Documentation index
- Quick Start - 5-minute setup guide
- Technical Details - Complete implementation
π Enterprise-Grade Security for Blockchain Transactions
