CEH-Orbit 协议技术规范(Spec)V1.0

简介: CEH-Orbit是一种基于格密码的后量子认证协议(V1.0),由陈恩华提出。其核心通过随机掩码生成高维轨道向量,压缩为OrbitHead,结合消息派生挑战,并验证轨道重建一致性,确保抗量子攻击能力。

协议名称:CEH-Orbit Post-Quantum Authentication Protocol

版本:V1.0

作者:陈恩华(Chen Enhua)

协议标识CEH_ORBIT_PROTOCOL_V1

发布日期:2026年3月


1. 目的

CEH-Orbit 协议定义了一种基于格结构与轨道映射的认证 / 签名机制。其核心思想是:

  • 从随机掩码生成高维轨道向量;
  • 将轨道向量压缩为轨道头 OrbitHead
  • 通过 OrbitHead + Message 派生挑战;
  • 通过重建轨道并比较轨道头来完成验证。

本规范的目标是给出一致、可复现、可互操作的实现标准,为后续研究、工程开发及标准化提供基础。


2. 术语

术语 说明
BaseOrbitGen 公开基向量,即公钥中的基底 (A)
CoreVector_S 私密短向量,即私钥 (s)
PublicOrbit_T 公开向量,满足 (T = A \cdot s)
StochasticMask 签名阶段的随机掩码 (y)
OrbitTrace_W 签名阶段的轨道轨迹 (w = A y)
EncodedOrbit_Z 签名输出响应 (z = y + c s)
GeometricPivot OrbitHead + Message 派生的挑战向量 (c)
OrbitHead 轨道头,包含 LSHPhase 两部分
LSH 局部敏感哈希,128 位
Phase 相位向量,(K) 段,每段取值 (0 \sim 3)

3. 参数

3.1 默认参数

#define LATTICE_DIM_N       128
#define MOD_Q               3329
#define ORBIT_ZONE_COUNT    16
#define ORBIT_WIDTH_CEH     32
#define RESPONSE_BOUND      260
#define PIVOT_WEIGHT        8

3.2 参数含义

参数 含义
LATTICE_DIM_N 向量维数,即环 (R_q) 的维度
MOD_Q 模数,素数
ORBIT_ZONE_COUNT 相位分段数 (K)
ORBIT_WIDTH_CEH LSH 量化宽度 (\Delta)
RESPONSE_BOUND 响应向量绝对值边界 (Z_{\max})
PIVOT_WEIGHT 挑战稀疏权重 (\kappa)

3.3 常量定义

#define CEH_MAGIC           0x434548       // ASCII: "CEH"
#define ARCH_IDENTIFIER     "CEH_ORBIT_V1" // 域分离架构标识

4. 域分离常量

协议使用以下域分离前缀,确保不同上下文的哈希输出不会发生冲突:

#define CEH_DOMAIN_HEAD      "CEH_ORBIT_HEAD_V1"
#define CEH_DOMAIN_CHALLENGE "CEH_ORBIT_CHALLENGE_V1"
#define CEH_DOMAIN_BIND      "CEH_ORBIT_BIND_V1"

用途如下:

  • HEAD:轨道头专用上下文(当前规范中预留,供扩展)
  • CHALLENGE:挑战派生上下文
  • BIND:签名绑定哈希上下文

所有哈希调用均应将这些字符串作为前缀与数据拼接。


5. 数学基础

5.1 模运算

定义 ( \mathrm{mod}_q(x) ) 将整数 (x) 映射到区间 ([0, q-1]):

modq(x)=xmodq

其结果必须落在:

[0,q1]

5.2 中心化表示

定义:

centered(x)={x,xq,0xq/2otherwise

即:先将 (x) 模到 ([0, q-1]),若结果大于 (q/2),则减去 (q),使结果落入:

(q/2,q/2]

5.3 负循环卷积

定义环:

Rq=q[x]/(xN+1)

因此有:

xN=1

给定:

a(x),b(x)Rq

乘积:

c(x)=a(x)b(x)mod(xN+1)

可通过负循环卷积实现。坐标形式可写为:

ck=i+j=k0i,j<Naibji+j=k+N0i,j<Naibj(modq)

工程实现中可直接使用 (O(N^2)) 累加,并在 (i+j \ge N) 时对结果取负号折返。


6. 数据结构

6.1 OrbitHead

struct OrbitHead {
    uint64_t lsh[2];                       // 128 位 LSH
    uint8_t  phase[ORBIT_ZONE_COUNT];      // 每段实际用 1 字节存储,值域 0..3
};

说明:

  • lsh[0] 对应位置 (0 \sim 63)
  • lsh[1] 对应位置 (64 \sim 127)
  • phase[k] 的合法值范围为 (0 \sim 3)

6.2 CEH_KeyPair

struct CEH_KeyPair {
    int BaseOrbitGen[LATTICE_DIM_N];   // 公钥 A
    int CoreVector_S[LATTICE_DIM_N];   // 私钥 s
    int PublicOrbit_T[LATTICE_DIM_N];  // 公钥 T = A·s
};

6.3 CEH_Signature

struct CEH_Signature {
    int          EncodedOrbit_Z[LATTICE_DIM_N]; // 响应 z
    OrbitHead    OrbitHeadRef;                  // 签名时计算的轨道头
    int          GeometricPivot[LATTICE_DIM_N]; // 挑战 c
    uint64_t     BindAuthHash;                  // 绑定哈希 h
};

7. 轨道头构造

7.1 LSH 计算

给定向量:

wRNq

其中心化表示为:

w¯i=centered(wi)

设量化宽度:

Δ=ORBIT\_WIDTH\_CEH

定义第 (i) 位:

bi=(w¯iΔiCEH_MAGIC)&1

其中:

  • (\oplus) 表示按位异或
  • (&) 表示按位与

然后将 (b_i) 写入 LSH:

  • 若 (i \in [0,63]),写入 lsh[0] 的第 (i) 位
  • 若 (i \in [64,127]),写入 lsh[1] 的第 (i-64) 位

7.2 Phase 计算

将 (w) 等分为:

K=ORBIT\_ZONE\_COUNT

段,每段长度:

L=N/K

对于第 (k) 段((0 \le k < K)):

ϕk=(i=kL(k+1)L1centered(wi))mod4

最后归一化到:

[0,3]

7.3 轨道头函数

BuildOrbitHead(w)(lsh,phase)

实现必须严格按本节规则构造。


8. 挑战派生

挑战 (c) 必须由以下信息共同派生:

  • 域前缀 CEH_DOMAIN_CHALLENGE
  • 架构标识 ARCH_IDENTIFIER
  • 轨道头 lsh
  • 轨道头 phase
  • 消息负载 MessagePayload

8.1 输入字节流

拼接顺序必须严格如下:

ChallengeInput =
    ASCII(CEH_DOMAIN_CHALLENGE)
    ASCII(ARCH_IDENTIFIER)
    LE64(OrbitHead.lsh[0])
    LE64(OrbitHead.lsh[1])
    BYTE(OrbitHead.phase[0])
    BYTE(OrbitHead.phase[1])
    ...
    BYTE(OrbitHead.phase[K-1])
    MessagePayload

其中:

  • ASCII(...):原始 ASCII 字节,不带终止符
  • LE64(x):64 位整数的 little-endian 编码
  • BYTE(x):取低 8 位作为单字节
  • MessagePayload:消息原始字节串

8.2 派生方法

计算:

seed=SHA25664(ChallengeInput)

即:取 SHA256(ChallengeInput) 的前 8 字节,按 little-endian 解释为 64 位整数。

用该 seed 初始化 MT19937_64

然后生成长度为 (N) 的稀疏挑战向量 (c):

  1. 初始为全 0
  2. 随机选择 PIVOT_WEIGHT 个不同位置
  3. 每个位置随机赋值为:
  • (1)
  • 或 (Q-1)(即模 (Q) 下的 (-1))

9. 绑定哈希

绑定哈希 (h) 必须由以下信息派生:

  • 域前缀 CEH_DOMAIN_BIND
  • 架构标识 ARCH_IDENTIFIER
  • 响应向量 EncodedOrbit_Z
  • 挑战向量 GeometricPivot
  • 消息负载 MessagePayload

9.1 输入字节流

BindInput =
    ASCII(CEH_DOMAIN_BIND)
    ASCII(ARCH_IDENTIFIER)
    LE16(EncodedOrbit_Z[0])
    LE16(EncodedOrbit_Z[1])
    ...
    LE16(EncodedOrbit_Z[N-1])
    LE16(GeometricPivot[0])
    LE16(GeometricPivot[1])
    ...
    LE16(GeometricPivot[N-1])
    MessagePayload

说明:

  • 所有整型在编码前必须先做 mod_q(x)
  • LE16(x) 表示 16 位 little-endian 编码

9.2 派生方法

计算:

digest=SHA256(BindInput)

取前 8 字节并按 little-endian 解释为:

h=LE64(digest[0..7])


10. 密钥生成(KeyGen)

10.1 输入

随机源 rng(建议使用 CSPRNG)。

10.2 过程

  1. 生成:

BaseOrbitGen[i]Uniform(0,Q1)

  1. 生成私钥 (s_i):

si=1,1,0,r=0r=1otherwise r[0,11]

即:

  • 以 (1/12) 概率取 (1)
  • 以 (1/12) 概率取 (-1)
  • 其余取 (0)
  1. 计算:

T=As

使用负循环卷积实现。

10.3 伪代码

KeyPair keygen(rng) {
    for i in 0..N-1:
        BaseOrbitGen[i] = rng() % Q;
        r = rng() % 12;
        if r == 0: CoreVector_S[i] = 1;
        else if r == 1: CoreVector_S[i] = -1;
        else: CoreVector_S[i] = 0;
    PublicOrbit_T = negacyclic_mul(BaseOrbitGen, CoreVector_S);
    return (BaseOrbitGen, CoreVector_S, PublicOrbit_T);
}

11. 签名(Sign)

11.1 输入

  • 私钥 CoreVector_S
  • 公钥基底 BaseOrbitGen
  • 消息 MessagePayload
  • 随机源 rng

11.2 输出

  • 签名结构 CEH_Signature

11.3 过程

重复以下步骤直到成功:

  1. 采样随机掩码:

yi[200,200]

  1. 计算轨道:

w=Ay

  1. 计算轨道头:

H=BuildOrbitHead(w)

  1. 派生挑战:

c=DeriveChallenge(H,msg)

  1. 计算:

u=cs

  1. 计算响应:

zi=yi+centered(ui)

  1. 若:

z>RESPONSE\_BOUND

则拒绝并重采样。

  1. 计算绑定哈希:

h=BindHash(z,c,msg)

  1. 输出:

(z,H,c,h)

11.4 伪代码

Signature sign(KeyPair kp, msg, rng) {
    while (true) {
        y = sample_uniform_small_vector();   // [-200,200]
        w = negacyclic_mul(kp.BaseOrbitGen, y);
        H = BuildOrbitHead(w);
        c = DeriveChallenge(H, msg);
        cs = negacyclic_mul(c, kp.CoreVector_S);
        for i in 0..N-1:
            z[i] = y[i] + centered(cs[i]);
        if max_abs(z) > RESPONSE_BOUND:
            continue;
        h = BindHash(z, c, msg);
        return Signature(z, H, c, h);
    }
}

12. 验证(Verify)

12.1 输入

  • 公钥 BaseOrbitGen
  • 公钥 PublicOrbit_T
  • 消息 MessagePayload
  • 签名 sig

12.2 输出

  • truefalse

12.3 过程

  1. 检查:

zRESPONSE\_BOUND

否则拒绝。

  1. 重算绑定哈希:

h=BindHash(z,c,msg)

若:

hh

则拒绝。

  1. 计算:

w=AzcT

  1. 计算轨道头:

H=BuildOrbitHead(w)

  1. 派生挑战:

c=DeriveChallenge(H,msg)

  1. 若:

cc

则拒绝。

  1. 若:

H.lshH.lshH.phaseH.phase

则拒绝。

  1. 否则接受。

12.4 伪代码

bool verify(KeyPair kp, msg, sig) {
    if max_abs(sig.z) > RESPONSE_BOUND: return false;
    if BindHash(sig.z, sig.c, msg) != sig.h: return false;
    Az = negacyclic_mul(kp.BaseOrbitGen, sig.z);
    Ct = negacyclic_mul(sig.c, kp.PublicOrbit_T);
    for i in 0..N-1:
        w[i] = mod_q(Az[i] - Ct[i]);
    Hp = BuildOrbitHead(w);
    cp = DeriveChallenge(Hp, msg);
    if cp != sig.c: return false;
    if Hp.lsh != sig.H.lsh: return false;
    if Hp.phase != sig.H.phase: return false;
    return true;
}

13. 字节流定义

本节定义互操作所需的数据编码规则。

13.1 整型编码

uint16 编码

先做:

x=modq(x)

再按 little-endian 编码:

byte0 = x & 0xFF
byte1 = (x >> 8) & 0xFF

uint64 编码

按 little-endian 编码:

for i in 0..7:
    byte[i] = (value >> (8*i)) & 0xFF

13.2 ChallengeInput 字节流

ChallengeInput =
    ASCII(CEH_DOMAIN_CHALLENGE)
    ASCII(ARCH_IDENTIFIER)
    LE64(OrbitHead.lsh[0])
    LE64(OrbitHead.lsh[1])
    BYTE(OrbitHead.phase[0])
    BYTE(OrbitHead.phase[1])
    ...
    BYTE(OrbitHead.phase[K-1])
    MessagePayload

13.3 BindInput 字节流

BindInput =
    ASCII(CEH_DOMAIN_BIND)
    ASCII(ARCH_IDENTIFIER)
    LE16(EncodedOrbit_Z[0])
    LE16(EncodedOrbit_Z[1])
    ...
    LE16(EncodedOrbit_Z[N-1])
    LE16(GeometricPivot[0])
    LE16(GeometricPivot[1])
    ...
    LE16(GeometricPivot[N-1])
    MessagePayload

注意:EncodedOrbit_ZGeometricPivot 序列化前必须先做 mod_q

13.4 签名二进制封装(建议)

建议采用如下封包格式:

SignaturePacket =
    MAGIC[4]            = "CEH1"
    VERSION[1]          = 0x01
    N[2]                = LE16(128)
    Q[2]                = LE16(3329)
    Z_COUNT[2]          = LE16(N)
    Z_STREAM[2*N]       = LE16(z[i])
    LSH_BLOCKS[1]       = 0x02
    LSH_STREAM[16]      = LE64(lsh[0]) || LE64(lsh[1])
    PHASE_COUNT[1]      = K
    PHASE_STREAM[K]     = phase[i]
    PIVOT_COUNT[2]      = LE16(N)
    PIVOT_STREAM[2*N]   = LE16(c[i])
    BIND_AUTH[8]        = LE64(BindAuthHash)

该封装为建议格式,不强制,但不同实现必须保证核心字段语义一致。


14. 安全考量

14.1 安全假设

CEH-Orbit 当前实现的安全性依赖于以下假设:

  • 环上 SIS / LWE 类困难问题的计算困难性(当前仅为结构来源,尚未完成严格归约)
  • SHA256 被视为安全哈希函数
  • MT19937_64 在此仅作为工程性挑战展开器;若进入严格密码场景,建议替换为密码学安全 XOF / PRF
  • 实现层面不存在侧信道泄露

14.2 已具备的安全属性

  • 消息绑定:挑战中显式包含消息
  • 域分离:不同上下文哈希使用不同前缀
  • 绑定哈希:将 (z) 与 (c) 绑定
  • 轨道锁定:要求恢复轨道头与签名头完全一致
  • 拒绝采样:限制 (z) 的幅度,降低统计泄露风险

14.3 当前安全强度说明

在默认参数:

N=128,Q=3329

下,该实现应视为研究原型级参数

不应宣称达到正式工业级或标准化强度。

14.4 尚未完成的工作

  • 形式化安全归约(至 SIS / LWE)
  • EUF-CMA 安全证明
  • 参数标准化与安全强度评估
  • 常数时间实现与侧信道防护
  • CSPRNG / XOF 替换与协议强化

15. 错误处理规范

对外接口建议统一返回:

VERIFY_FAIL

不要暴露如下内部失败原因:

  • Z_OUT_OF_RANGE
  • BIND_HASH_MISMATCH
  • PIVOT_MISMATCH
  • LSH_MISMATCH
  • PHASE_MISMATCH

调试阶段可记录内部日志,但生产接口应统一失败返回,以降低侧信道信息泄露。


16. 一致性要求

所有实现必须保证以下一致性:

  1. 相同参数集
  2. 相同域分离字符串
  3. 相同 little-endian 字节序
  4. 相同 mod_q / centered 定义
  5. 相同 LSH 规则(包含 CEH_MAGIC
  6. 相同 Phase 分段规则
  7. 相同挑战派生方法
  8. 相同绑定哈希构造方法

任何一项不一致,都可能导致跨实现不兼容。


17. 参考实现状态

当前参考实现(C++ / OpenSSL)已具备:

  • 完整 KeyGen / Sign / Verify
  • 消息绑定
  • 域分离
  • 拒绝采样与边界检查
  • 攻击测试(随机伪造、局部扰动)
  • 统计输出(碰撞率、分布、稳定性)

性能与大小数据如需写入正式规范,应以你当前实际测试结果为准。

若尚未做统一基准测试,建议不要在规范正文中写死具体毫秒数与字节数,以免后续版本不一致。


18. 开发者实现建议

18.1 实现顺序

  1. 实现 mod_qcentered
  2. 实现 negacyclic_mul
  3. 实现 BuildOrbitHead
  4. 实现 DeriveChallenge
  5. 实现 BindHash
  6. 实现 KeyGen / Sign / Verify

18.2 调试建议

  • 固定随机种子
  • 单独测试卷积正确性
  • 单独测试轨道头构造稳定性
  • 单独测试挑战可重复性
  • 使用已知测试向量交叉验证

18.3 安全增强建议

  • 使用密码学安全随机源替代普通 RNG
  • 使用常数时间比较函数
  • 对外统一失败返回
  • 后续考虑将 MT19937_64 替换为基于 SHAKE / XOF 的展开器

19. 最终定义

CEH-Orbit 协议的核心验证条件可形式化为:

$$ \mathrm{DeriveChallenge} \bigl( \mathrmA \cdot z - c \cdot T, ; msg \bigr)

c $$

且:

$$ \mathrmA \cdot z - c \cdot T

OrbitHeadRef $$

即:恢复的轨道必须重新生成相同的挑战,并且其轨道头必须与签名时记录的轨道头完全一致。

这意味着协议不是在验证单点代数值,而是在验证:

恢复的轨道是否重新落回签名时定义的同一轨道结构。


20. 版权与使用声明

© 2026 陈恩华(Chen Enhua) 代码地址 :https://gitee.com/chenenhua/CEH-orbit

本文档及其所描述的协议、算法、数据结构、实现约定及相关技术内容的知识产权归作者所有。

允许:

  • 非商业查看
  • 非商业学习
  • 非商业复制
  • 非商业研究与分发

但必须保留版权声明。

任何商业用途(包括但不限于产品集成、服务部署、企业交付、SaaS/API 商业化、OEM/ODM)必须事先获得作者明确的书面授权。

目录
相关文章
|
3月前
|
机器学习/深度学习 自然语言处理 算法
RAG 文档切分攻略:做好这步,检索精度提升 50%
本文深度解析RAG系统中易被忽视却至关重要的文档切分环节,系统拆解固定长度、语义结构化、混合切分三大方法,结合片段长度、重叠率、元数据标注等5大实操技巧与典型场景案例,助你避开常见陷阱,显著提升检索精度与大模型回答质量。
|
3月前
|
人工智能 API 调度
别再只依赖 ChatGPT 了:多模型协同,才是 AI 项目走向生产的关键一步
本文剖析AI项目落地困局:ChatGPT Agent类应用用户流失率超70%,根源不在模型不够强,而在于单模型架构难以支撑生产环境——稳定性差、成本高、难治理。文章从数据冲击、痛点直击等五维度论证,提出“多模型协同”是破局关键:按场景选模、统一调度、动态兜底,构建可控、可替换、可长期运行的AI系统架构。
|
3月前
|
JSON 文字识别 API
百度文心开源0.9B参数 PaddleOCR-VL-1.5,全球首个支持异形框定位的文档解析模型!
百度文心开源新一代文档解析模型PaddleOCR-VL-1.5:仅0.9B参数,在OmniDocBench v1.5达94.5%精度,全球首个支持异形框定位,精准识别倾斜、弯折、反光等“歪文档”,集成印章识别、多语种(含藏语/孟加拉语)及古籍解析能力,推理速度超MinerU2.5达43%。(239字)
959 2
|
3月前
|
人工智能 Linux API
[大模型实战 01] 本地大模型初体验:Ollama 部署与 Python 调用指南
大模型实战系列第一篇。拒绝晦涩理论,直接上手!我会带着各位友人们零基础安装 Ollama,利用国内 ModelScope 极速下载模型,详解服务端口配置与 Python 脚本调用,涵盖显存计算与常见避坑指南。
[大模型实战 01] 本地大模型初体验:Ollama 部署与 Python 调用指南
|
3月前
|
人工智能 机器人 API
OpenClaw 注册 Moltbook 教程 让你的个人 OpenClaw Agent 加入全球最大 AI 社区
本教程教你用开源AI助手OpenClaw,快速注册并接入全球首个纯AI社交平台Moltbook——一个仅限AI智能体发帖、评论、互动的Reddit式社区(截至2026年1月已超140万个AI活跃)。只需部署OpenClaw、安装Moltbook Skill、完成X平台验证,即可让个人AI agent加入全球AI对话网络。(239字)
1955 5
OpenClaw 注册 Moltbook 教程 让你的个人 OpenClaw Agent 加入全球最大 AI 社区
|
3月前
|
数据采集 人工智能 达摩院
达摩院开源RynnBrain:首个支持移动操作的具身大脑基础模型
达摩院发布首个可移动操作的具身基础模型RynnBrain,首创时空记忆与物理空间推理能力,支持视频/图像/文本多模态输入及区域、轨迹等具身输出。开源MOE架构RynnBrain-30B-A3B(仅3B激活参数),在16项基准全面SOTA,并推出全新评测集RynnBrain-Bench。
656 8
|
3月前
|
人工智能 JSON 自然语言处理
Agent Skills 究竟是什么?从玩具到工程化的必经之路
AI应用开发正从“Prompt驱动”迈向“技能驱动”。本文详解Agent Skills标准化实践:以Claude Code Skills为范本,用SKILL.md实现自描述技能;借MCP协议统一多源工具调用,解决兼容与安全难题;结合DeepSeek+OpenAI实战,展现可插拔、可审计、可演进的工业级Agent构建路径。
|
4月前
|
SQL 人工智能 分布式计算
从工单、文档到结构化知识库:一套可复用的 Agent 知识采集方案
我们构建了一套“自动提取 → 智能泛化 → 增量更新 → 向量化同步”的全链路自动化 pipeline,将 Agent 知识库建设中的收集、提质与维护难题转化为简单易用的 Python 工具,让知识高效、持续、低门槛地赋能智能体。
945 36
|
3月前
|
人工智能 文字识别 物联网
ModelScope魔搭社区发布月报 -- 26年2月
临近年关,ModelScope迎来春节模型发布潮:Qwen3、GLM-4.7、MiniMax M2.1等大模型密集上新;AIGC生图、语音合成、具身智能全面突破;OpenAPI、OAuth、Gallery等生态基建同步升级,加速AI开源普惠。(239字)
691 7
|
3月前
|
机器学习/深度学习 存储 人工智能
[大模型实战 03] 拆解 Transformers:从原理图解到 HuggingFace Transformers 实战
本文图解Transformer核心原理(注意力机制+位置编码),在Kaggle双T4 GPU环境下实战拆解Hugging Face“铁三角”(Config/Tokenizer/Model),并详解Temperature与Top_p两大生成调控参数,助你真正理解并掌控大模型推理。
1013 12
[大模型实战 03] 拆解 Transformers:从原理图解到 HuggingFace Transformers 实战