1. 개요
RAR(Roshal ARchive)은 러시아 출신 프로그래머인 유진 로샬(Eugene Roshal, 러: Евгений Лазаревич Рошал, 1972~)이 1993년에 만든 무손실 압축 포맷이다.
RAR은 LZSS(Lempel-Ziv-Storer-Szymanski)와 PPMd(Prediction by partial matching)에 기반한 압축 알고리즘이 사용된다.
2. 역사
1993년에 처음 공개되었다. 당시 MS-DOS에서 사용되던 ARJ나 PKZIP 등의 압축 프로그램들 명령어를 직접 입력해 사용하는 방식이었으나, RAR은 TUI 셸 프로그램을 제공해 메뉴를 통해서 파일을 압축하거나 압축을 풀 수 있는 편의성을 제공했다. 물론 다른 압축 프로그램들과 같이 명령어를 직접 입력해 사용할 수도 있었다.기존 압축 프로그램들보다 압축률이 좋았던데다 분할 압축 기능이 매우 편리했다. RAR의 분할 압축은 타의 추종을 불허하는데, 분할 크기를 지정하면 단 한치의 오차도 없이 정확히 그 크기대로 분할해준다. 게다가 복구 기록 기능을 넣어 파일이 깨져도 어느 정도 복구할 수 있는 등 많은 장점 덕분에 인기를 끌어 순식간에 보급되었다. 특히 그때까지 가장 분할 압축 기능에 특화되어 많이 사용되었던 ARJ는 순식간에 밀려났다. RAR은 명령어 입력 방식을 ARJ와 비슷하게 만들어 갈아타기 쉬웠다.
윈도우가 보급되면서 WinRAR로 이름을 바꾸어 내놓고 있으나, 다른 운영체제로는 여전히 RAR로 내놓고 있다. 당시 대부분의 압축 프로그램들이 윈도우 지원을 등한시하던 시기에 발빠르게 WinRAR를 내놓았던 것도 점유율을 높이는 데 한몫.
2012년부터 RAR과 비슷한 특징을 지니는 7zip 압축 규격이 보급되고 있지만, RAR은 워낙 오랫동안 사용되어 온 데다가 7z이 오류 정정에 매우 약하기 때문에 여전히 대용량 파일을 압축하는 데 있어서는 표준에 가까울 정도로 많이 이용되고 있다.
3. 과거의 보안 취약점
트위터에 RAR 파일이 보안에 취약하며, 압축을 풀 때 자동으로 악성 소프트웨어가 설치될 수 있어 위험하다는 얘기가 있었는데, 일정 부분은 사실이었다. 다른 압축 프로그램에는 없는 RAR에만 있는 특징 중 하나로, RAR은 rarvm이라고 하는 x86 어셈블리어와 비슷한 형식의 가상 머신 기능을 지원했는데, 데이터 압축을 로우 레벨에서 제어할 수 있다. 2012년에 rarvm 분석 글이 올라오고, WinRAR에 포함된 rarvm에서 임의의 코드를 실행할 수 있는 취약점이 발견되자, 2013년 9월 WinRAR 5.0부터 rarvm의 지원을 중단했다. RAR 파일 형식에만 있는 상당히 강력한 기능을 악용하는 공격이기 때문에, 단순히 압축 파일 내부를 수정해서 압축 소프트웨어가 오작동하게 만드는 것과는 다른 종류의 문제이다.rarvm을 제외하더라도 과거에는 압축 해제 프로그램에서 이상값에 대해 제대로 처리하지 못해 이것을 악용한 보안 취약점이 발견되기도 했다. 2005년에 나온 시만텍 백신의 RAR 관련 취약점 링크를 참고하자. 요컨대, 압축 파일 내부 검사 도중 백신이 해킹의 입구가 되어버린 사연. (영문) 이런 유형의 문제점은 여타 압축 파일을 푸는 라이브러리나 모듈 속에도 언제나 숨어있다. ZIP 파일이라고 이런 취약점에서 100% 안전한 것은 아니다. 소프트웨어 업데이트 잘 해주고, 바이러스 백신 꼭 돌릴 수 있도록 하자.
또한 autorun.inf(CD나 이동식 디스크 등의 자동 실행 파일)가 RAR 파일에 포함된 경우, 압축을 풀 때 자동으로 실행되기 때문에 위험하다는 이야기도 있으나 이는 사실이 아니다. 아마도 EXE 실행 파일로 나오는, SFX (스스로 압축이 풀리는 압축 파일) 파일에 바이러스가 감염된 경우를 오해한 경우가 아닐까 싶다. 감염된 파일을 받지 않도록 주의하고, 가능한 압축 파일을 따로 받아 안전한 압축 해제 프로그램을 사용해서 풀자. SFX파일만 배포하고 있어 의심스럽다면, 압축 해제 프로그램에 끌어다 놓으면 잘 인식하니 그런식으로 좀 돌아가는것도 나쁘지 않다.
4. 여담
- 압축 해제 부분은 공개되어 있다. 공식 홈페이지에서 UnRAR이라는 이름으로 운영체제별로 압축 해제 모듈이나 라이브러리를 공개하고 있고, 소스 코드도 공개되어 있다. RAR 파일 구조도 문서로 공개되어 있다. 따라서 다른 압축프로그램에서도 RAR 압축 해제를 대부분 지원한다.
- Android용 RAR은 프리웨어이나 이외의 플랫폼에서는 셰어웨어 및 상용 소프트웨어로 제공한다. 다만 평가판 사용 기한을 초과해도 기능이 제한되지는 않는다.
- 여러 압축 포맷들 중 솔리드 압축[1]을 가장 앞서 지원했던 압축 포맷이다.
- 솔리드 압축을 할 경우 솔리드 블록의 크기를 지정할 수 있는 7-Zip과 달리 블록 크기 설정이 불가능하다. 대신 일정 파일 갯수 단위로 솔리드 블록을 재설정하거나 (-s<N> 스위치), 멀티 뷸륨으로 분할 압축 할 때 분할된 볼륨별로 솔리드 불록을 재설정할 수 있다. (-sv 스위치) 그러나 이 설정을 CLI가 아닌 GUI에서 사용하려면 압축시 대화창의 option탭에서 'Additional switches'란에 직접 타이핑해 넣어야 하는 불편함이 있다.
[1] 파일별로 압축하지 않고 파일들을 묶어서 한 덩어리로 간주하고 압축하는 것. 각 파일에 대한 헤더 정보가 감소하기 때문에 작은 파일을 여럿 압축할 경우, 그리고 파일들 사이에 공통 데이터 부분이 있을 경우 압축율 향상을 기대할 수 있는 장점이 있다. 대신 솔리드 블록의 뒷쪽에 위치한 파일 1개를 풀어내기 위해서는 앞에 위치한 파일들을 모두 풀어낸 뒤에야 풀어낼 수 있기 때문에 파일의 임의 접근 속도가 떨어진다.