(2022.04.09)
네보실 4주차 실습 정리
Hash function
: 가변길이의 데이터를 입력받아 고정길이의 데이터로 변환하는 것
(가변길이의 데이터는 적절하게 padding 된다)
- 일방향 함수이므로, 해시값을 통해 원본 데이터를 알아낼 수 없다.
- 입력데이터가 달라지면, 해시 값도 달라진다.
---> 무결성을 보장하는데 주로 이용 (암호화보다는 메시지의 위변조 확인 용도)
hash funciton 특징
- 압축 및 고정 길이
- 계산 용이성 및 확장성
- 일방향성) 역상 저항성
- 충돌 저항성
hash의 사용사례
- password 비교
- 파일 무결성 증명
- git에서 자료구조 차원에서 SHA-1 사용
암호학적 해시 vs 비 암호학적 해시
1. 암호학적 해시
- 역상 저항성과 충돌 저항성이 증명된 해시 함수
- MAC, 전자서명에 사용
2. 비암호학적 해시
- 암호학적 안성정이 보장되지 않는 해시 함수
- 자료구조(해시 테이블), 오류 검출, CRC 등 에 사용
hash collision 해시 충돌
: 해시 함수가 서로 다른 두 입력 값에 대해 동일한 해시 값을 갖는 현상
가변길이의 데이터를 입력받아 고정 길이를 출력하는 해시 함수는 당연하게도 충돌이 발생하게 된다.
==> 비둘기 집 원리 : N개의 비둘기 집과 N+1 마리의 비둘기가 있을 때, 모든 비둘기가 집에 들어가 있다면 어느 비둘기집은 반드시 2마리 이상의 비둘기가 있다.
hash function's resistance
(+ 역상 preimage: Hash(M)=H를 만족하는 M을 해시값 H의 역상이라고 함)
- 제 1 역상저항성
- 제 2 역상저항성 (약한 충돌저항성)
- 충돌 저항성 (강한 충돌저항성)
---> 역상을 찾는 것보다 충돌을 찾는 것이 더 쉽다.
attack for hash
- birthday paradox 를 통한 birthday attack이 해시함수 공격에 많이 이용된다. (충돌을 찾기 위한 해시 값의 개수는 생각보다 많지 않다)
- 무차별 공격, 일치 블록 연쇄 공격, 중간자 연쇄 공격 등등
MD5 (Message Digest alogorithm 5)
- 128 bit hash 값 생성하는 hash 함수
- 해시 충돌을 찾아내는 방법이 발견되어 비암호학적 해시 함수로 취급
SHA (Secure Hash Algorithm)
- 미연방 정부 기관에서 사용하기 위해 NIST 가 표준화한 해시 함수
MAC (Message Authentication Code) - 메시지 인증코드
- 메시지의 무결성을 보장한다 --> 메시지가 변경되지 않음을 확인한다
- 발신자의 인증을 제공한다.
- but, 메시지의 기밀성을 보장하지 못한다. --> 재생공격, 중간자 공격에 취약하다.
(재생공격을 방지하기 위해서 순서번호, 타임스탬프, 난수를 이용한다.)
HMAC (Hash-based Message Authentication Code)
- MAC 알고리즘으로 해시함수를 사용하는 것이다.
- 키 있는 해시함수를 사용하여 무결성과 인증성을 확인할 수 있다.
- HMAC에서 메시지길이가 충분히 크다면, HMAC은 안전하다.
--> 키 있는 해시 함수 (keyed-hash function)
해시함수는 공개되어 있어서 아무나 해시값을 생성할 수 있다. -> 특정값 M은 반드시 특정값 H로 해싱됨을 알 수 있다.
그리하여, 아무나 동일한 해시값을 생성해 볼 수 없도록 하기 위해서 나온 것이 키 있는 해시함수이다.
원본 데이터에 key를 더하여 해시값을 출력한다.
단순히 key를 덧붙여서 해시값을 생성하는 것이 아니라 별도의 운영방식이 존재한다. (RFC 2104)
추가 정리
'Security > 네트워크 보안' 카테고리의 다른 글
[네트워크 보안] 실습과제 3 정리 (0) | 2022.05.15 |
---|---|
[네트워크 보안] Key Distribution Problem - PSK, KDC, DH, PKI, RSA, digital signature (0) | 2022.04.10 |
[네트워크 보안] Block Cipher - padding & mode of operation (0) | 2022.04.09 |
[네트워크 보안] Modern Cryptography (현대암호) - DES (0) | 2022.04.01 |
[네트워크 보안] Classical Cryptography (고전암호) (0) | 2022.04.01 |