암호화 해시 함수(SHA-3) 충돌 저항 모델의 수학적 증명 구조와 레인보우 테이블(Rainbow Table) 해독 방어 전략
기술 면접관으로 참여하면서 가장 많이 질문하지만 가장 답변을 못 듣는 주제입니다. 개발자라면 꼭 알아야 할 내용을 제 주관적인 시각으로 풀어봤습니다.
사이버 보안 스택과 현대 IT 시스템 인프라의 모든 자산들을 무결하게 유지하는 절대적인 기둥은 암호학적 해시(Cryptography Hash) 구조입니다. 텍스트 문자열이나 컴퓨터 메모리의 이미지 파일 같이 어떠한 가변 길이의 데이터 집합이라도, 단방향 해시 함수에 집어넣는 순간 수학적 치환과 XOR 논리 회전을 거쳐 고정된 길이(예: 256비트)의 핑거프린트 다이제스트(Digest) 값으로 출력됩니다. 암호학은 해시 방정식이 성립하기 위해 3가지 불가침의 공리를 부여합니다. 첫 번째는 다이제스트만 가지고는 어떤 마법을 부려도 원본 텍스트를 역산출(Pre-image Resistance)할 수 없다는 성질, 두 번째는 동일한 해시를 만드는 또 다른 문자를 의도적으로 생성해 낼 수 없다는 제2역상 저항성, 마지막으로 완전히 동일한 결과값을 출력하는 임의의 텍스트 쌍 자체를 전 우주의 컴퓨터를 동원해 탐색해도 찾아낼 수 없다는 충돌 회피성(Collision Resistance)입니다. 만약 백만 줄의 소스 코드로 이루어진 프로그램의 단 하나의 쉼표(,) 비트가 조작되더라도 눈사태 효과(Avalanche Effect)에 의해 출력되는 해시 문자열은 원본과 단 1퍼센트의 유사성도 남기지 않고 전혀 새로운 엉뚱한 값으로 폭주하게 됩니다. 최신 커스텀 규격인 SHA-3 아키텍처는 스펀지 암호 구조를 채택하여 외부의 물리 공격 시퀀스에 수학적 완전 저항 체계를 입증해 냈습니다.
이 강력한 단방향성을 응용해 금융기관과 백엔드 시스템은 사용자들의 최고 민감 정보인 비밀번호를 원문(Plain Text) 형태 데이터베이스에 저장하지 않고 생성된 다이제스트 문자열 자체만 기록하여 격리시킵니다. 즉 서버 관리자나 해커가 데이터베이스를 탈취하더라도 암호 자체의 해시화된 파편만을 얻을 뿐이라는 완벽한 수비 전술이었습니다. 하지만 공격자들은 수학식 역추적 대신 스페이스 오프 트레이드, 즉 공간적 치환 공격 방법을 발전시켰습니다. 아주 막강한 연산력을 동원해 '123456', 'password', 'admin' 등 무수히 많은 전 세계 사전 내의 모든 문자열 단어 조합들을 모조리 정해진 해시로 변환한 레인보우 테이블(Rainbow Table) 쌍둥이 데이터베이스 파일 표를 배포하여 구축한 것입니다. 해커가 탈취한 대상 데이터베이스 해시를 이 지도를 검색하기만 하면 불과 몇 분 이내로 일치하는 암호를 색출해 패스워드를 갈취당하는 비극이 초래되었습니다.
레인보우 테이블이라는 전역적 학살 도구의 확산을 방어하기 위해 설계된 방어 논리가 솔팅(Salting)과 키 스트레칭(Key Stretching) 기법 병합 모델입니다. 백엔드 인증 미들웨어는 개별 사용자가 비밀번호를 최초 세팅하는 계정 등록 단계에서 랜덤하고 고유하게 생성된 64바이트 암호학 난수, 이른바 '솔트(소금)' 문자열을 발급하고 이를 원본 비밀번호 바로 뒤에 상쇄 결합(Concat)시킵니다. 조작된 입력값을 해시 함수에 투입할 뿐만 아니라 그 해시 다이제스트 결과값을 다시 수만 번 연속으로 해싱 시스템(Bcrypt, PBKDF2 등)에 되먹임 하여 마침내 데이터베이스의 저장소 컬럼으로 삽입시킵니다. 만약 지구상에 해커들의 레인보우 테이블이 존재한다고 하더라도, 내부에 흩뿌려진 임의의 무작위 값(Salt) 패턴 표 수백억 가지를 연산해 테이블 자체를 전면 재구축해야 하기 때문에 복호화 용량이 태양계 규모로 폭발하여 물리적인 시간의 연산 가능성 범위를 이탈합니다. 이 치열한 창방의 무력 전쟁터야말로 정보 시스템의 근원적 프라이버시를 지켜내는 암호 공학의 진정한 위상이라 하겠습니다.