0Pricing
Ethical Hacking Academy · 강의

해싱

MD5, SHA, bcrypt

해싱은(는) CoddyKit의 무료 Ethical Hacking Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Ethical Hacking Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Ethical Hacking Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

해시란 무엇입니까?

해시 함수는 어떤 크기의 입력이든 받아 다이제스트라는 고정 크기의 출력을 생성합니다. 동일한 입력은 항상 동일한 다이제스트를 생성합니다.

중요한 점은 해싱이 단방향 연산이라는 것입니다. 다이제스트를 수학적으로 되돌려 원래 입력을 복원할 수는 없습니다. 이 때문에 해시는 인코딩 및 암호화와 다릅니다.

좋은 해시의 특성

암호학적 해시 함수는 다음과 같은 특성을 가져야 합니다.

  • 결정적: 동일한 입력이 동일한 출력을 생성합니다.
  • 계산이 빠름(일반적인 해싱의 경우). 단, 암호 해싱에는 이상적으로 느려야 합니다.
  • 원상 저항성: 다이제스트가 주어져도 입력을 찾을 수 없습니다.
  • 충돌 저항성: 동일한 다이제스트를 갖는 두 입력을 찾기 어렵습니다.
  • 눈사태 효과: 비트 하나가 변경되면 출력 비트의 약 절반이 바뀝니다.

MD5

MD5는 128비트(16진수 문자 32개) 다이제스트를 생성합니다. 빠르고 역사적으로 널리 사용되었지만, 실용적인 충돌 공격이 존재하므로 암호학적으로 깨진 알고리즘입니다.

보안 목적으로 MD5를 사용하지 마십시오. 파일 체크섬과 오래된 시스템에서는 여전히 발견되므로 보안 평가 중 자주 표적이 됩니다.

echo -n 'password' | md5sum
# 5f4dcc3b5aa765d61d8327deb882cf99

SHA 계열

SHA(Secure Hash Algorithm) 계열은 더욱 견고합니다.

  • SHA-1: 160비트. 현재는 깨진 알고리즘으로 간주됩니다(충돌 공격 'SHADOW HAMMER' / SHAttered). 사용을 피하십시오.
  • SHA-2: SHA-256과 SHA-512를 포함합니다. 널리 사용되며 현재 안전합니다.
  • SHA-3: SHA-2의 대안인 Keccak을 기반으로 한 최신 설계입니다.
echo -n 'password' | sha256sum
# 5e884898da28047151d0e56f8dc629...

해싱은 암호화가 아닙니다

암호화는 키를 사용하여 되돌릴 수 있지만, 해싱은 전혀 되돌릴 수 없습니다. 이것이 바로 암호를 저장하는 데 해싱을 사용하는 이유입니다. 서버는 원래 암호를 필요로 하지 않습니다.

로그인하면 서버는 입력한 내용을 해시한 다음 저장된 해시와 비교합니다. 두 값이 일치하면 인증됩니다. 평문 암호는 절대 저장되지 않습니다.

문제: 레인보 테이블

해싱은 결정적이므로 'password'의 다이제스트는 모든 사용자에게 동일합니다. 공격자는 다이제스트와 평문을 대응시킨 대규모 조회 테이블인 레인보 테이블을 미리 계산해 둡니다.

두 사용자가 같은 비밀번호를 사용하면 저장된 해시가 동일해져 이 사실이 드러납니다. MD5나 SHA-256처럼 단순하고 빠른 해시만으로는 비밀번호를 저장하기에 적합하지 않습니다.

솔팅

솔트는 해싱하기 전에 각 비밀번호에 추가하는 고유한 무작위 값입니다. 따라서 다음과 같은 효과가 있습니다.

  • 동일한 비밀번호라도 서로 다른 해시가 생성됩니다.
  • 미리 계산된 레인보 테이블을 사용할 수 없게 됩니다.

솔트는 해시와 함께 저장하며 비밀이 아닙니다. 솔트의 역할은 모든 해시를 고유하게 만들어 공격자가 각각을 개별적으로 크래킹하도록 하는 것입니다.

stored = salt + hash(salt + password)
# salt is random and unique per user

bcrypt: 비밀번호를 위한 설계

bcrypt는 비밀번호 저장을 위해 특별히 설계되었습니다. 의도적으로 느리게 동작하며, 하드웨어 성능이 향상될수록 더 느리게 만들 수 있는 조정 가능한 비용 인자(작업 인자)를 포함합니다.

bcrypt 해시 하나에는 알고리즘, 비용, 솔트가 하나의 문자열로 포함됩니다. 느린 속도는 단점이 아니라 기능입니다. 공격자가 추측할 수 있는 속도를 제한하기 때문입니다.

$2b$12$R9h/cIPz0gi.URNNX3kh2OPST9/PgBkqquzi.Ss7KIUgO2t0jWMUW
# $2b$ = bcrypt, 12 = cost factor, then salt + hash

그 밖의 느린 해시

bcrypt 외에도 현대적인 비밀번호 해싱 방식에는 다음이 있습니다.

  • scrypt: 메모리 집약적이며 GPU와 ASIC 공격에 강합니다.
  • Argon2: 비밀번호 해싱 경연 대회의 우승작으로, 시간과 메모리 사용량을 조정할 수 있습니다. 현대적으로 권장되는 선택입니다.
  • PBKDF2: 빠른 해시를 수천 번 이상 반복 적용합니다. 사용할 수는 있지만 위 방식들보다 약합니다.

HMAC과 무결성

해시는 비밀번호뿐 아니라 무결성을 확인하는 데도 사용됩니다. HMAC(해시 기반 메시지 인증 코드)은 해시와 비밀 키를 결합하여 메시지의 무결성과 인증 여부를 모두 확인합니다.

파일 체크섬(대개 SHA-256)을 사용하면 다운로드한 파일이 변조되지 않았는지 확인할 수 있습니다. 해커의 관점에서는 체크섬이 일치하지 않을 때 파일이 수정되었거나 악성 파일일 가능성을 알 수 있습니다.

실제 환경에서의 해시

해커로 활동하다 보면 해시를 끊임없이 접하게 됩니다.

  • Linux의 /etc/shadow에는 솔트를 적용한 비밀번호 해시가 저장되며, $6$(SHA-512) 또는 $2b$(bcrypt)와 같은 접두사가 붙습니다.
  • Windows는 SAM 데이터베이스에 NTLM 해시를 저장합니다.
  • 웹 앱은 사용자 테이블에 해시된 비밀번호를 저장합니다.

접두사를 알아보면 알고리즘과 크래킹 전략을 즉시 파악할 수 있습니다.

$6$rounds=5000$salt$hash   # SHA-512 crypt
$2b$12$saltandhash...      # bcrypt

빠른 확인

사용자 비밀번호를 저장할 때 가장 안전한 선택을 고르십시오.

요약

이제 해싱을 이해하셨을 것입니다.

  • 해싱은 단방향이며, 크기가 고정되고 결정적인 변환입니다. 인코딩 및 암호화와는 다릅니다.
  • MD5와 SHA-1은 안전하지 않으므로 일반적인 무결성 확인에는 SHA-256을 사용하십시오.
  • 비밀번호에는 느리고 솔트를 사용하는 알고리즘인 bcrypt, scrypt 또는 Argon2를 사용하십시오.
  • 솔트는 레인보 테이블을 무력화하고, HMAC은 키를 사용하는 무결성 확인 기능을 추가합니다.

다음에서는 AES와 RSA를 사용한 대칭 암호화와 비대칭 암호화를 살펴보겠습니다.

자주 묻는 질문

“해싱” 강의는 무료인가요?

네 — “해싱” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Ethical Hacking Academy 강의 전체를 잠금 해제할 수 있습니다. Ethical Hacking Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“해싱”에서 뭘 배우나요?

MD5, SHA, bcrypt 브라우저에서 직접 실행하는 실습 코드로 Ethical Hacking Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Ethical Hacking Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Ethical Hacking Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“해싱” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Ethical Hacking Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Ethical Hacking Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 인코딩과 암호화 비교
  2. 해싱
  3. 대칭 암호와 비대칭 암호
  4. 해시 크래킹
← Ethical Hacking Academy(으)로 돌아가기