βββ Data/ β βββ Full audit log (long β all structural, population, and timing checks). β βββ Download a list of 1,000 prime numbers, 2048-bits each β generated by the VPR RSA Engine. β βββ Download a list of 50,000 prime numbers, 2048-bits each β generated by the VPR RSA Engine. β βββ Other works/ βββ Preprint: Closed-Form Phase Prediction and Spectral-Leakage Modeling for the Explicit Formula of L(s, Οβ), with Blind FFT Detection βββ Code: GitHub repository βββ Executive Summary β Vortex-Pattern-Resonance (VPR) Cryptographic Engine (PDF)
VPR RSA Engine is a production-grade cryptographic prime engine developed at VPR Research Ltd. It generates complete RSA-2048 and RSA-4096 keys β p, q, n, e, d, dP, dQ, qInv β measurably faster than the OpenSSL implementation on the same hardware, with the same acceptance rules and the same FIPS 186-5 Miller-Rabin round counts.
The engine is a closed-source commercial implementation. This page summarises the measured performance and the independent audit of the generated key population. For licensing inquiries, please contact us directly.
Same machine, same session, complete RSA keys on both sides. The VPR FIPS profile uses the same Miller-Rabin test and round counts as OpenSSL's FIPS 186-5 path.
| Metric | VPR RSA (FIPS) | OpenSSL bundled | Speed-up |
|---|---|---|---|
| RSA-2048 (1 core) | 49.8 keys/s | 26.0 keys/s | 1.91Γ |
| RSA-2048 (4 cores) | 141.5 keys/s | 82.6 keys/s | 1.71Γ |
| RSA-4096 (1 core) | 4.58 keys/s | 2.65 keys/s | 1.73Γ |
| RSA-4096 (4 cores) | 13.97 keys/s | 8.05 keys/s | 1.74Γ |
Note on the numbers. Single-core figures are the mean of two independent runs of 1000 keys per contender. Ratio and confidence interval are reported in the full methodology document. The VPR gmpy2 profile (Baillie-PSW + 1 Miller-Rabin round) shows essentially the same numbers and is reported separately in the full document.
Only the generation call is timed. Converting numbers to Python integers, writing files, hashing and printing are all outside the timed region for both contenders.
Equal conditions. Every contender produces the same complete RSA key structure. VPR applies the same FIPS 186-5 / SP 800-56B acceptance rules that OpenSSL uses: exact modulus length, |p β q| > 2(nlen/2 β 100), d > 2nlen/2, and gcd(p β 1, e) = 1. Both compute d modulo Ξ»(n) = lcm(p β 1, q β 1).
Same primality confirmation in the FIPS profile. The Miller-Rabin round counts are the FIPS 186-5 Table B.1 values: 5 rounds for a 2048-bit modulus, 4 for 3072 bits and above. We verified the values against the OpenSSL source for releases 3.5 and 3.6.5.
Interleaved blocks. Keys are generated in blocks, and inside each block the order of the contenders is randomised, so that thermal throttling or background load cannot favour whichever contender runs last.
Statistics. Generation time is random, so single timings mean little. The full document reports mean, median, the 10thβ90th percentile range, and the speed ratio of mean times with a 95% confidence interval from 4000 bootstrap resamples.
Parallel mode. A pool of worker processes generates keys; each worker times its own generation call. Throughput is keys divided by the wall-clock time of the batch.
Both methods run in-process. OpenSSL via the Python cryptography package (a direct binding to libcrypto), VPR via Python with gmpy2, numpy and a compiled C kernel. No subprocess, no PEM encoding, no file I/O inside the timed region on either side.
Every key generated during the benchmark was independently audited with code that does not call the generator. The audit script, its parameters, and its own self-test are published in the methodology document. The results below are from runs covering both RSA-2048 and RSA-4096.
| Keys audited | ~30,000 across 12 configurations and two key sizes |
| Structural checks | K01βK14 on every key (lengths, |pβq|, primality with three independent tests, e/d, CRT consistency, round-trip, Fermat and Pollard pβ1 screens, ROCA fingerprint, independent validator) |
| Population tests | P01βP06 (shared primes, duplicate moduli, residue uniformity, monobit, per-position frequency, runs test) |
| Bias test | B00βB02 (gap-before-prime vs. a uniform reference population; pooled ratio β 1.1 for VPR, consistent with 1 for OpenSSL) |
| Timing correlation | T03 (generation time vs. key characteristics), no significant correlation |
| Timing calibration (optional) | T00a, T00b β both controls pass; 7 WARN measurements across all runs, all consistent with a known analysis artifact, no FAIL |
| Fault simulation (optional) | F01, F02 β verified CRT signing is not vulnerable to Bellcore/Lenstra; unverified CRT is, as expected |
| Self-test of the audit | 16 / 16 controls behave as expected β a test that cannot fail proves nothing |
VPR's candidate-selection stage β the part that decides which numbers are put forward for the primality test β is proprietary and is deliberately not described. The validity of the keys does not depend on it: every accepted prime has passed the same primality confirmation described in the methodology document, the same acceptance rules are applied to every key, and the key tests use independent code.
The measured speed difference comes from the candidate-selection stage, not from a weaker primality test. Each VPR profile confirms every prime with a complete test as described above.
| Hardware | Intel-based MacBook Pro (x86_64), 8 logical cores |
| Operating system | macOS 14.7.6 (Sonoma) |
| Python | 3.13.2 |
| numpy | 2.x (Anaconda distribution) |
| gmpy2 | 2.2.1 |
| cryptography | 45.0.3 |
| OpenSSL (bundled and system) | 3.6.5 (29 Sep 2026) |
| C compiler | Apple clang 16.x |
VPR RSA Engine is proprietary software developed at VPR Research Ltd. The implementation is not publicly available at this time. We are open to commercial licensing discussions with qualified partners in cryptography, blockchain, and security.
π§ Contact: georgieva@vpr-research.eu Β· vpr.model@gmail.com Β· nanov@vpr-research.eu
For technical inquiries, benchmarking, or partnership proposals.