파일 해시와 체크섬을 이용하여 파일 무결성 확인하기

ds_chanin

·

2021. 9. 22. 00:17


파일 해시와 체크섬

팀에서 사용하고 있으니 조금 더 이해가 필요하다고 판단했다.

일단 필요한 지식에 대해서 간단하게 컨셉정도만 이해하도록 하자.

 

해시

해시는 간단하게 해시 알고리즘(Hash Algorithm)을 통해 계산해서 생성된 값을 의미한다. 해시 함수에 원본 값이 다름에도 해시된 결과 값이 충돌 될 수도 있기 때문에 해싱하는데에 유의를 해야한다.

대표적으로 MD5, SHA 계열의 함수가 있다.

 

체크섬

체크섬은 오류 검출을 위한 기법으로 통신으로 주고받는 데이터의 신뢰성을 보장하기 위한 방법이다. TCP 세그먼트에는 IP헤더, 체크섬, 송수신지 주소등의 정보가 있는데 TCP 세그먼트의 값들중 체크섬을 제외한 모두 더한다음 그 결과과 세그먼트의 체크섬 값과 일치하는지 확인한는 방식을 말한다.

 

적용 사례 (예시)

 

상황

운영중인 서비스가 네이버와 제휴를 맺어 네이버페이를 이용하여 결제를 할 때 포인트를 더주는 프로모션이 진행중이다.

프로모션 중에는 네이버 페이를 통해 결제한 고객이 얼마만큼의 포인트를 더 받을지는 네이버가 정립한 정책을 통해 포인트가 적립된다.

따라서 네이버에서 해당 고객이 얼마만큼의 추가 포인트를 더 받을지 내 서비스로 전달해준다.

포인트 전달방식은 csv 파일에 다수의 회원 번호와 해당 회원이 받을 포인트의 양이 적혀있다.

회원에게 적립해야하는 포인트가 적힌 파일은 매우 중요하고 위조된 경우 서비스에 치명적인 피해를 끼칠 수 있다.

 

기존 서비스에서 구현한 부분

요청을 전달 받을때 별다른 조치없이 파일만을 전달받아 서비스 스토리지에 저장하여 사용하고 있다.

 

서비스에서 보완해야 하는 부분

네이버 페이측에서 전달해주는 파일이 위조, 변형되지 않았는지 오류 검출이 필요하다.

기존 파일만을 전달받던 부분에서 추가로 전달 받을 파일의 체크섬으로 파일의 해시 값을 전달받는다. 해시 알고리즘은 네이버 페이와 협의하에 지정했다고 가정한다.

그리고 다음과 같은 순으로 파일의 오류 검출을 진행하면 된다.

  1. 전달 받은 파일의 해시 값을 지정한 해시 알고리즘을 이용하여 계산한다.
  2. 체크섬으로 사용 될 전달받은 해시 값을 앞서 계산한 파일 해시 결과와 비교한다.

'스터디 > 네트워크' 카테고리의 다른 글

자원을 수정하는 HTTP 메서드 - PUT vs PATCH  (0) 2020.09.21