콘텐츠로 이동

열쇠

문서
09
상태
초안
판
v0.1
날짜
2026-10-13

Hahoe Genesis Protocol (HGP)에서 원본을 무엇으로 잠그고, 누가 열고, 열쇠를 잃거나 기탁자가 세상을 떠나면 어떻게 되는지를 정한다. 원칙 3 「주인의 열쇠가 아니면 열리지 않는다」를 실제로 지키는 법이다.


원본은 파일마다 다른 열쇠로 잠그고, 그 열쇠를 다시 기탁자의 열쇠로 감싼다. 기탁자의 열쇠는 셋으로 나눠 맡기고 둘이 모여야 되살아난다: 기탁자 기기, 가족(승계자), 노드원. 노드원 혼자서는 열 수 없고, 기탁자는 외울 것이 없다.

  1. 노드원 혼자서는 원본을 열 수 없다 (원칙 3). 저장고 운영자, 서버를 턴 사람, 노드원에 자료를 요구하는 사람 모두 마찬가지다.
  2. 기탁자는 열쇠를 의식하지 않는다 (HGP-0005 2절). 복구 문구를 외우거나 종이를 지키게 하지 않는다. 폰의 지문·얼굴 인식으로 연다.
  3. 폰을 잃어도 기록을 잃지 않는다. 가족과 노드원이 함께 되찾아 준다.
  4. 봉인은 기탁자 혼자다. 승계자도, 되찾기를 도운 가족도 열지 못한다 (00-원칙 3절).
  5. 열쇠로 막는 구간과 약속으로 막는 구간을 나눠 적는다 (01-권한 1절 4번). 이 문서 7절에 모아 둔다.
열쇠 무엇을 하나 어디에 있나 9월 규격
내용 열쇠 원본 파일 하나를 잠근다. 파일마다 새로 만드는 무작위 열쇠 감싼 채로 저장고의 열쇠 장부에
주인 열쇠 기탁자의 내용 열쇠들(봉인 빼고)을 감싼다. 서명 열쇠도 여기서 끌어낸다 기탁자 기기 안. 되찾기용 조각 셋 (4절) 사람의 열쇠
관계 열쇠 범위 하나(관계, 조합)를 연다. 그 범위의 내용 열쇠를 한 번 더 감싼다 그 범위에 든 사람들의 주인 열쇠로 감싸서 관계의 열쇠
봉인 열쇠 봉인 기록의 내용 열쇠를 감싼다 기탁자 기기와, 인터넷에 붙지 않은 곳 하나. 조각을 나누지 않는다 차가운 것 (5절)
서명 열쇠 기탁자가 지문에 서명한다 (5절) 주인 열쇠에서 끌어낸다
  • 「앱 열쇠」(결정 0011)는 이 문서의 열쇠가 아니다. 앱이 저장고에 들어가는 출입증이고, 원본을 풀지 못한다.
  • 한 파일을 여는 길: 기기의 지문·얼굴 인식 → 주인 열쇠 → 그 파일의 내용 열쇠 → 원본. 관계 범위면 관계 열쇠를 한 번 더 거친다.
  • 기기에서 잠근 뒤 보낸다. 녹음이 끝나면 기기가 원본 지문(sha256_device)을 뜨고, 내용 열쇠로 잠그고, 잠근 파일의 지문까지 뜬 뒤 보낸다. 저장고는 잠근 파일만 받는다.
  • 저장고는 잠근 파일의 지문(보관 지문, sha256_stored)을 떠서 기기가 보낸 값과 맞춰 본다. 다르면 저장하지 않는다 (02-지문 2절의 「두 번 뜬다」를 잠근 파일로 한다).
  • 저장고는 원본을 볼 수 없으므로 원본 지문을 다시 뜰 수 없다. 기기에서 잠그면 원본 지문(sha256_store)은 기기가 뜬 값을 그대로 적는다. 원본 지문을 다시 맞춰 보는 일은 기탁자 기기가 열 때마다 한다 (02-지문 4절).
  • 장부에는 encryption: "user-key", event: "encrypted"가 남는다 (03-manifest 3·5절).
  • 기기에서 잠글 수 없는 경우(이미 찍어 둔 고문서 스캔 묶음 등)에는 저장고가 받는 즉시 잠그고 잠그기 전 사본을 지운다. 받은 순간부터 잠글 때까지는 약속으로 막는다.

주인 열쇠를 셋으로 나눈다. 둘이 모이면 주인 열쇠가 되살아나고, 하나로는 아무것도 알 수 없다 (샤미르 비밀 나누기). 노드원 대표 결정 (2026-10-13, 결정 0018).

조각 누가 갖나 어떻게
1 기탁자 기기 안 (주인 열쇠 자체와 함께)
2 가족 (승계자) 가족이 앱을 쓰면 그 사람의 주인 열쇠로 감싸서, 아니면 종이 카드(QR)로
3 노드원 노드원 열쇠로 잠가 데이터와 다른 곳에. 사본은 원본 두 곳 규칙대로 (결정 0010)
  • 가족을 정하지 않으면 조각 2 자리에 기탁자의 둘째 기기(다른 폰, 컴퓨터, 보안 열쇠)를 쓴다. 둘 다 없으면 폰을 잃을 때 되찾을 수 없다. 시작할 때 이것을 알린다.
  • 조각 2를 가진 가족이 곧 승계자인 것을 기본으로 한다. 다르게 정할 수도 있다.
  • 조각은 열쇠를 되살리는 데만 쓴다. 조각을 가진 가족은 그것만으로 아무것도 열지 못한다.

되찾기 (기탁자가 살아 있고 폰을 잃었을 때)

  1. 기탁자가 새 기기에서 되찾기를 청한다. 노드원은 신원을 확인한다.
  2. 가족이 자기 조각을 새 기기로 보낸다.
  3. 7일을 기다린다. 그동안 기탁자의 다른 기기와 가족에게 알린다. 누가 기탁자인 척 청한 것이면 그 사이에 막을 수 있다.
  4. 노드원이 자기 조각을 새 기기로 보낸다. 주인 열쇠는 새 기기 안에서만 되살아난다. 노드원과 가족은 서로의 조각을 보지 않는다.
  5. 새 기기는 주인 열쇠를 새로 만들고 조각을 다시 나눈다 (옛 조각은 쓸모없어진다).
  6. 되찾기를 했다는 사실과 시각은 지우지 않는 줄로 남는다 (HGP-0005 10절).

승계 (기탁자가 세상을 떠났을 때)

01-권한 2절의 절차 그대로다: 사망 확인, 승계자 신원 확인, 대기 기간, 실행 기록. 대기 기간은 30일로 한다. 그다음 승계자 조각과 노드원 조각으로 주인 열쇠를 승계자 기기에서 되살린다.

  • 승계자가 여는 것은 봉인을 뺀 전부다. 봉인 열쇠는 조각에 들어 있지 않으므로 승계로 열리지 않는다 (00-원칙 3절 「승계자도 열지 못한다」).
  • 승계는 범위를 바꾸지 않는다. 승계자는 범위를 넓히지 못한다 (01-권한 2절).

노드원이 사라지면 조각 3을 다음 수탁자에게 넘긴다. 넘기는 것은 조각이고, 넘긴 사실은 기록된다 (HGP-0003 10조, HGP-0005 8-1절). 넘기기 전이라도 기탁자 기기와 가족 조각, 둘이면 열쇠를 다시 나눌 수 있다.

02-지문 8절에서 열어 둔 「기탁자 서명」을 정한다 (결정 0018).

  • Ed25519 (RFC 8032). 서명 열쇠는 주인 열쇠에서 끌어내고(HKDF, RFC 5869), 기기 안에서만 쓴다.
  • 서명하는 것: 기록의 원본 지문과 기록 번호, 시각. 「이 사람이 이 기록을 맡겼다」는 증명이다.
  • 공개 열쇠는 저장고에 두고, 바뀔 때마다(되찾기, 승계) 새 공개 열쇠와 그 까닭을 지우지 않는 줄로 남긴다.
  • C2PA 방식(X.509 인증서)은 기관이 기탁자일 때 다시 본다.
  • 등록부 줄의 저장고 서명(secp256k1, 결정 0016)과는 다르다. 그것은 저장고가 「올렸다」는 서명이다.
  • 범위를 넓힌다 = 내용 열쇠를 새 관계 열쇠로 한 번 더 감싸 둔다. 원본은 옮기지 않는다 (HGP-0005 6절).
  • 범위를 좁힌다 = 그 감싼 사본을 없앤다. 이미 열어 본 사람이 받아 간 것은 거둘 수 없다 (07-기탁 7절).
  • 공개 = 원본은 잠근 채 두고, 공개용 사본(줄인 사본, 위치 정보 뺌)만 잠그지 않고 따로 둔다. 사본에는 어느 원본에서 어떻게 만들었는지가 따라붙는다 (02-지문 9절).
  • 봉인 = 봉인 열쇠로만 감싼다. 감싼 열쇠는 온라인 서버에 두지 않는다 (HGP-0005 5절 「차가운 것」).
  • 파기 = 그 기록의 내용 열쇠를 감싼 사본을 모두 없앤다 (01-권한 4절). 열쇠 장부의 백업에 남은 사본은 백업을 돌려쓰는 기간이 지나야 사라진다. 그 기간(예: 30일)을 파기 줄에 적는다. 잠긴 파일은 남아도 누구도 열지 못한다.

7. 열리는 순간: 약속으로 막는 구간

섹션 제목: “7. 열리는 순간: 약속으로 막는 구간”
구간 무엇이 열리나 어떻게 막나
전사, 번역처럼 원본을 바깥 회사로 보낼 때 일 하나마다 기탁자 기기가 그 파일의 내용 열쇠를 서버에 잠깐 건넨다. 서버는 메모리에서만 풀어 보내고, 디스크와 로그에 남기지 않고, 일이 끝나면 버린다. 「자동 전사」를 켜 두면 녹음이 끝날 때 기기가 이 허락을 함께 보낸다 약속. 그 순간 서버 메모리에는 열린 원본이 있다. 보낸 기록은 sent_to (03-manifest 8절)
기기에서 잠글 수 없어 저장고가 받자마자 잠글 때 받은 순간부터 잠글 때까지 약속
해석층 (전사본, 번역, 요약) 지금은 잠그지 않는다. 범위대로 걸러 보여 준다 약속. 해석층 잠금은 secretary v1 전에 다시 정한다
공개·조합 범위의 열람용 사본 잠그지 않는다 (HGP-0005 5절 「뜨거운 것」) 범위 거르기
되찾기 노드원과 가족이 짜면 기탁자 없이 주인 열쇠를 되살릴 수 있다 약속과 7일 알림과 지우지 않는 기록

이 표가 01-권한 6절 1번(「전사할 때 원본이 풀리는 순간」)의 답이다. 폰에서 전사 회사로 바로 보내는 길은 쓰지 않는다. 전사 회사의 열쇠(API 키)를 폰에 둘 수 없다.

어디 잠금 때
secretary 잠그지 않음 (encryption: "none"). 약속으로만 막는다 v0.2 (11/16)에 이 문서대로
arkive 잠그지 않음. 약속으로만 막는다 secretary가 잠근 원본을 맡기기 시작할 때 받는 쪽부터 (결정 0004). arkive 자체 기탁자 열쇠는 로그인 판 다음에 정한다
provenance 잠그지 않음. 공개할 사진이 대부분이다 arkive로 합칠 때 (2027-02)

HGP-0005 11절대로, 이 문서는 지켜야 할 것을 정하고 기술은 구현이 고른다. secretary v0.2에 권하는 것:

하는 일 권하는 방식 등급
기기에서 주인 열쇠 열기 W3C WebAuthn(패스키)의 PRF 확장 참조
파일 잠그기 AES-256-GCM 또는 XChaCha20-Poly1305 참조
열쇠 감싸기 HPKE (RFC 9180) 참조
조각 나누기 샤미르 비밀 나누기 (셋 중 둘) 참조
서명 Ed25519 (RFC 8032), 열쇠 끌어내기 HKDF (RFC 5869) 참조
파기 NIST SP 800-88 「암호 지우기」(열쇠를 없애 지운 것과 같게 하기) 참조

시험 도구로 확인하기 전에는 「준수」라고 쓰지 않는다. 열쇠와 맡김을 다루는 국제 표준은 아직 없다 (9월 외부 표준 매핑).

  1. 웹앱(PWA)에서 패스키 PRF가 secretary가 쓰는 폰들(안드로이드, 아이폰)에서 되는지. 안 되면 v0.2는 기기 안 열쇠 저장으로 시작하고 그 차이를 적는다.
  2. 가족 조각을 종이 카드로 줄 때, 카드를 잃은 가족에게 새 조각을 다시 주는 절차.
  3. 법적 후견 (01-권한 6절 2번): 기탁자가 살아 있으나 스스로 판단하기 어려워졌을 때 되찾기와 승계 어느 쪽을 따르나.
  4. 봉인 열쇠의 「인터넷에 붙지 않은 곳」을 일반 사용자에게 무엇으로 줄지 (보안 열쇠, 종이).