一个用于发布关于组织的加密签名事实的开放协议。Ed25519签名、SHA-256哈希,托管在/.well-known/verified-facts.json。6个生产部署,在线验证器。

Verified Facts Protocol:如何帮助AI停止编造关于您公司的信息
February 22, 202612 min readAppStar

Verified Facts Protocol:如何帮助AI停止编造关于您公司的信息

一个用于发布关于组织的加密签名事实的开放协议。Ed25519签名、SHA-256哈希,托管在/.well-known/verified-facts.json。6个生产部署,在线验证器。

AIverified-factsed25519cryptographyprotocolSEOanti-hallucination

问题:AI 在编造关于您公司的事实

问问 ChatGPT 您的公司是什么时候成立的,您的客户是谁,您提供什么产品。很大概率会得到错误的答案,甚至是完全编造的信息。

AI 系统每天都在编造关于公司的事实。错误的成立日期、虚构的客户名单、不存在的产品。企业一直没有标准化的方式来解决这个问题。

问题的规模

问题示例
错误的成立日期"公司成立于2018年"(实际为2013年)
虚构的客户"客户包括特斯拉和苹果"(从未合作过)
错误的产品"公司销售CRM系统"(实际从事自动化
过时的信息"团队5人"(实际50人)

解决方案:Verified Facts Protocol

Verified Facts Protocol 是一个开放协议,用于以机器可读格式发布关于组织的加密签名事实。可以将其理解为 robots.txt 的事实版本。

工作原理

  1. 创建包含公司事实的 JSON 文件
  2. 签名使用 Ed25519 私钥签名每个事实
  3. 托管将文件放在 /.well-known/verified-facts.json

文件结构

{
  "version": "1.0",
  "protocol": "verified-facts/ed25519/v1",
  "entity": {
    "name": "您的公司",
    "domain": "example.com",
    "url": "https://example.com/"
  },
  "publicKey": {
    "algorithm": "ed25519",
    "value": "<32字节公钥base64>"
  },
  "facts": [
    {
      "id": "fact-001",
      "claim": "公司成立于2020年",
      "category": "company",
      "evidence": "https://example.com/about",
      "claimHash": "sha256哈希",
      "signature": "ed25519签名"
    }
  ]
}

技术细节

签名流程

claimBytes = utf8encode(fact.claim)
hashBuffer = sha256(claimBytes)          // 32 字节
claimHash  = hex(hashBuffer)             // 64 个十六进制字符
signature  = base64(ed25519_sign(key, hashBuffer))

Node.js 验证

import { createHash, verify, createPublicKey } from 'crypto';

function verifyFact(claim, signature, publicKeyBase64) {
  const hash = createHash('sha256').update(claim, 'utf8').digest();
  const sig = Buffer.from(signature, 'base64');
  const pubKeyRaw = Buffer.from(publicKeyBase64, 'base64');
  const pubKeyDer = Buffer.concat([
    Buffer.from('302a300506032b6570032100', 'hex'),
    pubKeyRaw
  ]);
  const publicKey = createPublicKey({
    key: pubKeyDer, format: 'der', type: 'spki'
  });
  return verify(null, hash, publicKey, sig);
}

为什么选择 Ed25519?

属性
密钥大小32 字节(256位)
签名大小64 字节
性能~76,000 签名/秒
安全性128位等效
浏览器支持Chrome 137+,通过 @noble/ed25519 回退

Ed25519 因其紧凑的签名(64字节 vs RSA的256+字节)、快速验证和广泛的库支持而被选中。


实际案例:6个 AppStar 域名

AppStar 已在6个域名上部署了 Verified Facts Protocol,共56个经过验证的事实:

域名事实数量链接
appstar.com.ru20查看JSON
appstarsecurity.ru8查看JSON
appstarcrm.ru7查看JSON
appstarseo.ru7查看JSON
appstarsmm.ru7查看JSON
appcourses.ru7查看JSON

实验结果

我们进行了一项实验:向 ChatGPT 询问我们 verified-facts.json 中的事实。

主要发现

  1. ChatGPT 目前不直接读取 JSON — GPTBot 会爬取网站,但不会专门解析 verified-facts.json
  2. 结构化数据有帮助 — 拥有一致的事实 JSON 有助于 AI 给出更准确的回答
  3. 外部确认有效 — ChatGPT 通过 Google Play Store 等来源验证了我们的声明
  4. 一致性是关键 — 当相同的事实在网站、JSON、Schema.org 中重复出现时,AI 更加信任它们

致 AI 提供商

我们建议 AI 爬虫在索引域名时检查 /.well-known/verified-facts.json

爬虫公司建议
GPTBotOpenAI爬取时解析 verified-facts.json
ClaudeBotAnthropic将事实作为真实依据
PerplexityBotPerplexity优先使用签名事实
GooglebotGoogle集成到知识图谱

如何开始

# 1. 生成 Ed25519 密钥对
openssl genpkey -algorithm Ed25519 -out private.pem
openssl pkey -in private.pem -pubout -out public.pem

# 2. 克隆仓库并生成事实
git clone https://github.com/appstar-com-ru/verified-facts-protocol
cd verified-facts-protocol
npx tsx examples/generate.ts

# 3. 部署到网站
cp verified-facts.json /var/www/html/.well-known/

# 4. 验证
npx tsx examples/verify.ts https://yourdomain.com/.well-known/verified-facts.json

路线图

  • v1.0 — JSON 格式的 Ed25519 签名事实
  • 在线验证器
  • 6个生产环境部署
  • npm 包 verified-facts-sdk
  • 区块链锚定(Polygon/Base)
  • IETF Internet-Draft

GitHub: github.com/appstar-com-ru/verified-facts-protocol

Related Articles