Skip to main content
Yanked

This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.

quipu-voprf

VOPRF (OPRF verificable) sobre ristretto255 con pruebas DLEQ. Son las primitivas que hablan con un quipu-oprf-server.

Argon2 solo:  robas la BD -> fuerza bruta offline, a la velocidad de tu GPU.
Con VOPRF:    robas la BD -> no puedes derivar nada sin la clave del servidor.
              Cada intento exige una peticion que el operador ve, limita y corta.

El servidor nunca ve la entrada (llega cegada) y no puede mentir sobre el resultado: adjunta una prueba DLEQ de que uso la misma k de su clave publica, y el cliente la verifica contra una clave fijada fuera de banda.

Licencia: Apache-2.0 (distinta del núcleo)

El núcleo de Quipu es AGPL-3.0-or-later. Este crate no, y es deliberado.

Es lo único que un cliente del servicio Quipu OPRF debe enlazar dentro de su servidor de autenticación. Si arrastrara la AGPL, el copyleft de red alcanzaría al SaaS del cliente — y nadie enchufa eso a su auth. Poner Apache solo en el SDK no bastaba: la licencia de un envoltorio no relicencia su dependencia, así que había que separar el código de verdad.

Lo que se cede son ~270 líneas de matemática de curva estándar. No es el foso: el foso son el servidor, la clave k y la biblioteca post-cuántica completa, que siguen AGPL. Apache-2.0 y no MIT por la concesión expresa de patentes, que es lo que revisa el departamento legal de una empresa.

Apache-2.0 fluye hacia AGPL-3.0, así que el núcleo puede seguir usando este crate sin fricción. Al revés no funcionaría — de ahí la dirección de la dependencia.

Uso

use quipu_voprf::{Server, blind, finalize};

// Servidor (guarda k; publica Y = k·G)
let server = Server::from_seed(&seed);
let public_key = server.public_key();

// Cliente: cegar
let (state, blinded) = blind(b"contraseña");

// Servidor: evaluar + probar
let (evaluated, proof) = server.evaluate(&blinded).unwrap();

// Cliente: verificar la prueba contra la clave FIJADA y finalizar
let secret = finalize(b"contraseña", &state, &evaluated, &proof, &public_key)
    .expect("la prueba DLEQ no valida: servidor deshonesto o clave incorrecta");

finalize devuelve None si la prueba no valida. No lo ignores: significa que el servidor no es el que fijaste, o que rotó su clave.

Conforme a RFC 9497

Ciphersuite ristretto255-SHA512, modo VOPRF (contextString = "OPRFV1-\x01-ristretto255-SHA512"). Verificado contra los vectores oficiales del Apéndice A.1.2: cargo test -p quipu-voprf.

Los tests cubren DeriveKeyPair, Blind, BlindEvaluate + GenerateProof y Finalize contra los vectores 1 y 2 (lote 1). El vector 3 es de lote 2 y este API no expone lotes: queda fuera de alcance, y se dice en vez de fingir cobertura.

Interoperable con cualquier otra implementación de RFC 9497.

Nota: la construcción propia nunca se publicó

Durante el desarrollo hubo una construcción propia (quipu/v2/voprf), inspirada en la RFC pero no conforme. Nunca llegó a PyPI: 0.2.0 es la primera versión publicada, y nace conforme. Se documenta aquí porque la instancia oprf.xiliux.com sí la sirvió hasta el 2026-07-17, y su clave pública cambió al migrar. La construcción vieja era: dominio propio, hash_to_curve sin expand_message_xmd y transcripción DLEQ propia. No interoperaba con nadie ni heredaba el análisis de seguridad de la RFC. Se eliminó, no se deprecó: dejarla solo invitaba a usarla por error.

Lo que cambia, y no es reversible:

  • La salida pasa de 32 a 64 bytes (Hash es SHA-512; truncarla haría fallar los vectores).
  • La clave pública del servidor cambia para la misma semilla: ahora se deriva con DeriveKeyPair (§3.2), con info = "quipu-oprf-server-v1".
  • Todo secreto endurecido con la versión anterior queda invalidado.

Se hizo con cero clientes, que era la única ventana: el dominio está horneado en cada secreto y, como k, no rota nunca.

Metadata

Release files for quipu-voprf 0.2.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for quipu-voprf 0.2.4
File Size Uploaded
quipu_voprf-0.2.4.tar.gz 29.9 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for quipu-voprf 0.2.4
File Interpreter ABI Platform
quipu_voprf-0.2.4-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details
quipu_voprf-0.2.4-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 abi3 Linux glibc 2.17+ x86-64 Details
quipu_voprf-0.2.4-cp39-abi3-macosx_11_0_arm64.whl CPython 3.9 abi3 macOS 11.0+ ARM64 Details

Total release size: 659.3 kB

Release files / quipu_voprf-0.2.4.tar.gz

Download URL quipu_voprf-0.2.4.tar.gz
Size 29.9 kB
Tags Source
SHA-256 checksum
How to use checksums
e2a8ef0af1832aeff953c662445720054720618cd7cd1a3fec1163b664632715
BLAKE2b-256 checksum
How to use checksums
45fdfb72eb63ae1f9964882b75d67be2156fa3b6e5632d05fcd2bddfb130cbb5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / quipu_voprf-0.2.4-cp39-abi3-win_amd64.whl

Download URL quipu_voprf-0.2.4-cp39-abi3-win_amd64.whl
Size 156.1 kB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
43a962934a9fd070fc2a63990378c6c2f6a874f9370f4f8c89348543385c5435
BLAKE2b-256 checksum
How to use checksums
4b4f2bd3007a877ff35c5a4ce5990b054a3de2d068f00a2685626de3fd95edfc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / quipu_voprf-0.2.4-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL quipu_voprf-0.2.4-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 257.5 kB
Tags CPython 3.9 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
fc8e2794f0c3b2840813aa7466cbf1149aa46aad8dda53ae80b74e5fb4dd7e7e
BLAKE2b-256 checksum
How to use checksums
1611adec79577cbc701475973e32652a8f69104569d1907f3287b199863c608e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / quipu_voprf-0.2.4-cp39-abi3-macosx_11_0_arm64.whl

Download URL quipu_voprf-0.2.4-cp39-abi3-macosx_11_0_arm64.whl
Size 215.8 kB
Tags CPython 3.9 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8a253c50e5ede3f457505f8bf3c6ec519a9458ea80bc2c896a33a066473f116d
BLAKE2b-256 checksum
How to use checksums
7b2ec361f5d06b051daffa7926660461b9452f48f2a7b7bdc1dc1502e7eb86d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.4 This release

4 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page