@iota-big3/sdk-security
Version:
Advanced security features including zero trust, quantum-safe crypto, and ML threat detection
139 lines • 4.54 kB
TypeScript
/**
* Post-Quantum Cryptography Implementation
* NIST-approved quantum-resistant algorithms
*/
import * as crypto from 'crypto';
export interface PostQuantumConfig {
algorithm: 'kyber' | 'dilithium' | 'falcon' | 'sphincs+';
securityLevel: 1 | 3 | 5;
hybridMode?: boolean;
keyRotationInterval?: number;
}
export interface QuantumSafeKeyPair {
publicKey: Buffer;
privateKey: Buffer;
algorithm: string;
securityLevel: number;
createdAt: Date;
expiresAt?: Date;
}
export interface EncryptedData {
ciphertext: Buffer;
encapsulatedKey: Buffer;
algorithm: string;
nonce?: Buffer;
tag?: Buffer;
}
export interface Signature {
signature: Buffer;
algorithm: string;
publicKey: Buffer;
}
/**
* Abstract base class for post-quantum algorithms
*/
export declare abstract class PostQuantumAlgorithm {
protected config: PostQuantumConfig;
constructor(_config: PostQuantumConfig);
abstract generateKeyPair(): Promise<QuantumSafeKeyPair>;
abstract encrypt(_publicKey: Buffer, plaintext: Buffer): Promise<EncryptedData>;
abstract decrypt(_privateKey: Buffer, encryptedData: EncryptedData): Promise<Buffer>;
abstract sign(_privateKey: Buffer, message: Buffer): Promise<Signature>;
abstract verify(_publicKey: Buffer, message: Buffer, signature: Buffer): Promise<boolean>;
}
/**
* CRYSTALS-Kyber implementation (Key Encapsulation)
* NIST selected for encryption
*/
export declare class KyberAlgorithm extends PostQuantumAlgorithm {
private readonly keyLengths;
generateKeyPair(): Promise<QuantumSafeKeyPair>;
encrypt(_publicKey: Buffer, plaintext: Buffer): Promise<EncryptedData>;
decrypt(_privateKey: Buffer, encryptedData: EncryptedData): Promise<Buffer>;
sign(_privateKey: Buffer, message: Buffer): Promise<Signature>;
verify(_publicKey: Buffer, message: Buffer, signature: Buffer): Promise<boolean>;
private decapsulate;
}
/**
* CRYSTALS-Dilithium implementation (Digital Signatures)
* NIST selected for signatures
*/
export declare class DilithiumAlgorithm extends PostQuantumAlgorithm {
private readonly parameters;
generateKeyPair(): Promise<QuantumSafeKeyPair>;
encrypt(_publicKey: Buffer, plaintext: Buffer): Promise<EncryptedData>;
decrypt(_privateKey: Buffer, encryptedData: EncryptedData): Promise<Buffer>;
sign(_privateKey: Buffer, message: Buffer): Promise<Signature>;
verify(_publicKey: Buffer, message: Buffer, signature: Buffer): Promise<boolean>;
}
/**
* Hybrid Cryptography - Combines classical and post-quantum
*/
export declare class HybridCrypto {
private config;
private classical;
private postQuantum;
constructor(config: PostQuantumConfig, classicalAlgorithm?: 'rsa' | 'ecdsa');
/**
* Generate hybrid key pairs
*/
generateKeyPairs(): Promise<{
classical: crypto.KeyPairKeyObjectResult;
postQuantum: QuantumSafeKeyPair;
}>;
/**
* Hybrid encryption - uses both algorithms
*/
encrypt(classicalPublicKey: crypto.KeyObject, quantumPublicKey: Buffer, plaintext: Buffer): Promise<{
classical: Buffer;
quantum: EncryptedData;
}>;
/**
* Hybrid signatures - signs with both algorithms
*/
sign(classicalPrivateKey: crypto.KeyObject, quantumPrivateKey: Buffer, message: Buffer): Promise<{
classical: Buffer;
quantum: Signature;
}>;
}
/**
* Quantum Random Number Generator
*/
export declare class QuantumRandomGenerator {
private entropy;
/**
* Get quantum random bytes
* In production, would interface with QRNG hardware
*/
getRandomBytes(_length: number): Promise<Buffer>;
private getQuantumEntropy;
}
/**
* Key migration utilities
*/
export declare class KeyMigration {
/**
* Migrate from classical to post-quantum keys
*/
static migrateKeys(classicalKey: crypto.KeyObject, algorithm: PostQuantumConfig): Promise<{
postQuantum: QuantumSafeKeyPair;
migration: {
started: Date;
completed: Date;
algorithm: string;
};
}>;
/**
* Create migration report
*/
static createMigrationReport(totalKeys: number, migratedKeys: number, algorithm: string): MigrationReport;
}
export interface MigrationReport {
totalKeys: number;
migratedKeys: number;
percentComplete: number;
algorithm: string;
estimatedCompletionTime: Date;
recommendations: string[];
}
//# sourceMappingURL=post-quantum-crypto.d.ts.map