口令体系搭建指南
营长 Lv3

本文描述了一套可长期运行的口令体系搭建思路,目标是在现实攻击模型下显著提高口令被破解的成本,同时在不削弱安全性的前提下降低用户的记忆成本。

不要共用口令

一个常见的错误是用一个口令或口令模式应付所有场景。一旦口令在某一点上泄漏,全局口令都会失效。
因此,合理的做法是引入分级机制,根据重要程度对场景进行分级。

分级制度

本节给出了一个分级示例,总体的设计原则如下:

  1. 低级别口令由密码管理随机生成,不依赖规则推导
  2. 中高级别口令基于规则生成,可被人脑推导,密码管理器只负责存储
  3. 级别不同规则不同
  4. 同一级别下,一处泄漏不能横向扩散

L1|生存级

负责:金融/政务/关键基础设施

典型平台

  • 银行、证券、支付
  • 政务系统
  • 社保、公积金
  • 运营商主账号
  • AWS、阿里云

原则

  • 使用主邮箱/手机号进行注册
  • 配置 2FA(物理钥匙 或 TOTP)

密码策略

1
2
3
4
5
password = KDF(
password = MasterSecret,
salt = ServiceName || UserID,
params = 高成本参数
)

-

CN-L2|服务级

负责:一般互联网与技术服务
#### 典型平台
- 国内云厂商
- 电商、工具型网站
#### 使用规则
- 手机号 1139,邮箱 hrwang00@outlook.com
#### 密码策略
1
Little_072199

CN-L3|匿名级

负责:隐私保护、可丢弃注册

典型平台

  • 匿名社区
  • 临时服务
  • 风险较高或不信任平台

使用规则

  • 使用手机号 7143
  • 随机密码或短规则
  • 不与 L0/L1 产生任何可关联性
  • 可用一次性邮箱或不绑定

密码策略

  • 随机为主
  • 不记忆
  • 丢号即弃号

设计目标

  • 不依赖任何外物
  • 不规则化
  • 可完全靠人脑恢复

规则

  • Passphrase
  • ≥ 5 个词
  • ≥ 30 字符
  • 不存浏览器
  • 不依赖手机号找回

👉 这是“最后一道门”。


L1|重要服务级

适用对象

  • 代码托管
  • 云控制台
  • 私有服务
  • IoT 云账号

设计目标

  • 可推导
  • 可快速输入
  • 单点泄露不横向爆炸

推荐结构

1
{区域}{服务缩写}{序号}-{主短语短版}

示例:

1
2
CALI22-IronBird
IGER30-IronBird
  • 规则在脑中
  • 序号可计算
  • 不依赖纸或管理器

L2|可丢弃级

适用对象

  • 论坛
  • 临时服务
  • 匿名注册

规则

  • 随机
  • 管理器保存
  • 丢了就重置

四、国区的现实:手机号强制注册

在国区,很多平台不支持邮箱注册,这是硬约束。

正确认知

  • 手机号 ≠ 身份锚
  • 短信 ≠ 安全因子
  • 密码是最后防线

实际对策

  • 手机号只作为入口
  • 密码强度不因此降低
  • 能绑邮箱就绑,用于申诉而非依赖

五、为什么密码规则要“对人脑友好”

很多安全建议忽略了一个事实:

人是系统的一部分。

如果规则:

  • 太长
  • 太随机
  • 太依赖工具

那么在真实事故中,人会成为最弱环节。

因此:

  • L0 追求“可记忆的强”
  • L1 追求“可推导的稳”
  • L2 才追求“绝对随机”

六、2FA 的真实定位

  • 短信:触发器
  • TOTP:有效的第二因素
  • 硬件 Key:加分项

但要明确:

2FA 不能拯救一个设计错误的密码体系。

它是加固,不是地基。


七、关于浏览器、管理器与工具

原则很简单:

如果失去这个工具,你就失去控制权,那它不该存根密码。

  • L0:不存浏览器
  • L1:可存管理器,但能不用也能活
  • L2:怎么方便怎么来

结语:密码不是字符串,是结构

真正安全的密码系统,不是“多复杂”,而是:

  • 有分级
  • 有失效假设
  • 有恢复路径
  • 有人脑兜底

密码的目标不是“永不被破”,
而是在被破时,你还站得起来。


如果你愿意,下一步我可以帮你:

  • 把这篇稿子 压缩成博客可发布版
  • 或改写成 面向非技术读者的版本
  • 或补一章 “常见误区反驳”(如“密码越复杂越好”)

七、密码管理器的现实角色:为什么是 pass

在前面的讨论中,我们刻意强调了一点:

密码管理器必须“可有可无”,而不是“不可或缺”。

这并不是反对密码管理器,而是反对把控制权完全交给一个工具

在众多密码管理方案中,pass(The Standard Unix Password Manager)是一个非常适合 L1 / L2 层级的现实工具


7.1 什么是 pass

pass 的核心思想非常简单:

  • 每个密码 = 一个文件
  • 每个文件用 GPG 公钥加密
  • 存储结构 = 普通目录树
  • 后端 = Git(可选)

它不是一个“应用”,而是一个约定 + 工具组合


7.2 pass 解决什么问题

pass 非常擅长解决以下场景:

  • 大量 L1 / L2 服务的随机密码
  • 需要版本管理、历史回滚
  • 不依赖浏览器、不依赖云服务
  • 可完全离线使用
  • 明文不落盘

但它不适合做这些事:

  • 作为 L0 根密码的唯一存储
  • 替代人脑记忆
  • 完全自动化、无感使用

7.3 pass 的最小使用流程(示例)

初始化

1
pass init <你的 GPG Key ID>

存一个密码

1
pass insert cn/aliyun

系统会提示你输入密码并加密保存。

读取密码

1
pass cn/aliyun

生成随机密码

1
pass generate github/example 32

目录即分类

1
2
3
4
5
6
7
pass
├── cn
│ ├── aliyun
│ └── tencent
└── int
├── github
└── aws

7.4 与 Git 结合(推荐但非必须)

1
2
pass git init
pass git push

优点:

  • 可同步
  • 可回滚
  • 可审计“什么时候改过密码”

前提:

  • 仓库本身不公开
  • GPG 私钥安全

7.5 pass 在分级体系中的正确位置

层级 是否推荐 pass 原因
L0 L0 必须人脑可恢复
L1 规则 + 工具双保险
L2 随机密码最佳归宿

一句话定位:

pass 是“放大你安全习惯的工具”,不是替代你思考的工具。


八、关于浏览器密码保存(再强调一次)

浏览器密码管理器的定位非常明确:

  • L2:可以
  • L1:勉强
  • L0:禁止

理由不再重复,本质是:

浏览器 ≠ 信任边界。


结语:密码不是字符串,是结构

(保持你原有结语)


参考阅读(Recommended Reading)

密码与威胁模型

  • program-think
    《如何防止黑客入侵(2):攻击者如何得到你的密码》
  • NIST SP 800-63B
    Digital Identity Guidelines

工具与实践

思想与原则

  • Bruce Schneier
    Secrets and Lies
  • Ross Anderson
    Security Engineering

最后一行总结(可以作为全文的结尾)

密码的安全,不取决于你用了什么工具,
而取决于当工具全部失效时,你是否仍然有路可走。


如果你愿意,下一步我可以帮你做三件事之一:

  1. 把这篇稿子压缩成一篇可直接发布的博客版本
  2. 改写为面向非技术读者的通俗版
  3. 单独拆一篇《为什么我不用浏览器保存重要密码》