← 블로그로 돌아가기

AudioContext 지문이란? 오디오 지문이 브라우저 환경을 식별하는 원리

핵심 결론:오디오 지문은 마이크를 쓰지도, 소리를 내지도 않습니다. 대신 브라우저가 메모리 안에서 고정된 오디오를 조용히 렌더링하고, 계산 결과에 남는 미세한 부동소수점 차이를 기기 서명으로 삼습니다. Canvas·WebGL과 같은 렌더링 결과 유형 지문이라 IP를 바꿔도, 캐시를 지워도 사라지지 않으며 값은 기기와 브라우저 엔진이 정합니다. 멀티 계정 운영에서 판단 기준은 두 가지뿐입니다. 같은 환경에서는 이 값이 오래 안정적으로 유지되고, 환경이 다르면 서로 달라야 합니다. MostMate의 AudioContext 설정은 실제와 랜덤 두 단계이므로 이 기준에 맞춰 고르면 됩니다.

"스피커를 끄고 마이크 권한을 거부하면 사이트는 오디오 쪽에서 나에게 손쓸 수 없다"는 생각, 이것이 오디오 지문에 대한 가장 흔한 오해입니다. 실제로는 정반대입니다. 이 검사에는 처음부터 끝까지 소리의 출입이 전혀 없습니다. 2016년 프린스턴대 연구팀이 수백만 사이트 규모의 측정에서 이 기법을 공식 기록에 넣었고, 이후 주류 검사 스크립트의 기본 항목이 되었습니다. 권한 필요 없음, 밀리초 단위 완료, 시크릿 모드에서도 그대로 작동합니다. MostMate는 계정마다 독립된 브라우저 환경을 준비해 주는 지문 브라우저이며, 오디오 지문은 바로 이런 제품이 다루는 지문 파라미터 중 하나입니다. 이 글에서는 네 가지 질문으로 정리합니다. 사이트는 무엇을 보는지, 이 숫자가 왜 안정적인지, 다른 파라미터와 어떻게 맞춰지는지, 지문 브라우저에서 어떻게 설정해야 하는지.

사이트가 보는 것: 한 번도 재생되지 않은 오디오가 돌려주는 숫자 하나

사이트가 최종적으로 받는 것은 부동소수점 숫자 하나뿐입니다. 소리도 없고 기기 모델명도 없습니다. 주류 검사 스크립트(FingerprintJS 구현이 대표적이며 수많은 오픈소스 라이브러리가 이를 따릅니다)의 절차는 다음의 고정된 5단계입니다.

  • 오프라인 오디오 컨텍스트를 만듭니다(OfflineAudioContext, MDN 문서). 모노 채널, 44100 Hz 샘플레이트, 약 5000개 샘플로, 환산하면 약 113밀리초 오디오이며 처음부터 끝까지 스피커를 거치지 않습니다.
  • 발진기로 10000 Hz 삼각파를 고정해 생성하고, 완전히 동일한 입력 신호로 삼습니다.
  • 신호를 다이내믹 컴프레서(DynamicsCompressorNode)에 보냅니다. 파라미터는 상당히 공격적으로 설정합니다(임계값 -50 dB, 니 40, 압축비 12). 계산을 일부러 비선형 구간으로 밀어 넣어 기기 간 미세한 차이를 키우려는 것입니다.
  • startRendering을 호출해 메모리 안에서 조용히 렌더링합니다. 이 단계에서 들리는 소리는 전혀 생기지 않습니다.
  • 출력 버퍼 끝부분의 약 500개 샘플을 꺼내 절댓값 합을 구하면 124.0434 같은 숫자가 나옵니다.

바로 이 숫자가 오디오 지문입니다. 계산은 재생보다 먼저 일어나기 때문에 시스템을 음소거했든 스피커가 연결되어 있지 않든 결과는 달라지지 않습니다. 녹음 장치에도 접근하지 않으니 마이크 권한은 애초에 문제가 되지 않습니다. 브라우저 지문 총정리 글에서는 이런 파라미터를 보통 한 줄로 넘어가지만, 따로 한 편을 할애할 만한 이유는 값의 출처가 특별하기 때문입니다. 값은 계산 오차에서 나오는데, 그 오차가 하필 안정적입니다. 다음 절의 주제가 이것입니다.

Iphey 검사 결과 페이지에 표시된 오디오 지문

검사 사이트가 보여주는 것은 보통 이 원시 값을 해시한 16진수 문자열이며 길이는 사이트마다 다릅니다. 비교할 때는 "같은 환경에서 안정적인지, 환경을 옮기면 달라지는지"만 보면 충분하고 문자열 형식 자체에 연연할 필요는 없습니다.

숫자 하나가 지문이 될 수 있는 이유: 오차가 하필 안정적이기 때문

핵심 메커니즘은 이것입니다. 오디오 연산은 기기마다 비트 단위까지 일치하지 않으며, 그 불일치는 재현할 수 있습니다. Web Audio 명세는 처리 절차만 정의할 뿐 모든 구현이 비트 단위로 같은 결과를 내도록 요구하지 않습니다. CPU마다 다른 부동소수점 정밀도, 브라우저 엔진마다 다른 오디오 스택 구현이 반올림과 연산 순서에서 미세한 차이를 만듭니다. 한 번의 연산 차이는 무시할 수준이지만, 신호는 컴프레서를 거치며 반복해서 비선형 처리되고 수백 개 샘플을 합산하는 과정에서 미세한 차이가 구별 가능한 숫자까지 증폭됩니다.

프린스턴 연구는 실측 규모도 남겼습니다. 1만 8천대가 넘는 기기에서 오디오 지문은 700개가 넘는 서로 다른 값으로 수렴했고, 구분력으로 환산하면 약 5.4 bits입니다. 표본이 유한하니 이는 하한선입니다. 연관성 검사에는 이 규모면 충분합니다. 진짜 가치는 "값이 얼마나 유니크한가"가 아니라 "얼마나 안정적인가"에 있기 때문입니다. 같은 기기는 백 번 새로고침해도 결과가 미동도 없고, 기기나 브라우저 엔진을 바꾸는 순간 값이 달라집니다. 권한도 필요 없고, 지워지지도 않고, 새로고침해도 변하지 않는 신호. 플랫폼이 기기 프로파일링에 가장 아끼는 원료가 바로 이것입니다.

다른 파라미터와의 정렬: 일관성 3원칙

오디오 지문은 IP와 아무 관련이 없는 순수한 기기 측 신호입니다. Canvas, WebGL과 마찬가지로 렌더링 결과 유형 파라미터로, 사이트가 정해진 계산 문제를 브라우저에 넘기면 실제 기기가 그 자리에서 답을 계산합니다. 환경이 제대로 구성되었는지는 세 가지로 검증합니다.

  • 단일 환경 안정성: 같은 환경은 매번 같은 결과를 내야 합니다. "이건 정상적인 기기다"라는 판정의 전제 조건입니다. 값이 갑자기 변하는 것은 파라미터를 사람이 건드렸다는 뜻이고 오히려 수상해 보입니다.
  • 환경 간 상이성: 열 개 환경이 같은 오디오 값을 보고하면 연관 그래프에 스스로 동그라미를 그리는 셈입니다. 반대로 "모든 파라미터를 만점으로 맞추는" 것도 잘못된 방향입니다. 랜덤화의 위험은 지문 랜덤화가 안전하지 않은 이유 글에서 따로 뜯어두었습니다.
  • 브라우저 엔진과의 일치: 오디오 스택은 브라우저 엔진이 구현하므로 값은 엔진과 버전을 따라갑니다. 환경이 주장하는 UA와 시스템이 실제 엔진과 맞아야 하고, 브라우저 메이저 업데이트 후에는 값이 자연히 갱신되므로 손볼 필요가 없습니다.

세 원칙을 한 문장으로 압축하면 이렇습니다. 오디오 지문에 요구되는 것은 "진짜 기기다운 모습"이지 "최고"가 아닙니다. MostMate는 이 논리를 네 가지 설계 원칙으로 굳혔습니다. 전체 그림은 네 가지 설계 원칙 글에서 다루었으니, 이 글에서는 오디오 항목 하나에만 답합니다.

내 오디오 지문 확인 방법: 두 번의 비교로 문제를 가려내기

검사에 플러그인은 전혀 필요 없습니다. 검사 사이트 하나와 새로고침 두 번이면 충분합니다.

1단계: 검사 사이트를 하나 골라 오디오 지문 항목을 찾습니다. BrowserScan과 Iphey 모두 이 값을 별도 항목으로 표시합니다. Iphey 신뢰 점수 읽는 법은 실전 편에 자세히 정리되어 있으니 Iphey 검사 실전 가이드 글과 함께 쓰면 좋습니다.

2단계: 같은 환경에서 두세 번 새로고침하며 값을 지켜봅니다. 값이 변하지 않고 유지되는 것이 합격선입니다. 새로고침마다 값이 바뀐다면 그 환경의 오디오 파라미터가 매번 재계산 모드로 설정된 것이고, 이는 "이 기기는 조작된 적이 있다"는 광고를 플랫폼에 계속 틀어주는 것과 같습니다.

3단계: 다른 환경에서 다시 측정해 두 값을 비교합니다. 환경이 다르면 오디오 값도 달라야 합니다. 완전히 같다면 같은 지문 템플릿을 재사용했는지 거슬러 올라가 확인하세요. 템플릿 재사용은 멀티 계정 연관성의 가장 은밀한 발원지입니다.

서로 다른 환경의 검사 결과 비교

MostMate 설정 방법: 실제와 랜덤, 무엇을 고를까

MostMate의 환경 생성 폼은 AudioContext를 지문 설정 영역에 별도 항목으로 두고 실제와 랜덤 두 단계를 제공합니다. 오른쪽 지문 미리보기 패널이 현재 값을 실시간으로 보여주므로 저장 전에 확인할 수 있습니다. 판단은 단순합니다. 일상 주력 환경에는 실제 — 값이 이 기기의 계산 결과에서 나오므로 저절로 안정적이고 "단일 환경 안정성" 원칙과 정확히 맞습니다. 환경을 한꺼번에 새로 만들 때는 랜덤 — 환경마다 서로 다르면서 내부적으로는 안정된 값을 얻어 "환경 간 상이성"을 충족합니다.

오디오 파라미터에는 커스텀 단계가 없습니다. 이 설계 자체가 말해주는 것이 있습니다. 오디오 지문의 가치는 안정성에 있으므로, 손으로 고정값을 조합하면 오히려 의미를 잃습니다. 실제냐 랜덤이냐에서 진짜 고려할 것은 이 묶음의 환경을 어떻게 생성했는지이지, 항목별로 파라미터를 조정하는 일이 아닙니다. 같은 계열의 Canvas, WebGL 이미지, ClientRects도 같은 방식으로 판단할 수 있고, 전체 메커니즘의 역할 분담은 MostMate란? 페이지에 정리되어 있습니다.

MostMate 지문 브라우저의 지문 설정 영역

자주 묻는 질문

오디오 지문에 마이크나 스피커 권한이 필요한가요?

필요 없습니다. 오디오 전체가 메모리 안에서 오프라인으로 렌더링되어 스피커를 거치지 않고 녹음 장치에도 접근하지 않습니다. 음소거 상태든, 오디오 장치가 없는 기기든 그대로 수집됩니다.

쿠키를 지우거나 시크릿 모드를 쓰면 오디오 지문을 피할 수 있나요?

피할 수 없습니다. 쿠키는 로컬에 저장되어 지울 수 있지만, 오디오 지문은 기기가 실시간으로 계산해 만들어냅니다. 완전히 다른 두 메커니즘이므로 캐시 삭제는 아무 영향을 주지 못합니다.

AudioContext를 비활성화하거나 하나의 값으로 고정하는 편이 더 안전하지 않을까요?

방향이 반대입니다. 정상적인 브라우저는 대부분 오디오 연산을 실행할 수 있습니다. "비활성"도 "모두가 같은 고정값"도 그 자체로 도드라진 특징이 되어 평범한 값보다 더 쉽게 걸러집니다.

오디오 지문은 언제 바뀌나요?

기기를 바꾸거나, 브라우저 엔진이 바뀌거나, 브라우저 메이저 버전이 올라가면 값이 바뀝니다. 실제 기기에서 자연스럽게 일어나는 변화입니다. 같은 환경의 일상 사용에서는 오래 안정적으로 유지되어야 하고, 잦은 변화는 오히려 이상 신호입니다.

맺음말

오디오 지문의 논리를 한 문장으로 줄이면 이렇습니다. 사이트는 소리를 내지 않고도 기기를 측정할 수 있습니다. 버팀목은 기기마다 계산할 때 드러나는 안정적이고 미세한 차이입니다. 이 점을 이해하면 흔한 관행 대부분이 설명됩니다. 왜 음소거가 막지 못하는지, 왜 만점 파라미터가 오히려 위험한지, 왜 대량 생성 환경의 값은 서로 달라야 하는지. MostMate는 이런 파라미터를 실제와 랜덤 두 단계로 정리하고 지문 미리보기 패널과 함께 설정 직후 결과를 확인할 수 있게 합니다. 내 환경의 오디오 지문을 직접 한 번 측정해 보고 싶다면 MostMate 다운로드에서 무료 버전으로 환경 두 개를 만들어 값을 비교해 보세요. 인지의 사각지대는 대개 한 번에 걷어집니다.

MOSTMATE

안전한 다중 계정 관리, 더 간편하게

첫 계정부터 MostMate와 함께 더 안전하고 스마트하며 효율적인 다중 계정 운영을 시작하세요.

  • 독립적인 프로필. 일관된 식별 정보.
  • AI 자동화 · 계정 건전성 · 팀 운영
MostMate 다운로드