홈 › 개발·웹 도구

비밀 나누기 (샤미르 비밀 분할)

조각은 서로 다른 사람·장소에 따로 보관하세요. 한곳에 모아 두면 나눈 의미가 없어요.

파일은 서버로 전송되지 않고 내 기기에서만 처리돼요

    비밀을 여러 사람에게 나눠 맡기는 방법

    중요한 비밀번호, 암호화폐 지갑 복구 문구, 금고 번호를 한 사람이나 한곳에만 두면 잃어버리거나 도난당할 위험이 있어요. 그렇다고 여러 사람에게 그대로 알려 주면 한 명만 실수해도 새어 나가요. 샤미르 비밀 분할은 1979년 암호학자 아디 샤미르가 발표한 방법으로, 비밀을 n개 조각으로 나눈 뒤 그중 정해 둔 k개만 모으면 원래 비밀이 나오고, k개보다 적으면 비밀에 대해 아무것도 알 수 없게 만들어요. 예를 들어 5조각 중 3조각으로 정하면 두 조각을 잃어버려도 복원할 수 있고, 두 사람이 몰래 짜도 비밀은 알 수 없어요.

    원리

    점 2개가 있으면 직선 하나가, 점 3개가 있으면 2차 곡선 하나가 정해지는 원리를 써요. 비밀 값을 곡선의 y절편(x = 0일 때 값)으로 두고 나머지 계수를 무작위로 정한 k−1차 다항식을 만든 뒤, x = 1, 2, …, n일 때의 값을 조각으로 나눠 줘요. k개 조각이 모이면 라그랑주 보간으로 곡선을 되살려 x = 0의 값을 구해요. 이 도구는 비밀의 각 바이트마다 이 계산을 하고, 컴퓨터에서 오차 없이 계산하려고 256개 원소의 유한체 GF(2⁸)(AES와 같은 다항식)를 써요. 무작위 계수는 브라우저의 안전한 난수 생성기로 만들어요.

    조각 형식과 검사

    조각은 HLS1-필요개수-번호-16진수 모양의 한 줄 글자예요. 복원에 필요한 개수와 조각 번호가 들어 있어서 순서 없이 붙여 넣어도 돼요. 나누기 전에 비밀의 SHA-256 값 앞 4바이트를 함께 넣어 두기 때문에, 복원할 때 잘못 옮겨 적었거나 다른 비밀의 조각이 섞이면 ‘검사값이 맞지 않아요’라고 알려 줘요. 조각의 길이는 비밀 길이 + 4바이트예요. 이 형식은 이 사이트 전용이라 다른 샤미르 도구(ssss, secrets.js 등)의 조각과는 서로 바꿔 쓸 수 없어요.

    보관 요령

    조각마다 TXT 파일로 저장하거나 인쇄해서 서로 다른 사람·장소(가족, 변호사, 은행 대여금고 등)에 맡기세요. 누가 어느 조각을 가졌는지, 몇 개가 필요한지는 따로 적어 두면 좋아요. 조각을 만든 화면과 원래 비밀은 다 쓴 뒤 지우고, 이 페이지는 비밀이나 조각을 저장하거나 서버로 보내지 않아요.

    참고한 자료

    자주 묻는 질문

    조각 하나만 있으면 비밀의 일부라도 알 수 있나요?

    아니요. 필요한 개수보다 적은 조각으로는 어떤 비밀이든 똑같이 가능해서 정보가 전혀 없어요. 다만 비밀의 길이(바이트 수)는 조각 길이로 알 수 있어요.

    같은 비밀을 다시 나누면 조각이 달라져요.

    매번 새 무작위 계수를 쓰기 때문이에요. 서로 다른 때에 만든 조각끼리는 섞어 쓸 수 없어요.

    사진이나 파일도 나눌 수 있나요?

    이 도구는 글자 비밀만 나눠요. 파일은 암호화한 뒤 그 비밀번호를 이 도구로 나누는 방법을 권해요.

    함께 쓰면 좋은 도구