/**
* A2A Message Security System
*
* Implements comprehensive message-level security for agent-to-agent communication:
* - Digital signatures with ECDSA, RSA, and post-quantum algorithms
* - Message encryption with AES-256-GCM and ChaCha20-Poly1305
* - Replay attack prevention with nonce tracking and timestamps
* - Message integrity verification with HMAC and Merkle trees
* - Forward secrecy with ephemeral keys
* - Message authentication codes (MAC) for integrity
* - Anti-tampering with cryptographic checksums
*/
///
import { EventEmitter } from "events";
export interface SecureMessage {
messageId: string;
version: "1.0";
header: {
from: string;
to: string | string[];
timestamp: number;
messageType: "request" | "response" | "broadcast" | "gossip" | "heartbeat";
priority: "low" | "medium" | "high" | "critical";
ttl?: number;
replyTo?: string;
correlationId?: string;
sessionId?: string;
};
security: {
nonce: string;
sequence: number;
algorithm: "ECDSA" | "RSA" | "Ed25519" | "Dilithium";
encryption: "AES-256-GCM" | "ChaCha20-Poly1305" | "none";
compression?: "gzip" | "brotli" | "none";
signature: string;
mac: string;
keyId: string;
};
payload: {
encrypted: boolean;
data: string;
checksum: string;
size: number;
};
routing: {
path?: string[];
hops?: number;
maxHops?: number;
forwardingRules?: any;
};
}
export interface MessageSecurityConfig {
defaultEncryption: "AES-256-GCM" | "ChaCha20-Poly1305" | "none";
defaultSigningAlgorithm: "ECDSA" | "RSA" | "Ed25519";
requireEncryption: boolean;
requireSignature: boolean;
maxMessageSize: number;
maxTTL: number;
enableCompression: boolean;
enableForwardSecrecy: boolean;
replayProtection: {
enabled: boolean;
windowSize: number;
maxNonceAge: number;
nonceStoreSize: number;
};
integrityChecks: {
enableHMAC: boolean;
enableChecksum: boolean;
enableMerkleProof: boolean;
};
}
export interface NonceRecord {
nonce: string;
agentId: string;
timestamp: number;
messageId: string;
used: boolean;
}
export interface MessageSecurityMetrics {
messagesProcessed: number;
messagesEncrypted: number;
messagesDecrypted: number;
messagesSigned: number;
messagesVerified: number;
replayAttemptsBlocked: number;
integrityFailures: number;
encryptionFailures: number;
signatureFailures: number;
performanceStats: {
avgEncryptionTime: number;
avgDecryptionTime: number;
avgSigningTime: number;
avgVerificationTime: number;
};
}
export declare class A2AMessageSecurity extends EventEmitter {
private logger;
private cache;
private config;
private nonceStore;
private sequenceNumbers;
private keyCache;
private sessionKeys;
private metrics;
private ephemeralKeys;
constructor(config?: Partial);
/**
* Initialize security configuration
*/
private initializeConfig;
/**
* Sign and encrypt a message for secure transmission
*/
secureMessage(message: any, fromAgentId: string, toAgentId: string | string[], options?: {
messageType?: "request" | "response" | "broadcast" | "gossip" | "heartbeat";
priority?: "low" | "medium" | "high" | "critical";
ttl?: number;
replyTo?: string;
correlationId?: string;
sessionId?: string;
encryption?: "AES-256-GCM" | "ChaCha20-Poly1305" | "none";
compression?: "gzip" | "brotli" | "none";
enableForwardSecrecy?: boolean;
}): Promise;
/**
* Verify and decrypt a received secure message
*/
verifyMessage(secureMessage: SecureMessage, receivingAgentId: string): Promise<{
valid: boolean;
payload?: any;
metadata?: {
fromAgent: string;
timestamp: number;
messageType: string;
verified: boolean;
decrypted: boolean;
integrity: boolean;
};
errors?: string[];
}>;
/**
* Encrypt message payload
*/
private encryptPayload;
/**
* Decrypt message payload
*/
private decryptPayload;
/**
* Sign message with digital signature
*/
private signMessage;
/**
* Verify message signature
*/
private verifySignature;
/**
* Generate HMAC for message integrity
*/
private generateHMAC;
/**
* Verify HMAC integrity
*/
private verifyHMAC;
/**
* Check for replay attacks
*/
private checkReplayAttack;
/**
* Store nonce for replay protection
*/
private storeNonce;
/**
* Get or create ephemeral key for forward secrecy
*/
private getOrCreateEphemeralKey;
/**
* Get sequence number for message ordering
*/
private getNextSequenceNumber;
/**
* Compression and decompression helpers
*/
private compressData;
private decompressData;
/**
* Key management helpers
*/
private getEncryptionKey;
private getSigningKey;
private getPublicKey;
private getMACKey;
/**
* Maintenance and monitoring
*/
private startMaintenanceTasks;
private cleanupOldNonces;
private cleanupEphemeralKeys;
private persistSequenceNumbers;
private startPerformanceMonitoring;
private updatePerformanceMetrics;
private emitPerformanceMetrics;
/**
* Public API methods
*/
getMetrics(): MessageSecurityMetrics;
getConfig(): MessageSecurityConfig;
updateConfig(updates: Partial): Promise;
getNonceStoreStatus(): {
size: number;
maxSize: number;
oldestNonce?: {
nonce: string;
age: number;
};
};
clearNonceStore(): Promise;
rotateEphemeralKeys(): Promise;
}
//# sourceMappingURL=a2a-message-security.d.ts.map