KeyleSSH: IT 관리자를 위한 새로운 PAM 개념
I’m happy to translate the article for you, but I don’t have access to the full text of the page at the link you provided. Could you please paste the content you’d like translated here? Once you do, I’ll keep the source line exactly as‑is and translate the rest into Korean while preserving all formatting, markdown, and code blocks.
더 큰 보안과 적은 관리 오버헤드
인프라 보안은 역설에 기반합니다: 자산을 보호하려면 모든 열쇠를 보관하는 금고, 인증 기관(Certificate Authority) 또는 데이터베이스와 같은 치명적인 단일 취약점이 필요합니다. 미국 재무부는 지난해 단일 공급업체에 신뢰를 맡기면서 이 교훈을 힘들게 배웠습니다.
업계의 답은 언제나 “더 안전한 상자”였습니다: 바스천 호스트, PAM 금고, 회전 정책 등. 하지만 어디에든 저장된 키는 어딘가에 노출된 키와 같습니다. 우리는 이를 key‑under‑mat 문제라고 부릅니다.
Tide의 시니어 개발자 Sasha는 키와 매트를 모두 없애는 새로운 PAM 접근 방식을 몇 주말에 시도했습니다. 보관하거나 회전시킬 키가 없고, 훔칠 것도 없으며, 관리 오버헤드도 전혀 없습니다.
그녀는 중앙 집중식 금고를 분산형 비밀 관리자로 대체하는 브라우저 기반 SSH 콘솔 KeyleSSH의 개념 증명을 구축하고 오픈소스로 공개했습니다.
KeyleSSH 작동 방식
KeyleSSH는 Tide Cybersecurity Fabric을 활용합니다. 이 패브릭은 비밀을 직접 보지 않고도 처리하는 노드(ORK)들의 네트워크이며, 우리는 이를 “Ineffable Cryptography” 라는 프레임워크에 기반하고 있습니다. 즉, 비밀이 전체 형태로 표현되지 않기 때문에 절대 분실, 도난, 오용될 수 없습니다.
- 키는 절대로 재구성되지 않으며, TEE에서도 재구성되지 않습니다.
- 서명, 복호화 또는 기타 키 동작은 분산된 공유값을 이용해 부분 연산을 직접 수행함으로써 수학적으로 구성됩니다.
분산 서명 흐름
| 단계 | 설명 |
|---|---|
| 인증 | 사용자는 OIDC(TideCloak IAM)를 통해 제로‑지식 인증을 수행하고, 자신의 디바이스와 세션에 바인딩된 토큰을 받습니다. |
| 요청 | KeyleSSH는 원시 SSH 챌린지 바이트와 인간이 읽을 수 있는 메타데이터를 포함한 서명 요청을 구성합니다. |
| 합의 | 요청은 탈중앙화된 패브릭으로 전송됩니다. 노드들은 정책을 독립적으로 검증합니다(예: “사용자 A가 서버 B에 접근할 수 있는가?”). |
| 임계값 서명 | 정책이 통과하면, 노드들은 Tide의 특수 MPC를 사용해 부분 서명을 생성합니다. 이 부분 서명들은 결합되어 유효한 Ed25519 서명을 형성합니다. |
핵심 포인트: 개인 키는 절대로 재조립되지 않습니다. 단일 노드가 손상되더라도 수학적 노이즈만 볼 수 있습니다. 키를 손상시키려면 다수의 노드를 동시에 손상시켜야 합니다.
기본 프로토콜은 7년간의 학술 연구를 통해 공식적으로 분석되었습니다. 암호학적 증명 중 하나는 **여기**에서 확인할 수 있습니다.
왜 이것이 중요한가
- 운영 복잡성 감소 – HSM이 없고, 위험도가 높은 소프트웨어 금고도 없습니다.
- 관리자 오버헤드 제로 – SDK가 오케스트레이션 및 키 수명 주기 관리를 표준 비동기 인터페이스로 추상화합니다.
- 정책 집행 강화 – 정책은 접근 권한을 부여하기 전에 다른 관리자들의 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)이나 고위험 소프트웨어 금고가 필요했던 작업을 서명 키가 메모리에 전혀 존재하지 않은 상태에서 유효한 서명을 생성하는 형태로 구현합니다.
제한 사항 및 미해결 이슈
| 영역 | 현재 상태 | 향후 작업 |
|---|---|---|
| 브라우저 보안 | 클라이언트는 브라우저에서 실행됩니다. 우리는 Subresource Integrity (SRI)를 사용하지만, 손상된 엔드포인트 장치(관리자 노트북의 악성코드)가 여전히 위협 벡터가 됩니다. | 클라이언트 측에서 하드웨어 기반 인증 및 보안 엔클레이브를 탐색합니다. |
| 테스트넷의 중앙화 | 현재 Tide ORK 노드는 주로 Tide 테스트 네트워크에 의해 운영됩니다. | 완전 분산된 메인넷을 배포하고 제3자 노드 운영자를 장려합니다. |
| 호스트 강화 | 이 솔루션은 인증 문제를 해결하지만 OS‑ 수준 제어, 패치 적용 또는 네트워크 분할을 대체하지 않습니다. | 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)