认证服务架构
背景
Linux 默认使用 PAM 作为认证框架,通过模块的方式添加不同的认证方式。但这种方式对于多路认证、多因子认证等方式支持困难,并且也不便于适配新的认证方式。
基于用户体验和适配的需要, UOS 设计并实现了一套认证服务,认证服务依然基于 PAM ,但在认证方式的添加上设计了新的规范。
设计的原则如下:
- 提供认证方案接入规范,便于适配
- 支持多路认证,增强用户体验
- 支持多因子认证,增强安全性
- 基于 =PAM= 框架,应用无需修改
架构
UOS 的认证服务架构如下:
流程
- 应用依然使用 PAM 的接口发起认证请求,即 UOS认证服务对应用是透明的
- UOS PAM Module是一个 UOS 实现的模块,作为默认的 PAM认证模块
- UOS PAM Module 收到应用认证请求后,调用 UOS Authenticate Service
- UOS Authenticate Service根据调用参数和应用的配置文件,选择认证方式
认证方式即是按照 UOS 接口规范实现的 Authenticate Backend,可自由组合,可设置多路认证或者多因子认证
可信验证
- 安全启动保障启动的系统是可信的
- 系统依据应用签名验证机制保障应用是可信的
- 系统依据开发者模式保障系统中的可信机制不被修改或破坏
- 基于系统不可修改保障认证模块及服务是可信的
- 依据 DBus 的安全规则保障 DBus 通信数据不可被监听,确保通信数据的安全
问题
- 缺乏验证生物识别设备可信的机制
- 生物识别登录时无法解锁 keyring ,因为 keyring 目前只支持密码解锁
录时无法解锁 keyring ,因为 keyring 目前只支持密码解锁 - 生物识别设备被抢占的问题,如多个应用同时开启,如何在抢占后恢复