외로운 Nova의 작업실

정보보안기사 필기 - 5(해시함수) 본문

Certification/정보보안기사

정보보안기사 필기 - 5(해시함수)

Nova_ 2022. 10. 31. 18:03

- 해시함수

해시 함수는 임의의 길이를 갖는 메시지를 입력으로 하여 고정된 길이의 해시값 또는 해시 코드라 불리는 값을 출력하는 함수입니다.

 

- 일방향 해시함수의 특징

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

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

3. 해시값으로부터 메시지를 역산할수 없다는 일방향성을 가진다.

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

 

- 해시함수의 보안 요구사항

1. 프리이미지 저항성(역상 저항성) : 해시함수 h와 메시지 M에대하여 y=h(M)일떄, M값을 찾아내는 것이 어려워야한다는 성질

2. 제2프리이미지 저항성(두번쨰 역상 저항성, 약한 충돌 내성) : 해시함수 h와 h(M)이 주어졌을때, y=h(M)=h(M')을 만족하는 M'을 생성할 수 없어야한다는 성질

3. 충돌 저항성(강한 충돌 내성) : 아무것도 주어지지 않은 상태에서 h(M) = h(M')을 만족하는 M과M'을 생성할 수 없어야한다는 성질

 

충돌이 발생할 확룰은 약한 충돌 내성보다 강한 충돌 내성이 더 높기때문에 충돌 저항성을 가진 해시함수를 강한 충돌 내성을 가졋다고 말한다.

 

- 전자서명에 이용되는 해시함수의 특성

1. 해시값을 고속으로 계산할 수 있다.

2. 약 일방향성 : H=h(M)일때, H로부터 M을 찾는 것이 계산상 불가능해야한다.

3. 강 일방향성 : H=h(M)일때, H=h(M')을 만족하는 M'을 찾는 것이 계산상 불가능해야한다.

4. 충돌 회피성 : H=h(M)=h(M')을 만족하는 M과M'을 찾는 것이 계산상 불가능해야한다.

 

- 전용 해시 함수

처음부터 모든 것을 새로 만든 해시함수를 전용 해시 함수라고합니다. 오늘날 사용되고 있는 전용 해시함수는 거의 MD4를 기초로 디자인 했습니다.

 

  • 메시지 다이제스트(message digest) : MD 알고리즘은 MD2 -> MD4 -> MD5로 발전했으며 RSA를 개발한 Rivest 교수에 의해 개발되었습니다. 최종 버전인 MD5는 메시지를 512비트로 된 블록들로 나누고 128비트 다이제스트를 출력합니다. 최근에는 내부 구조에대한 몇가지 약점이 발견되고 생일 공격에 노출되어 사용이 권장되지 않습니다.
  • SHA(secure hasg algorithm) : 가장 널리 사용되는 해시함수 SHA는 DSS에  사용되기위해 NIST가 설계하였습니다. 2002년에 NIST는 새로운 SHA버전을 정의하였고 해시값의 길이에따라 SHA-224, SHA-256, SHA-384, SHA-512로 나눠지고 이름 SHA-2라고 부릅니다. 
  • RIPEMD-160 : RIPEMD는 유럽 프로젝트로 만들어진 RIPEMD라는 일방향 해시함수의 개정판입니다. RIPEMD의 강한 충돌 내성은 2004년에 깨졌지만 RIPEMD-160은 아직 깨지지않아 비트코인에 사용되고 있습니다.
  • Tiger : Ross Anderson과 Eli Biham이 1995년 개발한 해시함수입니다. MD5와 SHA-1보다 속도가 빠릅니다.
  • HAVAL : HAVAL은 길이가 128, 160, 192, 224 및 256비트인 메시지 다이제스트를 출력하고 블록의 크기는 1024비트입니다.

- 암호학적 해시 함수의 응용

  • 무결성점검:어제 만든 파일의 해시값을 안전한 장소에 보관하고, 위조 가능성이 있기에 오늘 그 파일의 해시값을 어제의 해시값과 비교해서 동일하다면 원래의 파일이 변경되지 않았음을 확신 할 수 있습니다.
  • 소프트웨어 변경 검출 : 자신이 입수한 소프트웨어가 변경되었는지 확인하기위해 스프트웨어의 해시값을 계산하여 오리지널 사이트에서 제공하는 해시값과 비교합니다.
  • 메시지 인증 코드 : 메시지 인증은 키가 있는 해시 함수로 알려진 메시지 인증 코드를 사용하여 얻어집니다.
  • 전자 서명 : 전자서명을 할때 일방향 해시함수가 사용됩니다.

- 일방향 해시함수에 대한 공격

무차별 공격 : 약한 충돌 내성을 깨고자 행해지는 공격으로 해시값이 160비트이므로 2^160회 시행하면 원하는 메시지가 발견될 것이라고 기대할 수 있습니다.

일치블록 연쇄공격 : 새로운 메시지 M'을 사전에 다양하게 만들어놓았다가 공격하고자 하는 메시지 M의 해시함수 값h(M)과 같은 해시 함수값을 갖는 M'을 골라 사용하는 공격입니다.

중간자 연쇄공격 : 해시 중간의 결과에대한 충돌쌍을 찾아 공격합니다.

고정점 연쇄공격 : 메시지 중간에 임의으 블록들을 삽입해도 전체 해시값이 변하지 않는 부분을 찾아 공격합니다.

차분 연쇄공격 : 입력값과 출력값의 차이를 통계적 특성으로 조사하여 공격합니다.

 

- SHA 512

<기본 구조>

SHA-512는 2^128 비트 이하 길이의 메시지로부터 512비트 메시지 다이제스트를 생성합니다. 

 

<길이와 패딩>

메시지 다이제스트를 생성하기 전에 SHA512는 메시지에 추가적으로 덧붙이는 128비트의 부호없는 정수 길이 필드가 필요합니다. 이 필드에는 메시지의 길이가 비트수로 표현된 값이 저장되며 이 길이는 패딩을 하기 전의 원래 메시지 길이를 나타냅니다. 메시지 길이 필드는 공격자가 해시값이 같으면서 입력 값이 다른 메시지를 찾는 것을 어렵게하는 보안 요소입니다.

 

-메시지 인증 코드(MAC)

 

<메시지 인증 코드>

메시지 인증 코드란 무결성을 확인 하고 메시지에대한 인증을 하는 기술입니다. 앨리스와 밥은 서로 대칭키를 공유한 상황서 앨리스는 평문을 대칭키를 넣고 해시값을 구하여 밥에게 평문과 함께 보냅니다. 밥은 받은 평문을 대칭키와 함께 넣고 해시값을 구하여 앨리스가 보낸 해시값과 비교합니다. 만약 같다면 밥은 앨리스가 보내었고, 평문이 변하지 않음을 알 수 있습니다.

 

<변경 감지 코드(MDC, modification detection code)>

변경 감지 코드란 메시지의 무결성을 보장해주는 메시지 다이제스트입니다. MAC에서 키값이 없애면 MDC가 됩니다. 앨리스는 평문의 해시값을 구해 평문과 해시값을 밥에게 보냅니다. 밥은 받은 평문의 해시값을 구해 앨리스가 보낸 해시값과 비교하여, 같다면 평문이 변하지 않음을 알 수 있습니다.

 

<MAC의 구현 사례>

  • 축소 MAC : 첫번째 단계에서는 키에 메시지를 이어붙이고 두번째 단계에서는 키에 중간 단계 다이제스트를 이어붙이고 최종적인 다이제스트를 생성합니다.

  • HMAC : 키를 패딩하고 ipad와 xor하고 메시지와 결합하여 해시값 생성 -> 패딩한 키와 opad와 xor하고 메시지와 결합하고 해시값 생성 후 첫번째 해시값과 두번째 해시값을 결합하여 다시 해시값 계산하여 MAC값 생성합니다.

  • CMAC, CBC-MAC : CBC모드와 유사한 방법으로 해시함수를 사용하여 MAC을 구하는 방법입니다. 대칭키 암호를 N번 사용하여 N개의 평문 블록에서 하나의 MAC을 생성해내는 아이디어 입니다. CBC-MAC에 보안 논점이 발견되어 CMAC이 만들어 졌습니다. 아래는 CBC-MAC입니다.

- MAC에대한 공격 및 대책, 한계점

<공격>

재전송공격 : 단순한 메시지 인증코드는 공격자의 재전송 공격을 방지할 수 없습니다. 공격자는 전송중인 메시지와 메시지 인증코드를 스니핑한 다음 수신자에게 전송하더라도 수신자는 이를 구별할 수 없습니다.

 

<대책>

  • 순서 번호(sequence number) : 송신 메시지에대해 매회 1회씩 증가하는 번호를 붙여 메시지에 포함시킵니다. 이렇게해두면 재전송 공격자는 순서번호를 수정해서 재전송 공격을 해야하지만 수정한 MAC값을 구하지 못하기때문에 재전송 공격을 막을 수 있습니다.
  • 타임스탬프(timestamp) : 송신 메시지에 현재 시각을 넣기로 약속해두고 항상 송,수신자 사이에 시계를 일치시켜 MAC을 검사합니다.
  • 비표(nonce) : 메시지를 수신하기에 앞서 수신자는 송신자에게 일회용의 랜덤한 값을 건내줍니다. 이를 비표에 포함하여 MAC을 계산합니다. 비표의 값은 통신때마다 바뀌기때문에 재전송 공격을 할 수 없습니다.
  • 시도/응답(challenge/response) : 수신자 밥은 송신자 앨리스에게 난수를 준 다음, 앨리스는 난수값을 메시지에 포함하여 밥에게 보냅니다.

<한계점>

  • 제3자에 대한 증명 : 제 3자에게 이 MAC을 계산한 사람은 자신이 아니라 상대방이라고 증명할 방법이 없습니다. 둘다 평문과 키를 가지고 있기 때문입니다. 이는 전자서명을 사용하면 제 3자에대한 증명이 가능해집니다.
  • 부인 방지 : 송신자 앨리스는 수신자 밥에게 그런 메시지를 보내지 않았다라고 말을 하고 밥은 앨리스가 메시지를 보냈다고 말을 한다면, 누구의 말이 맞는지 알 수 없습니다. 이는 전자서명을 사용하면 누구의 말이 맞는지 알 수 있습니다.
Comments