지금은 안전하지 않다고 알려진 MD5도 1991년에는 최신 기술이었습니다. 해시 함수가 어떻게 발전해왔는지 알아볼까요?
MD 시리즈
MD4(1990) → MD5(1991)로 발전했습니다. MD5는 오랫동안 표준으로 쓰였지만 2004년 충돌 공격이 발견되면서 보안 용도로는 사용이 중단됐습니다.
SHA 시리즈
SHA-0(1993) → SHA-1(1995) → SHA-2(2001) → SHA-3(2015). NSA가 설계한 SHA 시리즈는 미국 정부 표준입니다. SHA-1도 2017년 충돌이 발견되어 지금은 SHA-256 이상을 사용합니다.
SHA-3의 특징
SHA-2와 완전히 다른 구조(스펀지 구조)를 가집니다. SHA-2에 문제가 생기면 대체할 수 있도록 설계됐습니다. 해시 생성기에서 SHA-256으로 충분하지만, 미래를 위해 SHA-3을 알아두면 좋습니다.
해시와 보안의 관계
해시는 보안에서 중요한 역할을 하지만, 만능이 아닙니다. 해시 생성기로 만든 해시값은 원본 데이터를 숨기는 데는 좋지만, 짧거나 예측 가능한 입력은 무차별 대입으로 찾아낼 수 있습니다. 예를 들어 4자리 PIN을 해시해도 10,000가지 경우의 수만 시도하면 원본을 찾을 수 있죠. 그래서 비밀번호 해싱에는 솔트(salt)를 추가하고, bcrypt처럼 의도적으로 느린 알고리즘을 씁니다.
레인보우 테이블 공격
미리 계산해둔 해시-원본 쌍을 이용한 공격입니다. 솔트를 사용하면 각 사용자마다 다른 해시가 생성되어 이 공격을 무력화할 수 있습니다. 요즘 프레임워크들은 솔트를 자동으로 처리해주지만, 직접 구현할 때는 반드시 솔트를 포함시켜야 합니다.
결론적으로, 해시 함수는 현대 컴퓨팅의 핵심 기술입니다. 보안, 데이터 관리, 성능 최적화 등 다양한 분야에서 활용되며, 올바르게 사용하면 시스템의 신뢰성을 크게 높일 수 있습니다.