🛡️ 安全警告 (Security Warning)

注意:在使用此公钥之前,请务必交叉比对多个渠道的指纹信息。如果出现以下任何一种情况,请 立即放弃 使用并停止通信:

  1. 任何一个渠道(DNS、GitHub、Keyoxide)显示的指纹与本页面不符。
  2. 导入后通过 gpg --fingerprint 查看到的指纹不匹配。
  3. 签名验证失败。

本公钥的唯一合法指纹 (Fingerprint)

85F1 E2C5 9766 CB40 FC87 8B1C 457C 726D 13DB 58CC

自动化导入方式

两种基于标准协议的方式,在终端一键获取并验证公钥

# 方法 A:基于 WKD (Web Key Directory) 直接从域名服务器获取密钥的先进协议
gpg --locate-keys contact@picatria.org.cn

# 方法B: 基于全球主流的公钥服务器 =keys.openpgp.org=
gpg --keyserver hkps://keys.openpgp.org --search-keys contact@picatria.org.cn

Linux/macOS 用户 shell 脚本验证与导入

#!/bin/bash

# --- 配置区 ---
TRUSTED_FPR="85F1E2C59766CB40FC878B1C457C726D13DB58CC"
DOMAIN="picatria.org.cn"
GH_USER="EdgeOfSun"
# 这里填入你 proof.md 所在的 Gist ID (即 URL 最后那串字符)
GH_GIST_ID="b65de1cd8b2f4cd1ec925addb8527908"
PUBKEY_URL="https://$DOMAIN/publickey.asc"

echo "-------------------------------"
echo "🔍 开始进行三方身份交叉验证..."
echo "-------------------------------"

# 1. 获取网站公钥文件的指纹
#    逻辑:下载公钥 -> GPG 读取指纹 -> 提取第10字段 -> 取第一行
SITE_FPR=$(curl -sL "$PUBKEY_URL" | \
    gpg --import-options show-only --import --with-colons | \
    grep "^fpr" | \
    cut -d: -f10 | head -n 1)

# 2. 从 DNS TXT 记录提取指纹
#    逻辑:查询 TXT 记录 -> 匹配40位十六进制 -> 取第一行
DNS_FPR=$(dig +short TXT "$DOMAIN" | \
    grep -oE "[0-9A-F]{40}" | head -n 1)

# 3. [已更新] 从 GitHub Gist (proof.md) 获取指纹
#    逻辑:构造 Raw 链接 -> 下载内容 -> 匹配 openpgp4fpr:指纹 格式 -> 提取指纹部分
#    注意:GitHub 原生页面包含 HTML,必须使用 gist.githubusercontent.com 获取纯文本
GH_RAW_URL="https://gist.githubusercontent.com/$GH_USER/$GH_GIST_ID/raw"
#    这里 grep 匹配 "openpgp4fpr:指纹" 并截取冒号后面的部分
GH_FPR=$(curl -sL "$GH_RAW_URL" | \
    grep -oE "openpgp4fpr:[0-9A-F]{40}" | \
    cut -d: -f2 | \
    head -n 1)

# --- 验证对比逻辑 ---
ERROR=0

# 对比网站
if [[ "$SITE_FPR" == "$TRUSTED_FPR" ]]; then
    echo "✅ [1/3] 网站公钥文件通过"
else
    echo "❌ [1/3] 网站公钥不匹配!(获取到: ${SITE_FPR:-为空})"
    ERROR=1
fi

# 对比 DNS
if [[ "$DNS_FPR" == "$TRUSTED_FPR" ]]; then
    echo "✅ [2/3] DNS TXT 记录通过"
else
    echo "❌ [2/3] DNS 记录不匹配!(获取到: ${DNS_FPR:-为空})"
    ERROR=1
fi

# 对比 GitHub
if [[ "$GH_FPR" == "$TRUSTED_FPR" ]]; then
    echo "✅ [3/3] GitHub Gist 证明通过"
else
    echo "❌ [3/3] GitHub Gist 证明不匹配!"
    echo "    期望: openpgp4fpr:$TRUSTED_FPR"
    echo "    实际获取内容可能为空或格式错误,检查 Gist ID 是否正确。"
    ERROR=1
fi

# --- 交互确认环节 ---

if [ $ERROR -eq 0 ]; then
    echo -e "\n🎉 交叉验证全数通过!所有来源指向同一个身份。"
    echo "------------------------------------------------"

    # 提示用户进行选择
    echo -n "❓ 是否现在将此公钥导入您的 GPG 钥匙串? [y/N]: "
    read -r response

    case "$response" in
        [yY][eE][sS]|[yY])
            echo "🚀 正在执行导入..."
            curl -sL "$PUBKEY_URL" | gpg --import
            echo "✨ 导入完成。您可以运行 'gpg --fingerprint contact@picatria.org.cn' 进行最终确认。"
            ;;
        *)
            echo "✋ 已取消操作。未对您的系统进行任何更改。"
            exit 0
            ;;
    esac
else
    echo -e "\n🚨 严重警告:多方验证不一致!"
    echo "这可能意味着其中一个渠道已被入侵或篡改。为了安全,已自动终止。"
    exit 1
fi

手动身份核实

为了确保此公钥真实可靠,你可以通过以下方式交叉验证:

  1. Keyoxide 验证结果 (推荐):查看基于域名和 GitHub 的自动化证明报告。
  2. DNS 验证 :在终端运行以下命令:
          dig TXT picatria.org.cn
    
  3. GitHub 验证 :访问我的 GitHub Profile ,查看简介中的指纹及绿色的 Verified 标志。

下载与使用

  • 公钥下载:publickey.asc
  • 直接导入:
        curl https://picatria.org.cn/publickey.asc | gpg --import
    

公钥正文 (Public Key Block)

-----BEGIN PGP PUBLIC KEY BLOCK-----

mDMEaUcGTRYJKwYBBAHaRw8BAQdAL96HTmMXJy2AM7gouuUQMjk2RxtoKJufuj4t
o9axXWS0NXBpY2F0cmlhIChQaWNhc3NvIFRyaWFuZ2xlKSA8Y29udGFjdEBwaWNh
dHJpYS5vcmcuY24+iQFWBBMWCgD+AhsDBQsJCAcCAiICBhUKCQgLAgQWAgMBAh4H
AheAFiEEhfHixZdmy0D8h4scRXxybRPbWMwFAmlHgQVbFIAAAAAAEABCcHJvb2ZA
YXJpYWRuZS5pZGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL0VkZ2VPZlN1bi9iNjVk
ZTFjZDhiMmY0Y2QxZWM5MjVhZGRiODUyNzkwODAUgAAAAAAQABdwcm9vZkBhcmlh
ZG5lLmlkaHR0cHM6Ly9waWNhdHJpYS5vcmcuY241FIAAAAAAEAAccHJvb2ZAYXJp
YWRuZS5pZGRuczpwaWNhdHJpYS5vcmcuY24/dHlwZT1UWFQACgkQRXxybRPbWMzN
KwEA0d0D1/Lcn6yGFt0063wIZxtpBYOolEl++AseSw7oJqwA/1pVoqA8cAzIDlQz
E5y+NlMzPQ8V65zbvfUez4QM7NEGuDgEaUcGTRIKKwYBBAGXVQEFAQEHQIrQfdkc
yvxjjCmhxNCCl5Lnrk6IlcjlX5x3f17buMZEAwEIB4h4BBgWCgAgFiEEhfHixZdm
y0D8h4scRXxybRPbWMwFAmlHBk0CGwwACgkQRXxybRPbWMxsSgEAmTvSY3dSs+rC
1HF7nq95J5pMezah/b8gBSOy5XoKnUIA/jhIHR8mlWHElYqe3uvM8tj3aLKuxFjZ
PZZk3XAZcRcC
=Bevc
-----END PGP PUBLIC KEY BLOCK-----