OS별로 달라지는 Math.tanh 결과, 새로운 지문(fingerprint)으로 악용 가능성

by DD
3시간 전
조회수 2

Chromium 148 버전부터 Math.tanh 함수의 부동 소수점 연산 결과가 OS별로 달라져 새로운 지문(fingerprint)으로 활용될 수 있음

과거에는 V8 엔진이 자체 구현을 사용했으나, 플랫폼 std::tanh 호출로 변경되면서 OS별 libm 라이브러리 차이가 드러남

CSS 삼각 함수 및 Web Audio 등 다른 연산에서도 유사한 OS별 차이가 존재하며, 이는 개인 정보 보호(Privacy)에 대한 우려를 증폭시킴

정확한 재현(Exact Reproduction)데이터 격리 아키텍처(Data Isolation Architecture) 적용이 해결책으로 제시되나, 구현 복잡성이 높음

Math.tanh 연산 결과의 OS별 차이점 분석

본문에서는 Math.tanh 함수의 부동 소수점 연산 결과가 Linux(glibc), macOS(libsystem_m), Windows(UCRT) 환경에서 미세하게 다르다는 점을 지적합니다. 이는 IEEE 754 표준이 초월 함수(Transcendental Functions)의 정확한 반올림(Correct Rounding)을 요구하지 않기 때문이며, 각 OS의 libm 라이브러리가 성능을 위해 다른 최소최대 다항식(Minimax Polynomial) 계수를 사용하기 때문이라고 설명합니다. 이러한 차이는 1 ULP(Unit in the Last Place) 수준으로 발생하며, 특정 입력값에서 OS별로 고유한 패턴을 생성할 수 있습니다.

Chromium 148 이전과 이후의 V8 엔진 Math.* 구현 변화

Chromium 148 이전 버전에서는 V8 엔진이 fdlibm 포트를 직접 사용하여 Math.* 함수를 구현했기에 모든 OS에서 동일한 결과를 반환했습니다. 그러나 V8 커밋 c1486295ae5 이후, 플랫폼 std::tanh를 사용하도록 변경되면서 OS의 기본 libm 라이브러리 결과가 그대로 노출되기 시작했습니다. 이 변경으로 인해 Math.tanh만이 OS별 차이를 보이는 유일한 Math.* 함수가 되었으며, 이는 브라우저 지문(Browser Fingerprinting)의 새로운 벡터로 작용할 수 있습니다.

CSS 및 Web Audio에서의 OS별 수학 함수 차이

글에서는 Math.tanh 외에도 CSS의 삼각 함수(sin, cos, tan 등)Web Audio API의 연산에서도 OS별 차이가 발생한다고 지적합니다. CSS의 경우, 레이아웃 엔진이 각도를 도(degree) 단위로 변환 후 플랫폼 std::sin을 호출하는 별도의 코드 경로를 사용하며, Web Audio는 Apple Silicon 환경에서 Accelerate 프레임워크scalar libsystem_m을 혼용하여 사용합니다. 이러한 다양한 경로의 차이는 데이터 격리 아키텍처(Data Isolation Architecture)를 복잡하게 만들고, 지문 채택의 표면적을 넓힙니다.

지문 채택(Fingerprinting) 방어를 위한 기술적 과제

이러한 OS별 수학 함수 차이를 숨기기 위한 시도는 복잡합니다. 단순히 출력값에 노이즈를 추가하는 것은 실제 OS와 일치하지 않는 결과나 비결정적 동작을 유발하여 오히려 새로운 지표가 될 수 있습니다. 따라서 가장 확실한 방법은 각 OS의 libm 내부 알고리즘(minimax 계수, 테이블 등)을 정확히 재현(Exact Reproduction)하는 것입니다. 또한, Windows UCRT의 경우 ms_abi를 사용하여 링킹하고 CPU 디스패치 플래그를 조절하는 등, ABI(Application Binary Interface) 호환성 및 하드웨어 FMA(Fused Multiply-Add) 지원 여부까지 고려해야 합니다.

커뮤니티의 반응과 향후 전망

댓글에서는 이 현상이 브라우저 버전 범위까지 식별할 수 있다는 점에 주목하며, LLM이 작성한 듯한 글쓰기 스타일에 대한 비판도 있었습니다. 일부에서는 정확히 반올림된 초월 함수(Correctly Rounded Transcendental Functions) 구현의 중요성을 강조했으나, 성능 문제로 인해 아직 보편화되지 않았음을 지적합니다. 또한, Tor Browser와 같은 프라이버시 강화 브라우저조차 OS 식별 벡터를 완전히 숨기기 어렵다는 점과, 이러한 기술이 스크래핑(Scraping) 등 악의적인 목적으로 사용될 수 있다는 우려가 제기되었습니다. 궁극적으로는 법적 규제(Legislation)와 사회적 합의가 필요하다는 의견도 나왔습니다.

Since Chromium 148, Math.tanh is now fingerprintable to link underlying OS