사전 키는 세션 설정 중 수신자가 오프라인이어도 되게 합니다. 하지만 전달 경로나 신중한 개인 키 수명 주기 관리가 불필요해지는 것은 아닙니다.
오프라인 수신자가 나중에 암호화 메시지를 받을 수 있는 이유는 수신자의 기기가 공개 키 자료를 미리 게시했기 때문입니다. 발신자에게는 여전히 접근 가능한 전달 서비스가 필요합니다. “비동기 암호화”는 메시지가 네트워크 단절을 넘어 전송되거나 연결이 끊긴 휴대전화에 즉시 나타난다는 뜻이 아닙니다.
양자 내성 설계는 키 캡슐화 메커니즘으로 이 개념을 확장합니다. 중요한 질문은 초기 비밀을 어떻게 설정하고, 오래된 개인 키를 어떻게 폐기하며, 이후 메시지로 보안 상태를 어떻게 갱신하는가입니다.
사전 키는 시점의 문제를 해결합니다
Sam이 새 대화를 시작할 때 Maya가 오프라인이라고 가정해 보세요. Maya의 기기는 공개 사전 키를 미리 업로드했습니다. Sam은 그 자료를 가져와 키 합의의 발신자 측 절차를 수행하고 첫 암호화 메시지를 보낼 수 있습니다. Maya는 다시 연결한 뒤 자신의 기기에 보관된 개인 키로 메시지를 처리합니다.
따라서 서버는 공개 정보를 제공하고 암호화 데이터를 대기열에 저장하지만, 그 결과로 생성된 메시지 비밀을 보유할 필요는 없습니다. Signal의 X3DH 명세는 이러한 비동기 설계를 설명하는 1차 자료입니다. 서명된 사전 키와 일회용 사전 키는 수명과 역할이 다릅니다. “사전 키”는 서버에 업로드하는 비밀 비밀번호를 뜻하지 않습니다.
이미 설정된 대화에서는 메시지마다 초기 설정을 반복하는 대신 기존 세션 상태를 사용할 수 있습니다. 세션을 시작하는 것과 메시지 키를 갱신하는 것은 별개의 작업입니다.
양자 내성 KEM이 추가하는 것
키 캡슐화 메커니즘에는 키 생성, 공개 키를 이용한 캡슐화, 대응하는 개인 키를 이용한 역캡슐화라는 세 가지 기본 작업이 있습니다. 캡슐화는 공유 비밀과 암호문을 함께 생성합니다. 암호문은 나중에 전달할 수 있지만, 비밀 자체를 평문으로 보내지는 않습니다.
NIST FIPS 203은 ML-KEM을 표준화합니다. ML-KEM-768의 공개 캡슐화 키는 1,184바이트, 암호문은 1,088바이트, 공유 비밀은 32바이트입니다. 이는 알고리즘 수준의 크기이며 전체 메시징 패킷의 크기가 아닙니다. 서명, 고전 암호 키, 식별자, 전송 프레이밍이 추가 오버헤드를 만듭니다. 캐시된 공개 키가 모든 메시지에 동반되는 것은 아닙니다.
하이브리드 구성에서 프로토콜은 정의된 키 스케줄에 따라 고전 암호와 양자 내성 비밀 자료를 결합합니다. 알고리즘 이름을 나열하는 것만으로 그 조합의 안전성이 입증되지는 않습니다. 신원 결합, 검증, 도메인 분리, 실패 처리를 명세화하고 검토해야 합니다.
하나의 예시인 PQXDH는 보편적인 설계도가 아닙니다
Signal의 PQXDH 명세는 서명된 일회용 양자 내성 사전 키와 서명된 최후 예비 키를 설명합니다. 발신자는 제공된 서명을 검증하고 키 합의를 수행하며, 초기 암호화 메시지에 KEM 암호문과 키 식별자를 포함합니다. 수신자는 나중에 같은 비밀을 도출하여 메시지를 처리합니다.
최후 예비 키는 일회용 KEM 키가 없을 때도 설정을 지원하지만, 키 침해에 대한 분석은 동일하지 않습니다. 개인 키 삭제와 교체는 이전 세션의 보호에 영향을 줍니다. 명세는 양자 내성 순방향 비밀성과 능동적인 양자 공격자에 대한 인증도 구분합니다. 이런 세부 사항을 “대체 방식에는 보안 비용이 없다”는 말로 대신해서는 안 됩니다.
PQXDH는 명세가 정의된 하나의 구성입니다. 다른 제품이 문서화하지 않았다면 PQXDH의 구체적인 곡선, 서명, 매개변수 선택을 그 제품의 설명에 그대로 옮겨서는 안 됩니다.
래칫은 사전 키 풀과 다릅니다
사전 키는 세션 설정을 지원합니다. 래칫 프로토콜은 대화 중 비밀을 변경합니다. Double Ratchet 명세는 메시지 키의 변화와 더 새로운 양자 내성 래칫 구성을 설명하며, 모든 애플리케이션 메시지에 완전한 양자 내성 교환을 전송하지 않는 설계도 포함합니다.
순방향 비밀성은 나중에 키가 침해되었을 때 이전 메시지를 보호하는 문제입니다. 침해 후 보안은 공격자가 접근 권한을 잃고 새로운 비밀 자료가 반영된 후 향후 통신의 보안을 회복하는 문제입니다. 어느 쪽도 악성코드가 휴대전화에 무기한 남아 있는데 암호 기술이 그 휴대전화의 평문을 악성코드로부터 어떻게든 숨겨 준다는 뜻은 아닙니다.
서버에서 공개 사전 키를 삭제하면 정상적인 재사용을 막지만, 종단점에서 대응하는 개인 키를 삭제하는 것과 같지는 않습니다. 유용한 감사는 수명 주기 규칙과 지연된 메시지의 처리 동작을 모두 확인합니다.
Livara가 문서화한 내용과 여전히 근거가 필요한 부분
Livara의 보안 페이지는 사용 가능한 경우 일회용 키를 사용하는 하이브리드 세션 설정, 일반적인 메시지 체인 갱신, 주기적인 ML-KEM 에포크를 설명합니다. 이는 모든 메시지가 완전히 새로운 ML-KEM 교환을 수행한다는 과거 주장과 다릅니다. 이러한 설명은 제품 문서의 진술이지 구현에 대한 독립 검증은 아닙니다.
이 설명만으로 특정한 키 고갈 시 대체 정책, 보충 간격, 네트워크 지연 수치를 추론하지 마세요. 해당 질문에는 릴리스별 프로토콜 문서나 측정 결과가 필요합니다. Proof Lab 역시 비동기 설정, 키 고갈, 지연 메시지 복구에 대한 완전한 시험이 아닙니다.
오프라인 메시징 주장을 평가하는 방법
업체나 검토자에게 다음 사례를 다루는 근거를 요청하세요.
| 시험 사례 | 관찰할 사항 |
|---|---|
| 연결이 끊긴 상대에게 보내는 첫 메시지 | 어떤 공개 키 자료가 사용되었으며 수신자가 실제로 언제 메시지를 받는지 |
| 일회용 사전 키 고갈 | 설정이 중단되는지, 문서화된 대체 방식을 따르는지, 명시된 보안상의 절충점 |
| 수신자의 재설치 또는 신원 변경 | 대기열의 이전 메시지를 여전히 복호화할 수 있는지, 키 변경이 표시되는지 |
| 지연되거나 순서가 바뀐 메시지 | 보관 한도, 건너뛴 키의 처리, 이해할 수 있는 오류 |
| 오랜 부재 후 복귀 | 안전한 키 갱신, 한도가 정해진 처리, 정확한 전달 상태 |
| 성능 비교 | 기기, 앱 버전, 네트워크, 페이로드 크기, 새 세션 설정과 기존 세션을 구분한 측정 |
민감하지 않은 테스트 계정과 메시지를 사용하세요. 전달 시험의 성공은 해당 시나리오를 보여 줄 뿐 모든 암호학적 속성을 증명하지는 않습니다. 반대로 전달 실패는 암호가 깨진 것이 아니라 네트워크나 수명 주기 문제일 수 있습니다.
자주 묻는 질문
제가 보낼 때 수신자가 오프라인이어도 되나요?
네. 앱에 필요한 공개 자료와 전달·저장 인프라가 있다면 가능합니다. 수신자의 기기가 대기 중인 메시지를 가져와 처리할 수 있을 때까지 수신자는 메시지를 읽을 수 없습니다.
더 큰 KEM 키는 항상 채팅을 눈에 띄게 느리게 하나요?
키 크기만으로 보편적인 시간 주장을 할 수는 없습니다. 설정 빈도, 일괄 처리, 캐싱, 구현, 네트워크 조건이 중요합니다. 오버헤드가 없다고 약속하기보다 벤치마크를 공개해야 합니다.
서명된 사전 키는 계정 뒤에 있는 사람을 증명하나요?
서명 신원을 기준으로 자료를 인증합니다. 그 신원이 연락하려는 사람과 어떻게 연결되는지는 별도의 신뢰와 검증 문제입니다.
양자 내성 암호화는 연결이 전혀 없어도 작동하나요?
일부 로컬 계산은 오프라인에서 실행할 수 있습니다. 하지만 메시지를 전달하려면 여전히 통신 경로가 필요하며, 암호 기술이 그 경로를 제공하지는 않습니다.



