← 실계산 조각
이 화면은 이 네 종목 이야기입니다● 시세 불러오는 중

기준일을 100으로 놓고 그린 선입니다. 통화가 서로 달라 지수로 겹쳤습니다.

같은 자물쇠의 서로 다른 칸입니다 — 그 위로 지나는 돈(비자·마스타카드) · 벽을 파는 쪽(포티넷) · 발급·운영(삼성SDS). 주가가 이 기술 때문이라고는 말하지 않습니다.
실계산 조각 · 진짜 소수로 진짜 교환을 한다 · 데이터 파일 0

자물쇠는 공개돼 있는데
아무도 못 연다

지금 이 페이지를 여는 순간에도 브라우저는 서버와 비밀 열쇠를 공개된 회선에서 만들었습니다. 도청자가 오간 것을 전부 봐도 열쇠를 모릅니다 — 잠그는 방향의 계산은 밀리초인데 되돌리는 방향은 코어 수백만 년이기 때문입니다. 아래 판 ②는 그 교환을 RFC 문서에 인쇄된 진짜 2048비트 소수로 이 브라우저에서 실제로 실행하고, 판 ①는 그걸 깨는 비용을 실제 분해 기록에 보정한 곡선으로 잽니다.

① 여는 비용의 벽 — 자릿수마다 우주가 하나씩 늘어난다 세로 = 코어·년(로그) · 가로 = 키 길이 · 점 = 실제 분해 기록
② 진짜 교환 — 이 브라우저에서 지금 실행 중 RFC 3526 그룹 14의 2048비트 소수 · 시간은 실측

자물쇠 굵기

십진수로 617자리 숫자입니다. 슬라이더는 판 ①의 비용을 움직입니다 — 교환 판은 항상 진짜 2048비트로 돕니다.

위 판의 곡선은 공개 알고리즘(GNFS)의 점근 비용을 실제 기록 RSA-250(829비트 = 2,700 코어·년, 2020)에 보정한 것입니다. 비밀 지름길이 발견되지 않았다는 가정 위의 숫자이고 — 그 가정이 곧 전 세계 금융이 매일 거는 배팅입니다.
잠그는 시간 — 실측
방금 이 브라우저가 2048비트 교환 한 판(모듈러 거듭제곱 4회)에 쓴 시간입니다.
여는 비용
선택한 키 길이를 GNFS 로 깨는 비용. 코어 1개 기준 년수입니다.
2020년 기록 대비
인류가 실제로 깬 가장 큰 키(RSA-250)와의 배수.
1억 코어를 쓰면
코어·년 ÷ 10⁸ 의 단순 나눗셈입니다. 통신·메모리 비용은 뺀 하한.

풀고 있는 식

교환 판이 실행하는 것은 디피–헬만입니다. 소수 p 와 밑 g=2 는 RFC 3526 이 인쇄한 공개값이고, 이 페이지는 그 hex 를 그대로 담아 매번 새 비밀 지수로 계산합니다.

A = ga mod p  B = gb mod p   a, b 는 각자만 아는 256비트 난수 — A, B 만 회선에 나간다
Ba mod p = Ab mod p = gab mod p  ← 양쪽이 같은 비밀에 도달한다. 도청자는 A, B 로부터 a 를 구해야 한다

깨는 비용 곡선은 일반 수체 체(GNFS)의 점근 복잡도입니다. 지수 안에 세제곱근이 들어 있어서 키를 선형으로 늘리면 비용은 준지수적으로 뜁니다 — 곡선이 로그 눈금에서도 위로 휘는 이유입니다.

L(N) = exp ( (64/9)1/3 · (ln N)1/3 · (ln ln N)2/3 )  비용 = 2,700 코어·년 × L(N) / L(2829) ← RSA-250 한 점에 보정

이 비대칭이 이 조각의 전부입니다. 잠그기(거듭제곱)는 자릿수에 거의 비례해서 커지는데 열기(인수분해)는 준지수로 큽니다. 64비트를 더할 때마다 잠그는 쪽은 몇 마이크로초를 더 내고, 여는 쪽은 몇 배를 더 냅니다. 은행은 이 기울기 차이 하나를 믿고 돈을 보냅니다.

자릿수별로 얼마나 버티나

키 길이십진 자릿수여는 비용(GNFS·보정)실제 기록

표의 비용은 화면과 같은 식으로 그때그때 계산한 것입니다. 768비트 칸이 실측 기록(2009년, 약 2,000 코어·년)보다 낮게 나오는 건 2020년 도구 기준으로 환산했기 때문입니다 — 소프트웨어가 그 사이 그만큼 좋아졌다는 뜻이기도 합니다.

핀이 한 줄에 서는 순간

자물쇠가 열리는 조건은 단 하나입니다 — 핀의 경계가 모두 같은 높이에 서는 것. 그 높이를 전단선이라 부르고, 열쇠의 산과 골은 핀마다 그 높이를 맞추려고 깎인 것입니다.

핀 텀블러 단면 · 전단선에 맞으면 돈다끌어서 회전 · 휠로 확대 · 손 떼면 다시 돈다
윗핀아랫핀전단선열쇠
열쇠가 들어가며 아랫핀을 밀어 올립니다. 경계가 전부 전단선에 서면 안쪽 원통이 돌아갑니다 — 하나라도 높거나 낮으면 걸립니다.

틀린 열쇠는 어느 핀 하나가 어긋나서 안 됩니다. 그래서 자물쇠의 경우의 수는 핀 개수의 지수로 늘어납니다 — 위 판이 세는 그 수입니다.

핀 개수와 비례는 원리를 보이기 위한 것입니다. 실제 자물쇠는 핀이 5~6개입니다.

실물은 이렇게 생겼다

위 판의 수학은 전부 공개입니다. 그런데 비밀 지수 하나는 어딘가에 실물로 보관돼야 합니다 — 그 금고가 이렇게 생겼습니다.

서버 랙에 꽂는 1U 크기의 검은 하드웨어 보안 모듈. 앞면에 작은 표시창과 직렬 포트, 통풍구가 있다.

① 열쇠를 넣는 금고 — 하드웨어 보안 모듈(HSM)

은행·인증기관이 쓰는 HSM입니다. 서버 랙에 꽂는 1U 상자인데, 안에서 키를 만들고 밖으로는 절대 내보내지 않습니다 — 서명이 필요하면 데이터를 상자 안으로 들여보내 결과만 받아 갑니다.

위 판이 보여준 그 비대칭(잠그기 ms · 열기 백만 년)이 성립하려면 비밀 지수가 새지 않아야 합니다. 수학의 벽은 우주 단위인데 열쇠 관리가 뚫리면 소용없다 — 그래서 뜯으면 스스로 지워지는 이런 상자에 넣습니다. 해킹 사고의 대부분은 수학이 아니라 열쇠 관리가 뚫린 것입니다.

사진 HelmSE1 · CC BY-SA 3.0 · 위키미디어 커먼즈