Socket
Book a DemoInstallSign in
Socket

hsynchronous

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

hsynchronous

Hybrid synchronous encryption protocol using NIST approved post-quantum algorithms.

latest
npmnpm
Version
1.0.1
Version published
Maintainers
1
Created
Source

Post-quantum synchronous encryption protocol

Hybrid synchronous encryption protocol using NIST approved post-quantum algorithms.


import { encrypt, decrypt, generateKeys } from "./src";

const key = generateKeys();
const message = "The quick brown fox jumps over the lazy dog";

const encrypted = await encrypt(message, key);
const decrypted = await decrypt(encrypted, key);

console.log(decrypted)

// {
//   message: "The quick brown fox jumps over the lazy dog",
//   createdAt: 2025-06-30T15:14:33.663Z,
//   decryptedAt: 2025-06-30T15:14:33.719Z,
//   nonce: "3e4bc82b144728126bb0145d678f7a3153..."
// }

Official Rating: NIST Level 4 (Highest commercial/government grade with post-quantum resistance)

ComponentAlgorithm/StrengthSecurity LevelNotes
Key Encapsulation (KEM)ML-KEM-1024 (Kyber)NIST Level 3 (PQC Standard)Post-quantum secure, IND-CCA2
Digital SignatureFalcon-1024NIST Level 3 (PQC Standard)Post-quantum secure, EUF-CMA
Symmetric EncryptionAES-256-GCM256-bit (NIST-approved)Quantum-resistant key size, provides confidentiality + integrity
Key DerivationHKDF-SHA256256-bit (NIST SP 800-56C)Proper key separation with context binding
Random Number Generationcrypto.randomBytes()Cryptographically secure (CSPRNG)Uses OS entropy source

Resistance Against Attacks

Attack TypeProtection MechanismAdditional Notes
Quantum computingML-KEM-1024 (IND-CCA2) + Falcon-1024 (EUF-CMA)Full PQC resistance
MITM attacksFalcon-1024 signatures + protocol bindingNon-repudiation
Key compromiseEphemeral KEM keys (per message) + HKDF with unique saltsNo long-term key reuse
Replay attacks64-byte random salts + 12-byte IVs (2¹²⁸ uniqueness)Statistically negligible collision risk
CRIME/BREACHNo compression (removed in v2) + encryption before any encodingMitigates compression oracles
Key derivation attacksHKDF-SHA256 with protocol-specific info bindingPrevents cross-context reuse
Timing attackstimingSafeEqual + constant-time HMAC (padded inputs)Resists timing leaks
Memory scrapingExplicit secureZero for sensitive buffersPrevents cold-boot attacks
Error oraclesUnified error paths (generic "decryption failed" messages)Hides cryptographic faults
Side-channel leaksMinimum processing time (MIN_PROCESSING_TIME)Obscures operation timing
Metadata leakageFixed block padding (1024-byte chunks)Hides true message size

Benchmarking

clk: ~2.51 GHz
cpu: 13th Gen Intel(R) Core(TM) i5-13420H
runtime: node 22.13.1 (x64-win32)

benchmark                   avg (min … max) p75 / p99
------------------------------------------- ---------
GenKeys                       47.33 ms/iter  53.51 ms 
                      (35.52 ms … 64.85 ms)  58.01 ms 
                    (  2.71 kb …  20.49 kb)   4.53 kb 

Encrypt                       13.08 ms/iter  14.28 ms 
                       (9.73 ms … 25.82 ms)  24.94 ms
                    ( 23.41 kb …  39.29 kb)  24.86 kb

Decrypt                      622.42 µs/iter 878.20 µs
                      (259.30 µs … 2.62 ms)   1.87 ms
                    (472.00  b … 493.76 kb)  16.20 kb

API

await generateKeys(KEM_ALGORITHM*, SIG_ALGORITHM*)

Asynchronously generates a pair of cryptographic keys for Key Encapsulation Mechanism (KEM) and digital signatures using post-quantum algorithms (default: ML-KEM-1024 and Falcon-1024).

  • param string [KEM_ALGORITHM='ml-kem-1024'] - KEM algorithm identifier (e.g., 'ml-kem-1024', 'kyber-768').

  • param string [SIG_ALGORITHM='falcon-1024'] - Digital signature algorithm identifier (e.g., 'falcon-1024', 'dilithium-3').

  • returns Promise<{ kemKeyPair: CryptoKeyPair; sigKeyPair: CryptoKeyPair }> Object containing KEM and signature key pairs.

  • throws Error If key generation fails (e.g., unsupported algorithm or cryptographic backend error).

await encrypt(message, keypair, options, nonce)

Encrypts a message using a hybrid post-quantum encryption scheme combining: Key Encapsulation Mechanism (KEM) for key exchange, AES-GCM for symmetric encryption, Digital signatures for authentication

  • param string message - Plaintext message to encrypt

  • param Object keypair - Contains KEM and signature key pairs (from generateKeys())

  • param Object [options] - Encryption options (merged with defaults)

  • param string [nonce] - Optional nonce for replay protection (auto-generated if omitted)

  • returns Promise<string> Encrypted payload (hex string with metadata)

  • throws Error If inputs are invalid or cryptographic operations fail

await decrypt(payload, keypair, options)

Decrypts a payload encrypted by the encrypt function using hybrid post-quantum cryptography. Performs signature verification, key decapsulation, and AES-GCM decryption.

  • param string payload - Encrypted payload (hex string with metadata)

  • param Object keypair - Contains KEM and signature key pairs (from generateKeys())

  • param Object [options] - Decryption options (merged with defaults)

  • returns Promise<{message: string, createdAt: Date, decryptedAt: Date, nonce: string}> Decrypted data with metadata

  • throws {Error} If:

    • Signature verification fails
    • Nonce reuse detected
    • Decryption fails (invalid tag, corrupted data, etc.)

await exportKeys(keypair)

Serializes cryptographic key pairs into a secure string format for storage/transmission. Format: "PROTOCOL:VERSION:METADATA_HEX:PAYLOAD_HEX"

  • param keypair - Contains KEM and signature key pairs (from generateKeys() or importKeys())

  • returns string Serialized keys in protocol-defined format

  • throws Error If key export fails (e.g., invalid key material)

await importKeys(key)

Imports cryptographic keys from a serialized string format, verifying protocol compatibility and algorithm support before reconstructing key pairs.

  • param string key - Serialized keys in format "PROTOCOL:VERSION:METADATA_HEX:PAYLOAD_HEX"

  • returns Promise<{kemKeyPair: KeyPair, sigKeyPair: KeyPair}> Reconstructed key pairs

  • throws Error If:

    • Protocol/version mismatch
    • Unsupported algorithms detected
    • Malformed key data

Keywords

aes-encryption

FAQs

Package last updated on 02 Jul 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts