스물두줄

정보관리기술사 · 개념서 · 정보보안

해시 알고리즘

설명 영상 해시 알고리즘 · 2:37

왜 배우는가: 해시 알고리즘은 전자서명, 비밀번호 저장, 무결성 검증, 블록체인의 공통 기반이라 보안 과목 전반에서 반복해 출제된다. 기술사 시험에서는 해시 함수의 성질, 해시값과 해시함수의 구분, MD5·SHA 계열의 변천이 함께 묻힌다. 개념의 세부 조건을 정확히 알아야 답안의 감점을 줄일 수 있다.

출제 이력: 제120회 1교시 9번, 제118회 1교시 12번, 제116회 1교시 3번

1. 한 줄 정의와 핵심 키워드

해시 함수(Hash Function)는 임의 길이의 데이터를 고정 길이의 해시값으로 사상하는 함수로, 무결성 검증과 인증에 쓰인다.

  • 해시 함수: 입력 길이와 무관하게 고정 길이 출력을 내는 함수
  • 해시값(Hash Value): 해시 함수의 출력, 해시 코드·해시섬·체크섬이라고도 부름
  • 단방향성(One-way): 해시값에서 원래 입력을 복원하기 어려운 성질
  • 충돌 저항성(Collision Resistance): 같은 해시값을 내는 서로 다른 두 입력을 찾기 어려운 성질
  • 역상 저항성(Preimage Resistance): 주어진 해시값을 내는 입력을 찾기 어려운 성질
  • 제2 역상 저항성(Second Preimage Resistance): 특정 입력과 같은 해시값을 내는 다른 입력을 찾기 어려운 성질
  • 무결성 검증(Integrity Verification): 해시값 비교로 데이터 변경 여부를 확인하는 용도
  • SHA-256: 현재 널리 쓰이는 256비트 출력 해시 알고리즘

2. 개념 풀이

쉬운 말로 하면 해시는 데이터의 지문이다. 같은 데이터는 언제나 같은 지문을 내고, 데이터가 조금만 바뀌어도 지문이 크게 달라진다. 지문만 보고 원본 데이터를 되살릴 수는 없다.

정식 정의는 다음과 같다. 해시 함수는 임의 길이의 비트열을 고정 길이의 비트열로 사상하는 함수다. 암호학적 해시 함수는 하나의 출력에 대응하는 입력을 찾는 것과, 하나의 입력과 같은 출력을 내는 다른 입력을 찾는 것이 계산적으로 불가능해야 한다. 이 두 조건이 역상 저항성과 제2 역상 저항성에 해당한다.

단방향성은 입력에서 해시값으로 가는 계산은 쉽고, 해시값에서 입력으로 되돌리는 계산은 거의 불가능한 성질이다. 이 성질 때문에 해시는 암호화와 구별되며, 복호화 과정이 없다.

충돌 저항성은 서로 다른 두 입력이 같은 해시값을 갖는 충돌을 찾기 어려운 성질이다. 해시 함수는 출력 길이가 유한하므로 충돌 자체는 반드시 존재한다. 따라서 안전성은 충돌이 존재하느냐가 아니라 찾기가 얼마나 어려우냐로 평가한다.

약한 충돌 저항성은 주어진 입력 하나에 대해 같은 해시값을 내는 다른 입력을 찾기 어려운 성질이다. 강한 충돌 저항성은 같은 해시값을 내는 임의의 두 입력 쌍을 찾기 어려운 성질이다. 강한 충돌 저항성이 더 엄격한 조건이다.

고정 길이 출력 조건은 입력 길이와 무관하게 적용된다. 해시 함수는 정보를 줄이는 함수이므로 단사 함수가 아니다. 같은 해시값을 가진 입력이 서로 같을 가능성은 있으나 보장되지 않는다.

3. 등장 배경과 필요성

초기 컴퓨팅에서는 데이터가 전송 중 바뀌었는지 확인할 간단한 수단이 필요했다. 체크섬과 CRC 같은 방식은 실수로 생긴 오류는 찾지만, 공격자가 의도적으로 변조한 데이터를 막지는 못한다. 공격자가 체크섬까지 다시 계산할 수 있기 때문이다.

이어지는 내용

로그인하면 하루 5페이지까지 무료로 전체를 읽을 수 있습니다.

앱에서 이 단원 읽기