QIAOPANG.COM · 陈天(TYR CHEN)2013–2026 精选技术与随笔文集 · 共 260 篇按时间顺序浏览(2013 → 2026)↗
程序人生 · 陈天文集QiaoPang · Systems, Craft & Agentic Era
时间轴 ↗

个人密码的变迁

个人密码的变迁

不记得是 08 还是 09 年那会,有网站被脱裤,数百万简单的用户密码被逆向出来。当时我还在 Juniper,公司 IT 发了篇文章建议创建并使用安全的密码。其中一个建议是:用一个句子 + 某些规则来生成密码。

这是个很好的方法,我照做了,然后就养成了习惯,一直到现在。

我来解释一下这种方法。首先你得挑一些你能记住的句子,比如说:

  1. life is about making an impact, not making an income.
  2. whatever the mind of man can conceive and believe, it can achieve.
  3. you miss one hundred percent of the shots you don’t take.
  4. 芳树无人花自落,春山一路鸟空啼(fang shu wu ren hua zi luo, chun shan yi lu niao kong ti).
  5. 暗淡了刀光剑影,远去了鼓角铮鸣(an dan le dao guang jian yin, yuan qu le gu jiao zheng ming).

这些作为密码主体的句子可以公开,比如说放在密码提示中,不过,能不放就不放。

然后选择一个只有你自己知道的规则:它不能存在于纸张,evernote,google spreadsheet,dropbox 等任何物理空间或者赛博空间(cyberspace,现在人们很少用这个词了)中。规则是什么,你说了算,不过要尽量简单,因为每次输入密码,你都要把上面的句子过一遍规则,生成你真正的密码。

最简单的规则可以是:把每个单词的首字母拼起来,全部小写。不过这规则太简单,太不安全。

稍微复杂一些:把每个单词的首字母拼起来,每三个字母一个大写。这规则足够安全,但可能还是过不了大部分密码检查(要求字母数字混用)。

最理想:密码的首字符是一个固定的数字,比如7,然后把每隔单词首字母拼起来,每三个字母一个大写,最后以一个固定的后缀结束,比如 2#33(2333)。

按照最后一个规则,上述的句子可以变化成:

  1. 7liAmaInmAi2#33
  2. 7wtMomCcaBicA2#33
  3. 7ymOhpOtsYdt2#33
  4. 7fsWrhZlcSylNkt2#33
  5. 7adLdgJyyQlgJzm2#33

这种方法很安全,但有些麻烦,在手机上输入就更是费劲。因而,它只适合于一些对密码要求高的场景。其他场景,可以使用 lastpass 这样的工具来生成和自动填充。目前,我主要在开机密码和一些重要的网站的密码中使用。

好了,方法的介绍就到这里。我讲讲这样的密码有什么意义。

我用的第一个开机密码来源于这个句子:whatever the mind of man can conceive and believe, it can achieve. 当然,我的规则和上述的规则都不一样,它不可描述 :)

由于 Juniper IT 的恼人设置,密码只能是某些位数,所以在我公司的电脑上,这个密码只得截断。不过,我每天要输上很多遍这个密码,因此,这个句子一而再再而三地在我嘴边重复。

后来我觉得这样每天强迫自己的大脑多次追忆(recall)和运算(compute)相同的东西的机会就这么背诵一些已经熟记的句子实在可惜,何不将其用在更有意义的事情上呢?

我开始用一些句子来描述我的目标。

I want to be a distinguished engineer.

这个似乎是我使用的第一个非名人名言或者诗词歌赋的密码句子。我虽然远未达到这个目标,但上个厕所回来都要强化一下这个目标,还是对我形成了不少的潜移默化。

大概一年之后,这个密码被我改成了:

I want to start my own business.

然后我真的尝试着创了业。创业期间,由于我可能时不时把自己的电脑共享给其他人用,而且我也不需要额外的方式提醒我目标是啥,所以这套方案沉寂了一阵。

创业失败,又回到 Juniper 后,我设置的密码是:

I want to relocate to US.

一年后,只差最后一步,我这么对自己说:

I want my L1b visa.

几个月后我到了美国,开始了新的生活:

I want to catch up with silicon valley.

那段时间我如饥似渴地学习一切新的东西,每周至少参加一次 meetup。

随后,我换到了 Juniper SF 的一个做 web security 的小 team,开始了新的旅程。很快,新鲜感褪去,尤其我老板换成了一个不太懂技术的烙印后,我写到:

I like what I do but I’d find a team I love to work with.

那时,我本想换去 Juniper 内部另外一个做 cloud infrastructure 的 team,没想两个月后,我收到 adRise/Tubi TV 的召唤,他们愿意帮助我申请 O1 来改变工作身份。于是我的密码变成了:

I want my O1a visa.

之后如愿换了工作签证,密码也随之改变:I will make adRise to be proud of its engineering。

还有些肉麻的变种,就不放出来了。

有那么阵子,我上下班坐的火车 caltrain 三天两头出故障。日复一日的辛劳加上各种意外的事故,那两周我变得十分彷徨,顺手把密码改成:I don’t know how long I can survive from caltrain.

当然,有时目标达成,会小小地自豪一下:I got my green card。自豪之后免不了还有疑问:I got my green card. what’s next?

这是一个艰难的问题。

后来,老婆抱怨我花在小宝身上的时间太少了,我就把密码改成:I want to be a good father。

直到今天。

(本文写于半年前。。。一直未发,在我今天写一篇有关安全的文章是偶然发现,想想还是发了。。。)

现在我还在有些地方保留这个句子构成的密码,但大部分的密码换成了用这个脚本生成的东西:

#!/usr/bin/env bash
pwgen -n1vsy 16
MORE IN 系统与架构

同专栏延伸阅读

查看「系统与架构」全部文章 →

日志的未来:必也正名乎

我们花了十年,把可观测性盖成一座漂亮的大厦,地基却是漂浮的字符串:字段名靠默契、基数靠运气、账单靠忍。这篇文章给出一个激进的方案,用 protobuf 给每一件被观测的事正名,把日志、指标、审计统一成一份带版本、带 owner、带保留策略的事件目录,旁边留一扇叫 ForensicEvent 的逃生舱兜住所有未知未知。AI 已经成为代码的主笔,schema-first 的最后一道阻力随之消失。是时候让 schema 重新成为可观测性大厦的

New Hope (2025–2026)10,772 字 · 24 分钟

彻底抛弃多环境:用 Rust 与 Pingora 重塑下一代 Serverless 架构

当我们退回原点重新思考"计算"的本质,会发现多环境是个幻觉,K8s 是个过度抽象,而 Serverless 的冷启动和连接池风暴是自找的。这篇文章拆解一套基于 Baggage Header 路由、Pingora 智能网关、Firecracker 微虚拟机和 Rust Data Bus 的无环境架构,试图回答:Post-Kubernetes 时代的计算该长什么样。

New Hope (2025–2026)23,788 字 · 53 分钟