한국 암호화폐 거래소들은 오랫동안 국내 시세가 해외보다 높게 형성되는 "김치 프리미엄" 현상으로 유명했다. 이는 자본 규제와 실명 인증 계좌 의무화 등 한국 특유의 규제 환경 속에서 유독 활발한 개인 투자 문화가 만든 현상이다. 비트코인은 SHA-256을 쓰지만 라이트코인 같은 코인은 작업 증명에 scrypt를 쓰는데, scrypt의 memory-hard 특성 때문에 전용 ASIC 채굴기가 비트코인만큼 빠르게 발전하지 못해 일반 GPU 채굴이 훨씬 오래 경쟁력을 유지했다.
memory-hard 함수란 무엇인가
memory-hard 알고리즘은 해시 하나를 계산하는 데 대량의 중간 데이터를 메모리에 보관해야 하도록 일부러 설계됩니다. 값을 다시 계산하는 대가로 메모리를 아끼려 하면 오히려 계산 시간이 급격히 늘어납니다 — 즉 공격자는 메모리나 속도 중 하나를 희생해야 합니다.
이것이 특수 하드웨어에서의 공격을 어렵게 만드는 이유
ASIC 칩과 GPU는 단순한 산술 연산을 대규모로 병렬 실행하는 데는 매우 효율적이지만, 병렬 계산 스레드마다 메모리를 추가하는 것은 훨씬 더 비싸고 확장성도 떨어집니다. Scrypt는 이런 하드웨어에서의 무차별 대입 공격을 고전적인 해시 함수에 비해 경제적으로 덜 매력적으로 만듭니다.
왜 필요한가
- GPU 팜을 이용한 공격에 강한 비밀번호 해싱 알고리즘 선택하기.
- 암호학 맥락에서 memory-hard 함수 개념 이해하기.
- 특정 시스템에 대해 scrypt와 bcrypt, Argon2의 장단점 비교하기.
실제로 필요한 메모리 양
scrypt 한 번의 계산에 필요한 메모리는 대략 128 × N × r 바이트입니다. 일반적인 매개변수(N=16384, r=8)에서는 해시 하나당 약 16메가바이트로, 로그인 한 번에는 미미하지만, 서버가 수천 건의 동시 인증을 처리해야 한다면 전체 메모리 사용량은 추상적인 보안 요구사항이 아니라 매개변수를 정할 때 실제로 고려해야 할 제약이 됩니다.