Skip to content
난이도 출제 빈출문제은행 6

암호 알고리즘과 해시 2 ​

앞 문서에서 대칭키 암호(symmetric-key cryptography)를 다뤘다. 이 문서는 서로 다른 두 키를 쓰는 공개키 암호(public-key cryptography)의 대표 알고리즘과, 되돌릴 수 없는 해시 함수(hash function)를 정리한다. 시험은 안전성의 근거와 해시 출력 길이를 묻는다.

공개키 알고리즘 ​

이름안전성의 근거
RSA(Rivest-Shamir-Adleman)큰 수의 소인수분해가 어렵다
디피-헬먼(Diffie-Hellman)이산대수(discrete logarithm) 문제. 키 교환용
엘가말(ElGamal)이산대수 문제
ECC(타원 곡선 암호)타원 곡선 위의 이산대수 문제

RSA는 MIT의 리베스트(Rivest)·샤미르(Shamir)·애들먼(Adleman)이 1977년에 공개했고 이름도 세 사람의 머리글자다. 학술지 논문은 1978년에 실려서 시험 자료에는 1978년으로 적히기도 한다. 두 소수를 곱하기는 쉽지만 곱한 결과를 다시 두 소수로 나누기는 매우 어렵다는 점을 이용한다. 디피-헬먼은 1976년에 공개키 개념과 함께 나온 키 교환 방식으로, 엿들을 수 있는 통신로에서도 두 사람이 같은 비밀 키를 나눠 갖게 해 준다. 이산대수 문제는 어떤 수를 몇 번 곱해야 원하는 값이 되는지 알아내기 매우 어려운 수학 문제이고, 디피-헬먼·엘가말·ECC가 이 어려움에 기댄다. ECC(Elliptic Curve Cryptography, 타원 곡선 암호)는 RSA보다 짧은 키로 비슷한 안전성을 낸다.

해시 함수 ​

해시 함수(hash function)는 임의 길이의 입력을 고정 길이 값으로 바꾸는 함수다. 입력이 조금만 바뀌어도 결과가 크게 달라지고, 결과에서 원래 입력을 되돌릴 수 없다. 그래서 복호화(decryption)가 목적이 아니라 파일이 바뀌지 않았는지 확인하는 무결성(integrity) 검사와 비밀번호 저장에 쓴다.

이름출력 길이비고
MD5(Message Digest 5)128비트리베스트, 1991년, MD4 대체
SHA-1(Secure Hash Algorithm 1)160비트해시 충돌(hash collision)이 발견되어 폐기 권고
SHA-2(Secure Hash Algorithm 2)224·256·384·512비트미국 NSA 설계, 2001년 미국 NIST 발표

해시 충돌은 서로 다른 두 입력이 같은 해시 값을 내는 것으로, 이런 입력을 찾아낼 수 있으면 위조 파일도 원본과 같은 값을 내 변조를 확인할 수 없다. 이 밖에 시험에 이름으로만 나오는 해시로 HAVAL, MD4, N-Hash, SNEFRU가 있고, 이름과 해시 알고리즘의 일종이라는 점만 기억하면 된다. N-Hash는 1990년 일본 NTT 연구진이 제안한 128비트 해시로, 시험 자료에는 N-NASH로 잘못 적힌 경우가 있다. MD5는 512비트 블록 단위로 입력을 처리한다.

시험 포인트 ​

  • "큰 수를 소인수분해하기 어렵다", "MIT의 세 사람" → RSA. "이산대수", "키 교환" → 디피-헬먼.
  • "짧은 키로 RSA와 비슷한 안전성" → ECC.
  • "임의 길이 입력을 고정 길이 값으로" → 해시. MD5 128비트, SHA-1 160비트.
  • 해시 종류: SHA 계열, HAVAL, MD4, MD5, N-Hash, SNEFRU.

관련 문서