본문 바로가기

0x00 /0x01 Reversing

- 데이터 압축 (비손실 압축, 손실 압축)

# 이번 포스팅 내용은 데이터 압축에 대해서 알아보겠습니다. 






# 데이터 압축 

- 말 그대로, 데이터를 압축하는거에요. 어떤 형태의 파일이라도 내부는 바이너리 0 혹은 1로 구성되어 있습니다. 

  이 내부의 바이너리를 적절한 알고리즘을 이용하여 크기를 줄이는 것이 데이터 압축입니다.

  데이터 압축에도 2가지 종류가 있는데요.


  1. 비손실 압축 (Lossless Data Compression)

  2. 손실 압축 (Loss Data Compression)


요렇게 2가지가 있습니다. 


첫번째 비손실 압축은 말 그대로 손실이 없다는 것을 의미합니다. 어떤 파일을 압축을 하고(인코딩), 그 파일을 다시

복원 시켰을 때(디코딩), 압축전과 100% 일치하는 파일로 복원이 가능하다면 비손실 압축이라고 합니다.

흔히들 사용하시는 압축 프로그램인 알집, 빵집, 반디집 등에서 사용하는 압축 방법이 비손실 압축 방법입니다.


두번째 손실 압축은 어떤 형태의 파일을 압축하고 다시 복원시켰을 때 원래의 파일로 100% 복원 시킬 수 없을 때 손실

압축이라고 합니다. 





비손실 압축과 손실 압축은 사용 용도가 조금 다른데요. 


1. 비손실 압축 

- 주로 파일 크기를 줄여서 보관 및 이동에 용이하도록 하려는 목적으로 사용이 됩니다.

- 파일을 사용할 땐 해당 압축을 해제하고 사용을 합니다. (데이터의 무결성보장되어야 함)


@ 데이터의 무결성이란, 아무것도 변한게 없어야 한다는 의미입니다. 압축을 하고, 압축 해제를 하는 과정에서 

   원본 파일의 데이터와 달라진다면, 비손실 압축이 아니겠죠?

   


   어무니들께서 흔히들 사용하시는 압축팩을 가지고 예를 들어보겠습니다.


- 얼룩무늬 담요(?)를 부피를 줄이기 위해서 압축팩을 사용합니다. 

(압축팩이라는 알고리즘을 이용하여, 얼룩무늬 담요 파일을 압축해보겠습니다.)




- 압축팩을 이용해서 압축한 후의 모습이에요. 뭐 그렇게 사기적이게 줄어들진 않았지만, 부피가 그래도

  줄어든 것을 확인할 수 있습니다. 얼룩무늬 파일이 좀 작아지긴 했네요.

  그런데, 이것을 다시 압축을 해제한다고해서 얼룩무늬 담요가 처음의 얼룩무늬 담요와 달라졌나요??

  고대로입니다. 이런것 처럼 압축팩을 이용해서 내용물의 부피를 줄였지만, 다시 사용하기 위해서

  내용물을 꺼냈을 때, 넣기전의 담요와 달라진게 없죠. 뭐 이런걸 가지고 무결성이라고 합니다.



나름 생각해서 예를 들긴했는데, 뭔가 좀 엉성하네요 -,.- 

  





2. 손실 압축 

- 손실 압축은 파일(데이터)에 의도적으로 손상을 주어 압축률을 높이는 목적으로 사용됩니다.

  예를 들면 음악 파일 같은 경우에 사람이 들을 수 없는 주파수 범위와 같은 영역을 의도적으로

  제거시켜 데이터의 크기를 줄이는 목적으로 사용됩니다.





# 참고 도서 및 참고 자료


- 리버싱 핵심원리

http://ko.wikipedia.org/wiki/%EB%8D%B0%EC%9D%B4%ED%84%B0_%EC%95%95%EC%B6%95 (위키백과)