Shine's dev log

[OpenSSL] HMAC을 활용한 투표 프로그램 본문

보안

[OpenSSL] HMAC을 활용한 투표 프로그램

dong1 2020. 8. 10. 17:41

1. 개요

 

https://github.com/godeastone/VotingProgram_with_C

 

사용자 인증을 진행할 때 사용하는 방법 중 하나가 바로 MAC(Message Authentication Code)이다.

 

본 프로그램은 기본적으로 하나의 서버에 여러명의 클라이언트들이 접속하여 투표를 진행할 수 있는 구조이다. 클라이언트가 서버가 생성한 투표 항목 중 하나를 선택하면, 선택 결과를 이용해 HMAC를 생성한다. 서버는 받은 결과로 만들어낸 HMAC과 클라이언트로부터 받은 HMAC을 비교하여 메시지 인증을 진행한다.

 

통신 소켓 통신 이용

HMAC opensslHMAC 관련 라이브러리 이용

signal 알람을 핸들링하는 signal handler 이용해 투표 종료

 

 

 

3. 실행예시

 

최초 서버가 투표를 생성

 

투표 진행 시간을 선택하고 투표 시작

 

클라이언트는 투표 주제와 후보를 확인할 수 있고, 하나를 선택하면 HMAC값이 생성된다.

 

서버는 실시간으로 받은 메시지를 이용해 MAC값을 생성하고, 이를 비교하여 메시지 인증 진행

 

투표 진행 시간이 끝나면 자동으로 결과 출력

 

 

 

4. 참고자료

 

OpenSSL의 mac생성법 - https://blog.naver.com/PostView.nhn?blogId=seongjeongki7&logNo=220890684562&parentCategoryNo=&categoryNo=8&viewDate=&isShowPopularPosts=false&from=postView

소켓 프로그래밍 - https://good-coding.tistory.com/17