Hash and MAC

Security/Common 2011. 9. 18. 11:35
출처 - http://blog.naver.com/dury00/130044978311

Hash and MAC
  • Hasing

    • 원래는 테이블 내 탐색, 삽입, 삭제를 상수 시간내에 효과적으로 이루어지게 하는 탐색 기법
    • 특정한 키를 받아들여 그 키로만 매칭할 수 있는 레코드의 위치를 반환 가능
  • 암호학적으로 유용한 해시 함수의 요건

    • 강한 충돌 회피성 : x != x' 이면서 h(x) = h(x')을 만족하는 x, x' 을 찾는 것이 계산적으로 불가능
    • 어떠한 크기의 데이터 블록이든지 적용 가능해야 하고
    • 고정 길이의 output(message digest) 생성
    • message diagest로부터 원래 message를 구할 수 없는 일방향성
  • 해시 알고리즘

    • SHA

      • 메시지를 512bit 블록으로 맞추기 위해 패딩 및 메시지 원래 길이값을 추가
      • 512bit 블록으로 나눈 후 160bit의 초기 백터와 각 블록을 SHA 함수에 입력하면 변형된 160bit의 백터가 출력되고, 이를 다시 다음 블록과 함께 입력하는 과정을 반복하면 마지막에 나온 160bit 의 메시지 다이제스트 생성
      • 각 SHA iteration 과정

      • 512bit 의 블록을 16개의 워드(W1~W16)로 나누고 초기 백터 또한 5개의 워드(A-E, H0-H4)로 나눈 후
        H4=H3, H3=H2, H2=S 30(H1), H1=H0, H0=TEMP
        TEMP = TEMP = S5(H0) + ft(H1,H2,H3) + H4 + Wt + Kt

        (Kt 는 80개의 상수 단어 열)

      • 이러한 과정을 80번 반복하며, 이때 1~16라운드까지는 W1~W16의 값을 사용하나 17라운드부터는
        Wt = S1(W(t-3) XOR W(t-8) XOR W(t-14) XOR W(t-16)) 를 이용하여 구한다.
    • MD5

      • 메시지 다이제스트 길이 128bit
      • 블록 길이 512bit
      • 각 iteration 당 64라운드
  • 메시지 인증코드

    • 비밀키 기반의 인증코드 : 비밀키로 메시지 다이제스트를 암호화해서 보낸 후, 수신자측에서는 받은 메시지의 다이제스트를 만들고 인증코드를 복호화하여 비교
    • 공개키 기반의 인증코드 : 개인키로 메시지 다이제스트를 암호화해서 보낸 후, 수신자측에서는 받은 메시지의 다이제스트를 만들고 인증코드를 공개키로 복호화하여 비교
    • 공유 비밀키 방식의 인증코드 : 메시지에 비밀키를 추가하여 메시지 다이제스트를 만들어서 보낸 후, 수신자측에서는 수신된 메시지에 비밀키를 추가하여 메시지 다이제스트를 만들어서 인증코드와 비교, HMAC
  • HMAC (keyed-Hash Message Authentication Code)

'Security > Common' 카테고리의 다른 글

CISSP에서 도구  (0) 2011.11.10
암호학(Cryptography) 의 모든 것  (0) 2011.10.06
API Gateway 사례로 본 HMAC 인증 이해  (0) 2011.10.01
시만텍 “보안 빨간불, 주범은 APT”  (2) 2011.09.24
커버로스 (Kerberos)  (0) 2011.09.23
Posted by linuxism
,