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.1.2 — Hash batch CPU parallelism: new internal kctsb_batch_parallel_run<>() dispatcher retrofits kctsb_sha256_batch / sha512_batch / sm3_batch / sha3_256_batch / blake2b_batch CPU fallback paths with a std::thread pool clamped to [1,16] cores. Threshold-gated (count ≥ 16 AND total ≥ 4 MiB) to avoid spawn overhead on tiny inputs — measured AVX2/SHA-NI speedup at 16 MiB aggregate: SHA-256 4.5–4.6×, SHA-512 5.7–5.9×, SM3 7.4×, SHA3-256 5.4× across 8 CPU cores. Sub-threshold workloads stay 1.0× (no regression). CTest 471/471 PASS. ABI compatible with v9.1.x (CUDA provider 0x00090100 unchanged). |
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.1.0 (2026-05)
- Real CUDA acceleration for
kctsb_sha3_256_batch()andkctsb_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 whenbatch_count >= 32 || data_size >= 256 KiB, with deterministic CPU fallback on any provider error.- FHE auto-dispatch threshold tightened:
kctsb_accel_select_fhe()requiresn >= 16384or(n >= 8192 && L >= 6)for GPU, ensuring small-n/small-LBFV/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=ONand 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kctsb-9.1.2-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: kctsb-9.1.2-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 2.3 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b89a5184bf5bd1ce9d173c2215f8933edf403c668566a20b92a599c4c2fad90
|
|
| MD5 |
15752ab28caa6f7db469ecf864c1c36a
|
|
| BLAKE2b-256 |
5864eb15a42598a43f57937ce68536a1bfeab7a2c5e84a23dbcdb3cc2fc6f682
|