본문으로 바로가기
링크허브 공식블로그

연동이 쉬워진다

링크허브 공식블로그

현대리가 생각하는 IT

H-MAC SHA-1

들어가며

인터넷상에서 통신을 할때 두 단말기(디바이스)에서 메시지를 주고 받습니다. 이때 중간에 누군가의 개입으로 메시지(데이터)를 가로채거나, 메시지 값을 변경해서 상대방에게 보낼수가 있습니다.  이때 hmac이라는 기술을 이용하여 메세지 위변조를 막는데 사용 하고 있습니다. hmac이 무엇이며 그 뒤에 sha1은 무엇인지 알아 보겠습니다.


메시지 변조 & 위조

H-MAC을 알아보기전에 메시지 변조 위조에 그리고 해싱에 대해서 알아보겠습니다.

  1. 메시지 변조 : 중간에 누군가가 메세지를 가로채서 내용을 변조 해서 전송한다.
  2. 메시지 위조 : 악의 적인 사용자가 올바른 메시지인 것처럼 위조 해서 전송한다.

해싱

해싱은 원문(plain text)을 일정 길이의 바이트로 변환하는데 그 결과가 유일하여 긴 문장의 빠른 검색을 위한 키 값으로 많이 쓰입니다.  그리고, 해시된 결과를 사용해서 거꾸로 원문을 복구할 수 없다는 것이 해시를 사용하는 고유한 가치라고 할 수 있습니다. 이러한 해시의 특성을 사용하여 데이터의 위변조 여부를 알아낼 수 있습니다. 

HMAC(Hash-based Message Authentication Code)

메시지 인증 코드(Message Authentication Code, 약칭 MAC)는 메시지의 인증에 쓰이는 작은 크기의 정보입니다.  이 MAC을 이용하여, 메시지의 무결성  신뢰성을 보장하는데 사용합니다. HMAC은 해싱 기법을 적용하여 메시지 위변조를 방지합니다.


  1. 사전에 Sender와 Receiver는 별도 채널로 해시에 사용할 키 shared key를 공유한다. 그리고, 양쪽에서 공히 사용할 해시 알고리즘을 정합니다.
  2. Sender는 공유키를 사용해서 User ID를 해시합니다.

  3. Sender는 원본 User ID와 그 해시결과(HMAC)를 쿼리스트링 값으로 Receiver에게 전달합니다.

  4. Receiver는 받은 User ID를 공유키를 사용하여 같은 알고리즘으로 해시한 결과(Receiver’s HMAC)를 만듭니다.

  5. Receiver가 만든 HMAC과 쿼리스트링으로 받은 HMAC이 같다면 User ID는 변경되지 않았다고 신뢰할 수 있습니다.



hmac-sha1
사실 hmac-sha1은 hmac with sha1으로 표현하는게 정확합니다. hmac이 hashed mac을 말하는데 이때 사용하는 Hash알고리즘으로 여러가지를 선택 가능합니다. 이때 사용되는데 sha1 알고리즘입니다. sha1 (Secure Hasj Algorism) 해시 알고리즘은 임의 길이의 입력데이터를 160 bit의 출력데이터로 바꾸는 해싱기법입니다.

 


 

 

linkhub sha1 test(2) string 이라는 평문을 sha1알고리즘을 이용한 결과 입니다.  test, test2 한글자만 추가되어도 전혀 다른 결과값이 나오며 입력된 글자 수와 상관없이 일정한 길이의 결과값을 반환하는걸 보실수 있습니다.




마치며

서버-클라이언트 관계처럼 키를 공유해야하는 대상이 많거나 특정할 수 없는 경우에는 비밀키를 관리하는 과정에서 위험이 발생 할 수 있습니다. 또한 기술이 발전함에 따라 몇몇 해쉬함수는 더 이상 안전하지 않으며 취약점이 많이 발견되었습니다. 그러나 한정된 서비스를 제공하거나 서비스 이용전 이메일이나 직접 방문을 통해 환경 설정을 하는 경우 비교적 안전하게 키관리를 할수 있으며, 더 안전한 해쉬함수 SHA-256, SHA-3 를 사용함으로써 안전하게 통신을 할 수 있습니다.



참고사이트

https://en.wikipedia.org/wiki/HMAC

https://www.joinc.co.kr/w/man/12/hmac

http://blog.jakeymvc.com/sso-hmac/


  • Today
  • Total