암호 해싱은 암호 보안의 기본적인 측면으로, 평문 텍스트에서 암호화된 해시로 암호 저장 환경을 변화시켰습니다. 이 글에서는 암호 해싱의 초기 알고리즘인 MD5와 SHA-1부터 오늘날 권장하는 더 안전한 방법까지의 진화 과정을 탐구하고, 각 웹사이트마다 임의 암호를 사용하는 것의 중요성에 대해 설명합니다.
암호 해싱의 역사와 진화를 깊이 이해하기 전에 해싱이 무엇인지 이해하는 것이 중요합니다. 해시 함수는 해싱을 수행하는 방법으로, 임의의 문자열이나 "입력"을 가져와 고정 크기의 바이트 문자열, 일반적으로 "해시"로 알려진 것을 생성하도록 설계되었습니다. 이 과정은 보안 목적에 특히 유용하게 만드는 여러 핵심 특성을 가지고 있습니다.
해시 함수의 한 가지 중요한 특징은 입력 변경에 대한 민감성, 즉 눈사태 효과라고도 불리는 것입니다. 암호의 단일 문자를 변경하는 등 입력의 사소한 변화조차도 완전히 다른 해시를 생성하게 됩니다. 예를 들어, "password1"과 "password2"라는 문자열의 해시는 입력의 마지막 문자만 다르더라도 완전히 다른 모습을 보입니다. 이 특징은 데이터 무결성을 유지하는데 매우 중요하며, 해시만 보고 원래 입력을 추론하는 것이 거의 불가능하게 만듭니다.
또한, 해시 함수는 단방향 함수입니다. 이는 해시의 출력을 보고 입력을 컴퓨터로 복구하는 것이 계산적으로 불가능하게 설계되었다는 것을 의미합니다. 해시 출력은 원래 데이터를 복구할 수 있는 특정 세부 사항을 유지하지 않습니다. 해시를 "역회전"할 수 있는 유일한 실질적인 방법은 모든 가능한 원래 데이터 조합을 다시 해시하여 일치하는 해시를 찾을 때까지 반복하는 방법인 브루트 포스 공격입니다.
디지털 보안의 초기 단계에서 MD5(메시 다이제스트 알고리즘 5)와 SHA-1(보안 해시 알고리즘 1)은 암호 해싱에 널리 사용되었습니다. 90년대 초기에 개발된 이 알고리즘은 평문 텍스트 암호를 고정 크기 해시 값으로 변환했습니다. 초기에는 보안성이 있었지만, 충돌 공격에 취약한 등의 취약점으로 인해 보안 애플리케이션에서는 더 이상 사용되지 않게 되었습니다.
해시 함수는 빠르고 효율적으로 설계되었지만, 이 특성은 비밀번호 보안에 있어서는 해롭습니다. 이는 브루트 포스 공격을 용이하게 만들기 때문입니다. 비밀번호 기반 키 도출 함수(PBKDFs)인 PBKDF2, bcrypt 및 scrypt는 이러한 공격을 방지하기 위해 소금을 포함하고(레인보우 테이블 공격을 방어하기 위해) 키 스트레칭이라는 기술을 사용하여 해시 프로세스를 고의적으로 늦추게 설계되었습니다. 키 스트레칭은 해시 프로세스를 일부러 느리게 하여 무단 액세스 시도를 상당히 방해합니다.
사이버 보안이 발전함에 따라 MD5 및 SHA-1과 같은 초기 해싱 알고리즘의 불완전성이 뚜렷해졌고, bcrypt, scrypt 및 Argon2와 같은 비밀번호 보안을 위한 알고리즘, 즉 비밀번호 기반 키 도출 함수(PBKDFs)가 개발되었습니다.
OWASP에 따르면 비밀번호 해싱에 권장되는 알고리즘은 bcrypt, scrypt, Argon2입니다. 이러한 알고리즘은 브루트 포스 공격에 대한 강력한 방어와 소금 및 키 스트레칭에 대한 내장 메커니즘을 가지고 있어 선호됩니다.
bcrypt는 Blowfish 암호에서 파생된 비밀번호 해싱 함수입니다. 레인보우 테이블 공격을 방지하기 위해 소금을 포함하며 비용 매개변수를 사용하여 해시 생성 시간을 늘리고(따라서 난이도를 증가) 조정 가능한 비용 요소를 통해 하드웨어 개선에 맞게 알고리즘을 조정할 수 있습니다.
주요 매개변수:
OWASP는 작업 요소를 10 이상으로 설정하고 비밀번호 길이를 72바이트로 제한할 것을 권장합니다.
scrypt는 대규모 맞춤형 하드웨어 공격에 저항하기 위해 메모리와 시간이 모두 많이 소요되도록 설계되었습니다. 메모리의 특정 양을 요구하도록 구성할 수 있으며, PBKDF2와 유사하게 소금과 반복 횟수를 포함합니다.
주요 매개변수:
OWASP는 최소 CPU/메모리 비용 매개변수를 (2^17), 최소 블록 크기를 8 (1024바이트), 병렬화 매개변수를 1로 설정할 것을 권장합니다.
2015년 암호 해싱 경쟁에서 우승한 Argon2는 Argon2d와 Argon2i의 두 가지 변형으로 제공됩니다. Argon2d는 사이드 채널 공격의 위협이 적은 환경에 최적화되어 있으며, Argon2i는 사이드 채널 공격에 저항하도록 최적화되어 있습니다. 또한 bcrypt와 scrypt의 주요 기능을 모두 통합하고 있습니다.
주요 매개변수:
OWASP는 최소 구성으로 19MiB의 메모리, 2회의 반복 횟수 및 1도의 병렬성을 사용하는 Argon2id를 권장합니다.
진화하는 보안 위협과 대응책을 감안할 때, 비밀번호 보안의 최신 관행을 유지하는 것이 중요합니다. 가장 최신 정보와 포괄적인 권장 사항은 OWASP 비밀번호 저장 치트 시트를 참조하십시오. 이러한 지침을 정기적으로 검토하여 사이버 보안의 모범 사례와 일치하도록 하십시오.
현대적인 해싱 알고리즘을 사용하는 것도 중요하지만, 암호를 생성하고 관리하는 방식도 보안을 유지하는 데 중요한 역할을 합니다. 각 웹사이트에 대해 임의의 암호를 사용하는 것은 여러 가지 이유로 매우 중요합니다:
MD5와 SHA-1부터 bcrypt 및 Argon2와 같은 현대 알고리즘에 이르기까지 암호 해싱은 상당한 변화를 겪어왔습니다. 사이버 위협이 계속 진화함에 따라, 현대적인 해싱 알고리즘을 채택하고 각 웹사이트에 대해 임의의 고유한 암호를 사용하는 것은 온라인 보안을 유지하기 위한 필수적인 관행입니다. 이러한 전략은 개별 계정의 손상을 방지할 뿐만 아니라 점점 더 정교해지는 공격에 대한 전체적인 보안 자세를 강화합니다.