KeyleSSH:面向 IT 管理员的全新 PAM 概念
看起来您只提供了来源链接,而没有贴出需要翻译的正文内容。请把您想要翻译的文本粘贴进来,我会按照要求保留源链接并将内容翻译成简体中文。
为了更高的安全性和更少的管理员负担
基础设施安全建立在一个悖论之上:为了保护资产,你必须创建一个灾难性的单点漏洞——比如一个金库、证书颁发机构(CA)或存放所有密钥的数据库。美国财政部去年把信任寄托在单一供应商身上,便吃了这堂苦涩的教训。
业界的答案一直是“更安全的盒子”:堡垒主机、PAM 金库、轮换策略。但只要密钥存放在任何地方,就意味着密钥在某处暴露。我们把这称为 key‑under‑mat(钥匙在垫子下)问题。
Tide 的高级开发者 Sasha 在几个周末里尝试了一种新的 PAM 方法,能够同时消除密钥和垫子。没有需要保护或轮换的密钥,亦无可被窃取之物,管理员工作量为零。
她构建并开源了概念验证项目 KeyleSSH,这是一款基于浏览器的 SSH 控制台,用去中心化的密钥管理器取代了传统的集中式金库。
KeyleSSH 工作原理
KeyleSSH 利用 Tide Cybersecurity Fabric,这是一组节点(ORKs)的网络,这些节点在不直接看到秘密的情况下对其进行操作。它基于我们称之为 “Ineffable Cryptography” 的框架——一种加密方案,秘密从未完整呈现,因此永远不可能丢失、被窃取或被滥用。
- 密钥从未被重构,甚至在可信执行环境(TEE)中也不例外。
- 签名、解密或其他密钥操作是直接从分布式份额进行部分运算后数学构造的。
分布式签名流程
| 步骤 | 描述 |
|---|---|
| 身份验证 | 用户通过 OIDC(通过 TideCloak IAM)执行零知识认证,获取绑定到其设备和会话的令牌。 |
| 请求 | KeyleSSH 构建一个签名请求,包含原始 SSH 挑战字节和人类可读的元数据。 |
| 共识 | 请求被发送到去中心化的 Fabric。节点独立验证策略(例如,“用户 A 是否被允许访问服务器 B?”)。 |
| 阈值签名 | 如果策略通过,节点使用 Tide 的特殊多方计算(MPC)生成部分签名。这些部分签名被组合成有效的 Ed25519 签名。 |
关键点: 私钥从未被重新组装。即使你攻破单个节点,也只能看到数学噪声。要攻破密钥,需要同时攻破 多数节点。
底层协议已通过七年的学术研究进行正式分析。请参阅其中一个密码学证明 here.
为什么这很重要
- Reduced operational complexity – 降低运营复杂性 – 无 HSM,无高风险软件保险库。
- Zero admin overhead – 零管理员开销 – SDK 将编排和密钥生命周期管理抽象为标准的异步接口。
- Stronger policy enforcement – 更强的策略执行 – 策略可以要求其他管理员的 M‑of‑N 签名后才授予访问权限,使单个根管理员无法绕过控制。
示例代码
下面的代码片段替换了传统 PAM 的整个“安全保险箱”后端。它位于 client/src/lib/tideSsh.ts。
import { IAMService } from "@tidecloak/js";
import { TideMemory, BaseTideRequest } from "heimdall-tide";
export function createTideSshSigner(): SSHSigner {
return async (req: SSHSignatureRequest) => {
const tc = (IAMService as any)._tc;
// 1. Pack the data (Metadata + SSH Challenge)
const humanReadable = createHumanReadableInfo(req);
const draft = TideMemory.CreateFromArray([humanReadable, req.data]);
// 2. Construct the Request for the Fabric
const tideRequest = new BaseTideRequest(
"BasicCustom", // Protocol
"BasicCustom", // Version
"Policy:1", // The policy contract to execute
draft,
new TideMemory()
);
// 3. Attach Authorizer (the user's doken)
const dokenBytes = new TextEncoder().encode(tc.doken);
tideRequest.addAuthorizer(TideMemory.CreateFromArray([dokenBytes]));
// 4. Execute Distributed Signing
// The SDK handles the communication with the ORK nodes.
const initialized = await tc.createTideRequest(tideRequest.encode());
const sigs = await tc.executeSignRequest(initialized, true);
return sigs[0]; // The valid Ed25519 signature.
};
}
这实现了以前需要昂贵硬件模块(HSM)或高风险软件保险箱的功能:在签名密钥从未出现在内存中的情况下生成有效签名。
限制与未解决问题
| Area | Current Status | Future Work |
|---|---|---|
| 浏览器安全 | 客户端在浏览器中运行。我们使用子资源完整性(SRI),但受损的终端设备(管理员笔记本上的恶意软件)仍然是威胁向量。 | 探索基于硬件的证明和客户端侧的安全隔离区。 |
| 测试网的中心化 | 目前,Tide ORK 节点主要由 Tide 测试网络运营。 | 部署完全去中心化的主网,并鼓励第三方节点运营商加入。 |
| 主机加固 | 此方案解决了身份验证问题,但并未取代操作系统层面的控制、补丁或网络分段。 | 提供将 KeyleSSH 集成到现有加固框架中的最佳实践指南。 |
结束语
KeyleSSH 展示了在“受信任金库”时代之外的可能性。通过将状态和权威推向去中心化的结构,我们消除了困扰现代基础设施的单点故障。它并未消除所有安全风险,但它 显著降低了“中心信任” 的冲击范围。
如果您想尝试 PoC 或做出贡献,仓库可在 GitHub 此处 获取。
# KeylessH
*“at underpins traditional security stacks.”*
**Source Code:** [github.com/sashyo/keylessh](https://github.com/sashyo/keylessh)
**Demo:** [demo.keylessh.com](https://demo.keylessh.com)
**Documentation:** [docs.tidecloak.com](https://docs.tidecloak.com)