03 / ZK · Доказательства без раскрытия

Докажите факт,
не раскрывая данные.

«Клиенту больше 18 лет.» «Оборот компании выше 500 млн ₽.» «Субъект не в санкционном списке.» Datum ZK выдаёт регулятору, партнёру или смарт-контракту криптографически проверяемое да / нет — без копии паспорта, финотчёта или списка. Исходные данные никогда не покидают ваш контур.

Groth16 · Plonk~180 мс proof~12 мс verifyon-chain совместимоFIPS 140-2 curves
ВХОД · private witness
ИмяИванов Иван Иванович
Паспорт4508 №123456
Дата рождения1989-03-12
Регистрацияг. Москва
Санкционный списокне найдено
↓ ZK-PROVE · age_check ∧ resident_ru ∧ ¬sanctions ↓
ВЫХОД · публичное доказательство
✓ Старше 18 · Резидент РФ · Не в санкциях
0x3f8a12c9d7ab4e21… 04fe7b9c8e82…
verify() · 11.4 мс · Groth16 BN254
› single proof · 3 statementssize · 192 B

Регуляторам не нужны
ваши данные. Им нужны факты.

Когда контрагент просит «подтвердите, что клиент старше 18» — он не хочет копию паспорта. Он хочет доказательство. Копия паспорта ему вредна: она кладёт его в скоуп 152-ФЗ.

Zero-knowledge доказательства позволяют доказать утверждение о данных, не раскрывая сами данные. Datum ZK упаковывает эту криптографию в набор готовых «цепей» (circuits) — стандартных проверок вроде «возраст ≥ N», «резидент ≥ N лет», «баланс в диапазоне», «ID принадлежит списку», — которые вызываются как обычный REST API. Proof весом 192 байта, верификация — 12 мс, поверх любого транспорта.

Как делают обычно

Скан паспорта в e-mail
  • Контрагент получает все ПДн, хотя ему нужен один факт
  • Контрагент попадает в скоуп 152-ФЗ, нужна его own инфра
  • Скан живёт в inbox, бэкапах, SIEM — утечка вопрос времени
  • Нельзя отозвать, нельзя удалить, нельзя проверить

Хеш / MAC / JWT

Токен с утверждением
  • Нужен общий секрет или доверие к эмитенту
  • Нельзя проверить без обращения к эмитенту
  • Нельзя частично раскрыть (всё поле или ничего)
  • Не стандарт для on-chain / кросс-юрисдикционного use-case

Datum ZK

Короткое математическое доказательство
  • Проверяется локально у контрагента — 12 мс, offline
  • Не требует доверия к Datum (verifier key публичный)
  • Точечное раскрытие — только то утверждение, что нужно
  • On-chain совместимо, публикуется в журнал аудита

Библиотека утверждений
для типовых compliance-сценариев.

Цепи проверены математически и аудированы. Подключаются вызовом API с именем и параметрами. Сущности — ссылаются на записи в депозитарии.

AGE
«Субъекту ≥ 18 / 21 / N лет?»
age ≥ N, где age = today − dob
revealed: true / false
Алкомаркет, 18+ сервисы, финансовые продукты. Доказательство не раскрывает ни возраст, ни дату рождения.
RESIDENCY
«Клиент — резидент РФ ≥ 183 дня?»
∑(days_in_ru) ≥ 183
revealed: true / false
Банковский KYC, налоговый статус, доступ к инструментам только для резидентов. Без раскрытия маршрутов.
RANGE
«Доход в диапазоне X…Y?»
X ≤ income ≤ Y
revealed: bucket_id
Скоринг, ипотека, субсидии. Банк узнаёт «подходит под программу», не узнаёт зарплату.
MEMBERSHIP
«ID входит в публичный реестр?»
merkle_proof(id, root) = ok
revealed: true / false
ЕГРЮЛ, санкционные списки, реестры СРО. Доказательство строится клиентом, root — публичен.
EXCLUSION
«ID отсутствует в чёрном списке?»
¬merkle_proof(id, sanctions)
revealed: clean
Антифрод, AML-комплаенс. Контрагент получает гарантию «чист», не получая ни списка, ни личности.
EQUALITY
«Два ID — один человек?»
hash(a.subject_id) = hash(b.subject_id)
revealed: true / false
Обмен между инфраструктурами без общего id. «Этот клиент у нас — тот же, что у вас» — без раскрытия персональных идентификаторов.
FINANCIAL
«Оборот компании ≥ 500 млн ₽?»
∑(signed_invoices) ≥ 5·10⁸
revealed: threshold_met
Тендеры, проверка контрагента, банковские лимиты. Аудитор подписал — circuit проверил порог.
CONSENT
«Субъект подписал согласие X?»
verify(signature, doc_hash, pk)
revealed: valid
152-ФЗ-согласия, маркетинг, обработка биометрии. Регулятор видит факт, не видит подпись и документ.
CUSTOM
«Своё утверждение»
Circom / Noir DSL
revealed: любое public-поле
Мы пишем circuit под ваш кейс. Обычно 2-4 недели от ТЗ до продакшн-цепи с security review.

Prover, verifier и субъект.
Доверия между ними не нужно.

Каждый видит ровно столько, сколько положено — и ничего больше. Математика, не договоры.

СУБЪЕКТ (клиент)
владеет данными
  • хранит в депозитарии: паспорт, дата рождения, регистрация
  • авторизует генерацию proof через consent API
  • не обязан показывать копию документа
  • не обязан верить контрагенту
PROVER (ваш сервис)
строит доказательство
  • тянет private witness из vault под токен субъекта
  • запускает circuit с параметрами verifier'а
  • возвращает proof (192 B) + public inputs
  • ничего не пересылает «в открытом виде»
VERIFIER (банк / регулятор)
проверяет локально
  • публичный verifier key от Datum
  • получает proof + public inputs
  • verify() — 12 мс, offline, без обращения к нам
  • никогда не видит исходные ПДн

192 байта
и две публичные цифры.

Это то, что отправляется verifier'у. Это всё, что он получает от вас. В дашборде — тот же объект плюс audit-метаданные.

CURL · generate proof
curl -X POST https://api.datum.ru/v1/zk/prove \
 -H "Authorization: Bearer $DATUM_KEY" \
 -d '{
   "circuit": "age_over",
   "subject_ref": "tok_01HXZP…",
   "public": { "threshold": 18 }
 }'
RESPONSE · application/json
circuitage_over
public.threshold18
public.resulttrue
issued_at2026-04-22T14:22:08Z
schemegroth16_bn254
size192 B
prove_time176 ms
verify_time11.4 ms
proof · 0x1a2b3c4d5e6f7081 92a3b4c5d6e7f809 1a2b3c4d5e6f7081 92a3b4c5d6e7f809 1a2b3c4d5e6f7081 92a3b4c5d6e7f809
Verifier · демонстрационный виджет
verifier.datum.ru / offline-bundle · FIPS-подписан
Proof (BN254 G1/G2) 0x1a2b3c4d5e6f7081 92a3b4c5d6e7f809 1a2b3c4d5e6f7081 92a3b4c5d6e7f809 1a2b3c4d5e6f7081
Public inputs circuit=age_over · threshold=18 · result=true
$ datum-verify --vkey age_over.vkey proof.bin
[✓] proof format          ok
[✓] pairing check         ok
[✓] public input binding  ok
PROOF VALID
verified locally in 11.4 ms
no outbound traffic

Готовые circuits,
каждый прошёл security review.

Мы не просим вас писать circom. Готовые цепи с понятными параметрами — как вызов SDK-функции. Каждая версия подписана, журналируется, совместима назад.

age_over
v1.4.0 · audited
Доказать, что субъекту ≥ N лет по дате рождения в vault.
constraints · 2 140
prove · 168ms
verify · 11.2ms
range_check
v2.0.1 · audited
Доказать, что число в [A, B], опционально раскрыв bucket_id.
constraints · 1 820
prove · 142ms
verify · 10.6ms
merkle_inclusion
v3.1.0 · audited
Доказать, что элемент в дереве (публичный root), глубина до 32.
constraints · 8 920
prove · 310ms
verify · 13.8ms
merkle_exclusion
v1.2.0 · audited
Доказать, что элемента нет в отсортированном дереве.
constraints · 12 400
prove · 390ms
verify · 13.9ms
eddsa_verify
v1.1.0 · audited
Доказать валидность EdDSA-подписи субъекта под документом.
constraints · 4 200
prove · 196ms
verify · 11.9ms
residency_days
v1.0.2 · beta
Сумма дней пребывания в юрисдикции за окно ≥ N (по signed check-ins).
constraints · 6 700
prove · 240ms
verify · 12.4ms
identity_link
v1.0.0 · beta
Доказать, что два tokenized subject_id ссылаются на одного человека.
constraints · 3 100
prove · 184ms
verify · 11.8ms
financial_threshold
v0.9.1 · beta
Сумма подписанных аудитором инвойсов ≥ порог без раскрытия инвойсов.
constraints · 14 200
prove · 420ms
verify · 14.8ms
custom.*
на заказ
Пишем circuit под вашу задачу. Security review, аудит, подписанная release-версия.
сроки · 2-4 нед
аудит · included

Четыре места,
где ZK уже меняет процесс.

Не «когда-нибудь в Web3», а сейчас — внутри российского финтеха, маркетплейсов и медтеха.

Маркетплейс · 18+

Возрастной шлюз для алкоголя и оружия

Клиент один раз подтверждает возраст через ЕСИА в депозитарии. При каждом заказе маркетплейс получает proof age_over(18) = true — без даты рождения. Курьер не видит паспорт в приложении. Роскомнадзор не видит в логах ничего, кроме факта проверки.

Банк · санкционный скрининг

Проверка на OFAC / СДН без передачи

Контрагент — американский банк — требует доказать, что клиент не в OFAC-списке. Отдавать ему ФИО — утечка + ФЗ-242. Вместо этого: proof merkle_exclusion(id, sanctions_root). Публичный root обновляется регулятором. На стороне контрагента — 13 мс verify и галочка в compliance-отчёте.

Медтех · страховые

Страховая компания и диагнозы

Страховая не может видеть диагноз — это специальная категория ПДн. Но ей нужно знать: «покрывается ли случай полисом». Клиника строит proof diagnosis_in_coverage(policy_terms). Страховая получает covered = true/false. Никто не узнал, что человек болен.

Гостендер

Подтверждение оборота и СРО

Тендерная площадка требует «оборот ≥ 500M ₽» и «членство в СРО». Вместо сдачи финотчёта и справок — два proof: financial_threshold (подписан аудитором) + merkle_inclusion(sro_registry). Площадка видит, что компания квалифицирована; финансовых показателей не видит.

Криптография
поверх стандартных кривых.

Никакого экзотического стека. BN254 / BLS12-381, Groth16 / Plonk, Circom 2. Всё, что аудировалось вдоль и поперёк.

СхемаGroth16 (BN254) · Plonk (BN254) · Halo2 (BN254) — по выбору
КривыеBN254 · BLS12-381 · secp256k1 (для on-chain)
DSLCircom 2 · Noir · halo2-lib
Proof size192 B (Groth16) · ~450 B (Plonk)
Prove time140-420 мс на типовую цепь (16-vCPU prover pod)
Verify time10-14 мс · offline · без обращения к Datum
Trusted setupPerpetual Powers of Tau (phase 1) + per-circuit phase 2 ceremony
On-chainEthereum · Polygon · TAC · Base
SDKJS (browser-prover · WASM 4MB) · Python · Go · Rust
Ceremony logПубличный журнал церемоний, signed, reproducible
ComplianceКриптография — ФИПС/NIST-совместимые кривые; 152-ФЗ — на уровне депозитария
browser · верификация на клиенте
// верификатор — чистый JS/WASM, // работает offline, любой origin import { verify } from '@datum/zk-verify'; const ok = await verify({ circuit: 'age_over', vkey: AGE_OVER_VKEY, // опубликован Datum proof, // из /v1/zk/prove publicInputs: { threshold: 18, result: true }, }); if (ok) grantAccess(); else logCompliance('zk-invalid');

Частые вопросы от юристов и CISO.

Если вашего вопроса нет — напишите sales@datumcloud.ru.

Кто гарантирует, что я не подделаю proof?

Криптография. Verifier проверяет парные отношения на эллиптической кривой BN254 — без обращения к Datum. Если prover не знает реальных private inputs, ему не удаётся построить валидную пару (A, B); вероятность подделки — 2⁻¹²⁸ (практически ноль). Это та же математика, которая защищает Ethereum snark-rollups.

Нужно ли регулятору понимать, что такое ZK, чтобы принять это?

В идеале — нет. Verifier — обычная бинарка с понятным выводом PROOF VALID. Мы поставляем его с FIPS-подписью, документацией и заключением аудита КриптоПро / независимого reviewer. На практике ЦБ и Минцифры уже рассматривают ZK в рамках пилотов цифрового рубля — инфраструктурно мы совместимы.

Что с ФСБ-сертифицированной криптографией (ГОСТ)?

BN254 сама по себе несертифицируема по ГОСТу — это зарубежная кривая. Для сценариев с формальным требованием ГОСТ мы оборачиваем proof в слой с ГОСТ-подписью Datum (подтверждающей факт issuance), так что verifier цепочкой «ГОСТ-подпись → внутренний ZK-proof» соответствует формальным требованиям. Для новых проектов поддерживается российская кривая bn2021 (beta).

Trusted setup — это не единый point of failure?

Per-circuit phase-2 ceremony — многосторонний MPC, в котором участвуют Datum, клиент и независимые аудиторы. Пока хоть один участник честно удалил свой тосичный вклад — setup надёжен. Логи ceremony публикуются. Plonk использует universal phase-1 (Perpetual Powers of Tau, 120+ участников) — для новых цепей отдельная церемония не нужна вовсе.

А если цепь содержит баг? Можно доказать ложь.

Поэтому каждая цепь из библиотеки проходит внутренний audit + внешний review (Zellic / OpenZeppelin). Custom-цепи — аналогично, review включено в стоимость. Формальная верификация на критичных участках (range-checks, merkle-depth bounds).

Работает ли это в браузере клиента?

Да. @datum/zk-prover — WASM-пакет (~4 MB), prove в браузере за 1-3 с. Для мобильных — native modules под iOS/Android. Chrome, Safari, Firefox — все текущие, все WebAssembly-compatible.

Сколько стоит?

По числу сгенерированных proof'ов и по числу цепей. Library circuits — от 5 ₽ за proof при типовых объёмах. Custom circuit — разовая разработка + эксплуатация. PoC — free tier 10к proof/месяц.

Посмотрим, какой факт
вы перестанете пересылать паспортом.

30 минут с криптографом. Берём ваш типовой compliance-сценарий (возраст, санкции, оборот), показываем подходящую цепь и вывод верификатора на реальных данных.

sales@datumcloud.ruМосква · Санкт-Петербург
Запросить демо · ZK-валидация
Отвечаем в течение рабочего дня. Ваши данные обрабатываются в соответствии с 152-ФЗ.
DATUM
© 2026 Datum · ПДн инфраструктура