SkyClaw, AI 에이전트를 위한 암호화된 채팅 기반 API 키 설정 기능 추가

✍️ OpenClawRadar📅 게시일: March 11, 2026🔗 Source
SkyClaw, AI 에이전트를 위한 암호화된 채팅 기반 API 키 설정 기능 추가
Ad

SkyClaw는 LLM이나 메시징 플랫폼에 노출되지 않도록 채팅 인터페이스를 통해 API 키를 안전하게 설정하는 방법을 소개합니다. 이 시스템은 키를 변경하기 위해 SSH 접근, 설정 파일 편집 및 서비스 재시작이 필요한 기존의 자체 호스팅 에이전트의 워크플로우 마찰을 해결합니다.

작동 방식

이 솔루션은 두 가지 보안 계층을 가지고 있습니다:

  • 계층 1 — 시스템 차단: 키 명령어(/addkey, /keys, /removekey)와 암호화된 블록(enc:v1:로 시작)은 메시지가 에이전트에 도달하기 전에 main.rs에서 차단됩니다. Rust 프로세스는 이를 복호화, 검증하고 볼트에 저장하여 LLM이 자격 증명 작업에 전혀 관여하지 않도록 합니다.
  • 계층 2 — OTK 암호화: RFC 3986에 따라 서버로 전송되지 않는 URL 조각(#)을 사용합니다. 흐름: 봇이 setup.page/#one-time-256bit-key를 전송하고, 브라우저는 WebCrypto를 사용하여 AES-256-GCM으로 API 키를 로컬에서 암호화하며, 사용자는 암호화된 블록을 채팅에 다시 붙여넣고, 봇은 시스템 계층에서 복호화하여 저장한 후 일회용 키를 폐기합니다.

보안 결과

  • 메시징 플랫폼은 암호문만 확인합니다(OTK 없이는 무용지물)
  • LLM은 아무것도 확인하지 않습니다(에이전트 루프 전에 차단됨)
  • GitHub Pages는 GET /setup만 확인합니다
  • 텍스트를 송수신할 수 있는 모든 플랫폼에서 작동합니다
Ad

다른 프로젝트와의 비교

소스는 현재 솔루션의 한계를 확인합니다:

  • OpenClaw: 설정 파일, 환경 변수, CLI 마법사, 선택적 외부 비밀 관리자를 사용합니다. GitHub 이슈 #11829은 "OpenClaw는 현재 API 키가 LLM에 유출되거나 채팅에 노출될 수 있는 여러 경로를 가지고 있습니다."라고 명시합니다. 이슈 #19137은 config.get이 API 키를 세션 기록 JSONL 파일에 유출하는 것을 문서화합니다.
  • OpenFang (Rust): config.toml(api_key_env = "ANTHROPIC_API_KEY")에서 참조되는 환경 변수, CLI 초기화 마법사, 대시보드 UI를 사용합니다. Zeroizing<String> 및 AES-256-GCM 자격 증명 볼트로 강력한 저장 보안을 제공하지만, 채팅에서 안전한 키 수신 기능은 없습니다.
  • NanoClaw: /setup 스킬 중에 설정된 ANTHROPIC_API_KEY 또는 CLAUDE_CODE_OAUTH_TOKEN 환경 변수를 사용합니다. Docker 샌드박스 모드에서는 프록시 기반 시스템이 센티널 값을 대체하지만, 여전히 메시징을 통한 암호화된 키 전송은 없습니다.
  • PicoClaw: 환경 변수 재정의(PICOCLAW_PROVIDERS_*)와 함께 ~/.picoclaw/config.json을 사용합니다. 이슈 #972는 자가 치유 로직이 config.json을 읽고 원시 API 키를 채팅 로그에 반향할 때 하위 에이전트 자격 증명 유출을 문서화합니다.

OpenClaw의 이슈 #7916이 명시한 근본적인 문제는 "키는 [시스템이] 작동하기 위해 평문이어야 합니다."입니다. 외부 비밀 관리자는 평문 노출을 런타임으로 연기하지만, 전송을 암호화하는 사람은 없습니다.

기술적 세부 사항

URL 조각은 RFC 3986에 따라 # 및 그 뒤의 모든 내용이 HTTP 요청에서 서버로 전송되지 않고, Referer 헤더에 포함되지 않으며, CDN/프록시/웹 서버에 기록되지 않고, 완전히 클라이언트 측에서 처리되기 때문에 작동합니다. GitHub Pages는 OTK에 대한 지식 없이 GET /setup을 수신합니다.

main.rs의 메시지 핸들러는 엄격한 우선 순위를 가지고 있습니다: 키 명령어와 암호화된 블록이 먼저 일치하며 즉시 반환되어 에이전트로 넘어가지 않습니다. LLM은 모든 검사를 통과한 메시지만 수신합니다. 출력 측에서는 SecretCensorChannel이 모든 발신 메시지를 래핑합니다.

📖 전체 소스 읽기: r/openclaw

Ad

👀 See Also

Tatu: Claude 코드 블록의 비밀 및 파괴적 명령을 차단하는 오픈소스 보안 레이어
Tools

Tatu: Claude 코드 블록의 비밀 및 파괴적 명령을 차단하는 오픈소스 보안 레이어

Tatu는 실시간으로 Claude Code 작업을 가로채어 실행 전에 유출된 비밀을 차단하고, 개인 식별 정보(PII)를 표시하며, 파괴적인 명령을 거부하는 오픈소스 훅 시스템입니다. 설치 방법은 pip/pipx를 통해 'tatu-hook init'을 실행하여 감사 모드를 활성화하는 것입니다.

OpenClawRadar
클로드 AI, YC 2026년 봄 모든 스타트업 평가 — 전체 파이프라인 상세
Tools

클로드 AI, YC 2026년 봄 모든 스타트업 평가 — 전체 파이프라인 상세

레딧 사용자가 YC Spring 2026 스타트업을 대상으로 Claude를 실행해 LinkedIn과 언론 기사를 스크랩하고 S~D 등급을 할당했습니다. 대부분의 스타트업이 B나 C 등급을 받았습니다.

OpenClawRadar
지금은 Figma보다 Claude로 디자인합니다 — 제인 스트리트 디자이너 워크플로우
Tools

지금은 Figma보다 Claude로 디자인합니다 — 제인 스트리트 디자이너 워크플로우

Jane Street 디자이너가 Figma 대신 Claude Code로 프로토타입을 제작하며, 실제 코드로 기능을 구현하여 주 단위의 논의를 절약한 사례를 소개합니다.

OpenClawRadar
레딧 사용자가 재시도 루프를 깨기 위해 실패 학습 코딩 에이전트를 실험합니다
Tools

레딧 사용자가 재시도 루프를 깨기 위해 실패 학습 코딩 에이전트를 실험합니다

r/LocalLLaMA의 한 개발자가 단순화된 근본 원인을 저장하고 수정 사항을 매칭하여 반복적인 오류 루프를 줄이는 코딩 에이전트 실험을 설명합니다.

OpenClawRadar