CSS 1타 강사 · CONCEPT 04/25
Hash는 암호화와 무엇이 다르고 collision은 왜 반드시 존재할까요?
Cryptographic hash는 길이가 다른 입력을 알고리즘이 정한 고정 길이 digest로 바꿉니다. 입력이 무한히 많고 출력은 유한하므로 collision은 반드시 존재하며, 목표는 collision을 현실적인 시간에 찾기 어렵게 만드는 것입니다.
전문 용어를 보기 전에 이 장면부터 잡으세요
거대한 도서관의 책을 짧은 서가 번호로 표시하면 언젠가 같은 번호가 겹칠 수 있습니다. 좋은 hash는 그 겹침을 의도적으로 찾기 어렵게 합니다.
되돌리는 암호가 아니라 고정 길이 지문입니다
00
한 장면으로 문제를 시작해 봅시다
이번 페이지에서 끝까지 따라갈 예시
길이가 제각각인 수많은 파일을 256-bit digest라는 고정 크기 지문으로 표시한다고 생각합니다.
비유와 실제 시스템을 정확히 연결하기
- 파일마다 찍는 짧은 지문hash digest
- 아주 많은 사람과 네 개뿐인 사물함무한한 input 공간과 유한한 output 공간
- 서로 다른 두 사람이 같은 사물함을 받음collision
이 예시에서 사람·장치·데이터·화살표를 먼저 찾습니다. 아직 용어를 완벽히 몰라도 “누가 무엇을 가지고, 어떤 처리를 거쳐, 무엇이 달라지는가”를 말할 수 있으면 출발점은 충분합니다.
01
긴 이름을 작은 용어로 분리하기
한 제목에 여러 단어가 들어 있어도 같은 기능을 뜻하지 않습니다. 아래 카드를 하나씩 읽고 각 용어의 대상과 역할을 따로 잡으세요.
Hash는 암호화가 아니라 고정 길이 지문이다
Cryptographic hash function은 길이가 제각각인 입력을 정해진 길이의 digest로 바꾼다. 같은 입력은 같은 digest를 만들지만 digest에서 원문을 되찾기는 어려워야 한다. 서로 다른 두 입력이 같은 digest를 만드는 상황을 collision이라고 한다. 입력 가능성은 사실상 무한하고 출력 종류는 유한하므로 collision은 수학적으로 반드시 존재하며, 보안 목표는 collision이 전혀 없게 하는 것이 아니라 현실적인 시간에 찾기 어렵게 하는 것이다.
TERMS FROM ZERO
Hash는 암호화가 아니라 고정 길이 지문이다 핵심 용어
아래 단어는 이미 안다고 가정하지 않습니다. 먼저 쉬운 뜻을 읽고, 본문에서 같은 단어가 나오면 이 정의로 다시 바꾸어 읽으세요.
Hash function
임의 길이 입력을 고정 길이 digest로 바꾸는 단방향 함수입니다. 암호화처럼 복호화 key가 있는 기능이 아닙니다.
Digest
Hash function의 고정 길이 출력으로, 데이터의 짧은 지문처럼 사용됩니다.
Collision
서로 다른 두 입력이 같은 digest를 만드는 경우입니다. 출력 공간이 유한하므로 존재 자체는 피할 수 없습니다.
Preimage resistance
주어진 digest를 만드는 입력을 현실적인 시간에 찾기 어려워야 한다는 성질입니다.
보안이란 무엇을 지키는 것인가
컴퓨터 보안은 막연히 ‘안전하게 만들기’가 아니라 지켜야 할 성질을 구분하는 일에서 시작한다. 기밀성(Vertraulichkeit, confidentiality)은 허가받지 않은 사람이 내용을 읽지 못하게 하는 것, 무결성(Integrität, integrity)은 내용이 몰래 바뀌지 않았음을 확인하는 것, 진위성(Authentizität, authenticity)은 상대나 데이터의 출처가 주장과 맞는지 확인하는 것이다. 서비스가 필요할 때 계속 동작하는 성질은 가용성(Verfügbarkeit, availability)이라고 한다.
TERMS FROM ZERO
보안이란 무엇을 지키는 것인가 핵심 용어
아래 단어는 이미 안다고 가정하지 않습니다. 먼저 쉬운 뜻을 읽고, 본문에서 같은 단어가 나오면 이 정의로 다시 바꾸어 읽으세요.
Asset
공격자로부터 지키려는 대상입니다. 파일, 비밀번호, 서비스 가용성, 사람의 개인정보가 모두 asset이 될 수 있습니다.
Confidentiality
허가받지 않은 사람이 내용을 읽지 못하게 하는 기밀성입니다.
Integrity
데이터나 시스템이 허가 없이 바뀌지 않았음을 보장하려는 무결성입니다.
Availability
정당한 사용자가 필요할 때 서비스와 데이터에 접근할 수 있는 가용성입니다.
02
실제 시스템에서는 이 순서로 움직입니다
예시를 단계별로 해체하기
- 1단계임의 길이 input을 hash function에 넣습니다.
- 2단계알고리즘이 정한 고정 길이 digest가 출력됩니다.
- 3단계같은 input은 같은 digest를 만들지만 digest에서 원문을 되찾기는 어려워야 합니다.
- 4단계입력 가능성은 출력 가능성보다 많으므로 서로 다른 두 입력의 digest가 같은 collision은 존재합니다.
- 5단계보안 목표는 collision이 없다는 주장이 아니라 공격자가 현실적으로 찾기 어렵다는 것입니다.
이 단계들은 시험 답안에서 원인과 결과가 빠지지 않도록 만든 설명 순서입니다.
손으로 따라가는 초보 예제
입력 8개를 출력 상자 4개에 넣으면 생기는 일
원리를 보기 위해 출력이 2-bit뿐인 장난감 hash를 생각합니다. 가능한 digest는 `00`, `01`, `10`, `11` 네 개뿐입니다.
- 1단계서로 다른 입력 8개를 준비하지만 digest 상자는 네 개뿐입니다.
- 2단계각 입력은 반드시 네 digest 중 하나로 mapping됩니다.
- 3단계Pigeonhole principle에 따라 적어도 두 입력은 같은 digest를 공유합니다.
- 4단계따라서 secure hash의 목표는 collision이 ‘존재하지 않음’이 아니라 공격자가 찾기 어려움입니다.
- 5단계Hash는 key로 되돌리는 encryption이 아니며 digest에서 원문 복원이 목적이 아닙니다.
그래서 무엇을 배웠나? 고정 길이 hash에는 collision이 수학적으로 반드시 존재합니다. 보안은 그 collision을 현실적인 계산량으로 찾지 못하게 만드는 데 있습니다.
03
관련 개념도 하나씩 따로 이해하기
Hash는 암호화가 아니라 고정 길이 지문이다
비유에서 실제 시스템으로 옮겨 보기
먼저 떠올릴 장면 · 수많은 책을 짧은 서가 번호로 압축해 표시하면 언젠가 같은 번호가 겹친다. 좋은 hash는 공격자가 원하는 겹침을 일부러 찾기 매우 어렵게 만든다.
정확한 뜻 · Cryptographic hash function은 길이가 제각각인 입력을 정해진 길이의 digest로 바꾼다. 같은 입력은 같은 digest를 만들지만 digest에서 원문을 되찾기는 어려워야 한다. 서로 다른 두 입력이 같은 digest를 만드는 상황을 collision이라고 한다. 입력 가능성은 사실상 무한하고 출력 종류는 유한하므로 collision은 수학적으로 반드시 존재하며, 보안 목표는 collision이 전혀 없게 하는 것이 아니라 현실적인 시간에 찾기 어렵게 하는 것이다.
- 1단계출력 길이는 입력 문장 길이가 아니라 알고리즘이 정한 bit 수로 고정된다.
- 2단계Preimage resistance는 digest에서 원문을 찾기 어려운 성질이다.
- 3단계Collision resistance는 서로 다른 두 입력의 같은 digest를 찾기 어려운 성질이다.
- 4단계MD5처럼 실용적인 collision 공격이 알려진 알고리즘은 보안 용도로 사용하지 않는다.
보안이란 무엇을 지키는 것인가
비유에서 실제 시스템으로 옮겨 보기
먼저 떠올릴 장면 · 봉투에 넣어 내용을 가리는 것은 기밀성, 봉인 스티커로 개봉 여부를 확인하는 것은 무결성, 발신인의 도장을 확인하는 것은 진위성, 우체국이 문을 열어 편지를 계속 전달하는 것은 가용성에 가깝다.
정확한 뜻 · 컴퓨터 보안은 막연히 ‘안전하게 만들기’가 아니라 지켜야 할 성질을 구분하는 일에서 시작한다. 기밀성(Vertraulichkeit, confidentiality)은 허가받지 않은 사람이 내용을 읽지 못하게 하는 것, 무결성(Integrität, integrity)은 내용이 몰래 바뀌지 않았음을 확인하는 것, 진위성(Authentizität, authenticity)은 상대나 데이터의 출처가 주장과 맞는지 확인하는 것이다. 서비스가 필요할 때 계속 동작하는 성질은 가용성(Verfügbarkeit, availability)이라고 한다.
- 1단계문제에서 숨김, 변조 탐지, 신원 확인, 서비스 중단 중 무엇을 묻는지 찾는다.
- 2단계한 기술이 네 목표를 모두 자동으로 제공한다고 가정하지 않는다.
- 3단계공격자가 무엇을 할 수 있는지와 지켜야 할 목표를 한 문장씩 분리한다.
04
강의 스크립트 원본과 연결하기
Hash 정의·핵심 보안 성질·응용를 보여 주는 대표 슬라이드입니다. 먼저 위의 초보 설명을 읽고, 원본에서는 같은 개념이 어떤 기호와 독일어·영어 용어로 표현되는지 확인하세요.
Vorlesung/03 Symmetrische Kryptographie.pdf · p.36, p.38, p.39 · Hash 정의·핵심 보안 성질·응용03 Symmetrische Kryptographie.pdf· p.36, p.38, p.39
05
시험 함정과 답안에 적용하기
- Hash는 암호화가 아니라 고정 길이 지문이다 · collision-free라는 절대 표현과 collision-resistant라는 계산적으로 찾기 어렵다는 표현을 구분해야 한다.
- 보안이란 무엇을 지키는 것인가 · TLS, 암호화, 서명, hash처럼 익숙한 단어가 나오더라도 그 기술이 제공하지 않는 목표까지 확대해서 쓰면 안 된다.
서술형 답안 골격
fixed output length, one-way 성질, collision resistance를 encryption과 구분해 설명합니다.
정의 → 등장 주체 또는 입력 → 작동 순서 → 보안 효과 → 조건과 한계 순서로 쓰고, 위 단계별 예시에서 필요한 문장을 골라 붙이세요.
책을 덮고 “Hash는 암호화와 무엇이 다르고 collision은 왜 반드시 존재할까요?”에 대해 핵심 용어 두 개, 작동 단계 세 개, 대표 함정 하나를 말해 보세요.
다음 개념으로 넘어가기 전 확인
- 2-bit digest가 가질 수 있는 값은 몇 개인가?
- Collision과 preimage 문제의 차이는?
- Hash에 decryption key가 없는 이유는?