IT/정보보안

[정보보안] 해시함수와 응용

디지털 은행원 이야기 2020. 9. 20. 19:49
반응형

 

안녕하세요.

방프개입니다.

 

오늘은 해시함수와 해시함수를 응용한 암호에 관해 적어보려고 합니다.

암호에서 해시와 메시지 인증코드(MAC)는 정보보호의 목표 중 무결성 유지를 위해

꼭 필요한 개념입니다. 따라서 어떻게 무결성을 유지하고 있는지 공부해볼 필요가 있을 것 같습니다.

 

먼저 일방향 해시함수에 대해 알아보겠습니다.

 

 

일방향 해시함수

 

해시함수는 임의의 길이를 갖는 메시지를 입력으로 하여 고정된 길이의 해시값 또는 해시 코드라

불리는 값을 출력하는 함수입니다. 

 

일방향 해시함수의 특징은 아래와 같습니다.

1. 임의 길이 의 메시지로부터 고정 길이 의 해시값을 계산합니다.

2. 해시값을 고속으로 계산할 수 있습니다.

3. 일방향성을 갖습니다. 다시 말해 해시값으로부터 메시지를 역으로 계산할 수 없습니다.

4. 메시지가 다르면 해시값도 다릅니다.

 

이러한 특징을 가지고 있는 해시함수에서도 2개의 다른 메시지가 같은 해시값을 갖는

충돌 (Collision) 이 발생할 수 있는데요. 다대일 대응 함수이다 보니 충돌이 발생할 가능성이 있습니다.

일방향 해시함수를 무결성 확인에 사용하기 위해서는 반드시 충돌이 발견되어선 안됩니다.

충돌을 발견하는 것이 어려운 성질을 가리켜 충돌 내성 (Collision Resistance)라고 부르는데

암호기술에서 사용되는 일방향 해시함수는 충돌 내성을 가질 필요가 있습니다.

 

해시함수의 분류와 보안 요구사항

 

암호학적 해시함수는

1. 프리이미지 저항성(역상 저항성, preimage resistance)

2. 제2프리이미지 저항성(두 번째 역상 저항성, 약한 충돌 내성, Second Preimage Resistance)

3. 충돌 저항성(충돌 회피성, 강한 충돌 내성, Collision Resistance)

 

위의 3가지 기준을 충족해야 합니다.

 

1. 프리이미지 저항성이란?

프리이미지 저항성이란 주어진 해시함수 h와 y=h(M)에 대해서 공격자가 y=h(M')을

만족하는 메시지 M'을 찾아내는 것은 매우 어려워야 한다는 성질입니다.

 

2. 제2프리이미지 저항성이란?

공격자는 메시지 M과 다이제스트 h(M)을 가로챕니다. 공격자는 h(M) = h(M')을 만족하는

다른 메시지 M'을 생성하고 M'과 h(M')을 수신자에게 보냅니다. 이렇게 해서 메시지를 위조할 수 있는데

제2프리이미지 저항성은 메시지를 쉽게 위조할 수 없도록 하는 성질입니다.

 

3. 충돌 저항성이란?

충돌 저항성이란 공격자가 어떤 정보도 없는 상태에서 동일한 다이제스트를 갖는

두 개의 메시지를 생성할 수 있을 때 공격자로 하여금 동일한 다이제스트를 갖는 2개의 메시지를

구하지 못하도록 하는 것입니다.

 

다음으로 키가 없는 해시함수와 키를 사용하는 해시함수에 대해 알아보겠습니다.

 

오늘날 사용되고 있는 전용 해시 함수인 SHA-1, RIPEMD, RIPEMD-128, RIPEMD-160, HAVAL 등은

모두 MD4를 기초로 디자인했습니다.

 

1. 메시지 다이제스트(Message Digest)(MD2 --> MD4 --> MD5)

  > MD 알고리즘에는 MD2, MD4, MD5 이렇게 세 가지가 있는데, RSA를 개발한 미국의 Rivest 교수가

     공개키 기반 구조를 만들기 위해 RSA와 함께 개발했습니다.

     최종 버전인 MD5는 메시지를 512 bit로 된 블록들로 나누고 128 bit 다이제스트를 출력합니다.

     현재 128 bit 메시지 다이제스트는 충돌 공격에 내성을 갖기엔 길이가 너무 짧은 걸로 알려졌습니다.

     또한 MD5는 내부 구조에 대한 몇 가지 약점이 발견되고 강한 충돌 내성을 공격하는

     생일 공격(Birthday Attack)에 노출되어 높은 보안이 요구될 땐 사용이 권장되지 않는다고 합니다.

 

2. SHA(Secure Hash Algorithm)

  > 가장 널리 활용되는 해시 함수인 SHA는 DSS(Digital Signature Standard)에 사용하기 위해

     NSA가 설계하였고, 미국 국립표준기술연구소(NIST)에 의해 배포되었습니다.

     특징은 아래의 표로 정리해보도록 하겠습니다.

 

구분 SHA-1 SHA2
SHA-224 SHA-256 SHA-384 SHA-512
MD 길이 160 224 256 284 512
최대 메시지 길이 2^64 - 1  2^64 - 1 2^64 - 1 2^128 - 1 2^128 - 1
블록 길이 512 512 512 1024 1024
워드 길이 32 32 32 64 64
단계 수 80 64 64 80 80

 

3. RIPEMD-160

  > RIPEMD-160은 유럽 RIPE(RACE Integrity Primitive Evaluation) 프로젝트로 만들어진 RIPEMD라는

     일방향 해시함수의 개정판입니다.. RIPEMD의 강한 충돌 내성은 2004년에 깨졌지만

     RIPEMD-160은 아직 깨지지 않았습니다. 이 해시함수는 비트코인에서 사용되고 있는 게 특징입니다.

 

4. HAVAL

  > HAVAL은 길이가 128, 160, 192, 224 및 256 bit인 메시지 다이제스트를 출력하는 해시 알고리즘으로

     사용되는 블록의 크기는 1024 bit입니다.

 

주요 해시 알고리즘을 표로 비교해보도록 하겠습니다.

 

항목 MD5 SHA-1 RIPEMD-160
다이제스트 길이 128 bit 160 bit 160 bit
처리 단위 512 bit 512 bit 512 bit
단계수 64(16번의 4라운드) 80(20번의 4라운드) 160(16번의 5병행 라운드)
최대 메시지 크기 무한(oo) 2^64 - 1 bit 2^64 - 1 bit
앤디언 Little-endian Big-endian Little-endian

* Big-endian과 Little-endian

  > 빅 앤디안은 최상위 비트(MSB)부터 부호화되어 저장되며, 리틀 앤디안은 최하위 비트(LSB)부터

     부호화되어 저장됩니다. 예를 들어, 숫자 12를 2진수로 나타내면 1100인데 빅 앤디안은 1100으로

     리틀 앤디안은 0011로 각각 저장됩니다.

 

키를 사용하는 해시함수는 메시지 인증 기능을 가진 함수입니다. 일반적인 해시함수와는 달리

키를 사용하는 해시함수는 함수 자체의 안전성과 키의 비밀성에 안전성을 두고 있습니다.

 

암호학적 해시함수의 응용

 

1. 무결성 점검

  > 메시지 혹은 문서의 무결성을 점검하기 위해 암호학적 해시함수를 사용해야 하고,

     이렇게 생성된 새로운 메시지 다이제스트와 이전의 메시지 다이제스트를 비교해 봐야 합니다.

     만약 이 두 개가 동일하다면 원래의 메시지가 변경되지 않았다는 것을 확인할 수 있습니다.

 

 

2. 소프트웨어 변경 검출

  > 사용자는 소프트웨어를 입수한 후, 자신의 손으로 해시값을 다시 계산해서

     그것을 오리지널 사이트에서 제공하는 해시값과 비교해봅니다.

 

 

3. 메시지 인증코드

  > 일반적으로 메시지 인증은 키가 있는 해시 함수로 알려진 메시지 인증 코드(MAC, Message Authentication Code)를

     사용하여 얻을 수 있습니다. 메시지 인증코드는 SSL/TLS에서도 활용되고 있습니다.

 

4. 전자서명

  > 전자서명을 할 때도 일방향 해시함수가 활용되고 있습니다.

 

 

이상으로 해시함수와 해시함수를 활용하는 부분에 대해 알아봤습니다.

 

감사합니다.

반응형