KeysArk
← 블로그로 돌아가기

KeysArk는 어떻게 암호화하는가: 그 설계

KeysArk의 모든 설계 선택은 한 가지 규칙을 따릅니다: 키는 결코 당신의 브라우저를 떠나지 않습니다. 다음은 그 연결 고리입니다 — 당신이 적어 두는 단어에서부터 당신의 클라우드 속 암호문까지.

모든 것을 담는 하나의 문구

당신의 마스터 시크릿은 BIP39 복구 문구입니다 — 새 보관소의 경우 24개의 영어 단어(256비트 엔트로피)입니다. 이는 표준이므로 MetaMask나 어떤 BIP39 지갑에도 가져올 수 있습니다. 따로 내려받을 것도, 챙겨야 할 키 파일도 없습니다.

단어에서 키로

문구는 전적으로 브라우저 안에서 결정론적으로 키로 변환됩니다: 같은 문구라면, 어떤 기기에서든 매번 같은 키가 — 서버의 개입 없이 — 만들어집니다.

BIP39 phrase
  → seed   (PBKDF2-HMAC-SHA512)
  → HKDF-SHA256
  → AES-256 key

당신의 콘텐츠를 암호화하기

각 항목은 인증 암호인 AES-256-GCM으로 봉인됩니다: 콘텐츠를 숨기는 동시에 변조를 감지합니다. 모든 암호화는 결코 재사용되지 않는 새롭고 무작위한 96비트 IV를 사용합니다 — GCM nonce를 재사용하는 것은 치명적이므로, 우리는 결코 그렇게 하지 않습니다.

서버는 그저 단순한 통로일 뿐

우리의 API와 스토리지 클라이언트는 바이트가 들어가 바이트가 나오는 방식입니다: 불투명한 base64 암호문을 옮길 뿐 콘텐츠와는 전적으로 무관합니다. 평문, 문구, 그리고 파생된 키는 어떤 서버 코드, 요청, URL, cookie, 로그, 데이터베이스에도 나타나는 것이 금지됩니다.

당신의 기기에서 잠금 해제하기

문구를 로컬에 저장할 때(웹 앱이나 ark CLI에서), 그것은 잠금 해제 비밀번호로 Argon2id(512 MB, t=4, p=1)를 사용해 감싸집니다 — 비밀번호 무차별 대입을 비싸게 만드는 의도적으로 메모리를 많이 쓰는 함수입니다. 매개변수는 자격 증명과 함께 따라가므로, 시간이 지남에 따라 상향할 수 있습니다.

우리가 받아들이는 절충

진정한 종단 간 암호화는 우리조차도 당신의 데이터 복구를 도울 수 없음을 뜻합니다. 복구 문구를 잃어버리면 그것은 사라집니다. 그것이 바로 — 우리를 포함해 — 그 누구도 그것을 읽을 수 없게 하는 데 치르는 대가입니다.