# 압축 (Compression)

**압축**은 데이터를 원래보다 적은 저장 공간으로 표현하는 기술입니다. 압축할 수 있는 정도는 데이터의 고유성(중복이 적은 정도)에 따라 한계가 있습니다. 일반적으로 압축은 크기 감소 비율로 측정되며, 일반 텍스트라면 60% 정도면 좋은 압축률로 봅니다. 압축은 가장 일반적인 데이터 값 또는 시퀀스를 짧은 코드 값으로 표현하고 드문 시퀀스에는 더 긴 코드 값을 할당하는 방식으로 이루어집니다. 데이터 압축은 정보의 일부가 손실되는 “손실” 또는 모든 원래 정보를 완전히 복구할 수 있는 “무손실” 방식 중 하나입니다. 손실 데이터 압축은 훨씬 높은 압축률을 얻을 수 있어 오디오나 비디오 정보(용량이 크고 원본을 정확히 복원할 필요가 없는 경우가 많음)에 적합합니다. 무손실 데이터 압축은 컴퓨터 프로그램과 같은 바이너리 데이터에 사용해야 하며, 대부분의 암호 기술 활용 사례에서도 필요합니다.

## 중복과 엔트로피

압축이 가능한 이유는 대부분의 데이터에 통계적 중복이 있기 때문입니다. 어떤 기호나 문자열이 자주 나올수록 짧은 코드로 바꿀 여지가 커집니다. 정보 이론에서는 데이터가 담은 실제 정보량을 엔트로피로 나타내며, 무손실 압축은 평균적으로 엔트로피보다 짧게 데이터를 표현할 수 없습니다. 이미 무작위에 가까운 데이터(예: 잘 암호화된 데이터나 이미 압축된 파일)는 더 줄어들지 않습니다.

## 압축의 작동 방식

- **엔트로피 부호화:** 허프만 부호화처럼 자주 나오는 기호에는 짧은 코드를, 드문 기호에는 긴 코드를 할당합니다.
- **사전 방식:** Lempel–Ziv(LZ) 계열 알고리즘은 앞에서 이미 나온 문자열을 “앞의 몇 번째 위치에서 몇 글자”라는 짧은 참조로 바꿉니다. LZ 방식은 무손실 압축에서 가장 널리 쓰이는 알고리즘 중 하나입니다.
- **변환 기반 손실 압축:** DCT(이산 코사인 변환)는 가장 널리 사용되는 손실 압축 방법이며 이미지(JPEG 등), 비디오(MPEG, AVC, HEVC 등), 오디오(MP3, AAC 등) 형식에 쓰입니다. 사람이 잘 느끼지 못하는 정보를 버려 크기를 줄입니다.

## 압축과 암호화

- **순서:** 잘 암호화된 데이터는 무작위처럼 보여 압축되지 않으므로, 압축은 암호화보다 먼저 해야 합니다. 압축은 평문의 중복을 줄여 일부 분석을 어렵게 하는 효과도 있다고 설명되지만, 그 자체로 보안을 제공하지는 않습니다.
- **길이 정보 유출:** 압축된 크기는 내용에 따라 달라지므로, 공격자가 자신이 넣은 데이터와 비밀 데이터를 함께 압축·암호화하게 만들 수 있으면 암호문 길이 변화로 비밀을 추측할 수 있습니다. TLS 압축을 노린 CRIME 공격과 HTTP 압축을 노린 BREACH 공격이 이 원리로 쿠키나 토큰 같은 비밀값을 알아냈습니다. 이 때문에 TLS 압축은 사용하지 않는 것이 권장됩니다.

## 블록체인에서의 압축: 압축 공개 키

비트코인 등에서 쓰는 secp256k1 타원곡선 공개 키는 x, y 좌표를 모두 담는 비압축 형식(접두 바이트 0x04, 65바이트)과 x 좌표와 y의 홀짝만 담는 압축 형식(접두 바이트 0x02 또는 0x03, 33바이트)으로 표현할 수 있습니다. y 좌표는 곡선 방정식으로 x에서 다시 계산할 수 있으므로 정보는 손실되지 않습니다. 압축 공개 키는 트랜잭션 크기와 수수료를 줄여 주어 현재 지갑의 표준이 되었습니다.

## 압축의 장점과 단점

- **장점:** 저장 공간을 최소화하고 파일을 전송하거나 다운로드하는 데 필요한 시간을 줄여 비용을 절감합니다.
- **단점:** 압축과 해제에 연산과 메모리가 필요하며, 손실 압축은 복구할 수 없는 정보 손실을 일으킵니다. 암호화와 함께 쓸 때는 위와 같은 길이 정보 유출에 주의해야 합니다.

---
출처: https://achivx.kr/glossary/compression-%EC%95%95%EC%B6%95/ · ACHIVX 용어 사전 · 수정일 2026-10-20
