Verified Facts Protocol: как помочь AI перестать галлюцинировать о вашей компании
Открытый протокол для публикации криптографически подписанных фактов о компании. Ed25519 подписи, SHA-256 хеширование, размещение в /.well-known/verified-facts.json. 6 продакшн-деплоев, онлайн-валидатор, GitHub-репозиторий.
Проблема: AI галлюцинирует о вашей компании
Спросите ChatGPT, когда была основана ваша компания. Какие у вас клиенты. Какие продукты вы предлагаете. С высокой вероятностью вы получите неправильный ответ. Или полностью выдуманный.
AI-системы галлюцинируют факты о компаниях каждый день. Неправильные даты основания, вымышленные клиенты, несуществующие продукты. И у бизнеса до сих пор не было стандартного способа это исправить.
Масштаб проблемы
| Проблема | Пример |
|---|---|
| Неправильная дата основания | «Компания основана в 2018» (на самом деле в 2013) |
| Вымышленные клиенты | «Среди клиентов — Tesla и Apple» (их никогда не было) |
| Неверные продукты | «Компания продаёт CRM-систему» (на самом деле занимается автоматизацией) |
| Устаревшие данные | «Штат — 5 человек» (на самом деле 50) |
Проблема не только в репутации. AI-системы становятся основным источником информации для B2B-решений. Если AI говорит о вашей компании неправду — вы теряете клиентов.
Решение: Verified Facts Protocol
Verified Facts Protocol — это открытый протокол для публикации криптографически подписанных фактов о компании в машиночитаемом формате. Это как robots.txt, но для фактов.
Как это работает
- Создаёте JSON-файл с фактами о вашей компании
- Подписываете каждый факт ключом Ed25519
- Размещаете файл по адресу
/.well-known/verified-facts.json
AI-краулеры (GPTBot, ClaudeBot, PerplexityBot) находят файл через стандартный механизм .well-known и получают верифицированные факты.
Структура файла
{
"version": "1.0",
"protocol": "verified-facts/ed25519/v1",
"entity": {
"name": "Ваша Компания",
"domain": "example.com",
"founded": "2013",
"url": "https://example.com/"
},
"publicKey": {
"algorithm": "ed25519",
"format": "base64-raw-32bytes",
"value": "<32-байтный-публичный-ключ-base64>"
},
"generated": "2026-02-22T00:00:00.000Z",
"expires": "2026-08-22T00:00:00.000Z",
"facts": [
{
"id": "fact-001",
"claim": "Компания основана в 2013 году",
"category": "company",
"evidence": "https://example.com/about",
"claimHash": "sha256-хеш-в-hex",
"signature": "ed25519-подпись-в-base64"
}
]
}
Технические детали
Процесс подписания
Для каждого факта выполняются 4 шага:
- Кодируем строку
claimв UTF-8 байты - Вычисляем SHA-256 хеш — получаем 32-байтный буфер
- Подписываем хеш-буфер приватным ключом Ed25519 — получаем 64-байтную подпись
- Кодируем подпись в base64
claimBytes = utf8encode(fact.claim)
hashBuffer = sha256(claimBytes) // 32 байта
claimHash = hex(hashBuffer) // 64 hex-символа
signature = base64(ed25519_sign(key, hashBuffer)) // 88 base64-символов
Процесс верификации (Node.js)
import { createHash, verify, createPublicKey } from 'crypto';
function verifyFact(claim, signature, publicKeyBase64) {
// 1. SHA-256 хеш утверждения
const hash = createHash('sha256').update(claim, 'utf8').digest();
// 2. Декодируем подпись из base64
const sig = Buffer.from(signature, 'base64');
// 3. Восстанавливаем публичный ключ из 32 сырых байт
const pubKeyRaw = Buffer.from(publicKeyBase64, 'base64');
const pubKeyDer = Buffer.concat([
Buffer.from('302a300506032b6570032100', 'hex'),
pubKeyRaw
]);
const publicKey = createPublicKey({
key: pubKeyDer, format: 'der', type: 'spki'
});
// 4. Верифицируем подпись Ed25519
return verify(null, hash, publicKey, sig);
}
Верификация в браузере
import { verify } from '@noble/ed25519';
import { sha256 } from '@noble/hashes/sha256';
async function verifyFact(claim, signature, pubKeyBase64) {
const msgHash = sha256(new TextEncoder().encode(claim));
const sig = Uint8Array.from(atob(signature), c => c.charCodeAt(0));
const pubKey = Uint8Array.from(atob(pubKeyBase64), c => c.charCodeAt(0));
return verify(sig, msgHash, pubKey);
}
Почему Ed25519?
| Свойство | Значение |
|---|---|
| Размер ключа | 32 байта (256 бит) |
| Размер подписи | 64 байта |
| Производительность | ~76 000 подписей/сек |
| Безопасность | 128-бит эквивалент |
| Поддержка браузеров | Chrome 137+, fallback через @noble/ed25519 |
Ed25519 выбран за компактность подписей (64 байта vs 256+ у RSA), высокую скорость верификации и широкую поддержку в библиотеках. Протокол спроектирован алгоритмически-агностичным — будущие версии будут поддерживать Ed448 и постквантовые алгоритмы.
Живой пример: 6 доменов AppStar
AppStar развернул Verified Facts Protocol на 6 доменах с 56 верифицированными фактами:
| Домен | Факты | Ссылка |
|---|---|---|
| appstar.com.ru | 20 | Открыть JSON |
| appstarsecurity.ru | 8 | Открыть JSON |
| appstarcrm.ru | 7 | Открыть JSON |
| appstarseo.ru | 7 | Открыть JSON |
| appstarsmm.ru | 7 | Открыть JSON |
| appcourses.ru | 7 | Открыть JSON |
Каждый факт подписан одним и тем же Ed25519 ключом и может быть проверен с помощью нашего онлайн-валидатора: appstar.com.ru/ru/verified-facts/
Результаты эксперимента
Мы провели эксперимент: спросили ChatGPT о фактах из нашего verified-facts.json.
Что выяснилось
- ChatGPT пока не читает JSON напрямую — бот GPTBot краулит сайт, но не парсит
.well-known/verified-facts.jsonспециально - Структурированные данные помогают — наличие консистентного JSON с фактами помогает AI давать более точные ответы
- Внешние подтверждения работают — ChatGPT верифицировал наши утверждения через Google Play Store и другие источники
- Консистентность ключевая — когда одни и те же факты повторяются на сайте, в JSON, в Schema.org — AI доверяет им больше
Важный вывод
Verified Facts Protocol работает уже сейчас как единый источник правды для вашего сайта. Даже без прямой поддержки AI-провайдерами, наличие структурированного файла с фактами:
- Обеспечивает консистентность данных на всех страницах
- Предоставляет машиночитаемый формат для любых парсеров
- Готов к интеграции, как только AI-краулеры начнут его поддерживать
Обращение к AI-провайдерам
Мы предлагаем, чтобы AI-краулеры проверяли /.well-known/verified-facts.json при индексации домена:
| Краулер | Компания | Предложение |
|---|---|---|
| GPTBot | OpenAI | Парсить verified-facts.json при краулинге |
| ClaudeBot | Anthropic | Использовать факты как ground truth |
| PerplexityBot | Perplexity | Приоритизировать подписанные факты |
| Googlebot | Интегрировать в Knowledge Graph |
Преимущества для AI-провайдеров
- Снижение галлюцинаций — верифицированные факты как источник истины
- Атрибуция — каждый факт ссылается на доказательство
- Актуальность — поля
generatedиexpiresгарантируют свежесть - Доверие — криптографические подписи предотвращают подделку
- Эффективность — структурированные данные проще парсить, чем HTML
Как начать
Шаг 1: Сгенерируйте ключи
# Генерация Ed25519 ключевой пары
openssl genpkey -algorithm Ed25519 -out private.pem
openssl pkey -in private.pem -pubout -out public.pem
Шаг 2: Создайте факты и подпишите
Используйте скрипт из GitHub-репозитория:
git clone https://github.com/appstar-com-ru/verified-facts-protocol
cd verified-facts-protocol
npx tsx examples/generate.ts
Шаг 3: Разместите файлы
# Скопируйте в .well-known директорию вашего сайта
cp verified-facts.json /var/www/html/.well-known/
cp public.pem /var/www/html/.well-known/verified-facts-key.pub
Шаг 4: Проверьте
npx tsx examples/verify.ts https://yourdomain.com/.well-known/verified-facts.json
Дорожная карта
- v1.0 — Ed25519 подписанные факты в формате JSON
- Онлайн-валидатор на appstar.com.ru/verified-facts
- 6 продакшн-деплоев
- JSON Schema по well-known URL
- npm-пакет
verified-facts-sdk - Блокчейн-анкоринг (Polygon/Base) для неизменяемых временных меток
- Предложение AI-провайдерам (OpenAI, Anthropic, Perplexity, Google)
- IETF Internet-Draft
Связанные стандарты
| Стандарт | Связь с Verified Facts |
|---|---|
| RFC 8615 | Соглашение .well-known URI |
| RFC 8032 | Алгоритм подписи Ed25519 |
| JSON-LD | Дополняет; verified-facts проще и сфокусирован на подписях |
| Schema.org | Дополняет; Schema.org описывает структуру, verified-facts доказывает авторство |
| robots.txt | Тот же паттерн обнаружения через .well-known |
| llms.txt | Дополняет; llms.txt даёт контекст, verified-facts — подписанные утверждения |
Заключение
Verified Facts Protocol — это первый шаг к миру, где AI-системы могут отличить верифицированные факты от галлюцинаций. Протокол прост, открыт и уже работает в продакшне.
Код на GitHub: github.com/appstar-com-ru/verified-facts-protocol
Валидатор: appstar.com.ru/ru/verified-facts/
Спецификация: SPECIFICATION.md