Digital Forensic/Web Forensic

[논문 리뷰] Fashion Faux Pas: Implicit Stylistic Fingerprints for Bypassing Browsers

혜지콩 2026. 5. 30. 02:11

 

 
[ Title ] Fashion Faux Pas: Implicit Stylistic Fingerprints for Bypassing Browsers' Anti-Fingerprinting Defenses
[ Published in 2023 IEEE Symposium on Security and Privacy (SP) ]

 
Paper Link : https://doi.org/10.1109/SP46215.2023.10179437

Fashion Faux Pas: Implicit Stylistic Fingerprints for Bypassing Browsers' Anti-Fingerprinting Defenses

Browser fingerprinting remains a topic of particular interest for both the research community and the browser ecosystem, and various anti-fingerprinting countermeasures have been proposed by prior work or deployed by browsers. While preventing fingerprinti

ieeexplore.ieee.org

 
명확히 분류하면 포렌식 논문이라기보다는 web security 및 browser fingerprinting 분야에 가깝다. 다만 fingerprinting을 통한 식별 및 추적 문제를 다룬다는 점에서 browser forensics와도 일부 연결되어 읽게 되었다. 인터넷 세상 속에 남겨진 지문을 찾아내는 느낌이라 과학수사 관점에서 흥미로웠다. 앞으로 fingerprinting 쪽 논문들을 쭉 따라가면서 읽어봐도 좋을 것 같다.
 
후술하겠지만, 해당 논문에서 새롭게 등장하는 아이디어가 간단하면서도 획기적인 방식이라 인상깊었다. 아이디어 자체는 직관적인데, 방대한 HTML 요소들을 하나하나 어떤 Fingerprint Feature로 사용할지 분류하고, 다양한 브라우저를 대상으로 테스트를 진행해 검증하고, 9주 간 pilot study까지 진행한 점이 놀라웠다. 정말 공들여 쓰여진 논문이라는게 느껴졌다. 물론 어떤 논문이 안그렇겠냐만은.. 탑티어는 역시 다르다..
 
'패션 실수' (Fashion Faux Pas) 라는 유쾌한 제목으로 시선을 끈 것도 한 몫했다.  논문의 내용을 함축적으로 재치있게 담았다. 나도 언젠가 이런 제목의 논문을 쓰고 싶다ㅋㅎ 
또한 contribution과 novelty가 기존 연구들과 대비하는 구조로 잘 짜여 있어서 배울 점이 많았다. 2번째 section에서 이 점이 잘 드러났다. introduction은 물론 훌륭했다.
얼마나 하고 싶은 말이 많은 논문인지 부록도 4페이지나 있었다. 왔다갔다 읽는 건 좀 귀찮았지만 사례를 적절히 배치해 알려주어서 이해하기에 좋았다. dimension 단어를 처음에 '차원'이라고 해석하고 읽다가 부록 보고 나서야 '아.. '치수' 였구나..' 하고 깨달았다.
 
독후감 끝.
 

 
논문 소개 시작.
 

Motivation

 

 
Fingerprinting은 쉽게 말해서 디바이스나 브라우저 등이 가진 고유한 특징을 기반으로 사용자를 식별하는 것을 의미한다.
오프라인에서 지문으로 사람을 고유하게 식별하듯이, 온라인 상에서의 지문 같은 것이다.
 
이것이 악용되면 웹 페이지가 사용자의 특성을 학습해 프라이버시를 침해할 수 있다. 쇼핑몰에 접속하는 경우를 떠올려보자. 쿠키는 사용자에게 선택권을 준다. 사용자의 로그인 상태나 설정 정보를 저장하여 다음 접속 시 더 원활한 연결을 하거나, 원치 않는 경우 차단할 수 있다. 그러나 Fingerprinting은 사용자가 명시적으로 정보를 저장하지 않더라도 브라우저 및 디바이스의 특성을 수집하여 사용자를 식별한다. 즉, 사용자가 쿠키를 삭제하거나 추적을 거부하더라도 동일 사용자를 재식별할 가능성이 존재한다.
 
따라서 프라이버시를 중시하는 웹 브라우저일수록 Fingerprinting 기술을 막고자 한다. FireFox, Brave 등등 Fingerprinting을 막기 위한 여러 Defense 기법들을 적용했다. Tor는 뭐 말할 것도 없다. 
 
논문으로 돌아가서, 기존의 Browser Fingerprinting 기법 중 가장 많이 사용되어온 것이 Javascript API를 사용한 방식이다. 그렇다보니 웹 브라우저들이 Javascript를 통한 Fingerprinting을 Defense하는 기법을 많이 적용했다.
 
그렇다면?! Fingerprinting 기술을 개발하는 입장에서는 Javascript를 사용하지 않는 방식으로 Fingerprint를 생성한다면 더 좋은 성능을 보일 수 있지 않을까?!  하여 등장한 것이 'CSS 와 HTML 요소를 사용해 Stylistic한 Fingerprinting'을 제안한 이번 논문이다.
 


Idea

 

핵심 아이디어는 다음과 같다.
HTML 요소는 렌더링 환경에 따라 서로 다른 치수를 가질 수 있다. 가령 <input> 요소는 macOS 내에서 Chrome으로 렌더링되면 50px X 27px을 가지고, Firefox로 렌더링되면 64px X 32px , Safari에서는 48px X 23px을 가진다.  또 다른 예시로 Window와 MacOS는 버튼 모양, 체크 박스, 스크롤바를 화면에 그리는 그래픽 처리 방식도 OS마다 다르다.
 
즉 논문은 이러한 “stylistic difference”에 주목한다. 각 환경마다 서로 다른 렌더링 특성이 나타난다면, 이를 조합해 브라우저 및 시스템의 fingerprint를 생성할 수 있다. 그러면 이렇게 생성된 Fingerprint를 계속 모아서 엄청 많은 Fingerprint들이 합쳐지게 되면 그걸 이용해서 브라우저나 시스템, 사용자를 식별할 수 있게 된다. 
 
어떤 사람이 자신의 정체를 숨기기 위해 백날 천날 마스크 쓰고 다녀도 (Javascript Fingerprinting을 차단해도), 맨날 똑같은 검정 목티에 푸른 청바지 입고 안경 쓰고 다니면 '오 스티브잡스인가?' 하고 추측할 수 있는 것처럼!
'패션 실수' (CSS style 실수)로 인해 사용자를 식별할 수 있게 되는 것이다.
 

논문에서는 HTML 요소의 dimension을 측정하기 위해 CSS media queries를 사용했다. 일단 CSS media query는 viewport 너비에 따라 유연하게 컨텐츠를 배치하는 기술이다.
 
위 이미지는 CSS media query를 처음 접해서 간단히 실습해본 동영상인데 여기 블로그에는 영상 첨부하기 번거로워서 말로 설명하겠다. 오른쪽의 흰 화면이 viewport이고, 800 px 이상의 너비를 가지면 노란 배경이, 800 px 이하의 너비를 가지면 초록 배경이 뜨도록 간단한 코드를 짰다. 그리고 실제로 좌측 코드 화면이랑 우측 출력 화면 사이의 세로바를 좌우로 움직이면서 CSS media query의 동작을 확인해본 것이다. 별거 없다.
 


Methodology

이 CSS media query가 다 좋은데 HTML 요소의 치수를 직접 쿼리하는 기능은 없다. 그래서 웹페이지 안에 웹페이지를 삽입하는 Iframe (Inline frame)을 사용해서 HTML 요소의 치수를 간접적으로 추론한다.
 
좌측 하단의 이미지처럼 공통의 큰 네모 컨테이너 안에 주황 iframe과 회색 element를 나란히 배치한다. 그러면 만약 컨테이너의 세로 길이가 1000px로 고정되어 있다고 하면, 'element의 높이 = 1000px - iframe의 높이' 이고 ' element 의 너비 = iframe의 너비'가 된다.
 
그걸 오른쪽의 코드로 구현한 것이다. Listing 2 부터 보면 컨테이너 안에 textarea 라는 HTML 요소랑 iframe이 배치된 것을 알 수 있다. 그리고 Listing 1을 보면 iframe의 최소 너비에 따라 해당하는 코드가 실행되는 것을 볼 수 있다. 이 부분은 if/switch 문처럼 동작한다고 생각하면 된다. 2line을 보면 min-width가 300px에 해당하는 경우 서버에게 너비가 300px임을 알린다. 이런 식으로 px마다 촘촘하게 구성되어 있어서 해당하는 너비를 금방 알 수 있다. 이때 특정한 'width'를 쓰는 것이 아니라 'min-width' 이렇게 최솟값을 활용하는 이유는 width가 실수 범위까지 포함되기 때문이다.
 

앞서 말한 방식을 적용하면 25개의 iframe과 339개의 HTML 요소를 사용하여 30개의 StylisticFP feature를 추출할 수 있다. 이 feature는 크게 4가지 카테고리로 분류할 수 있는데, 환경, 폰트 선호도, 광고 차단기, 미디어 속성 카테고리이다. 자세한 내용은 넘 많아서 논문을 참고하는 것이 좋겠다..
 
열의 카테고리를 보면 Entropy가 있다. 이 Entropy가 높은 Feature일수록 더 식별력이 좋은 특성임을 의미한다. 그리고 이 Feature들은 기존의 Fingerprinting 시스템에서 사용되는 특징들보다 더 많은 특징들을 포함한다. 
 

근데 이렇게 HTML과 CSS 미디어 기능을 사용하게 되면, 구현할 때 오버헤드가 엄청 발생한다. 따라서 저자들은 stylistic fingerprinting 정보인 entropy는 최대한 유지하면서도 media query 요청 수와 iframe 수를 줄여서 성능을 최적화하고자 했다.
 
원래라면 1element-1iframe 이렇게 매칭했었는데, 오른쪽 이미지처럼 n개의 element-1iframe 이렇게 매칭하는 방식을 채택했다.
이것도 자세한건 논문 참고..
 
이 방식으로 총 요청수가 대폭 줄어드는 효과를 보았다.
 


 

Evaluation

 

Pilot Study

여기에서 굉장히 정직한 것이, 기존의 최첨단 시스템 (논문에서 state-of-the-art 라는 표현을 좋아한다. 찾아보니 딥러닝 논문에서 성능 강조할 때 많이 쓰이는 단어라고 한다.) 인 FPJS와 비교하였을 때, 최종 식별된 디바이스 수가 5개 적고, 크로미움에서도 12개나 적음에도 불구하고 이 평가 결과를 썼다. "유사한 수준의 장치 식별 능력을 보인다"는 것만으로도 의미가 있는 듯하다. 또한 Brave나 Edge 브라우저를 보면 약간 더 우수한 성능을 보였기 때문에 유의미한 것 같다.
 


 

Contribution

 


더 알아보고 싶은 것.
- fingerprinting 기술 자체에 관심이 생겨서 Sok 논문을 읽어볼까 한다.
- 논문에서 마지막에 제시한 mitigation 방법이 2가지가 있다. 위 contribution 이미지에 정리되어 있는데, 이 2개의 mitigation 방법이 모두 정상적인 기능에 악영향을 줄 수 있어서 사용하기 어려운 방법들이다.
그렇다면 정상적인 기능에 악영향을 주지 않으면서도 이 stylisticFP를 막을 방법이 뭐가 있을까?
더 생각해볼 과제인 것 같다...
- JS 기반 Fingerprinting을 막는 기법이 적용된 브라우저를 대상으로 실험을 진행했으면, CSS+HTML로 개발된 이 논문의 기법 (StylisticFP)이 JS로 개발된 FingerprintJS 기법보다 월등히 우수한 성능을 보여야하는 것이 아닌가? 동등하거나 그 이하의 성능을 보인다는 점이 뭔가 아쉽다..
혹은 FingerprintJS 기법이 진짜 최최최첨단이어서 이렇게 우수한 성능을 보인 것인지?
- 암튼 재밌었다.
 

 
2026.05.29. 컴퓨터지능보안연구실 논문스터디 발표 자료.