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 的事实版本。
工作原理
- 创建包含公司事实的 JSON 文件
- 签名使用 Ed25519 私钥签名每个事实
- 托管将文件放在
/.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.ru | 20 | 查看JSON |
| appstarsecurity.ru | 8 | 查看JSON |
| appstarcrm.ru | 7 | 查看JSON |
| appstarseo.ru | 7 | 查看JSON |
| appstarsmm.ru | 7 | 查看JSON |
| appcourses.ru | 7 | 查看JSON |
实验结果
我们进行了一项实验:向 ChatGPT 询问我们 verified-facts.json 中的事实。
主要发现
- ChatGPT 目前不直接读取 JSON — GPTBot 会爬取网站,但不会专门解析 verified-facts.json
- 结构化数据有帮助 — 拥有一致的事实 JSON 有助于 AI 给出更准确的回答
- 外部确认有效 — ChatGPT 通过 Google Play Store 等来源验证了我们的声明
- 一致性是关键 — 当相同的事实在网站、JSON、Schema.org 中重复出现时,AI 更加信任它们
致 AI 提供商
我们建议 AI 爬虫在索引域名时检查 /.well-known/verified-facts.json:
| 爬虫 | 公司 | 建议 |
|---|---|---|
| GPTBot | OpenAI | 爬取时解析 verified-facts.json |
| ClaudeBot | Anthropic | 将事实作为真实依据 |
| PerplexityBot | Perplexity | 优先使用签名事实 |
| Googlebot | 集成到知识图谱 |
如何开始
# 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