Background Image
제품 여행
2020.08.29 00:22

파일이 정상인가 ?

조회 수 2395 추천 수 1 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

기술 지원 시 파일 변조 또는 손상 되어 골치 아픈 경우가 간혹 발생 합니다.

- 고객사 지원을 위해 파일을 반입하는 경우 CD 손상으로 인한 파일 손상

- 보안 프로그램(DRM,EFS)에 의한 파일 변조

- 네트워크를 통한 파일 전송 시 파일 손상

 

파일 변조 또는 손상이 발생하면, 파일 크기가 크게 변하지 않으며 정합성 여부를 명확하게 확인 할 수 없습니다.

이로 인해 기술 지원 시 뭐가 문제인지 당황스러울 때가 있는데요.

이와 같은 상황에서 불필요한 시간 발생을 최소화 할 수 있는 방법에 대해 기술 하였습니다.

 

무결성 검사


파일이 변조 되어 있지 않다는 검사를 하기 위해 여러가지 방법들이 있습니다만, 가장 효율적이고 쉬운 방법을 소개하겠습니다.

md5 (MD5 128비트 해쉬 암호화 함수)툴은 Windows, Linux, OS X 등 많은 시스템에서 기본적으로 설치 되어 있습니다.

 

참고 자료

사용 방법


Windows

* 실행 > cmd
certutil -hashfile <filename> <hash functuin>
 
* ex
cmd> certutil -hashfile CUBRID-10.2-latest-Linux.x86_64.sh MD5
MD5의 CUBRID-10.2-latest-Linux.x86_64.sh 해시:
f1fca41add6d3054dfb2a2f8a9e19617
CertUtil: -hashfile 명령이 성공적으로 완료되었습니다.

 

Linux, OS X

* 터미널
md5sum <filename>
 
* ex
$ md5sum CUBRID-10.2-latest-Linux.x86_64.sh
f1fca41add6d3054dfb2a2f8a9e19617  CUBRID-10.2-latest-Linux.x86_64.sh

 

 

정상적으로 다운 받은 파일의 MD5 해쉬 값은 f1fca41add6d3054dfb2a2f8a9e19617  CUBRID-10.2-latest-Linux.x86_64.sh

(파일 사이즈  : 86903517 byte)

원본 파일에 특정 문자 삭제 후 구한 MD5 해쉬 값은  aa06214176b8bb6c93ed7ecd72e5e561  CUBRID-10.2-latest-Linux.x86_64.sh

(파일 사이즈 : 86903519 byte)

 

위의 결과 값을 보면, 정상적인 파일에서 약간의 수정이 발생 하더라도 해쉬값이 크게 변화하게 됩니다.


어떤 경우 사용하면 될까 ?


 

 

스크린샷, 2020-08-28 23-15-31.png

 

 

[ 업무 고도화 진행에 따른 운영 서버 데이터 베이스를 개발 서버에 구축 ]

1. 운영 서버 데이터 베이스 백업을 수행하여, 사용자 PC에 파일을 내려 받아, 개발 서버에 전송 하였습니다.

2. 개발 서버에 전송 받은 백업 볼륨(demodb_bk0v000)을 통해 복구 수행.

3. 복구 수행 시 아래와 같은 에러가 발생하며, restoredb 에러 로그를 확인하니 백업 볼륨이 아니라는 로그가 기록(./demodb_bk0v000 is not a backup volume.) 됩니다.

 

스크린샷, 2020-08-28 23-11-42.png

 

스크린샷, 2020-08-28 23-21-21.png

 

4. 운영 서버에서 개발 서버까지 백업 볼륨을 이동하는데 어느 구간에서 손상이 됬는지 확인이 필요한 상황으로

파일 전송 오류로 판단하여, 파일을 재전송 하였습니다.

5. 재전송하였지만 동일한 문제가 발생하였고, 사용자 PC의 EFS 툴로 인하여, 백업 볼륨이 암호화 된 것으로 확인 되었습니다.

- 진행 당시 암호화 툴은 문서파일만 암호화 한다는 내용을 확인 했는데.....

6. 결국 사용자 PC의 암호화 툴 예외처리를 진행하고서 작업 완료가 되었습니다.

 

- 실제 작업 당시 총 12개의 백업 볼륨, 총 사이즈 3TB

- 운영 서버에서 개발 서버까지 백업 볼륨 12개를 옮기는데 약 15시간 소요.

- 백업 볼륨 손상이 3회 발생하였으며, 실제 복구 작업에 걸린 시간은 4일 소요.

- 작은 파일을 옮기는 경우 손상이 발생하더라도 재전송하며 문제를 찾으면 되지만, 대용량 파일을 다루는 상황에는 많은 시간이 소요 됩니다.

- 대용량 파일을 이용한 작업을 할 경우 원본 파일과 작업 파일의 정합성을 위해 checksum을 구하는 해쉬 함수를 사용하여 진행 하는 것이 불필요한 시간 소요가 발생 하지 않습니다.

 

 

 

 

 

스크린샷, 2020-08-28 23-55-53.png

 

[ 신규 CUBRID 설치 건으로 테스트용 설치 버전 반입 ]

1. 고객사에서 요청한 CUBRID 설치 버전을 CD에 담아 반입

2. 고객사 PC에 CD 마운트 후 설치 버전을 내려받아 설치 진행

3. 설치 진행 중 아래와 같은 오류 발생

스크린샷, 2020-08-29 00-00-28.png

4. 고객사 PC 설치 파일 checksum 해쉬 값 확인

5. 원본 파일과 CD의 파일의 해쉬값과 고객사 PC 설치 파일의 해쉬값이 다른 것을 확인

6. 고객사 PC EFS 암호화 툴의 정책 오류로 발생한 문제

7. 암호화 툴 예외처리 후 정상적으로 설치 진행 및 완료

 

- 설치 문제에 대해 CUBRID의 버그가 아니냐 라는 고객의 질문에 정확한 답을 내놓지 못할 수가 있습니다.

- 고객사 방문 전 원본 파일의 hash값, CD에 담은 파일의 hash값을 모두 확인해 놓은 상태로 고객사 PC에서 문제가 발생한 것에 대해 답을 했으며, 억울한... 누명?을 벗게 됬었네요.

 

해쉬값을 구하는데 소요되는 비용 ?


파일 사이즈가 수 GB 단위 까지는 해쉬 값이 금방 구해집니다. (싱글쓰레드로 수행 됩니다.)

파일 사이즈가 수십 GB 단위를 넘어가면 해쉬 값을 구하는 시간 소요가 수십분 발생 합니다.

해쉬 값을 구하는 시간을 불필요하지 않다 생각해야하며, 위 문제와 같은 상황이 발생할 여지가 있다면, 꼭 해쉬값을 구해 파일의 정합성을 확인하여 진행하는것이 좋습니다.

 

위와 같은 상황에서는 암호화를 위한 것이 아닌 파일의 정합성을 위한 것이므로 MD5 해쉬값 충돌을 보완한 sha1, sha2, sha3의 함수를 사용할 필요는 없습니다.

속도면에서 좋은 MD5를 활용하는것이 좋으며, OS에 기본적으로 탑재 되어 있어 별도의 설치가 필요 없습니다.

 

해쉬 알고리즘 속도 비교 - https://zetawiki.com/wiki/%ED%95%B4%EC%8B%9C_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98_%EC%86%8D%EB%8F%84_%EB%B9%84%EA%B5%90

 

마치며


많은 소프트웨어 미러사이트에서 업로드한 파일의 checksum 해쉬 값을 제공합니다.

(사이트 별로 MD5, sha1,sha2 해쉬 함수 방식이 다르며, MD5가 가장 많이 사용 됨)

 

미러 사이트에서 원본에 대한 checksum 해쉬 값을 확인하여, 불필요한 소요 시간 없는 작업이 되길 바랍니다.

 

 

스크린샷, 2020-08-29 00-20-53.png

 

스크린샷, 2020-08-29 00-20-59.png


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수 추천 수
34 제품 여행 named pipe를 활용한 압축 백업하기. 1 file HiCLASS 2020.05.25 1300 0
33 제품 여행 DBeaver Database Tool 큐브리드 사용하기 file 정만영 2020.07.09 8834 0
32 제품 여행 가벼운 웹 프레임워크 Flask위에 CUBRID 얹기 file 윤준수 2020.08.12 2909 1
31 제품 여행 데이터 베이스 접근 제어와 CUBRID file 윤준수 2020.08.23 2333 0
» 제품 여행 파일이 정상인가 ? file 윤준수 2020.08.29 2395 1
29 제품 여행 [CUBRID inside] Query Process란? file 박세훈 2020.12.24 1130 1
28 오픈소스 이야기 ANTLR, StringTemplate를 사용해서 PL/SQL을 CUBRID Java SP로 변환하기 file 주영진 2020.12.31 2799 2
27 제품 여행 CUBRID를 이용한 스니핑 방지 - 패킷암호화 file 황영진 2021.04.28 2401 1
26 오픈소스 이야기 CUBRID의 개발 문화: CUBRID DBMS는 어떻게 개발되고 있을까? 1 file 유형규 2021.04.29 1456 1
25 제품 여행 CUBRID TDE(Transparent Data Encryption) 김지원 2021.05.20 1399 1
Board Pagination Prev 1 ... 7 8 9 10 11 12 13 14 15 16 Next
/ 16

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales