기기 바운드 세션 사용자 인증 정보 (DBSC)는 쿠키 도용 및 세션 도용으로부터 사용자 세션을 보호하도록 설계된 새로운 웹 기능입니다. 이 기능은 이제 Chrome 135에서 오리진 체험판으로 테스트할 수 있습니다.
배경
쿠키는 사용자가 여러 브라우징 세션에서 로그인 상태를 유지할 수 있도록 하는 현대 웹 인증에서 중요한 역할을 합니다. 하지만 공격자가 도난당한 인증 쿠키를 악용하여 세션을 도용하고 다중 인증 및 기타 로그인 보안 메커니즘을 우회하는 경우가 점점 늘어나고 있습니다.
멀웨어 운영자는 침해된 기기에서 세션 쿠키를 유출하여 사용자 계정에 대한 무단 액세스를 허용하는 경우가 많습니다. 쿠키는 Bearer 토큰이므로 소유 증빙이 필요하지 않고 액세스 권한을 부여하므로 공격자에게 매력적인 타겟이 됩니다.
기기 결합 세션 사용자 인증 정보 (DBSC)는 기기에 결합된 인증된 세션을 만들어 쿠키 도용을 방해하는 것을 목표로 합니다. 이 접근 방식을 사용하면 유출된 쿠키가 다른 기기의 계정에 액세스할 가능성을 줄일 수 있습니다.
작동 방식
DBSC는 서버가 기기에 바인딩된 인증된 세션을 만들 수 있는 새로운 API를 도입합니다. 세션이 시작되면 브라우저는 공개 키/비공개 키 쌍을 생성하여, 가능한 경우 신뢰 플랫폼 모듈 (TPM)과 같은 하드웨어 지원 저장소를 사용하여 비공개 키를 안전하게 저장합니다.
그러면 브라우저가 일반 세션 쿠키를 발행합니다. 세션 전체 기간 동안 브라우저는 주기적으로 비공개 키의 소유를 증명하고 세션 쿠키를 새로고침합니다. 쿠키를 훔쳐도 공격자에게 이득이 되지 않도록 쿠키의 전체 기간을 충분히 짧게 설정할 수 있습니다.
주요 구성요소
세션 등록:
- 사용자가 로그인하면 서버는
Sec-Session-Registration
HTTP 헤더를 사용하여 기기 바운드 세션을 요청합니다. - 브라우저가 새 키 쌍을 생성하여 비공개 키를 안전하게 저장합니다.
- 단기 인증 쿠키도 설정되고 이 키 쌍에 바인딩됩니다.
- 서버는 세션을 상응하는 공개 키와 연결하여 세션을 원래 기기에서만 사용할 수 있도록 합니다.
- 사용자가 로그인하면 서버는
세션 새로고침 및 소유권 증빙:
- 짧은 시간의 쿠키가 만료되면 Chrome에서 세션 새로고침을 트리거합니다.
- 브라우저는 서버 정의 새로고침 엔드포인트(세션 등록 중에 제공됨)에 요청을 전송하고, 서버에서 제공하는 경우
Sec-Session-Challenge
헤더를 사용하여 서명된 챌린지를 전송합니다. - 서버는 세션의 비공개 키로 서명된 응답을 확인하여 소유 증명을 확인합니다.
- 유효하면 서버는 세션을 계속할 수 있는 새로운 짧은 기간의 쿠키를 발행합니다.
이 접근 방식의 한 가지 이점은 Chrome에서 새로고침된 짧은 시간의 쿠키가 누락될 수 있는 요청을 지연한다는 것입니다. 이 동작을 사용하면 세션 전반에서 세션 바운드 쿠키를 일관되게 사용할 수 있으며 개발자는 쿠키가 자동 갱신 없이 만료되거나 사라질 수 있는 접근 방식보다 더 확실하게 쿠키를 사용할 수 있습니다.
구현 예시
서버는 다음과 같이 기기 바운드 세션을 요청할 수 있습니다.
HTTP/1.1 200 OK
Sec-Session-Registration: (ES256);path="/refresh";challenge="12345"
세션이 활성 상태이면 서버는 챌린지-응답 교환으로 이를 확인할 수 있습니다.
HTTP/1.1 401 Unauthorized
Sec-Session-Challenge: "verify-session"
브라우저는 다음과 같이 응답합니다.
POST /refresh
Sec-Session-Response: "signed-proof"
이점
- 쿠키 도난 완화: 세션 쿠키가 도난당하더라도 다른 기기에서 사용할 수 없습니다.
- 주요 UX 변경 없이 보안 강화: 추가 사용자 상호작용 없이 백그라운드에서 투명하게 작동합니다.
- 장기 세션 쿠키에 대한 의존도 감소: 원래 기기에서 세션이 유효한 한 단기 쿠키가 자동으로 새로고침됩니다.
- 표준 암호화 메커니즘 지원: 가능한 경우 TPM 지원 보안 저장소를 활용하여 무단 반출을 강력하게 방지합니다.
개인 정보 보호 및 보안 고려사항
DBSC는 사용자 개인 정보를 보호하면서 보안을 강화하도록 설계되었습니다.
- 추가 추적 벡터 없음: 각 세션은 고유한 키 쌍과 연결되므로 교차 세션 추적이 방지됩니다.
- 장기 기기 지문 생성 불가: 사용자가 명시적으로 허용하지 않는 한 서버는 동일한 기기의 여러 세션을 연결할 수 없습니다.
- 사용자가 삭제할 수 있음: 사용자가 사이트 데이터를 삭제하면 세션과 키가 삭제됩니다.
- 쿠키 정책 준수: DBSC는 쿠키와 동일한 사이트 기반 범위를 따르므로 교차 출처 데이터 유출이 발생하지 않습니다.
사용해 보기
기기 결합 세션 사용자 인증 정보 오리진 체험판은 Chrome 135부터 사용할 수 있습니다.
로컬 테스트
로컬에서 DBSC를 테스트하려면 다음 단계를 따르세요.
chrome://flags#device-bound-session-credentials
로 이동하여 기능을 사용 설정합니다.
공개 테스트
공개 환경에서 출처 체험판으로 DBSC를 테스트하려면 다음 단계를 따르세요.
- Chrome Origin 무료 체험판 페이지로 이동하여 가입합니다.
제공된 토큰을 사이트의 HTTP 헤더에 추가합니다.
Origin-Trial: <your-trial-token>
리소스
참여하여 웹 보안의 미래를 만들어 가세요
웹 인증을 더욱 안전하게 만드는 데 동참해 주세요. 웹 개발자는 DBSC를 테스트하고 애플리케이션에 통합하며 의견을 공유하는 것이 좋습니다. GitHub에서 Google과 소통하거나 웹 애플리케이션 보안 작업반의 토론에 참여할 수 있습니다.
DBSC를 구현하면 세션 도용 위험을 집단적으로 줄이고 사용자의 인증 보안을 강화할 수 있습니다. 지금 바로 시작하여 웹 보안의 미래를 함께 만들어 보세요.