Skip to main content

High-performance cryptographic library — HE (CKKS/BFV/BGV), DP, PSI/PIR, VOPRF, SSS, MPC, PQ encoding, and encrypted ML inference. C++ core with Python bindings.

Project description

kctsb — Knight's Cryptographic Trusted Security Base

High-performance cryptographic library with Python bindings for homomorphic encryption, differential privacy, private set intersection, PIR, MPC, Product Quantization (PQ) encoding, and encrypted ML inference.

C++ core + pybind11 bindings → native Python speed

Features

Module Description
kctsb v9.4.0 current tree — SHA-512 / HMAC-SHA512 now uses a runtime-gated x86_64 AVX2+BMI1+BMI2 block-compression path generated from the Apache-2.0 OpenSSL 3.6.0 perlasm source and rewritten into the kctsb namespace. OpenSSL 3.6.0 head-to-head now reports SHA-512 1MB/10MB and HMAC-SHA512 1MB/10MB as 0.72x/0.99x/0.99x/1.06x GOOD-or-better while preserving digest/HMAC semantics. v9.3.1 ChaCha20-Poly1305 one-shot AEAD remains GOOD-or-better at 1.06x/0.70x/0.83x, BFV HPSOverQ defaults from v9.2.2 remain active for verified n=8192..32768,L≥3,size-2, and no modulus, plaintext modulus, secret distribution, noise-sampling security parameters, tag semantics, or secret-path constant-time policies are weakened.
kctsb.crypto atomic primitives: AES-GCM (AES-NI), ChaCha20-Poly1305, SHA-256/512/3 (SHA-NI), HMAC, HKDF, constant-time CSPRNG, secure_compare, token_bytes, token_hex; hand-written PEP 561 type stubs for all public symbols
kctsb.ckks CKKS approximate homomorphic encryption (encode, encrypt, add, multiply, rotate)
kctsb.bfv BFV scale-invariant FHE for integer arithmetic
kctsb.bgv BGV leveled homomorphic encryption with Galois rotations
kctsb.dp Differential privacy (Laplace, Gaussian mechanisms, budget tracking)
kctsb.psi Private Set Intersection with domain-separated SHA-256 tokens, constant-time token equality, CSPRNG sampling, and PIR provider-unavailable paths that fail closed with security-policy errors instead of plaintext fallback
kctsb.pir Private Information Retrieval (FHE-based, BGV/BFV/CKKS)
kctsb.ecc_blind_sign Clause Blind Schnorr signatures (FPS20) — ROS-resistant unlinkable tokens, public verifiable, AGM+ROM secure
kctsb.voprf RFC 9497 VOPRF (P256-SHA256, OPRF/VOPRF/POPRF modes) — deterministic blinded PRF
kctsb.sss Shamir's Secret Sharing (GF(2^8), information-theoretic security)
kctsb.mpc Secure MPC primitives and benchmarks (Rep3 batch secret sharing, Half-Gates GC)
kctsb.encode Product Quantization training, encoding, decoding, ADC lookup, and ADC top-k for private vector query search (PVQS)
kctsb.hcc Homomorphic Confidential Computing (6 privacy scenarios)
kctsb.upsi Unbalanced PSI + Symmetric Searchable Encryption
kctsb.core Hardware acceleration detection (AVX2/AVX512/AES-NI/CUDA)
kctsb.ml Encrypted ML inference (EncryptedTensor, neural network layers, pipeline)

Quick Start

pip install kctsb

Atomic Crypto Primitives

Hardware-accelerated primitives (AES-NI / SHA-NI). Requires Python 3.10+.

from kctsb.crypto import (
    AESGCM, ChaCha20Poly1305,
    sha256, sha512, sha3_256,
    hmac_sha256, hmac_sha512, hkdf_sha256,
    random_bytes, random_uint32, random_uint64, random_range,
    secure_compare, token_bytes, token_hex,
)

# AES-256-GCM (AES-NI accelerated)
key = AESGCM.generate_key(256)     # bit length
nonce = random_bytes(12)
aead = AESGCM(key)
ct = aead.encrypt(nonce, b"hello", b"aad")
pt = aead.decrypt(nonce, ct, b"aad")

# SHA-NI accelerated hashing
digest = sha256(b"payload")         # 32-byte bytes
tag    = hmac_sha256(key, b"msg")   # 32-byte bytes

# Constant-time CSPRNG (platform RtlGenRandom / getrandom)
secret = token_bytes(32)
hexstr = token_hex(16)

# HKDF-SHA256
okm = hkdf_sha256(ikm=secret, salt=b"salt", info=b"context", length=64)

Product Quantization Encoding

Compress high-dimensional feature vectors into compact PQ codes and run ADC top-k search. This module is designed for PVQS-style private vector retrieval pipelines where the online private query only carries compact candidate/key handles.

import numpy as np
from kctsb import encode

vectors = np.random.default_rng(20260508).normal(size=(4096, 512)).astype(np.float32)
query = vectors[0]

codebooks = encode.train_pq(vectors, subquantizers=32, centroids=64, max_iterations=8)
codes = encode.encode_pq(vectors, codebooks)
lookup = encode.adc_lookup(query, codebooks)
indices, distances = encode.adc_topk(codes, lookup, top_k=10)

CKKS Homomorphic Encryption

from kctsb import CKKSContext

ctx = CKKSContext(poly_modulus_degree=8192, coeff_modulus_levels=5, scale_bits=40)
sk = ctx.keygen()
pk = ctx.public_key(sk)

pt = ctx.encode([1.0, 2.0, 3.0])
ct = ctx.encrypt(pk, pt)
ct_sum = ctx.add(ct, ct)
result = ctx.decrypt_decode(sk, ct_sum)
print(result[:3])  # [2.0, 4.0, 6.0]

Differential Privacy

from kctsb.dp import DPMechanism, DPBudget

noise = DPMechanism.laplace(sensitivity=1.0, epsilon=0.1)
noisy_data = DPMechanism.add_noise([1.0, 2.0, 3.0], sensitivity=1.0, epsilon=0.1)

budget = DPBudget(total_epsilon=1.0)
budget.consume(0.1)
print(f"Remaining ε: {budget.remaining_epsilon}")

Private Set Intersection

from kctsb._kctsb_core import psi

client_set = list(range(1, 101))
server_set = list(range(50, 151))
piano = psi.PianoPSI()
result = piano.compute(client_set, server_set)
print(f"Intersection size: {len(result.intersection)}")

Multi-Party Computation (MPC)

The Python package now exposes kctsb.mpc for secure MPC primitives and performance benchmarking. Use this module to access Rep3 batch secret sharing APIs and Half-Gates garbled-circuit benchmarks directly from Python.

Shamir's Secret Sharing

from kctsb._kctsb_core import sss

secret = b"my_secret_key_32bytes_long!!!!!"
shares = sss.ShamirSSS.split(secret, threshold=3, num_shares=5)
recovered = sss.ShamirSSS.reconstruct(shares[:3], len(secret))
assert recovered == secret

Hardware Detection

from kctsb._kctsb_core import core

hw = core.detect_hardware()
print(f"AVX2: {hw['avx2']}, AES-NI: {hw['aes_ni']}, CUDA: {hw['cuda']}")
core.print_status()

Building from Source

Developers with the full kctsb source tree can build locally:

# Windows (PowerShell)
cd kctsb
.\scripts\build_python.ps1

# Or manually:
$env:PATH = "C:\msys64\mingw64\bin;$env:PATH"
cmake -B build_release -G Ninja -DCMAKE_BUILD_TYPE=Release -DKCTSB_BUILD_PYTHON=ON
cmake --build build_release --parallel 16
pip install ./python

Requirements

  • Python 3.10+
  • NumPy >= 1.24
  • Windows x64 (pre-built), Linux/macOS (build from source)

Optional Dependencies

pip install kctsb[ml]   # + torch, transformers for encrypted ML
pip install kctsb[dev]  # + pytest, build, twine for development
pip install kctsb[all]  # Everything

Changelog

v9.4.0 (2026-05)

  • Added a build-time OpenSSL perlasm-derived x86_64 SHA-512 AVX2/BMI2 block-compression path with kctsb symbol namespace rewriting and runtime CPUID/XCR0 gating.
  • Kept the C++ WK3 SHA-512 fallback for hosts without the required AVX2/BMI1/BMI2 state while preserving SHA-512 digest, HMAC, padding, and public API semantics.
  • Refreshed OpenSSL 3.6.0 benchmark data: SHA-512 1MB/10MB and HMAC-SHA512 1MB/10MB report 0.72x/0.99x/0.99x/1.06x GOOD-or-better in the final v9.4.0 banner validation.

v9.3.1 (2026-05)

  • Added an independent AVX2 vertical 8-lane ChaCha20 bulk kernel with 8×8 transpose and 256-bit XOR/store output for large one-shot AEAD encryption.
  • Retuned ChaCha20-Poly1305 one-shot Encrypt→MAC scheduling to 1 MiB L2-sized chunks and direct one-time Poly1305 key block generation while keeping RFC 8439 ciphertext/tag semantics unchanged.
  • Refreshed OpenSSL 3.6.0 benchmark data: ChaCha20-Poly1305 1KB 1.06x GOOD, 1MB 1.03x GOOD, 10MB 1.00x GOOD.

v9.3.0 (2026-05)

  • Fixed the Poly1305 AVX2 4-lane large-update merge by applying explicit lane weights (r^4/r^3/r^2/r) and normalizing post-add carries before radix conversion; this closes a large streaming-vs-one-shot tag equivalence gap.
  • Added large Poly1305 bulk-vs-r44-chunked and streaming ChaCha20-Poly1305-vs-one-shot regression coverage while preserving RFC 8439 ciphertext/tag semantics.
  • Switched one-shot ChaCha20-Poly1305 encrypt/decrypt for ≥4 KiB payloads to a ChaCha20 AVX2 + corrected Poly1305 AVX2 two-pass bulk path; final v9.3.0 OpenSSL benchmark复核: 1KB 1.05x GOOD, 1MB 1.38x, 10MB 1.20x OK.

v9.2.2 (2026-05)

  • Stabilized benchmark_suite.exe seal on Windows/MinGW by running SEAL comparison last and using a benchmark-only fast exit after flushing the final report, avoiding SEAL 4.1.2 global memory-pool static teardown heap aborts without changing production crypto/FHE APIs.
  • Extended default BFV HPSOverQ auto scheduling to verified n=8192..32768,L>=3,size-2 multiply cases and skipped unused CUDA/BEHZ provider initialization when the default path is HPSOverQ; forced modes hps_overq|hps|behz remain available.
  • Refreshed SEAL head-to-head data: BFV n=16384/L=5 Multiply 9.295 ms vs SEAL 17.580 ms (0.53x EXCELLENT), BFV n=32768/L=8 Multiply 35.178 ms vs 66.470 ms (0.53x EXCELLENT), CKKS n=16384/L=3 Multiply 0.378 ms vs 0.513 ms (0.74x EXCELLENT).
  • Added a n=16384/L=5 default-auto vs forced-HPSOverQ correctness regression while preserving modulus, plaintext modulus, secret distribution, noise sampling, and provider fail-closed boundaries.

v9.2.1 (2026-05)

  • Optimized BFV HPSOverQ n=8192 size-2 multiply with L≥3 parallel input INTT, per-operand extension buffers, parallel Q/R extension+NTT, and per-tensor final rescale scheduling.
  • Refreshed measured FHE data: focused n=8192/L=5 raw Multiply is now EXCELLENT (5.233–6.199 ms in final confirmation runs), and benchmark_suite n=8192/L=3 raw Multiply reached 0.72x vs SEAL.
  • Preserved security parameters and rollback controls: KCTSB_BFV_MULTIPLY_MODE=hps_overq|hps|behz remains available and CUDA provider ABI stays 0x00090102.

v9.1.0 (2026-05)

  • Real CUDA acceleration for kctsb_sha3_256_batch() and kctsb_blake2b_batch() via new SHA3-256 + BLAKE2b GPU kernels (cuda_hash_sha3_blake2b.cu); provider ABI extended additively (KCTSB_CUDA_API_VERSION = 0x00090100).
  • kctsb_accel_select_crypto() now returns CUDA for SHA3-256/BLAKE2b when batch_count >= 32 || data_size >= 256 KiB, with deterministic CPU fallback on any provider error.
  • FHE auto-dispatch threshold tightened: kctsb_accel_select_fhe() requires n >= 16384 or (n >= 8192 && L >= 6) for GPU, ensuring small-n/small-L BFV/BGV stays on the now-Harvey-NTT-optimized CPU path.
  • SM3 inner compress: rounds 16-63 fully unrolled with #pragma GCC unroll, removing residual loop branch overhead.
  • SHA-512 multi-block transform: tiered prefetch — 6-block lookahead for messages ≥ 16 blocks (≥ 2 KiB), preserving 4-block schedule for smaller inputs.
  • Test surface expanded to 471 (added GPU↔CPU bit-exact equivalence for SHA3-256 / BLAKE2b batch); Release CTest 471/471 green.

v9.0.1 (2026-05)

  • Completed production primitive hardening for Groth16/QAP, BN254 Fp2/G2/Fp12 paths, BFV/BGV CRT decryption, SPDZ2k 104-bit MACs, ML-DSA signing/verification, NTT cache synchronization, and CKKS real rescale benchmark paths.
  • Replaced BFV/BGV decrypt fallback dynamic big-integer reconstruction with fixed-limb CRT using the unified 128-bit arithmetic policy, while preserving the BEHZ RNS-native hot path.
  • Added public kctsb_sm3_batch() coverage through the C API and benchmark suite; GPU auto-dispatch uses a real loaded CUDA provider only, otherwise AVX2/CPU fallback remains deterministic.
  • Synchronized CUDA provider CMake/API metadata to v9.0.1 and constrained production auto-dispatch to audited FHE/NTT/PIR/hash paths; provider-only AES/SM4 CTR and ECC/SM2 scalar kernels remain benchmark/test artifacts, not public AEAD or secret-scalar replacements.
  • PIR CUDA/preprocessing provider-unavailable paths now fail closed with security-policy semantics, because plaintext index fallback is unsafe.
  • Removed deterministic emergency ML-DSA signatures and local placeholder proof/circuit paths where a secure implementation is available.
  • Verified Release and Debug CTest suites: 469/469 tests passed in both configurations.

v9.0.0 (2026-05)

  • Hardened project-wide randomness paths to use kctsb platform CSPRNG for HCC blinding/DP noise, MPC MAC checks/triples/shares, ZK scalar sampling, SSE/OPE key and range sampling, and FHE C ABI RNG seeding.
  • Verified Debug and Release CMake presets with KCTSB_WARNINGS_AS_ERRORS=ON and synchronized C++/pybind11/PyPI version metadata.
  • Updated publishing validation for major-version release-note archives such as docs/releases/V9Release/v9.0.0-release.md.

License

Apache-2.0 — Copyright (c) 2019-2026 knightc

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kctsb-9.4.0-cp312-cp312-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.12Windows x86-64

File details

Details for the file kctsb-9.4.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: kctsb-9.4.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.4

File hashes

Hashes for kctsb-9.4.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f2b75d4d84f6a1499a82a931fc005b3c59da5d3e231ae701f3de04123e3ad2c5
MD5 1178b20236468889081925528e3a5cf2
BLAKE2b-256 58975cf1a6ee035b400359d9a0f79eb43eefb01f0f173e36da417453b439abbd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page