[암호학] 해시 함수

Rainy·2025년 3월 11일
0

crypto

목록 보기
4/4

해시 함수


해시 함수(Hash Function)는 임의 데이터를 입력으로 받아서 고정된 크기의 데이터를 반환하는 함수입니다. 여기서 반환된 데이터를 해시 값(Hash Value)이라고 부릅니다.

해시함수중는 암호학적 해시함수(Cryptographic Hash Function)와 비암호학적 해시함수로 구분되며, 여기서는 암호학적 해시함수에 대해 알아보겠습니다.

암호학적 해시 함수


암호학적 해시 함수의 성질

암호학적 해시함수는 다음 성질들을 만족하는 해시 함수를 말합니다.
1. 제 1 역상 저항성(Preimage resistance) : 암호학적 해시 함수 H에 대해 y가 주어졌을 때 H(x) = y를 만족하는 x를 찾는 것이 어려워야 합니다. 이는 함수가 일방향 함수(One-way function)이어야 함을 의미합니다.
2. 제 2 역상 저항성(Second preimage resistance) : 암호학적 해시 함수 H에 대해 x가 주어졌을 때 x ≠ x', H(x) = H(x') 을 만족하는 x' 값을 찾기 어렵습니다. 다시 말해 한 입력에 대해 같은 해시 값을 갖는 다른 입력 값을 찾기가 어렵습니다.
3. 충돌 저항성(Collision resistance) : 암호학적 해시 함수 H에 대해 x ≠ x', H(x) = H(x') 를 만족하는 x, x' 값을 찾기가 어렵습니다.

해시 함수의 종류


MD5

MD5는 Ronald Lorin Rivest가 1991년에 만들어낸 해시 함수입니다. 현재는 다양한 취약점이 발견되어 더는 안전한 해시 함수로 여겨지지 않지만, 몇몇 구형 시스템에서는 여전히 MD5가 사용되고 있습니다.

MD5 해시 함수는 임의 입력으로부터 16바이트의 값을 생성하는 함수입니다. 임의 길이의 입력을 512비트 단위로 쪼갠 후 연산을 거쳐 값을 생성합니다.

SHA-2

SHA(Secure Hash Algorithm)은 미국 국립표준기술연구소에서 공식적으로 발표한 해시 알고리즘들입니다.

SHA-2는 2001년에 발표된 해시 함수의 집합입니다. SHA-256은 SHA-2 해시 함수 중 하나로, 현재까지 취약점이 발견되지 않아 해시가 필요한 대부분의 곳에서 사용되고 있습니다. SHA-256은 32바이트의 출력을 내는 함수로 MD5에 비해 길이가 2배로 늘어나 충돌 저항성이 크게 증가했습니다.

Yescrypt

Yescrypt는 기존 암호 해싱 알고리즘들의 장점을 결합한 강력한 알고리즘입니다. 메모리 하드닝과 높은 연산량 요구로 공격에 강합니다.

Salt


솔트(Salt)는 비밀번호 해시를 더 안전하게 만들기 위해 비밀번호에 추가하는 임의의 무작위 데이터입니다. 즉, 같은 비밀번호라도 다른 솔트를 사용하면 다른 해시 값이 생성되도록 하는 역할을 합니다.

/etc/shadow 파일에서 솔트가 포함된 해시 예제를 살펴보겠습니다.

user:$y$j9T$iYt2EtWN1Wi5NO8kdpgZk/$zUve2fv2P24ed40aK7jl0Q4u0SXbCyAXCD4KdMixiFC:20090:0:99999:7:::
  • $y$ : yescrypt 해시 사용
  • iYt2EtWN1Wi5NO8kdpgZk : 솔트 값
  • $zUve2fv2P24ed40aK7jl0Q4u0SXbCyAXCD4KdMixiFC : 해싱된 비밀번호

0개의 댓글

관련 채용 정보