Gray Password · Alien-24 · Plan 01 · v2

24字符外星密码体系
Base-24 × uint64 全栈设计

原文设计:四进制数字 0 1 2 3、配对字母 a–h ↔ A–H、v ↔ U,加两个标点。24 个符号,13 位一组,无损装进一个 64 位机器字。

0123abcdefghvABCDEFGHU,!
24符号
4.585bit / 符号
13符号 / uint64
93.1%位利用率
128 KB度规漂移表

0124字符外星字母表

ALIEN24_ALPHABET = "0123abcdefghvABCDEFGHU,!"。严格按原文设计,不替换任何字符。符号的索引就是它在 Base-24 中的数值。

000
101
202
303
a04
b05
c06
d07
e08
f09
g10
h11
v12
A13
B14
C15
D16
E17
F18
G19
H20
U21
,22
!23

四进制数字 0–3小写 4–12大写 13–21标点 22–23

索引符号分组5-bit 码大小写配对
00四进制数字00000—
11四进制数字00001—
22四进制数字00010—
33四进制数字00011—
4a小写00100→ A
5b小写00101→ B
6c小写00110→ C
7d小写00111→ D
8e小写01000→ E
9f小写01001→ F
10g小写01010→ G
11h小写01011→ H
12v小写01100→ U
13A大写01101← a
14B大写01110← b
15C大写01111← c
16D大写10000← d
17E大写10001← e
18F大写10010← f
19G大写10011← g
20H大写10100← h
21U大写10101← v
22,标点10110—
23!标点10111—
$$\operatorname{upper}(c_i)=c_{i+9},\quad 4\le i\le 12\qquad\text{即 }a\to A,\ \dots,\ h\to H,\ v\to U$$

02v ↔ U:手写防呆配对

前 8 对是普通的大小写关系。第 9 对是作者的设计:v 的大写规定为 U。字母表里没有 V 和 u,所以这个规定不会和别的符号冲突。

  • 形状:v 是尖底,U 是圆底,开口方向相同。手写时只看底部,“尖”还是“圆”。
  • 输入纠错:用户按习惯输入 V 时自动视为 U,输入 u 时视为 v,下面的在线工具也是这样处理的。
  • 索引关系:\(\mathrm{idx}(v)=12,\ \mathrm{idx}(U)=21=12+9\),和 a–h 的配对规则完全一致。
v · idx 12 · 尖底U · idx 21 · 圆底 ⇄+9
图 1 v 与 U 的手写对比:只看底部是尖还是圆

03键盘黄金区可视化

在 QWERTY 键盘上,24 个符号集中在左手区域:数字键 1 2 3 0、主行 A S D F G H、上行 E、下行 Z 行的 C V B 以及逗号。大写和 ! 都只需要再按 Shift。下图中高亮的键就是“黄金区”。

1/!234567890QWERTYUIOPASDFGHJKLZXCVBNM,ShiftShift + a–h → A–H,Shift + v → U(本字母表规定),Shift + 1 → !
图 2 键盘黄金区(高亮 = 字母表用到的按键)
键盘行用到的按键产生的符号
数字行1 2 3 0(Shift+1)0 1 2 3 / !
上行Ee / E
主行A D F G Ha d f g h / A D F G H
下行C V B ,c v b , / C U B

注意:S 不在字母表中,图中 S 键不高亮。Shift+V 在本体系中按规定输入为 U。

04Base-24 uint64 打包

每个符号的信息量是 \(\log_2 24\approx 4.585\) bit。把长度为 \(n\) 的串当作一个 24 进制整数:

$$W(s)=\sum_{i=0}^{n-1}\mathrm{idx}(c_i)\cdot 24^{\,n-1-i},\qquad W\leftarrow 24\,W+\mathrm{idx}(c_i)\ \ (\text{Horner})$$ $$24^{13}=876\,488\,338\,465\,357\,824\ <\ 2^{64}=18\,446\,744\,073\,709\,551\,616\ <\ 24^{14}=21\,035\,720\,123\,168\,587\,776$$

所以一个 uint64 最多装 13 个符号(\(13\log_2 24\approx 59.60\) bit)。另外 \(24^{13}\times 21=18\,406\,255\,107\,772\,514\,304<2^{64}\),剩余空间可以记录长度:

$$W'=21\,W+n,\qquad n=W'\bmod 21,\quad W=\lfloor W'/21\rfloor$$
方案符号 / 8 字节有效熵利用率运算
ASCII836.7 bit57.3%无
5-bit 定长1255.0 bit86.0%移位
Base-24 + 长度1359.6 bit93.1%乘除

Python 参考实现(已在服务器端实际运行,与下方 JS 工具结果一致)

import math
ALIEN24_ALPHABET = "0123abcdefghvABCDEFGHU,!"
IDX = {c: i for i, c in enumerate(ALIEN24_ALPHABET)}
H = math.log2(24); MAX_LEN = 13
LEVELS = ["Ⅰ 白", "Ⅱ 浅灰", "Ⅲ 灰", "Ⅳ 深灰", "Ⅴ 黑"]

def normalize(s: str) -> str:
    """v 的大写是 U:'V' -> 'U','u' -> 'v';其他非法字符报错"""
    s = s.replace("V", "U").replace("u", "v")
    bad = [c for c in s if c not in IDX]
    if bad: raise ValueError(f"非法符号: {bad}")
    return s

def to_upper(c): i = IDX[c]; return ALIEN24_ALPHABET[i + 9] if 4 <= i <= 12 else c
def group(c):
    i = IDX[c]; return "digit" if i < 4 else "lower" if i < 13 else "upper" if i < 22 else "punct"

def pack24(s: str) -> int:
    assert 1 <= len(s) <= MAX_LEN
    w = 0
    for c in s: w = w * 24 + IDX[c]          # Horner
    return w * 21 + len(s)                   # 24**13 * 21 < 2**64

def unpack24(w: int) -> str:
    w, n = divmod(w, 21); out = []
    for _ in range(n): w, d = divmod(w, 24); out.append(ALIEN24_ALPHABET[d])
    return "".join(reversed(out))

def cognitive_score(s: str) -> dict:
    groups = {group(c) for c in s}
    sw = sum(group(a) != group(b) for a, b in zip(s, s[1:]))
    rep = sum(a == b for a, b in zip(s, s[1:]))
    pair = sum(to_upper(a) == b for a, b in zip(s, s[1:]) if a != b)
    return {"security": max(0.0, len(s) * H + len(groups) - 3 * rep - 2 * pair),
            "memory": len(s) + 0.5 * sw}

def polar_level(s: str):
    sc = cognitive_score(s)
    x = min(sc["security"] / (MAX_LEN * H + 4), 1.0)
    y = max(0.0, 1 - sc["memory"] / 20)
    r = min(255, int(x * 255))
    theta = int(math.atan2(y, x) / (math.pi / 2) * 255)    # 第一象限
    tier = min(4, r * 5 // 256)
    return (r << 8) | theta, r, theta, LEVELS[tier]

if __name__ == "__main__":
    for p in ["0123", "abcdABCD", "3vA,b2!UhC0gE", "vU", "!!!!", "0aA,"]:
        w = pack24(p); assert w < 2**64 and unpack24(w) == p
        lv, r, t, name = polar_level(p)
        print(f"{p} {w} 0x{w:016x} {cognitive_score(p)['security']:.6f} {cognitive_score(p)['memory']} 0x{lv:04x} {name}")

运行输出(密码、uint64 十进制、十六进制、安全分、认知负荷、Level、阶):

0123 13171 0x0000000000003373 19.339850 4.0 0x4dc4 Ⅱ 浅灰
abcdABCD 406385424992 0x0000005e9e757a60 38.679700 8.5 0x9b7a Ⅳ 深灰
3vA,b2!UhC0gE 2702787021072332578 0x25823a79c68d7722 63.604513 19.0 0xff08 Ⅴ 黑
vU 6491 0x000000000000195b 9.169925 2.5 0x24e4 Ⅰ 白
!!!! 6967279 0x00000000006a4fef 10.339850 4.0 0x29de Ⅰ 白
0aA, 55402 0x000000000000d86a 20.339850 5.5 0x51bb Ⅱ 浅灰

05在线工具:打包 · 还原 · 打分

全部计算都在浏览器本地完成(BigInt),不会向服务器发送任何输入。

规范化—
uint64(十进制)—
uint64(十六进制)—
理论熵—
安全分 S_sec—
认知负荷 C_mem—
Level=(r≪8)|θ—
极坐标—
五阶—
安全 x易记 y
实时位置:圆环为五阶边界(按 r)

06认知打分器

一个密码同时有两种成本:攻击者要付出的安全成本,用户要付出的认知成本。打分器把两者分开计算:

$$S_{\text{sec}}=\max\big(0,\ n\log_2 24+|G|-3R-2P\big),\qquad C_{\text{mem}}=n+\tfrac12K$$
项含义作用
\(n\log_2 24\)均匀随机熵基础安全分
\(|G|\)用到的分组数(数字 / 小写 / 大写 / 标点)每组 +1
\(R\)相邻重复(如 !!)每处 −3
\(P\)相邻大小写配对(如 aA、vU)每处 −2
\(K\)相邻符号切换分组的次数每次认知负荷 +0.5
EXAMPLE

0123

S_sec ≈ 19.34 · C_mem = 4 · Ⅱ 浅灰
短、好记,但安全性不足。
EXAMPLE

abcdABCD

S_sec ≈ 38.68 · C_mem = 8.5 · Ⅳ 深灰
规律明显,实际熵比理论值低很多。
EXAMPLE

3vA,b2!UhC0gE

S_sec ≈ 63.60 · C_mem = 19 · Ⅴ 黑
满 13 位,四个分组都用到,最强但最难记。

07第一象限极坐标五阶分级

沿用论文 GP-16 / GP-24a 的等级码 \(\text{Level}=(r\ll 8)\,|\,\theta\)。安全轴 \(x\) 和易记轴 \(y\) 都不小于 0,所以点永远落在第一象限:

$$x=\min\!\Big(1,\frac{S_{\text{sec}}}{13\log_2 24+4}\Big),\qquad y=\max\!\Big(0,\,1-\frac{C_{\text{mem}}}{20}\Big)$$ $$r=\min(255,\lfloor 255x\rfloor),\qquad \theta=\Big\lfloor\frac{\arctan2(y,x)}{\pi/2}\cdot 255\Big\rfloor,\qquad \text{Level}=(r\ll 8)\,|\,\theta,\qquad \text{阶}=\Big\lfloor\frac{5r}{256}\Big\rfloor$$
Ⅰ白Ⅱ浅灰Ⅲ灰Ⅳ深灰Ⅴ黑 安全 x易记 yθr
图 3 手绘风格第一象限:半径 r 决定阶,角度 θ 表示易记程度
阶r 区间名称适用场景
Ⅰ0–51白公开标识、演示
Ⅱ52–102浅灰低价值账户
Ⅲ103–153灰日常账户
Ⅳ154–204深灰重要账户
Ⅴ205–255黑主密钥、离线备份

θ 接近 255:偏易记;θ 接近 0:偏安全、难记。同一阶内,θ 越大越好用。

0816字符与24字符对比

维度16字符(GP-16)24字符(本方案)
字母表0123456789ABCDEF0123abcdefghvABCDEFGHU,!
每符号熵4 bit≈ 4.585 bit
uint64 容量16 符号(\(16^{16}=2^{64}\),100%)13 符号 + 长度(\(24^{13}<2^{64}\),93.1%)
13 符号熵52 bit59.6 bit
编解码移位、掩码乘法、除法(Horner)
等级码Level_16 = (r≪8)|θ同一公式,第一象限五阶
分组数字 + A–F四进制数字 / 小写 / 大写 / 标点
大小写不区分区分,a–h↔A–H、v↔U
主要优势与机器完全同构同样长度熵更高、分组更丰富、手写防呆

09彩虹表与安全飞轮

彩虹表预先计算 \(p_0\xrightarrow{H}h_0\xrightarrow{R}p_1\to\cdots\) 的哈希链,只保存链首和链尾。Base-24 空间结构规整,约简函数 \(R\) 很容易写,所以对攻击者也友好。

13 位满长空间 \(24^{13}\approx 8.76\times10^{17}\)。链长 \(t=10^6\) 时仍需约 \(8.8\times10^{11}\) 条链,每条 16 字节,约 14 TB。这对无盐快速哈希仍然可行,因此必须:

  • 每用户随机盐:预计算表对每个盐都要重建;
  • 慢哈希(Argon2id):每次猜测代价放大上万倍;
  • 飞轮:打分 → 提示用户升级 → 更高阶 → 更大搜索空间,形成正循环。
哈希链 H → R → H → R … 打分升级更高阶加盐+慢哈希 安全飞轮
图 4 彩虹表(上)与安全飞轮(下)

10高等文明五大原罪与升级

“高等文明”指能看到整个密码空间结构的观察者(见 GP-000102)。在它看来,人类的密码习惯有五个系统性缺陷:

原罪 1 · 低熵

选择可预测

人倾向用生日、单词和顺序串,实际熵远低于 \(n\log_2 24\)。
升级:随机生成器 + 认知打分器提示,把实际熵拉回理论值。
原罪 2 · 复用

一码多用

一处泄露,处处失守。
升级:主密钥派生站点密钥 \(K_s=\mathrm{HKDF}(K,\,s)\),各站互相独立。
原罪 3 · 明文

存储无保护

明文或快速哈希让彩虹表直接生效。
升级:每用户盐 + Argon2id;打包后的 uint64 只作索引,不作凭证。
原罪 4 · 歧义

字形混淆

0/O、1/l、v/u 导致抄错、锁号。
升级:固定字母表 + v↔U 规定 + 输入自动规范化。
原罪 5 · 停滞

从不更新

算力每年增长,密码强度却不变。
升级:度规漂移让等级标准随代际更新,而不必重写数据(见第 11 章)。

11128KB 度规漂移表

GP-000102 的“零写盘度规漂移”指:代际更新只改变度规参数 \((\alpha_g,\beta_g)\) 与解释表,已写入的记录保持不变;读取时按当代度规重新解释即可,只有状态跨出原胞腔时才追加新记录。

在本方案中,16 位等级码 \(\text{Level}=(r\ll 8)|\theta\) 共有 \(2^{16}=65\,536\) 个胞腔。为每个胞腔存一个 uint16 的“当代解释值”,就得到一张漂移表:

$$|T_g|=2^{16}\times 2\ \text{B}=131\,072\ \text{B}=128\ \text{KB},\qquad \text{Level}^{(g)}=T_g[\text{Level}^{(0)}]$$
组成大小说明
已存记录(uint64 + Level)不变零写盘:代际更新不改动
漂移表 \(T_g\)128 KB / 代65 536 × uint16,可整张放进 L2 缓存
度规参数 \((\alpha_g,\beta_g)\)几十字节由它生成 \(T_g\),也可只存参数按需重建
跨胞腔追加少量只有越过阶边界的状态才追加记录

例如:算力提升后,令 \(r^{(g)}=\lfloor \alpha_g r\rfloor\)(\(\alpha_g<1\)),同一密码的阶会自动下降、提示用户升级,而数据库一行都不用改。

12Holon 基因存储

Holon(整体子)指“既是整体又是部分”的单元。延续 GP-000102 的“全息基因”:不存密码本身,而是存生成它的基因,并把基因分片,任意足够多的片段都能复原整体。

基因字段位宽含义
uint64 载荷64Base-24 打包值(或其密文)
Level16(r≪8)|θ 第 0 代等级
代际 g8对应漂移表 \(T_g\)
字母表版本824 / 24a / 24grok 等变体
校验32CRC-32,发现损坏
合计128 bit = 16 B一个 Holon 单元
$$\text{Holon}=\underbrace{W}_{64}\,\|\,\underbrace{\text{Level}}_{16}\,\|\,\underbrace{g}_{8}\,\|\,\underbrace{v}_{8}\,\|\,\underbrace{\mathrm{CRC}}_{32},\qquad k\text{-of-}m\ \text{纠删分片}$$

Holon 分片提高了可用性,但每个分片都必须当作敏感数据保护;载荷应先加密再分片。本章是概念框架,不是生产级方案。

13多 AI 评审意见

⚠️ 说明:标有 综合摘要 的卡片是按不同评审视角整理的分析,不是任何真实 AI 产品的原话。标有 待更新 的卡片是占位,用于之后粘贴真实 AI 的评审意见(编辑 index.html 中 data-review-slot 对应的卡片即可)。

综合摘要REVIEW · 安全

安全性评审

13 位满长约 59.6 bit,配合 Argon2id 时离线攻击代价很高。主要风险是人选密码的实际熵偏低,建议默认使用随机生成。

结论:有条件通过

综合摘要REVIEW · 可用性

可用性评审

四进制数字 0 1 2 3 符合习惯,大小写配对好记,v↔U 规定减少手写错误。“,” 和 “!” 在部分键盘、表格和 shell 中需要转义。

结论:通过,建议补充转义说明

综合摘要REVIEW · 压缩

压缩与存储评审

Base-24 利用率 93.1%,比 5-bit 定长多装 1 个符号,并利用剩余空间存长度。代价是乘除运算,在嵌入式设备上比移位慢。

结论:通过

综合摘要REVIEW · 密码学

密码学评审

打包只是编码,不是加密;安全性完全依赖盐、慢哈希和随机性。定长整数便于常数时间比较。度规漂移和 Holon 仍是概念,需要形式化分析。

结论:概念可行,需进一步论证

待更新REVIEW · 真实 AI #1

(AI 名称)

在此粘贴真实 AI 的评审原文、日期和来源链接。
待更新REVIEW · 真实 AI #2

(AI 名称)

在此粘贴真实 AI 的评审原文、日期和来源链接。
待更新REVIEW · 真实 AI #3

(AI 名称)

在此粘贴真实 AI 的评审原文、日期和来源链接。