인코딩

IT 위키

Encoding; 부호화

데이터를 특정 규칙에 따라 다른 형식의 부호로 바꾸는 것

  • 반대 과정은 디코딩(복호화가 아니라 복호, Decoding)이라 한다.
  • 암호화와는 다르다. 인코딩은 규칙만 알면 누구나 되돌릴 수 있고, 목적이 기밀 유지가 아니라 호환·전송·저장이다.

암호화·해시와의 구분

[편집 | 원본 편집]
구분 인코딩 암호화 해시
목적 형식 변환, 호환성 기밀 유지 무결성 확인
열쇠 불필요 필요 불필요
되돌리기 가능 (누구나) 가능 (키 있는 사람만) 불가능
Base64, UTF-8, URL 인코딩 AES, RSA SHA-256

Base64 는 암호화가 아니다. 보안 문제에서 자주 나오는 함정이다.

  • 문자 인코딩 : 문자를 숫자 코드로 대응시킨다. ASCII, EUC-KR, UTF-8, 유니코드
  • 전송용 인코딩 : 바이너리를 텍스트로 안전하게 바꾼다. Base64, URL 인코딩, MIME
  • 신호 인코딩 : 디지털 데이터를 전기 신호로 표현한다. NRZ, 맨체스터, 4B/5B
  • 미디어 인코딩 : 음성·영상을 압축한다. MP3, H.264

공격자가 필터를 우회하기 위해 입력값을 인코딩해서 보내는 경우가 많다. URL 인코딩이나 유니코드 인코딩으로 `<script>` 를 위장하는 식이다. 따라서 입력값 검증은 디코딩을 모두 끝낸 뒤(정규화 후)에 수행해야 한다.

같이 보기

[편집 | 원본 편집]