Shamir 비밀 공유 (SSS)

1979년 Adi Shamir의 비밀 공유 방식의 브라우저 전용 구현.

사용 방법

1
N과 K 선택

개인용 2-of-3, 팀용 3-of-5.

2
비밀 입력

마스터 비밀번호, 시드 등.

3
조각 배포

다른 사람, 위치, 기기에.

4
필요 시 복구

K개 조각 수집하여 결합.

마스터 비밀번호나 시드 문구를 N개 조각으로 분할 — 그 중 K개로 복구

N개의 조각을 받습니다. 그 중 K개가 비밀을 재구성. K개 미만은 아무것도 드러내지 않음.
아래의 모든 조각은 하나의 세트에 속합니다. 다시 분할하면 새로운 세트가 생성되며 이전 조각은 더 이상 작동하지 않습니다 — 같은 세트의 조각으로만 비밀을 복구할 수 있습니다.

Shamir 비밀 공유가 하는 일

  • 정보 이론적 보안: K개 미만의 조각으로 공격자는 비밀에 대해 아무것도 학습하지 못함.
  • 각 조각에는 작은 헤더(버전, 임계값, 세트 ID)와 4바이트 무결성 태그가 포함되어 있어, 결합 시 올바른 복구를 검증하고 일치하지 않거나 부족한 조각을 명확히 표시할 수 있습니다.
  • GF(2⁸)에 대한 표준 바이트별 방식 사용 — AES와 동일한 대수, 수십 년 검증.
  • 사람, 기기, 지리적 위치에 조각 배포. 복구는 K개만 필요.
  • 이 구현은 비밀번호 계층을 추가하지 않음 — 조각 자체가 보호.
복사됨
무엇을 시도할지 모르시나요?
도구 750+개 — 깜짝 도구 열기
🎲 깜짝 도구

기능

정보 이론적 보안
K−1 조각은 비밀에 대해 정보 없음.
GF(2⁸) 바이트별
각 바이트는 AES에서 사용하는 것과 동일한 유한체 대수로 독립적으로 분할됩니다 — 검증되고 빠르며 표준적입니다.
최대 255 조각
임의 (K, N).
검증된 복구
내장된 무결성 태그 덕분에 결합 시 비밀이 정확히 재구성되었음을 확인합니다 — 그리고 일치하지 않거나 부족하거나 다른 세트의 조각에 대해서는 조용히 잘못된 결과를 반환하는 대신 명확한 오류를 제공합니다.
암호학적 안전 난수
브라우저의 암호학적으로 안전한 난수 생성기를 사용합니다.
브라우저에서 실행
분할과 결합은 Web Crypto API를 통해 브라우저 탭에서 수행됩니다. GF(2⁸) 위의 다항식 보간은 JavaScript로 클라이언트 측에서 계산됩니다 — 이 도구에는 /split 또는 /combine 엔드포인트가 존재하지 않으며, 알고리즘은 페이지 자산에 포함되어 제공됩니다.

FAQ

암호화한 뒤 모두에게 비밀번호를 나눠 주는 것과 무엇이 다른가요?

암호화는 비밀을 암호문과 키, 두 조각으로 쪼갭니다. 둘 다 가진 사람은 전부를 가진 것이고, 키를 가진 사람 한 명이 곧 단일 실패 지점이 됩니다. 샤미르 방식은 비밀 자체를 N개의 조각으로 직접 나눕니다. 복원하려면 그중 K개가 필요하고, K−1개를 모은 사람은 아무것도 얻지 못합니다. 계산이 오래 걸려서가 아니라 수학적으로 그 조각들이 원본에 대해 아무것도 말해 주지 않기 때문입니다. 그 차이가 실무에서 중요합니다. 조각 하나를 잃어버려도, 또는 하나가 새어 나가도 재앙이 되지 않습니다.

(K, N)은 어떻게 잡는 것이 좋을까요?

개인이라면 3개 중 2개가 무난한 기본값입니다. 두 장소에 두거나, 본인과 배우자와 변호사에게 나누는 식이지요. 소규모 팀이라면 5개 중 3개가 흔합니다. K를 올리면 누군가 조각을 훔쳐 갔을 때의 위험이 줄고, N을 올리면 조각을 잃어버렸을 때 살아남을 확률이 올라갑니다. 두 숫자는 서로 다른 걱정을 다루므로 함께 정하세요. 그리고 K를 정할 때는 진짜 급한 날에 그만큼의 조각을 실제로 모을 수 있는지 상상해 보세요. 모으지 못할 K는 안전이 아니라 손실입니다.

구현을 신뢰할 수 있나요?

GF(2⁸) 위의 표준 바이트별 Shamir 방식을 사용합니다 — Hashicorp Vault, Trezor SLIP-0039(BIP-39 분할 백업) 및 대부분의 다른 프로덕션 SSS 구현에서 사용하는 것과 동일한 구성입니다. 분할과 결합은 Web Crypto API를 통해 브라우저에서 실행됩니다.

조각 하나를 잃어버리면 어떻게 되나요?

남은 조각이 K개 이상이면 비밀은 그대로 복원됩니다. 여분을 두는 것이 바로 N을 K보다 크게 잡는 이유입니다. 5개 중 3개짜리 구성은 조각 두 개를 잃어도 살아남습니다. 다만 잃어버린 사실을 알아차리는 일은 저절로 일어나지 않습니다. 조각은 몇 년씩 손대지 않은 채로 있기 마련이니까요. 그러니 어디에 무엇을 두었는지 목록을 따로 적어 두고 이따금 확인하세요. 세 개 중 두 개가 필요한데 두 개가 사라졌다는 사실을 정작 필요한 날에 알게 되는 것이 가장 흔한 실패입니다.

조각 하나가 공격자에게 새어 나가면 어떻게 되나요?

K개 미만이 새어 나갔다면 비밀은 여전히 안전합니다. 이것이 이 방식의 요점입니다. 조각 하나는 원본에 대해 아무것도 말해 주지 않습니다. 다만 그 상태로 두지는 마세요. 비밀을 새것으로 바꾸고 조각도 새로 나눠 주세요. 그러면 흘러 나간 조각은 이제 아무것도 복원하지 못합니다. 밑에 깔린 비밀 자체가 달라졌기 때문입니다. 조각만 다시 만들고 비밀은 그대로 두면 아무 소용이 없습니다. 새 조각은 여전히 같은 비밀을 가리키고, 나간 조각도 여전히 유효한 한 조각으로 남습니다.

어떤 조각 형식을 사용하나요?

기반이 되는 수학은 표준 0x11b 축소 다항식을 사용하는 GF(2⁸) 위의 정규 바이트별 방식입니다. 각 조각은 작은 자기 기술(self-describing) 컨테이너(버전, 임계값, 세트 ID, 무결성 태그)로 감싸여 있어 도구가 복구를 검증하고 일치하지 않는 조각을 감지할 수 있습니다 — 원시 GF(256) 라이브러리가 아니라 이 도구로 조각을 복구하세요.

💡 이 도구를 개선해 드릴까요?

가능합니다! 아이디어를 간단히 보내주세요. 자세히 논의하고 싶으시면 이메일을 남겨주시면 연락드리겠습니다. 익명으로도 가능합니다.

이 도구를 어떻게 평가하시겠습니까?

평가해 주셔서 감사합니다!
더 공유하고 싶으신가요? 댓글을 남겨주세요!
감사합니다! 검토 후 댓글이 표시됩니다.
게시일 제작자: