해시(Hash)
메시지를 길이가 정해진 값으로 변환 혹은 압축한 것
일반적으로 정보의 무결성을 확인하기 위한 목적으로 사용된다.
해시 함수의 특징
- 일방향성 - 해시 함수의 결괏값에서 원래의 입력 메시지를 알아내는 것은 계산상 불가능
- 충돌 회피 - 서로 다른 입력 메시지는 서로 다른 결괏값이 계산됨
- 효율성 - 해시 함수는 계산하는데 시간과 자원이 적게 필요
관련된 동의어
- 해시 함수 = 메시지 다이제스트 함수, 메시지 요약 함수
- 메시지 = 프리 이미지
- 해시 결괏값 = 메시지 다이제스트, 지문, 핑거 프린트
- 무결성 = 완전성, 보전성
해시 종류
MD
128비트의 해시 값을 가진다.
SHA에 비해서 보안성면에서 취약하지만 아직도 많이 사용한다.
SHA
크게 SHA-1, SHA-2, SHA-3 세 가지가 있고 세부적으로 다시 나뉜다.
| 해시 결괏값 크기 | ||
| MD5 | 128 | |
| SHA-1 | 160 | |
| SHA-2 | SHA-256 | 256 |
| SHA-384 | 384 | |
| SHA-512 | 512 | |
| SHA-3 | SHA3-256 | 256 |
| SHA3-384 | 384 | |
| SHA3-512 | 512 | |
| SHAKE 128 | 임의의 크기 | |
| SHAKE 256 | 임의의 크기 |

이런 식으로 다운로드한 파일이 파일 제공자가 업로드한 파일이 맞는지 검증할 때 MD5나 SHA를 사용한다.
메시지 인증 코드
메시지 인증이란 메시지가 올바른 송신자로부터 왔다는 것을 확인하는 것을 의미한다.
해시를 통한 무결성 검사로는 송신자가 올바른지는 검사하지 못하므로 메시지 인증을 사용하면 올바른 송신자인지 확인할 수 있다.
메시지 인증 코드(MAC: Message Authentication Code)
추가적인 키를 이용하여 MAC 함수를 통해 계산된 값이다.
해시 (Hash)와 공통점: 결괏값 길이가 정해져 있다.
해시 (Hash)와 차이점: 함수 계산에 추가적인 키가 필요하다. 송신자와 수신자가 키를 공유해야 한다.
HMAC(Hash Message Authentication Code)
해시 함수를 이용해서 메시지 인증 코드를 구현하는 방법이다.
SHA256을 사용하면 HMAC-SHA256이 된다.
메시지 인증 코드의 제약 사항
- 키 배송 문제: 키를 공유해야 하기 때문에 안전한 방법으로 키를 공유해야 함
- 제삼자 증명 불가: 송신자와 수신자 말고는 메시지 수신자를 증명할 수 없음
- 부인 방지 불가: 자신이 아닌 다른 사용자가 메시지를 보냈다고 주장 가능
공격 방법
재전송 공격: 공격자가 몰래 보관해 둔 정상적인 MAC 값으로 같은 메시지를 반복해서 보내는 공격이다.
대응 방안
- 시퀀스 번호: 메시지에 시퀀스 번호를 포함시켜 보낸다. 송신/수신 시마다 값을 1씩 증가시킴
- 타임스탬프: 메시지에 현재 시간을 붙여 통신함
- 비표(Nonce): 일회용으로 생성되는 값인 비표를 메시지 안에 추가하여 통신함
전자 서명
전자 서명이란 원본 메시지의 해시값을 서명자의 개인키로 암호화하는 것이다.
전자 서명을 할 때 사용된 공개키가 정말로 송진자의 공개키인지 증명하는 과정이 필요하다.
공개키 인증서(PKC: Public Key Certificate): 신뢰할 수 있는 인증 기관(CA: Certification Authority)을 통해 신뢰할 수 있는 공개키를 제공한다. 대부분의 공개키 인증서는 X.509 표준에 의해서 만들어진다.
공개키 기반 구조(PKI: Public Key Infrastructure): 공개키를 효과적으로 사용하여 안전한 암호화 및 전자 서명 기능을 제공하는 보안 환경을 의미한다.
'공부 > 보안' 카테고리의 다른 글
| [보안] 보안 솔루션 (방화벽, IDS, IPS 등) (0) | 2024.06.04 |
|---|---|
| [보안] 인증 (Authentication) (0) | 2024.06.03 |
| [보안] 악성코드 / 소프트웨어 보안 (0) | 2024.05.31 |
| [보안] 인가 (Authorization) (0) | 2024.05.29 |
| [보안] 암호화 (0) | 2024.05.15 |