在此协议中,用户需要进行身份验证。 他们可以使用密码、包含 RSA 私钥的文件、硬件设备(例如 Ledger Nano S 和 Ledger Nano X)等来做到这一点。
一些身份验证方法比其他方法更安全:使用设计用于存储私钥而无法提取私钥的硬件设备比将私钥存储在文件中更安全。 不幸的是,最安全的使用起来也更痛苦。 将密钥放在设备上的用户需要随身携带设备,每次启动 SSH 会话时都需要输入 PIN 码等。这使得在以下用例中提倡比密码和文件更安全的方法非常困难访问的安全性不是优先事项。
所以问题是:是否有可能在不改变用户体验的情况下,将身份验证材料存储在比文件(可能被某些恶意软件窃取)更安全的情况下?
答案是:是的,使用 TPM!
一些历史
很长一段时间以来,计算机已经能够直接嵌入安全芯片。 这种名为可信平台模块 (TPM) 的芯片提供了许多功能,包括保护公钥加密中使用的私钥的能力。
由于它嵌入在计算机中,因此无需在计算机中插入设备即可使用它。 因此,这被认为不如可以存储在与计算机不同的地方的硬件设备安全(这可以强制执行这样的原则,即当设备未连接到计算机时,没有恶意软件可以使用存储在其中的秘密)。
所以 TPM 不是“最好的安全性”,但它仍然比使用诸如 $HOME/.ssh/id_rsa
来存储私钥。
TPM 如何与 Linux 上的 OpenSSH 一起使用? 有一个名为 tpm2-pkcs11
,遵循多年来在许多网站上提供的说明,包括 来自其代码存储库的官方文档.
现在,有什么消息? 该软件现在终于打包在 Ubuntu 和 Debian 中,这使得它终于可供大多数 Linux 用户使用!
更准确地说,这是一个时间表:
- 2014 年发布了 TPM 2.0 的主要规范。 为了从软件与 TPM 交互,进行了标准化工作,并创建了两个不兼容的软件堆栈:一个来自可信计算组 (TCG),称为 TPM 软件堆栈 (TSS),以及来自 IBM 的,也称为 TPM 软件堆栈.
- 2018年,该项目
tpm2-pkcs11
创建是为了使用 TCG 的 TSS 为 TPM 11 提供 PKCS#2.0 接口。 PKCS#11 是一个标准,它定义了一个名为 密码学 使用存储加密密钥的令牌。 由于 OpenSSH 支持使用 PKCS#11 接口执行用户身份验证,因此可以使用 TPM 存储用于 SSH 身份验证的密钥。 - 今年二月2019,
tpm2-pkcs11
已添加到 Fedora 29. - 2019 年 8 月,CentOS XNUMX 发布了这个软件包。
- 在2020四月,
tpm2-pkcs11
已添加到 Debian SID. 不幸的是它没有包含该程序tpm2_ptool
这是轻松创建密钥所必需的。 这个问题被报告在 Debian 漏洞 #968310. - 2021 年 XNUMX 月,Debian 的软件包是 固定 (并且维护者承认了我的帮助!)。
- 2021 年 21.04 月,Ubuntu XNUMX 赫斯特河马 被释放 固定包裹.
- 2021 年 11 月,Debian XNUMX 舷窗 被释放 固定包裹
现在 tpm2-pkcs11
在 Debian、Ubuntu 和上列出的其他几个 Linux 发行版上可用 报刊.
使用 tpm2-pkcs11
在 Debian 11 上,以下是生成和使用由 TPM 安全存储的新 SSH 密钥的步骤:
- 安装命令
tpm2_ptool
和图书馆libtpm2_pkcs11.so.1
,它们由两个包提供:
2. 检查系统是否可以使用 TPM 2.0。 如果以下检查之一失败,则可能意味着系统没有 TPM,或者有 TPM 1.2,或者有在 BIOS 设置中禁用的 TPM 2.0:
3.将当前用户添加到可以访问TPM设备的组 /dev/tpmrm0
. 在 Debian 和 Ubuntu 上,用户需要属于一个名为 tss
(感谢提供的配置 tpm-udev
包). 以下命令将当前用户添加到该组:
初始化用户存储,受密码和 索品 并创建一个密钥,例如名为“NIST P-256”(也称为“secp256r1”)的曲线上的椭圆曲线密钥:
4.缩写词 索品 手段 保安员个人识别号码 并且是 PKCS#11 规范中的一个概念。 在简单的用例中,它可以被视为一个“恢复密码”,可以在密码丢失等情况下修改密码。
5. 显示这个新密钥的公钥:
6.在服务器中配置新的公钥,例如将其写入 $HOME/.ssh/authorized_keys
或在 GitHub 的帐户设置中或在使用 SSH 公钥的任何其他位置。
7.配置SSH客户端使用 tpm2-pkcs11
连接到服务器,例如将其写入 $HOME/.ssh/config
(客户端):
连接服务器(注意上一步可以跳过:
未来的工作
上一节介绍了如何在 TPM 中创建新密钥。 虽然这允许使用 TPM 来保护 SSH 身份验证,但需要两个功能才能使其成为使用文件存储私钥的真正替代方案:
- 功能 #1:将现有的 SSH 密钥导入 TPM,而不是创建新密钥(这样可以平稳过渡到 TPM 存储,备份密钥,以防计算机损坏或丢失等)。
- 功能 #2:使用没有密码的 SSH 密钥,如未受保护的私钥文件(此功能比密钥文件更安全,因为受保护的密钥无法从 TPM 中提取)。
我在中实现了这两个功能 tpm2-pkcs11
并在 Pull Requests 中提交它们 #681 和 #695. 功能 #1 也在 XNUMX 月的每周在线电话会议中提出 tpm.dev 社区 录音可在 https://developers.tpm.dev/posts/14389750.
所以这两个功能很可能会在未来的版本中可用 tpm2-pkcs11
.
顺便说一句,对于想要了解内部结构的好奇读者 tpm2-pkcs11
,我在 SSTIC 2021 会议上发表了一篇关于他们的文章,名为 使用 TPM 2.0 保护 SSH 身份验证(英文文章,法文演示). 此外,想要在不接触真实 TPM 的情况下进行尝试的读者可能会对本文的“模拟 TPM 2.0”部分感兴趣。
(插图: Rainer Knäpper,自由艺术许可)
- SEO 支持的内容和 PR 分发。 今天得到放大。
- 柏拉图爱流。 Web3 数据智能。 知识放大。 访问这里。
- 与 Adryenn Ashley 一起铸造未来。 访问这里。
- 使用 PREIPO® 买卖 PRE-IPO 公司的股票。 访问这里。
- Sumber: https://www.ledger.com/blog/ssh-with-tpm
- :具有
- :是
- :不是
- :在哪里
- $UP
- 1
- 11
- 13
- 14
- 15%
- 2014
- 2018
- 2019
- 2020
- 2021
- 30
- 8
- 80
- a
- 对,能力--
- Able
- 关于
- ACCESS
- 账号管理
- 承认
- 加
- 添加
- 添加
- 主张
- 还
- 替代
- an
- 和
- 回答
- 任何
- API
- 应用领域
- 四月
- 保健
- 艺术
- 刊文
- AS
- At
- 八月
- 认证
- 认证
- 可使用
- 后盾
- BE
- 成为
- 很
- 都
- 破
- 问题
- 但是
- by
- 呼叫
- CAN
- 不能
- 携带
- 案件
- 例
- CGI
- 改变
- 查
- 支票
- 芯片
- 客户
- 码
- 一台
- 电脑
- 计算
- 概念
- 研讨会 首页
- 配置
- 分享链接
- 已联繫
- 考虑
- 可以
- 创建信息图
- 创建
- 创造
- 加密
- 加密技术
- 好奇
- 电流
- 曲线
- 定义
- 设计
- 开发
- 设备
- 设备
- DID
- 不同
- 难
- 直接
- 禁用
- 屏 显:
- 分布
- do
- 文件
- 不
- ,我们将参加
- 容易
- 努力
- 椭圆
- 嵌
- 嵌入式
- 启用
- 使
- 强制执行
- 英语
- 等
- EVER
- 所有的
- 例子
- 现有
- 体验
- 提取
- 失败
- 专栏
- 特征
- 二月
- 文件
- 档
- 终于
- 固定
- 以下
- 针对
- Free
- 法语
- 止
- 未来
- 生成
- GitHub上
- 团队
- 硬件
- 硬件设备
- 硬件设备
- 有
- 此处
- 创新中心
- How To
- HTML
- HTTP
- HTTPS
- i
- IBM
- 鉴定
- if
- 实施
- 输入
- in
- 包含
- 不相容
- 开始
- 代替
- 说明
- 相互作用
- 有兴趣
- 接口
- 成
- 问题
- IT
- 它的
- 一月
- 2021 年 XNUMX 月
- JPG
- 键
- 键
- 已知
- 莱杰
- Ledger Nano
- Ledger Nano S
- Ledger Nano X.
- 减
- 喜欢
- 容易
- Linux的
- 已发布
- 圖書分館的位置
- 丢失
- 主要
- 使
- 制作
- 制作
- 恶意软件
- 许多
- 材料
- 最大宽度
- 可能..
- 意味着
- 手段
- 模块
- 更多
- 此外
- 最先进的
- 许多
- my
- 命名
- 纳米
- 必要
- 需求
- 打印车票
- 全新
- 消息
- 没有
- 现在
- of
- 官
- on
- 一
- 那些
- 在线
- or
- 秩序
- 其他名称
- 其它
- 包
- συσκευάζονται
- 包
- 痛苦
- 密码
- 密码
- 演出
- 个人
- 地方
- 平台
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 插头
- 可能
- 恰恰
- 呈现
- 以前
- 原理
- 优先
- 私立
- 私钥
- 私钥
- 代码编程
- 项目
- 保护
- 保护
- 保护
- 协议
- 提供
- 提供
- 提供
- 国家
- 公钥
- 公钥
- 出版
- 题
- 读者
- 真实
- 了解
- 释放
- 发布
- 报道
- 必须
- RSA
- s
- 部分
- 安全
- 安全
- 保安
- 看到
- 九月
- 会议
- 设置
- 几个
- 侧
- 简易
- So
- 软件
- 一些
- 规范
- 规格
- 堆栈
- 标准
- 步
- 步骤
- 仍
- 被盗
- 存储
- 商店
- 存储
- 提交
- 这样
- 支持
- 系统
- 比
- 谢谢
- 这
- 每周
- 其
- 他们
- 那里。
- 因此
- 他们
- 事
- Free Introduction
- 次
- 时间表
- 至
- 令牌
- 接触
- 过渡
- 信任
- 尝试
- 二
- 类型
- Ubuntu
- 理解
- 不幸
- 使用
- 用过的
- 用户
- 用户体验
- 用户
- 运用
- 想
- 是
- 方法..
- 方法
- 网站
- 每周
- 为
- ,尤其是
- 这
- 而
- WHO
- 也完全不需要
- 写作
- X
- 年
- 含
- 和风网