Hacker News

ZK-JPEG: Zero-Knowledge Image Editing and Compression

ZK-JPEG: 영지식 이미지 편집과 압축

ZK-JPEG는 카메라에서 생성된 이미지의 출처 서명을 유지하면서 JPEG 압축, 블러, 가림, 레이어 합성 같은 변환을 검증하는 암호학 도구입니다. 비밀 입력 이미지에서 올바르게 변환됐다는 사실만 영지식으로 증명해 이미지 인증과 개인정보 보호를 함께 다룹니다.

AI 요약

딥페이크 사진을 생성하는 도구가 더 쉽게 사용되고 대중문화에서도 널리 등장하면서, 디지털 이미지가 실제 카메라에서 생성됐는지 검증하는 이미지 인증 기술의 중요성이 커지고 있습니다. 카메라 인증(camera attestation)은 디지털 서명(digital signature)을 사용해 이미지의 출처가 카메라임을 증명합니다. 그러나 이미지 파일을 그대로 유지하기는 어렵습니다. JPEG 같은 손실 압축(lossy compression)은 파일 크기를 줄이기 위해 이미지의 일부 값을 미세하게 바꾸며, 블러링(blurring)이나 특정 영역을 가리는 편집(redaction)은 이미지 속 인물을 보호하기 위해 필요할 수 있습니다. 이런 변환은 원본에 부여된 디지털 서명을 무효화합니다.

■ 기존 방식의 한계와 ZK-JPEG의 목표

기존 연구는 영지식 증명(zero-knowledge proof, ZK)을 사용해 공개된 이미지가 어떤 편집 이력을 거쳤는지 증명하려고 했습니다. 하지만 JPEG와 같은 손실 인코딩(lossy encoding)을 거친 결과에는 이러한 방식이 유지되지 않았습니다. ZK-JPEG는 이 문제를 해결하기 위해, 비밀로 유지되는 커밋된 입력(secret, committed input)에서 이미지가 올바르게 JPEG 압축됐다는 사실을 증명하는 암호학 도구를 제시합니다. 검증자는 입력 이미지 전체를 공개받지 않고도 공개된 JPEG 결과가 약속된 입력에서 정해진 절차에 따라 만들어졌는지 확인할 수 있습니다.

핵심은 JPEG 압축 자체를 증명 가능한 절차로 다루는 데 있습니다. 이미지가 카메라에서 생성됐다는 출처와 서명을 유지한 채 파일 크기를 줄일 수 있으며, 압축 과정에서 발생하는 변환이 서명을 단순히 깨뜨리는 임의의 후처리로 취급되지 않도록 합니다. 논문은 JPEG 압축과 결합할 수 있는 이미지 변환의 범위가 넓다고 설명합니다. 이 변환에는 블러링과 영역 가리기처럼 개인정보 보호를 위한 편집뿐 아니라, 투명하거나 반투명한 레이어를 이미지에 합성하는 작업도 포함될 수 있습니다.

■ 편집 변환과 공개 범위

투명 레이어나 반투명 레이어를 이미지에 합성하면 시각적 워터마크를 배치하거나, 이중 노출(double exposure)을 만들거나, 이미지의 일부에 시각적 레이어를 겹칠 수 있습니다. ZK-JPEG의 설명에 따르면 투명 레이어 자체는 공개되지만, 불투명한 영역 아래에 있는 내용은 비밀로 유지할 수 있습니다. 따라서 이미지의 특정 부분을 가리면서도 해당 가림 처리가 정해진 변환으로 수행됐다는 사실을 검증하는 구성이 가능합니다.

다만 변환을 검증할 수 있다는 사실과 그 변환이 사회적·편집적 기준에 비춰 받아들일 만하다는 사실은 구분해야 합니다. 예를 들어 AI가 생성한 레이어를 합성하는 경우, 레이어 자체가 공개되므로 생성형 AI를 사용했다는 부분을 숨기지 않을 수 있습니다. 반면 어떤 변환을 허용할지는 별도의 정책 문제로 남습니다. 논문은 다양한 변환을 시스템에 통합할 수 있는 기술적 기반을 제시하지만, 실제 서비스가 어떤 작업을 허용하거나 제한할지는 적용 환경에서 정해야 한다는 논의가 커뮤니티에서 이어졌습니다.

■ 구현 방식과 시스템 특성

저자들은 시스템이 빠르고 유연하며, 기존에 उपलब्ध한 ZK 도구를 이용해 구성할 수 있다고 설명합니다. 구체적으로는 PicoZK를 사용해 Python으로 작성된 이미지 편집 코드를 영지식 회로(ZK circuit)로 변환하고, 이를 line-point zero knowledge(LPZK) 증명 시스템에 적용합니다. 즉, 이미지 편집 로직을 처음부터 별도의 저수준 회로 언어로 모두 작성하는 대신 Python 코드로 표현한 뒤 증명 회로로 바꾸는 경로를 사용합니다. 논문이 제시하는 방향은 이미지 압축과 편집을 암호학적 증명 절차 안에 넣으면서도, 기존 ZK 도구와 일반적인 이미지 처리 코드의 활용 가능성을 함께 확보하는 것입니다.

Hacker News에서는 허용할 변환의 범위가 핵심 쟁점으로 제기됐습니다. 한 댓글은 변환 기능이 충분히 넓다면 진짜 이미지 A를 임의의 가짜 이미지 B로 바꾸는 것도 가능해지는지 물었습니다. 다른 댓글은 원본을 계속 보존하고 변환을 하나씩 재생할 수 있다면 검증에 도움이 될 수 있다고 제안했지만, 원본을 보존한다면 애초에 ZK 증명이 필요하지 않을 수 있다는 반론도 나왔습니다. 또 다른 참여자는 실제 시스템에서는 허용 가능한 연산 목록을 정책으로 정해야 한다고 봤습니다. 먼저 필요한 연산을 모두 증명할 수 있는 기술을 마련하고, 그 다음 단계에서 어떤 변환을 허용할지 제한 조건을 정하는 방식입니다.

논의는 이미지의 출처를 증명하는 일과 이미지의 의미 또는 신뢰성을 판단하는 일이 다르다는 문제로도 확장됐습니다. 파일 형식, 압축, 색상 보정, 크기 변경처럼 일반적으로 허용할 수 있는 변경을 정하는 순간, 평균적인 사람이 인지할 수 있는 변화인지, 이미지의 핵심을 보존했는지, 사용자의 의도나 법적·윤리적 맥락을 어떻게 평가할지까지 판단 범위가 넓어질 수 있다는 지적입니다. ZK-JPEG는 이러한 최종 판단을 대신하는 시스템이라기보다, 정해진 입력과 정해진 이미지 변환 절차 사이의 관계를 공개하지 않고 검증하는 기술로 제시됩니다.

■ Hacker News 반응

• @Retr0id — 흥미로운 연구입니다. “우리 도구는 광범위한 이미지 변환을 검증할 수 있습니다”라고 했는데, 이 범위가 실제 이미지 A를 임의의 가짜 이미지 B로 변환할 수 있을 만큼 충분히 넓습니까? ZK-JPEG는 투명하거나 반투명한 레이어를 이미지에 합칠 수 있으며, 시각적 워터마크를 배치하거나 이중 노출을 만들거나 이미지 일부 위에 시각적 레이어를 합성하는 데 유용하다고 합니다. 도구에서는 투명 레이어가 공개되지만, 불투명한 레이어 아래에 있는 내용은 비밀로 유지됩니다. AI가 생성한 레이어의 경우 레이어 자체가 공개되므로 생성형 AI를 사용한 부정직함은 줄어들지만, AI 학습을 위해 작품을 훔친 부정직함까지 줄어드는 것은 아닙니다. 제 질문에 대한 답은 “그렇다”인 것처럼 보이므로, 변환이 정당해 보이는지 주의 깊게 검사해야 합니다. 괄호 안의 내용이 학술 맥락에서 나와서 놀라웠습니다.

• @gblargg — 시청자가 변환 전 원본을 보고, 최종 결과가 어떻게 만들어졌는지 확인하도록 각 변환을 하나씩 적용해 볼 수 있게 하면 좋겠습니다.

• @Retr0id — 원본을 보존하고 있다면 ZKP가 필요하지 않습니다. 이 접근법의 매력은 서명을 무효화하지 않고도 가림 처리를 적용하거나 파일을 더 작게 만들 수 있다는 데 있습니다.

• @bawolff — 실제 애플리케이션에서는 아마 허용되는 연산 목록이 있을 것입니다. 먼저 시스템에 필요한 모든 작업을 수행할 수 있다는 것을 보여주는 것이 이 논문이 하는 일이고, 2단계는 허용할 변환에 어떤 제한을 둘지 정책을 정하는 일이 될 것입니다.

• @jamienk — 이것은 철학적인 질문으로 넘어간 것 아닙니까? 현실성이나 출처를 증명하려고 하지만, 그러다 보면 파일 형식, 압축, 색상 보정, 크기, 매체까지 “허용되는” 변경 목록을 만들기 시작합니다. 그러면 서서히 “평균적인 사람이 인지할 수 있는 정도”, “관련 없는 세부 사항”, 이미지의 정신을 보존했는지, 사용자나 시청자의 의도 또는 동기를 판단하는 문제, 가치관에 맞는지, 적절하거나 합법적인 사용인지로 미끄러져 갑니다. 최종 목적지가 무엇인지 잘 모르겠습니다. AI 시대에 이미지가 AI 이전만큼 신뢰할 수 있게 만들려는 것입니까? AI 이전에도 이미지는 신뢰할 수 없었고, 단지 의도적으로 조작하기가 더 어려웠을 뿐입니다.

원문: Cryptology ePrint Archive / 번역·요약: Trawling