섹션별 상세
zkLogin은 표준 JSON 파서를 사용하는 대신 특정 문자열 패턴을 찾는 ad-hoc 선택적 파싱 방식을 채택하여 시맨틱 모호성 문제를 야기한다. 이로 인해 동일한 JWT 내에 중복된 키가 존재할 경우 파서마다 해석이 달라지는 클레임 섀도잉 공격이 가능하며, ZKP는 단지 특정 문자열의 존재만을 증명할 뿐 실제 데이터의 유효성을 보장하지 못한다. 또한 이 방식은 이스케이프 시퀀스나 유니코드 정규화를 무시하여 서로 다른 시스템 간의 해석 차이를 유발하는 파서 디퍼런셜 취약점으로 이어진다.
json
{
"alg": "none", // bogus algorithm
"alg ": "RS256", // trailing space
"iss": "https://accounts.example/", // honest OP
"\/iss": "https://evil/", // injected
"sub": "C37900",
"sub ": "MALLORY", // duplicate
"nonce": "gIFt7xtjGLZq5cC0-TgIEeIcuJM",
"nonce ": "AAAAAA" // last-wins
}zkLogin 증명 서비스에서 유효한 것으로 처리되는 비정상적인 형식의 JWT 예시


단기 인증 토큰인 JWT를 장기 권한 부여 자격 증명으로 변환하는 과정에서 적절한 바인딩 메커니즘이 결여되어 있다. 특히 Relying Party의 API 키가 브라우저 환경에 노출되어 있어, 공격자가 이를 탈취할 경우 특정 사용자의 신원을 사칭하여 증명을 생성할 수 있는 오라클로 악용될 위험이 존재한다. 이는 인증 컨텍스트와 권한 부여 주체 간의 암호학적 연결이 부족하여 발생하는 문제로, 탈취된 자격 증명을 다른 컨텍스트에서 재사용하는 것을 막지 못한다.
시스템 설계상 증명 서비스와 솔트 서비스라는 외부 주체에 대한 의존성이 높아져 신뢰가 재중앙화되는 문제가 발생한다. 사용자의 민감한 정보가 포함된 JWT가 제3자 서비스로 전달되면서 원래의 OIDC 동의 범위를 벗어난 데이터 노출이 발생하며, 이는 영지식 인증의 본래 목적인 탈중앙화에 역행한다. 또한 이러한 외부 서비스들의 토큰 처리 방식이 불투명하여 데이터 보관이나 사용자 식별자 간의 연결 가능성에 대한 프라이버시 리스크가 존재한다.
브라우저의 로컬 스토리지나 세션 스토리지를 사용하여 솔트 및 API 키와 같은 장기 자격 증명을 저장하는 방식은 보안상 취약하다. 동일 출처 정책(SOP)만으로는 악성 스크립트나 브라우저 확장을 통한 데이터 탈취를 막을 수 없으며, 이는 시스템 전체의 신뢰 체인을 무너뜨리는 실질적인 위협이 된다. 따라서 비신뢰 환경에서의 자격 증명 노출을 최소화하는 아키텍처 개선이 필수적이다.
용어 해설
- 영지식 증명(ZKP)
- — 영지식 증명은 증명자가 자신이 알고 있는 지식의 구체적인 내용을 공개하지 않으면서도 검증자에게 그 지식을 알고 있다는 사실을 확신시킬 수 있는 암호학적 프로토콜이다. 데이터 프라이버시를 유지하면서도 정보의 진위 여부를 검증할 수 있어 개인정보 보호가 중요한 인증 시스템이나 블록체인 분야에서 핵심적인 역할을 수행한다.
- JSON 웹 토큰(JWT)
- — JSON 웹 토큰은 당사자 간 정보를 JSON 객체로 안전하게 전송하기 위한 개방형 표준 토큰 형식이다. 헤더, 페이로드, 서명으로 구성되며 데이터의 무결성과 인증을 보장한다. 하지만 파싱 방식에 따라 동일한 토큰이 다르게 해석될 수 있는 보안 취약점이 존재할 수 있어 정교한 처리가 요구된다.
- 오픈아이디 커넥트(OIDC)
- — OpenID Connect는 OAuth 2.0 프로토콜 상단에 구축된 신원 확인 레이어로 타사 서비스를 통한 사용자 인증을 가능하게 한다. 구글이나 페이스북 계정을 이용한 로그인이 대표적인 사례이며 인증 결과로 신원 정보가 담긴 JWT를 발급받아 사용자의 신원을 증명하는 데 활용된다.
- 솔트(Salt)
- — 솔트는 암호화나 해시 생성 시 입력 데이터에 추가되는 무작위 데이터로 동일 입력에 대한 출력값의 유일성을 보장하고 프라이버시를 강화한다. zkLogin에서는 사용자의 식별자와 앱 정보를 결합하여 온체인 주소를 생성할 때 사용되며 이 값의 유출은 사용자의 익명성 훼손으로 직결된다.
- 정준 파싱(Canonical Parsing)
- — 정준 파싱은 데이터를 해석할 때 모호함 없이 유일한 방식으로 변환하는 과정이다. JSON과 같이 유연한 형식의 데이터를 다룰 때 중복 키 처리나 이스케이프 문자 해석 방식을 통일하여 서로 다른 시스템 간의 데이터 해석 차이로 인한 보안 결함을 방지하는 데 필수적이다.
기술
- zkLogin
- JWT
- OpenID Connect
- Sui Blockchain
- AWS Cognito
활용 사례
- Privacy-Preserving Authentication
- Blockchain Wallet Login
- Verifiable Credentials
AI 분석 전체 내용 보기
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
원문 발행 2026. 02. 13.수집 2026. 02. 21.출처 타입 RSS
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.
