读零信任网络:在不可信网络中构建安全系统10认证身份
1. 用户所知道的信息
1.1. 只有用户本人知道的信息
1.2. 密码
-
1.2.1. 密码是常用的认证机制
-
1.2.2. 密码验证就是确认用户“所知”性的较好途径
-
1.2.3. 用户可以利用密码管理器来便捷地管理多个高强度密码,从而有效降低数据泄露风险
-
1.2.4. 长度足够长
-
1.2.4.1. 最近的NIST密码标准建议密码长度最小为8位
-
1.2.4.2. 具有高度安全意识的个人通常使用的密码长度为20位以上
-
1.2.4.3. 使用密码短语可以帮助用户记住位数较长的密码
-
-
1.2.5. 难以猜测
-
1.2.5.1. 用户通常会高估他们选取随机数的能力
-
1.2.5.2. 最好利用随机数生成器生成的数值作为密码
-
1.2.5.3. 它们的记忆难度可能会给用户带来不便
-
-
1.2.6. 不重复使用
-
1.2.6.1. 密码会被存储在某些应用服务数据库中
-
1.2.6.2. 在不同应用或服务中使用相同的密码,那么安全性最弱的系统决定了这个密码的安全强度
-
-
1.2.7. 在任何情况下,都不能以明文形式直接存储密码,而应该存储密码的加密散列值
-
1.2.7.1. 散列算法的复杂度决定了暴力破解密码的开销
-
1.2.7.2. 由破解所需的时间和/或内存表示
-
1.2.7.3. NIST周期性发布的标准文件中包含了推荐的加密算法
-
1.2.7.4. 最好根据最新的行业实践选择最佳算法
-
2. 用户所持有的凭证
2.1. 用户可以提供的物理凭证
2.2. 时间型动态口令令牌
-
2.2.1. 基于时间的一次型口令(TOTP)是一种常见的认证标准
-
2.2.2. 它要求用户提供随时间改变的口令
-
2.2.3. RFC 6238定义了适用于硬件设备和软件应用的TOTP算法标准
-
2.2.4. 推荐使用移动设备/手机上的应用程序来产生动态口令
-
2.2.5. TOTP都要求用户和服务之间共享一个随机的种子密钥,将种子密钥和当前时间戳结合,使用一个加密散列算法就可生成一次性口令
-
2.2.6. 种子密钥在设备和认证服务器上的安全存储至关重要
-
2.2.6.1. 密钥泄露将对这种认证机制造成永久性破坏
-
2.2.6.2. RFC推荐使用类似TPM的硬件设备存储加密的密钥,并限制对硬件设备中加密数据的访问
-
2.2.6.3. 与认证服务器相比,移动设备上存放的种子密钥更容易泄露,移动设备无意间连接上一个恶意服务就可能导致密钥泄露
-
2.2.6.4. 可以使用一种TOTP的备选方案,通过加密信道给用户手机发送一个随机验证码,然后在另外一台设备上输入该验证码,验证用户目前是否持有对应的手机
-
-
2.2.7. 只要用户设备和服务器的时钟大致同步,则二者计算的TOTP一定相同,通过对比这个口令就可以确认用户是否拥有共享密钥
-
2.2.8. SMS并不是安全的通信信道
-
2.2.8.1. 利用随机验证码认证,需要保证验证码送达目标设备且确保没有在传输过程中被暴露或劫持
-
2.2.8.2. 以前通常将验证码作为短信传输,但是因为SMS系统对验证码的传输并没有足够的安全保证,所以不推荐使用SMS信道传输验证码
-
2.3. 证书
-
2.3.1. 为每个用户签发X.509证书是认证用户的另外一种有效方式
-
2.3.1.1. X.509证书一般通过计算机进行提交和认证识别,它是“机器”凭证
-
2.3.1.2. 其信息量比密码之类的“人类”凭证要大得多
-
2.3.1.3. 作为认证凭证时可以提供更丰富的信息
-
2.3.1.4. 以将用户的元数据嵌入或绑定到证书,由于可信机构对证书进行了签名,因此这些元数据也成为可信信息
-
2.3.1.5. 在不成熟的网络下,采用这种做法在一定程度上可以减少对可信用户目录的建设需求
-
-
2.3.2. 证书通过一个高强度的私钥生成,然后使用签发CA的私钥对证书进行签名
-
2.3.3. 对证书进行任何修改都会导致CA的签名无效,因此该证书可以作为任何信任其签发CA的服务的认证凭证
-
2.3.4. 推荐在特定硬件上产生和存储私钥以防数字盗窃
2.4. 安全令牌
-
2.4.1. 一种主要应用于用户认证的的硬件设备,但它们也有一些额外的应用
-
2.4.2. 凭证/私钥本身就是由安全令牌生成的,并且凭证信息永远不会离开硬件令牌
-
2.4.3. 用户设备通过API与硬件进行交互,代表用户执行加密操作,以证明用户确实持有安全令牌
-
2.4.4. 企业倾向于使用硬件机制来认证用户身份,诸如智能芯片和Yubikey这类的硬件设备提供1:1的身份断言,将用户身份与硬件设备绑定,大大减小了用户凭证被复制和盗窃的风险
- 2.4.4.1. 可能只有真正盗取硬件设备才能获得用户凭证
-
2.4.5. 使用特定硬件设备存储私钥是目前较安全的存储方法,而这些私钥是许多认证机制的基石
-
2.4.6. 通用第二因子(Universal 2nd Factor, U2F)认证
- 2.4.6.1. 作为成熟PKI机制的替代者,U2F针对网页服务提供了一种轻量级的挑战应答协议
-
2.4.7. 无论选择哪种认证机制,只要它依赖于非对称加密算法,那么最好使用安全令牌
-
2.4.8. 并不能保证自身的安全性
-
2.4.8.1. 被盗
-
2.4.8.2. 被滥用
-
-
2.4.9. 需要意识到令牌虽然是构建安全系统的一个不错的选择,但并不能彻底代替其他用户的身份验证机制,如果需要确保某个用户确实是其宣称的身份,那么仍然强烈建议使用附带额外认证因子的安全令牌(如口令或者生物特征)
3. 用户所固有的特征
3.1. 用户的固有特征
3.2. 通过物理特征识别用户被称为生物特征识别
3.3. 随着日常使用的各种设备越来越多地被嵌入各种高级传感器,生物特征识别的采用正变得越来越普遍
-
3.3.1. 指纹
-
3.3.2. 掌纹
-
3.3.3. 视网膜扫描
-
3.3.4. 语言分析
-
3.3.5. 人脸识别
3.4. 虽然生物特征识别有助于提升系统安全性,但这种机制的一些天然缺陷也不可忽略
-
3.4.1. 生物特征认证极大地依赖于物理特征的精准度量,攻击者可能欺骗传感器,从而通过认证
-
3.4.2. 针对指纹传感器的攻击方式已经获得成功,攻击者设法获取指纹图片,然后通过3D打印技术进行复制,从而成功欺骗指纹传感器
3.5. 生物特征的另一个缺点是它们不可变更
-
3.5.1. 这是人类与生俱来的物理特征
-
3.5.2. 这会引发一些潜在的访问问题
-
3.5.2.1. 有些人天生就没有指纹(皮纹病)
-
3.5.2.2. 在一场事故中失去了指纹
-
3.6. 生物特征识别还面临意想不到的法律问题
-
3.6.1. 在美国,法庭可以强制要求公民提供指纹从而解锁一个设备,但不可以强制要求公民说出他们的口令
- 3.6.1.1. 根据《美国宪法第五修正案》中公民拥有的自证其罪的权利
4. 一种或多种方法认证用户
4.1. 具体应该使用哪种/哪些认证方式取决于所需的信任等级
4.2. 对于需要多因子认证的高风险操作,最好不要选取同一类型的认证方式,即需要组合用户所知道的信息、所持有的凭证和所固有的特征这3种类型的认证方式
- 4.2.1. 因为攻击向量在特定分组中通常是相似的
4.3. 如何选取认证因子进行组合,很大程度上和用户所使用的设备相关
-
4.3.1. 用户设备是台式机,那么可以将密码(用户所知道的信息)和硬件令牌(用户所持有的凭证)组合起来提供高强度的认证机制,以保证极高的安全性
-
4.3.2. 移动设备的场景,指纹(用户所固有的特性)和密码(用户所知道的信息)的组合是一个更好的选择
5. 用户的物理安全
5.1. 影响用户信任度
5.2. 可以强迫用户阻止这些机制
5.3. 用户可能被威逼利诱,从而泄露他们的凭证或者授权某人操作他们的可信账户
5.4. 通过用户行为分析和历史操作日志分析可以发现异常,缓解这些攻击向量带来的影响
6. 带外认证
6.1. 采用带外认证方式认证用户时,会特意使用一个额外的通信信道,这个通信信道和用户首次认证所用的信道完全不同
6.2. 使用带外认证方式,可以提升账号破解的难度,因为攻击者必须控制/攻破带外认证的信道才能得逞
6.3. 主要的带外认证手段
-
6.3.1. 邮件方式可以告知用户最近发生的潜在敏感操作
-
6.3.2. 完成请求前让用户二次确认
-
6.3.3. 联系第三方以确认是否允许操作请求
-
6.3.4. 究竟该选择哪种形式取决于每次认证交互所需的认证强度
6.4. 带外认证使用得当可以极大地增加系统的安全性
7. 单点登录
7.1. 用户需要交互的服务数量越来越多,业界倾向于将认证和最终的服务实现解耦
7.2. 单点登录(SSO)是一个非常成熟的概念
-
7.2.1. 在SSO模式下,用户通过集中授权进行身份认证后会被授予令牌
-
7.2.2. 此令牌会用于后续和其他受保护服务的通信,这些服务收到带有令牌的用户请求后,通过安全的传输通道向认证服务验证这些令牌的合法性
7.3. 用户只需要与一项服务进行认证
7.4. 相关认证信息存储于一个有严格安全标准的特定服务上
7.5. 安全凭证存放位置的减少意味着暴露面减小,这降低了风险,并且更有利于变更凭证
7.6. 采用非集中式认证的零信任网络通过控制平面向数据平面推送凭证和访问策略,这样数据平面可以在任何时候按需完成认证,并且确保认证策略受控于控制平面
7.7. 需要尽可能确保到集中认证服务验证令牌的频率,因为每次调用控制平面验证令牌都提供了潜在的撤销令牌或趁机修改信任等级的机会
7.8. 服务在支持SSO认证的同时管理自己的登录机制
-
7.8.1. 控制平面只负责对初次请求进行授权,剩下的所有认证授权决策则交由服务自己负责
-
7.8.2. 信任的变更(甚至失效)是零信任网络的主要特点,因此,在采用这种模式之前需要谨慎评估
7.9. 已有的SSO技术
-
7.9.1. SAML
-
7.9.2. Kerberos
-
7.9.3. CAS
7.10. 在零信任网络中,认证应该始终是控制平面的关注点
7.11. 设计零信任网络的认证体系时,应该尽可能多地考虑控制平面的参与性,并且理所当然地应该让控制平面验证授权请求的频率尽可能高
8. 向本地认证解决方案转移
8.1. 扩展本地认证,使其和远程服务相结合,这种机制越来越受到认可
8.2. 用户通过本地的一个可信设备认证其存在性,可信设备进一步和远程服务进行认证,确认其身份的合法性
8.3. 一些开放标准(如FIDO联盟的UAF标准)使用非对称加密算法和本地设备认证系统(如口令和生物特征),将信任从大量服务转移到了数量相对较少的用户可控的终端上
8.4. UAF也许更像是密码管理器,但是它管理的是私钥而非密码,同时公钥会被分发给认证服务,这样它就可以确认用户确实持有私钥
8.5. 益处
-
8.5.1. 挑战应答系统减少了重放攻击的威胁
-
8.5.2. 减少了中间人攻击
-
8.5.3. 不存在同一凭证在不同服务中重复使用的情况,因为凭证和服务是1对1安全生成的