liminfo

Secret Sharing Tool

Shamir's Secret Sharing 비밀 분할/복구 도구

Secret Sharing Tool 소개

비밀 분산 도구는 샤미르 비밀 분산(SSS) 암호화 알고리즘을 구현합니다. 이 알고리즘은 비밀 텍스트를 n개의 조각으로 나누어 그 중 k개만 모이면 원래 비밀을 복원할 수 있게 하고, k개 미만의 조각으로는 비밀에 대한 어떤 정보도 알 수 없도록 보장합니다. 비밀 텍스트, 총 조각 수(n), 임계값(k)을 입력하면 n개의 조각 문자열이 생성됩니다. 재구성 모드에서는 k개 이상의 조각을 붙여넣어 원래 비밀을 복원할 수 있습니다.

이 도구는 암호화 키 관리, 분산 신뢰 시나리오, 암호화 비밀의 백업, 팀 기반 인증에 유용합니다. 대표적인 사용 사례로는 마스터 암호화 키를 여러 팀원에게 분산하여 단독으로는 키를 재구성할 수 없게 하거나, 암호화폐 지갑 시드 구문을 3명의 수탁자 중 2명이 협력해야만 접근 가능하도록 분산하는 것이 있습니다. 임계 방식은 n − k개의 조각을 잃어도 비밀을 복원할 수 있는 중복성을 보장합니다.

기술적으로는 소수 p = 2,147,483,647 (메르센 소수 2^31 − 1) 위의 유한체 GF(p)에서 다항식을 사용합니다. 비밀의 각 문자마다 상수항이 해당 문자의 코드값인 k−1차 다항식을 x = 1부터 n까지 모듈식 거듭제곱으로 평가합니다. 복원 시에는 같은 유한체에서 라그랑주 보간법을 사용합니다. 모든 연산은 JavaScript BigInt로 처리됩니다.

주요 기능

  • GF(2^31−1) 유한체 위의 샤미르 비밀 분산 알고리즘 완전 구현
  • 총 조각 수(n) 2~20, 임계값(k) 2~n 자유 설정
  • 라그랑주 보간법으로 임의의 k개 유효 조각에서 비밀 복원
  • 각 문자를 별도 다항식으로 평가하는 임의 길이 텍스트 지원
  • 분할 및 재구성 모드를 하나의 인터페이스에서 제공
  • 조각 문자열은 사람이 읽을 수 있는 쉼표 구분 좌표 형식
  • JavaScript BigInt 기반 100% 클라이언트 사이드 연산 — 서버 호출 없음
  • 회원가입 불필요, 다운로드 불필요, 사용 횟수 제한 없는 완전 무료

자주 묻는 질문

샤미르 비밀 분산(SSS)이란 무엇인가요?

샤미르 비밀 분산은 1979년 아디 샤미르가 고안한 암호화 알고리즘입니다. 유한체에서의 다항식 보간법을 사용해 비밀을 n개의 조각으로 나눕니다. k개 이상의 조각이 있으면 라그랑주 보간법으로 비밀을 복원할 수 있지만, k개 미만의 조각으로는 비밀에 대한 어떤 정보도 얻을 수 없습니다. 정보 이론적으로 완전한 보안을 제공합니다.

n과 k는 각각 무엇을 의미하나요?

n은 생성되는 조각의 총 수입니다. k는 비밀을 복원하는 데 필요한 최소 조각 수(임계값)입니다. 예를 들어 n=5, k=3이면 5개의 조각이 생성되고, 그 중 어떤 3개로도 비밀을 복원할 수 있습니다. 조각 2개를 잃어도 나머지 3개로 복원 가능합니다. 3개 이상을 잃으면 복원이 불가능합니다.

비밀을 어떻게 재구성하나요?

재구성 탭으로 전환하고, 분할 결과에서 얻은 조각 문자열을 한 줄에 하나씩 붙여넣은 후 비밀 재구성 버튼을 클릭하세요. 최소 k개의 조각이 필요합니다. 도구가 유한체에서 라그랑주 보간법을 수행하여 복원된 비밀을 표시합니다.

조각 문자열의 형식은 어떻게 되나요?

각 조각은 비밀의 문자당 하나의 x:y 좌표 쌍이 쉼표로 구분된 형태입니다. 예를 들어 5글자 비밀을 n=3으로 분할하면 각각 5개의 x:y 쌍을 포함하는 3개의 조각이 생성됩니다. x값은 조각 번호(1~n), y값은 소수 모듈러 다항식 평가 결과입니다.

암호화폐 시드 구문 분산에 사용할 수 있나요?

네, BIP-39 시드 구문을 포함한 모든 텍스트 문자열을 분산할 수 있습니다. 일반적인 설정은 n=3, k=2 (3개 중 2개 필요)입니다. 단, 고가 자산에는 검증된 하드웨어 구현이나 감사된 라이브러리 사용을 권장합니다. 이 브라우저 도구는 학습 및 중저위험 사용 사례에 적합합니다.

구현의 보안 수준은 어느 정도인가요?

k개 미만의 조각으로는 아무리 강한 컴퓨터 자원을 사용해도 비밀에 대한 정보를 얻을 수 없는 정보 이론적 보안을 제공합니다. 사용된 유한체는 GF(2^31−1)으로 메르센 소수 2,147,483,647을 사용합니다. 단, 다항식 계수는 Math.random()으로 생성되어 암호학적으로 안전한 난수는 아니므로, 매우 높은 보안이 요구되는 프로덕션 환경에서는 CSPRNG 기반 구현을 권장합니다.

오프라인에서 사용할 수 있나요?

네. 모든 처리가 100% 클라이언트 사이드 JavaScript로 이루어지므로, 페이지를 저장하여 브라우저에서 오프라인으로 실행할 수 있습니다. 초기 페이지 로드 이후에는 인터넷 연결이 필요 없습니다. 에어갭 키 관리 시나리오에 유용합니다.

지원하는 최대 비밀 길이는 얼마인가요?

각 문자를 독립적으로 처리하므로 알고리즘에서 강제하는 길이 제한은 없습니다. 비밀이 길수록 조각 문자열도 길어지지만 기능적으로는 정확하게 동작합니다. 수백 자 이상의 비밀도 처리 가능하지만 조각 문자열이 상당히 길어질 수 있습니다.