目录

    1. 安全问题日趋严重

    随着互联网对生活场景的层层渗透,我们越来越依赖于各种网络 ID。这些 ID 构成了数字版的我们,是极其重要的账户资产。

    另一方面,各种账户信息泄露事件、安全事件却时有发生,CSDN、12306、华住酒店、Facebook、Twitter、Uber…..不一而足。更可怕的是,这些还是被曝光的、被公开的账户信息泄露事件,冰山之下,可以还有更多的信息泄露。

    目前国内互联网,似乎更在意信息的共享,而不是相互隔离。这催生了大数据产业的持续繁荣。

    忽略个人隐私,不是互联网健康发展的方式。系统安全、信息安全应该得到足够重视。乱象丛生,野蛮生长之后,必然会迎来一个规则的建设期,安全领域在未来具有很大的发展空间。

    2. 密码设置基础知识

    • 密码足够长,通常需要 8 位以上
    • 密码足够复杂,包含大小写字母、数字、特殊字符
    • 不同网站使用不同密码
    • 定期修改密码

    3. 密码管理平台

    密码太复杂、太多,难以记忆,催生了用户管理账户密码的需求。

    密码管理平台,通过自动云端同步,让用户只需记住一个主密码就可随时随地、不受设备数量限制地享受密码自动填充、安全笔记、好友密码共享等功能。常见的平台有 1Password、Lastpass,它们都提供了极其强大的插件,适配 Windows、OS X、IOS、Android 等平台。

    使用这些密码管理平台,用户可以设置足够复杂的账户密码,但却不需要记忆,兼顾安全性和便捷性。

    但是,密码管理平台信息会不会被泄露呢?Lastpass 就曾经被黑客攻入。实际上,使用密码管理平台,就是将全部泄露风险集中到了密码管理平台。一旦平台的安全性得不到保障,用户将会面临巨大损失。

    4. 账户验证的原理和方法

    账户验证,实际上就是要证明你的东西是你的。常见的方式有:

    • 私密信息

    一段别人不知道的信息。比如,密码、图片、文件、URL、最近购物、家庭住址等都可以作为验证载体。

    • 随身物品

    只有你才会有的物理实体。比如,U 盾、电子密保卡、IC 卡、手机、身份证等。相比较与私密信息,随时物品的安全性提高了很多,基本保证了唯一性。

    • 生理特征

    一段只有你才具有的生物信息片段。比如,指纹、虹膜、DNA 等。

    账户验证,本质上,只是在比较两段信息是否一致,但需要平衡便捷和安全两个核心。便捷的验证方法要求方便记忆、方便携带,随时可达,遗失能补办。安全的验证方法要求更复杂、更长的验证信息。

    5. 什么是二次验证

    Two-factor authentication,简称 2FA,是在普通验证的基础上,再添加一层安全保护。

    开启二次验证之后,账户登陆时,要求额外输入一个动态生成的随机字符串。

    目前,支持二次验证的网站越来越多,显示验证码的方式也越来越多。短信、邮件、软 Token 等,都是很常见的途径。

    目前,比较主流的二次验证策略是,基于时间戳算法的一次性密码,Time-based One-time Password,简称 TOTP。常见的二次验证软件,Google Authenticator、Authy 等采用的就是 TOTP 算法。

    TOTP 算法的基本原理是:服务器端生成一个密钥,然后发给手机端。手机端使用密钥和时间戳生成一个哈希值。在一段时间内,手机端与服务器端使用相同密钥生成的哈希值一致。哈希值,计算公式:

    TC = floor((unixtime(now) − unixtime(T0)) / TS)
    
    • unixtime(now),是当前 Unix 时间戳
    • unixtime(T0)),约定的起始时间,默认为 0
    • TS,有效期的时间长度

    6. 参考