기준일을 100으로 놓고 그린 선입니다. 통화가 서로 달라 지수로 겹쳤습니다.
지금 이 페이지를 여는 순간에도 브라우저는 서버와 비밀 열쇠를 공개된 회선에서 만들었습니다. 도청자가 오간 것을 전부 봐도 열쇠를 모릅니다 — 잠그는 방향의 계산은 밀리초인데 되돌리는 방향은 코어 수백만 년이기 때문입니다. 아래 판 ②는 그 교환을 RFC 문서에 인쇄된 진짜 2048비트 소수로 이 브라우저에서 실제로 실행하고, 판 ①는 그걸 깨는 비용을 실제 분해 기록에 보정한 곡선으로 잽니다.
십진수로 617자리 숫자입니다. 슬라이더는 판 ①의 비용을 움직입니다 — 교환 판은 항상 진짜 2048비트로 돕니다.
교환 판이 실행하는 것은 디피–헬만입니다. 소수 p 와 밑 g=2 는 RFC 3526 이 인쇄한 공개값이고, 이 페이지는 그 hex 를 그대로 담아 매번 새 비밀 지수로 계산합니다.
깨는 비용 곡선은 일반 수체 체(GNFS)의 점근 복잡도입니다. 지수 안에 세제곱근이 들어 있어서 키를 선형으로 늘리면 비용은 준지수적으로 뜁니다 — 곡선이 로그 눈금에서도 위로 휘는 이유입니다.
이 비대칭이 이 조각의 전부입니다. 잠그기(거듭제곱)는 자릿수에 거의 비례해서 커지는데 열기(인수분해)는 준지수로 큽니다. 64비트를 더할 때마다 잠그는 쪽은 몇 마이크로초를 더 내고, 여는 쪽은 몇 배를 더 냅니다. 은행은 이 기울기 차이 하나를 믿고 돈을 보냅니다.
| 키 길이 | 십진 자릿수 | 여는 비용(GNFS·보정) | 실제 기록 |
|---|
표의 비용은 화면과 같은 식으로 그때그때 계산한 것입니다. 768비트 칸이 실측 기록(2009년, 약 2,000 코어·년)보다 낮게 나오는 건 2020년 도구 기준으로 환산했기 때문입니다 — 소프트웨어가 그 사이 그만큼 좋아졌다는 뜻이기도 합니다.
자물쇠가 열리는 조건은 단 하나입니다 — 핀의 경계가 모두 같은 높이에 서는 것. 그 높이를 전단선이라 부르고, 열쇠의 산과 골은 핀마다 그 높이를 맞추려고 깎인 것입니다.
틀린 열쇠는 어느 핀 하나가 어긋나서 안 됩니다. 그래서 자물쇠의 경우의 수는 핀 개수의 지수로 늘어납니다 — 위 판이 세는 그 수입니다.
핀 개수와 비례는 원리를 보이기 위한 것입니다. 실제 자물쇠는 핀이 5~6개입니다.
위 판의 수학은 전부 공개입니다. 그런데 비밀 지수 하나는 어딘가에 실물로 보관돼야 합니다 — 그 금고가 이렇게 생겼습니다.
은행·인증기관이 쓰는 HSM입니다. 서버 랙에 꽂는 1U 상자인데, 안에서 키를 만들고 밖으로는 절대 내보내지 않습니다 — 서명이 필요하면 데이터를 상자 안으로 들여보내 결과만 받아 갑니다.
위 판이 보여준 그 비대칭(잠그기 ms · 열기 백만 년)이 성립하려면 비밀 지수가 새지 않아야 합니다. 수학의 벽은 우주 단위인데 열쇠 관리가 뚫리면 소용없다 — 그래서 뜯으면 스스로 지워지는 이런 상자에 넣습니다. 해킹 사고의 대부분은 수학이 아니라 열쇠 관리가 뚫린 것입니다.