---
title: "세계 최초 JPEG XL MD5 해시 퀸 만들기 — 자기 자신의 해시를 표시하는 이미지"
published: 2025-12-01T22:44:15.000Z
canonical: https://jeff.news/article/322
---
# 세계 최초 JPEG XL MD5 해시 퀸 만들기 — 자기 자신의 해시를 표시하는 이미지

JPEG XL의 튜링 완전한 예측 트리와 MD5 충돌 블록을 조합해, 이미지가 자기 자신의 MD5 해시값을 화면에 표시하는 해시 퀸(hashquine)을 세계 최초로 구현한 기술 writeup.

- 해시 퀸(hashquine)은 파일의 해시값을 파일 자체가 화면에 표시하는 구조물임. 이번에 JPEG XL로는 세계 최초로 구현됨
- 핵심 아이디어: JPEG XL의 예측 트리(prediction tree)가 사실상 튜링 머신급 연산 능력을 가지고 있다는 점을 활용함
- 예측 트리에서 인접 픽셀 값을 조건 분기하고, 산술 연산을 흉내 낼 수 있어서 "프로그래밍"이 가능함
- 문제는 MD5 충돌 블록이 랜덤 바이트 덩어리라 JPEG XL 압축과 충돌한다는 것. 이걸 해결하기 위해 커스텀 허프만 트리를 만듦
- libjxl 인코더를 수정해 256개 심볼을 균등 분포로 강제하면, 모든 8비트 패턴이 유효한 토큰이 됨. 사실상 비압축 바이트 스트림이 되는 셈
- 128개의 MD5 충돌 블록 "프로브"를 이미지에 삽입함. 각 프로브를 교체하면 특정 픽셀이 뒤집히고, 이걸로 해시의 각 비트를 제어함
- 4비트를 합산해 16진수 한 자리를 만드는 데 Gradient 연산(W + N - NW)을 활용함. 클램핑 문제는 역값(32 - B) 트릭으로 우회
- 픽셀 "와이어"로 계산된 값을 이미지 내 올바른 위치로 전송하고, 90,000+ 노드짜리 예측 트리로 Orbitron 폰트 숫자를 렌더링함
- 최종 이미지는 약 2MB. 마지막에 c0dec000으로 시작하는 vanity 해시를 브루트포스로 생성했는데, 러스트로 2~3분 만에 완료됨
- 파일 포맷 자체가 하나의 컴퓨터라는 걸 보여주는 극한의 해킹임. JPEG XL 예측 트리가 이 정도 연산을 할 수 있다는 사실 자체가 놀라움

## 핵심 포인트

- JPEG XL 예측 트리가 튜링 머신급 연산 능력을 갖고 있다는 점을 활용
- 커스텀 허프만 트리로 압축을 우회해 랜덤 바이트(MD5 충돌 블록)를 삽입 가능하게 만듦
- 128개 MD5 충돌 블록 프로브로 32자리 16진수 해시를 렌더링
- 최종 이미지는 c0dec000으로 시작하는 vanity 해시를 브루트포스로 생성

## 인사이트

파일 포맷 자체가 하나의 컴퓨터라는 걸 보여주는 극한의 해킹 — JPEG XL의 예측 트리가 이 정도 연산을 할 수 있다는 사실 자체가 놀라움
