용어
글에 나오는 용어를 짧게 풀어 둔 조각들입니다. 글에서 밑줄 친 용어에 마우스를 올리거나 누르면 이 풀이가 보입니다.
- 16진수 0~9 와 a~f 열여섯 글자로 수를 쓰는 방법. 16진수 한 글자는 비트 4개를 나타낸다 (예: 7 = 0111, a = 1010).
- 단방향 해시 함수의 결과만 보고 원래 입력을 찾는 것이 계산으로는 사실상 불가능한 성질. 원상 저항(preimage resistance)이라고도 한다.
- 디지털 서명 비밀 열쇠를 가진 사람만 만들 수 있고 누구나 확인할 수 있는 «데이터 도장». 보통 데이터 대신 데이터의 해시 값에 서명한다.
- 머클-담고르 구조 긴 글을 정해진 크기의 블록으로 나눠, 앞 블록까지 섞은 중간 해시 값에 다음 블록을 압축 함수로 차례로 섞어 해시 값을 만드는 방식. SHA-1·SHA-256 이 이 방식이다.
- 반복 횟수 비밀번호 해싱을 얼마나 느리고 비싸게 할지 정하는 설정값(cost). PBKDF2 는 반복 횟수, Argon2 는 반복 횟수와 메모리 크기를 정한다. 높일수록 하나씩 대입하는 공격이 비싸진다.
- 블록 해시 함수가 글을 처리하려고 정해진 크기로 자른 한 덩어리. SHA-1·SHA-256 은 512비트(64바이트), SHA-512 는 1024비트.
- 비밀번호 해싱 비밀번호를 저장할 때 쓰는, 일부러 느리고 비싸게 만든 해싱 방식. 솔트를 붙이고 반복 횟수(cost)를 정한다. 빠른 일반 해시 함수를 그대로 쓰면 안 된다.
- 비트 0 또는 1 하나. 컴퓨터가 다루는 정보의 가장 작은 단위다.
- 생일 문제 몇 사람이 모이면 생일이 같은 두 사람이 있을 확률이 절반을 넘을까? 23명이면 약 0.507이다. 겹침은 생각보다 훨씬 빨리 생긴다.
- 선택 접두사 충돌 앞부분(접두사)을 각자 마음대로 고른 서로 다른 두 파일 뒤에 무언가를 덧붙여, 둘의 해시 값을 같게 만드는 충돌. 보통 충돌보다 실제 공격에 쓰기 쉬워 더 위험하다.
- 솔트 비밀번호마다 따로 붙이는 무작위 값. 같은 비밀번호도 다른 해시 값이 되게 해서, 미리 만들어 둔 표로 한꺼번에 찾는 공격을 막는다. 비밀일 필요는 없다.
- 압축 함수 해시 함수 안에서 «앞 중간 해시 값» 과 «새 블록» 을 받아 새 중간 해시 값 하나로 섞는 부분. 블록마다 한 번씩 되풀이해 쓴다.
- 중간 해시 값 블록을 하나씩 압축 함수에 넣을 때마다 새로 나오는 값. 지금까지 넣은 블록을 모두 섞은 결과이고, 마지막 중간 해시 값이 곧 해시 값이다.
- 지문 해시 값을 부르는 비유적인 이름. 원래 데이터를 대표하는 작은 값이라는 뜻으로, 교과서는 «디지털 지문» 이라고도 부른다.
- 충돌 서로 다른 두 입력이 같은 해시 값을 내는 일. 결과 길이가 정해져 있으니 충돌은 반드시 있지만, 좋은 해시 함수는 그것을 찾기가 사실상 불가능하다.
- 해시 값 해시 함수가 내놓는 결과. 긴 메시지를 줄인 «요약본» 이라는 뜻에서 다이제스트(digest)라고도 부른다.
- 해시 함수 어떤 길이의 데이터를 넣어도 정해진 길이의 짧은 값(해시 값)을 내놓는 함수. 같은 입력이면 늘 같은 값이 나온다.
- Argon2 메모리를 많이 쓰게 만든 비밀번호 해싱 함수(2021년 RFC). 권장 설정의 하나는 Argon2id, 메모리 64MiB, 3번 반복, 4갈래다.
- BLAKE2 2012년에 나온 해시 함수. 매우 안전하다고 여겨지고 어느 기기에서나 빠르도록 만들었다. BLAKE2b 는 해시 값을 최대 64바이트까지 낸다.
- CRC 전송·저장 중 우연히 생긴 오류를 잡는 검사값(순환 중복 검사). 아주 빠르지만, 누가 일부러 바꾸는 것은 막지 못한다 — 보안용 해시가 아니다.
- MD5 해시 값이 128비트인 오래된 해시 함수. 충돌을 만드는 공격이 알려져, 충돌 저항이 필요한 곳에는 쓰지 않는다.
- PBKDF2 비밀번호에 솔트를 넣고 해시를 여러 번 되풀이해 값을 만드는 방식. 반복 횟수(cost)로 느리게 만든다. 브라우저에 들어 있다.
- SHA-1 결과가 160비트인 옛 해시 함수. 2017년에 실제 충돌이 만들어졌고, NIST 는 2030년 말까지 거둬들이라고 발표했다.
- SHA-256 NIST 표준(FIPS 180-4)에 실린 해시 함수. 결과가 256비트(16진수 64글자)이고 SHA-2 무리에 속한다.
- SHA-3 NIST 가 공모전에서 고른 Keccak 을 바탕으로 2015년에 표준이 된 해시 함수 무리. SHA3-256 은 해시 값이 256비트다.