들어가며
인터넷상에서 통신을 할때 두 단말기(디바이스)에서 메시지를 주고 받습니다. 이때 중간에 누군가의 개입으로 메시지(데이터)를 가로채거나, 메시지 값을 변경해서 상대방에게 보낼수가 있습니다. 이때 hmac이라는 기술을 이용하여 메세지 위변조를 막는데 사용 하고 있습니다. hmac이 무엇이며 그 뒤에 sha1은 무엇인지 알아 보겠습니다.
메시지 변조 & 위조
H-MAC을 알아보기전에 메시지 변조 위조에 그리고 해싱에 대해서 알아보겠습니다.
- 메시지 변조 : 중간에 누군가가 메세지를 가로채서 내용을 변조 해서 전송한다.
- 메시지 위조 : 악의 적인 사용자가 올바른 메시지인 것처럼 위조 해서 전송한다.
해싱
HMAC(Hash-based Message Authentication Code)
- 사전에 Sender와 Receiver는 별도 채널로 해시에 사용할 키 shared key를 공유한다. 그리고, 양쪽에서 공히 사용할 해시 알고리즘을 정합니다.
Sender는 공유키를 사용해서 User ID를 해시합니다.
Sender는 원본 User ID와 그 해시결과(HMAC)를 쿼리스트링 값으로 Receiver에게 전달합니다.
Receiver는 받은 User ID를 공유키를 사용하여 같은 알고리즘으로 해시한 결과(Receiver’s HMAC)를 만듭니다.
Receiver가 만든 HMAC과 쿼리스트링으로 받은 HMAC이 같다면 User ID는 변경되지 않았다고 신뢰할 수 있습니다.
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/
'현대리가 생각하는 IT' 카테고리의 다른 글
브라우저 엔진 (렌더링 엔진 / 레이아웃 엔진) 종류 및 브라우저별 CSS 적용 방법 (0) | 2018.05.31 |
---|---|
PHP (0) | 2018.05.31 |
HTTP Protocol (HTTP 프로토콜) (0) | 2018.05.17 |
HTTP request methods (0) | 2018.05.10 |