跳转至

账号安全

Warning

为降低阅读难度, 下文不再区分 "密码" 与 "口令".

因为账号可能受到威胁, 所以才需要确保账号安全. 因此讨论如何确保账号安全需要先了解会危害账号安全的技术, 相关概念包括撞库/社工库/哈希函数/加盐等.

  • 哈希函数(Hash function): 是一种单向函数(One-way function), 可以通过 A 算出 B, 但却很难只通过 B 得到 A.

    密码会先通过哈希函数转换为哈希值, 并将哈希值存储在服务器上. 用户登录时只需要验证输入密码的哈希值是否和已存储的哈希值相同.
    因此服务器和攻击服务器的人只知道用户密码的哈希值, 但很难以此获取用户的密码.

  • 加盐: 在用户密码转换为哈希值前添加一些其他内容.

  • 增加原始密码的长度: 假如密码本身是弱口令, 依然很容易被发现. 攻击者只需要将哈希值和弱口令的哈希值进行对比即可.

  • 不同网站/账号使用不同的盐还可以使相同的密码具有不同的哈希值.

同一个人的不同账号有不同的用途, 具有不同的价值. 一种常见策略是为重要的账号使用专门的具有更高安全性的密码.
目的是防止安全性低但较好记忆的密码丢失后, 重要的账号不会受到影响.

密码

有些账号的登录只需要用户提供用户名和密码即可, 但是为了记忆方便, 人们通常使用相似的用户名和密码. 所以一个账号的泄露可能导致使用相同用户名和密码的账号泄露.

  • 账号之间存在关联, 且登录账号的方法相同: 当一个账号泄露后尝试访问其他关联账号, 称之为撞库.
  • 为方便记忆, 密码强度弱: 通过个人信息来推断可能使用的密码, 这种密码上的弱点称为弱口令.

一个理想的策略是为每个账号使用单独的用户名和密码, 账号之间的关联因尽可能小. 使用密码生成器生成和自身个人信息无关的密码, 并使用密码管理器帮助记忆复杂无序的密码.

其中增加密码强度并不重复不难实现, 但使账号之间没有关联比较难, 甚至会影响到一些账号的正常使用.

密码管理器可以帮助管理大部分的密码, 但同时也意味着这些账号的登录要依赖密码管理器. 少数不应该依赖密码管理器的账号还是应该继续使用常规密码.

多重要素验证(Multi-factor authentication, MFA)

思想类似纵深防御, 通过多种方式验证用户身份. 在进行重要, 有一定后果的操作时会进一步确认用户身份, 在确保安全的同时减少对用户体验的负面影响.

手机短信验证

该方法的缺点较多. 虽然手机短信并不容易被攻击者获取, 但该方法需要依赖手机和手机卡. 手机不一定一直在身边, 手机卡存在失效的风险且和个人信息关联较为紧密.
手机木马可能可以获取短消息内容.

无密码(Passkey)

无密码可以给用户带来更良好的体验, 在不需要记忆复杂密码的同时也能确保密码的安全.
而且可以和现有的登录机制较好的融合, 由密码生成器生成安全性较高的密码并加密保存. 用户可以通过生物识别等方式解锁这些数据并登录账号.
如用户按下指纹即可登录账号, 无需再记忆账户名密码等内容.

上面谈论了一些有关登录账号方面的内容, 这是服务提供者和用户之间的一个重要互动. 但用户和服务提供者本身也可能存在问题.

  • 服务提供者: 利用不透明的机制对外泄露账号信息, 被黑客攻击导致账号信息泄露.
  • 用户: 木马, 社会工程学. 如电脑上木马可以获取用户按下的按键来记录密码, 手机上木马可以通过读取短信内容来获取验证码.

用户可以通过增加安全意识来减少被攻击的可能性. 服务提供者不受用户控制, 但用户可以选择可信度比较高的提供者.

一次性密码(One-time password, OTP)

基于时间的一次性密码(Time-based One-Time Password, TOTP).

基本原理可能类似无线遥控器解锁(如汽车/卷帘门等).

评论