Network 에서 패킷의 오류를 검출하기 위해 CheckSum이라는 헤더의 Field를 사용한다. CheckSum방법은 상대적으로 패킷 오버헤드가 적은데, 예를 들어 TCP와 UDP는 16bit만 사용한다. (TCP의 헤더크기는 20byte, UDP는 8byte)
Checksum은 보안 관점에서 사용되는 Hash Function보다는 취약한 무결성 검증 방법이다. Transport 계층은 일반적으로 호스트의 OS의 일부로서 Software로 구현된다. 즉, Transport계층의 오류 검출이 Software로 구현되므로 CheckSum처럼 간단하고 빠른 오류 검출 기법이 필요하다.
반면에 Data Integrity를 위한 보안 관점의 Hash는 예로, 대표적인 Hash 알고리즘인 MD5는 길이로만 봐도 128bit 의 고정된 길이를 generation하고 SHA-1 은 160bit의 Hash로 데이터 무결성을 검증한다.
즉, 무결성 검증을 위한 암호화 Hash는 다음과 같은 특성이 요구된다.
● H(x) = H(y) 가 되는 서로 다른 두 메시지 x와 y를 찾는 일이 산술적으로 실행 불가능하다.
이 말은 쉽게 말해 침입자가 Hash 함수에 의해 보호되는 어떤 메시지를 대신할 다른 메시지를 찾아내는 일이 실행 불가능한 정도의 계산을 요구하는 일이어야 한다는 것을 의미한다.
따라서, 인터넷 Checksum과 같은 간단한 CheckSum을 암호화 Hash로 사용하기에는 너무 허술한 것이다.
네트워크 기반의 오류 검출이 보안보단 속도에 중점을 두고 있다면, Security 기반의 Hash는 속도보단 보안에 중점을 두고 있기 때문에 각 Hash 는 서로 interchangeable 하지 않다.
'Computer Science > 3. Network ' 카테고리의 다른 글
신뢰적인 데이터 전송 - RDT 1.0/2.0/3.0 (1) | 2019.05.18 |
---|---|
파이프라이닝 신뢰적 데이터 전송 (0) | 2019.05.18 |
신뢰적인 TCP보다 비신뢰적인 UDP를 사용하는 이유 (0) | 2019.05.15 |
TCP congestion control (3) | 2019.05.14 |