Canvas 핑거프린트란? 브라우저 그리기로 기기를 식별하는 방법
핵심 요약: Canvas 핑거프린트는 실제 그리기 작업에서 나오며, 결과는 GPU·운영체제·폰트·브라우저 엔진이 함께 결정합니다. 항목 하나만으로 신원을 특정할 수는 없지만, 파라미터 교차 검증에서는 환경의 실체를 드러냅니다. 관리 포인트는 두 가지, 환경 하나의 측정값은 재현되어야 하고 환경 사이의 차이는 충분히 벌어져야 한다는 것입니다. 이어서 원리, 영향 요소, 식별 한계, 감지, MostMate의 두 모드 설정 순으로 설명합니다.
같은 웹사이트를 두 대의 기기로 열어도 페이지의 같은 그림이 픽셀까지 일치하지는 않습니다. 페이지 오류가 아니라, 기기마다 그리기 단계에서 저마다의 특징을 남기기 때문입니다. 사이트는 이 특징을 가져와 하나의 값으로 계산하는데, 이것이 Canvas 핑거프린트이며 브라우저 핑거프린트 항목 중 식별력이 가장 높은 부류에 속합니다. MostMate는 안티디텍트 브라우저이며, Canvas는 지문 설정의 기본 파라미터 중 하나입니다. 이 글에서 이 파라미터가 생성부터 설정까지 이어지는 흐름을 정리했습니다.
사이트는 Canvas로 어떻게 '서명 그림'을 그리는가
Canvas 핑거프린트는 실제 그리기 작업에서 나옵니다. 사이트가 브라우저로 지정한 내용을 그린 뒤 결과를 읽어 특징값으로 바꾸는 방식입니다. 그리기에는 브라우저가 제공하는 Canvas 그리기 API를 사용하며, 웹 게임·차트·이미지 편집이 공통으로 쓰는 2D 캔버스 기능이 바로 이것입니다. API 세부 사항은 MDN의 Canvas API 문서를 참고하세요. 과정은 사용자가 느끼지 못합니다. 세 단계로 나눠 보면 다음과 같습니다.
- 그리기: 페이지 스크립트가 캔버스에 고정된 내용을 그립니다. 흔히 몇 줄의 텍스트에 도형과 그라데이션을 더한 형태입니다.
- 읽기: 스크립트가 toDataURL()이나 getImageData() 같은 API로 캔버스를 문자열이나 픽셀 배열로 내보냅니다.
- 비교: 내보낸 결과를 해시값으로 계산해, 이 환경의 이전 기록이나 다른 신호의 예상값과 맞춰 봅니다.

두 기기에서 같은 그림이 나오지 않는 이유
그리기 결과는 렌더링 경로 전체가 함께 결정하므로, 한 단계만 달라도 픽셀에 차이가 납니다. 같은 명령을 두 기기에 보내도 운영체제가 먼저 사용할 폰트와 글자 가장자리의 그리는 방식을 정하고, 브라우저 엔진이 그리기를 실행한 뒤 마지막으로 GPU와 드라이버가 출력합니다. 네 단계를 하나씩 보겠습니다.
- GPU와 드라이버. 같은 그리기 명령이라도 그래픽카드와 드라이버 버전이 다르면 계산되는 픽셀에 미세한 차이가 생깁니다. 결과 차이의 주된 원인입니다.
- 운영체제와 문자 렌더링. Windows, macOS, Linux는 렌더링 방식과 안티에일리어싱 정책이 달라서, 같은 문장을 그려도 가장자리의 매끄러움이 다릅니다.
- 폰트 환경. 캔버스의 텍스트는 로컬 폰트로 그려지므로, 어떤 폰트가 어떤 버전으로 설치됐는지까지 그리기 결과에 들어갑니다. 폰트 목록의 감지 로직은 폰트 핑거프린트는 어떻게 측정되나 글에서 다뤘고, 둘은 같은 출처를 공유합니다.
- 브라우저 엔진과 버전. Chromium, Firefox, WebKit은 그리기 구현에 저마다 차이가 있고, 메이저 업데이트에서도 세부 사항이 바뀝니다.

네 단계가 합쳐져 Canvas의 식별력이 정해집니다. 항목 하나의 차이는 미미해도 해시로 압축하면 다른 기기와 맞지 않을 확률이 상당히 높습니다. 작은 그림 한 장 뒤에는 기기 전체의 렌더링 경로가 동시에 나와 있는 셈입니다.
Canvas 핑거프린트는 어디까지 식별할 수 있나
Canvas 핑거프린트는 식별력이 높은 기기 특징이지만, 단독으로 신원을 특정하지는 못합니다. 한계는 세 가지이고, 먼저 분명히 해두겠습니다.
첫째, 해시값이 같다고 같은 기기는 아닙니다: 렌더링 경로가 우연히 일치한 두 대는 같은 값을 가질 수 있고, 시장의 주류 사양은 애초에 대량으로 겹칩니다.
둘째, 사이트는 이것 하나로 판단하지 않습니다: Canvas 측정값은 UA, 화면, 폰트, 언어와 함께 교차 검증되며, 이 그룹에서 '스스로 말하지 않고 현장에서만 잴 수 있는' 단단한 증거 역할을 합니다.
셋째, Cookie와는 별개의 구조입니다: Cookie는 로컬에 저장되어 지우거나 거부할 수 있지만, Canvas는 접속 시점에 그 자리에서 계산되므로 Cookie를 삭제해도 영향을 받지 않습니다.
세 가지 한계를 하나의 판단으로 정리하면 이렇습니다. Canvas가 계정의 운명을 결정하지는 않지만, 같은 환경들의 해시가 완전히 일치하면 교차 검증에서 스스로 손을 드는 것과 같습니다.
세 단계로 내 환경의 Canvas 핑거프린트 확인하기
Canvas 감지에는 도구 설치가 필요 없고, 감지 페이지 한 곳과 재측정 두 번이면 충분합니다. 이 순서로 진행하세요.
- 현재 값 기록하기. 환경 안에서 BrowserLeaks의 Canvas 감지 페이지를 열면 현재 환경의 해시값과 이미지 미리보기가 나오므로 이를 적어둡니다.
- 같은 환경에서 재측정. 페이지를 닫았다 다시 열거나 하루이틀 뒤 다시 측정합니다. 같은 환경이라면 해시값이 그대로여야 하고, 두 결과가 다르면 별도의 처리가 측정값에 개입하고 있다는 뜻입니다.
- 환경 간 비교. 두 번째 환경에서 같은 감지를 실행합니다. 두 해시에는 눈에 띄는 차이가 있어야 하고, 차이가 클수록 환경 사이의 분리가 분명합니다.
측정값에서 볼 것은 '안정적인지, 차이가 있는지'이고 구체적인 수치를 좇을 필요는 없습니다. 감지 사이트가 다르면 해시값이 맞지 않을 수 있습니다. 사이트마다 그리는 도형, 내보내는 방식, 해시 알고리즘이 모두 다르기 때문입니다. 사이트를 넘나드는 비교는 의미가 없고, 같은 도구 안에서의 전후 비교가 유효합니다.

MostMate에서 Canvas 두 모드 고르기
MostMate의 지문 설정은 Canvas를 Real과 Noise 두 모드로 정리하며, 기본값은 Real입니다. 제품 전체 모습은 MostMate란?에서 볼 수 있고, 공식 사이트의 수동 지문 설정 목록에는 Canvas도 오디오, WebGL 등과 나란히 실려 있어 환경 생성 시 같은 지문 설정 영역에서 구성합니다. 두 모드의 차이부터 표로 보겠습니다.
| 항목 | Real | Noise |
|---|---|---|
| 값의 출처 | 호스트 머신에서 실시간 렌더링, 수동 실행과 동일 | 실제 렌더링 결과에 노이즈를 더함 |
| 감지에서의 모습 | 호스트 머신의 실제 렌더링 경로를 그대로 반영 | 호스트와 분리되어 환경별 고유값으로 형성 |
| 어울리는 상황 | 페르소나와 호스트 시스템 지역이 일치하는 환경 | 환경 대량 생성, 환경 간 차이가 필요할 때 |
| 주의점 | 같은 머신의 여러 환경은 기본값이 동일 | 노이즈 세기는 적정 범위 안으로 |
Real 모드는 호스트 머신의 '바탕이 깨끗한' 경우에 어울립니다. 본체가 영문판 Windows이고 만들려는 것이 미국 환경이라면 실제 렌더링을 써서 측정값이 수동으로 열 때와 같아지고 조립 흔적도 남지 않습니다. 제약도 분명합니다. 같은 머신의 여러 환경을 모두 Real로 하면 Canvas 값이 하나로 같아져 환경 사이에 차이가 없습니다.
Noise 모드가 메우는 것이 바로 이 빈틈입니다. 환경의 Canvas 값에 노이즈를 더해 호스트 머신의 실제 렌더링에서 떼어내면, 대량으로 만든 환경들이 서로 달라집니다. 단, 노이즈가 통제 범위 안에 있어야 한다는 게 전제입니다. 노이즈를 더한 뒤의 값도 실제 기기의 정상 범위 안에 있어야 하며, 그렇지 않으면 '다름' 그 자체가 티 나는 이상 신호가 됩니다. 같은 환경에서 두 번의 값이 다른 것도 이상 특징입니다. 이 리스크는 지문 무작위화가 오히려 위험한 이유 글에서 온전히 논증합니다.
Canvas는 같은 계열 파라미터와도 함께 확인해야 합니다. 캔버스 렌더링에는 운영체제, 폰트, 그래픽카드가 떼려야 뗄 수 없고, 이 파라미터들은 같은 기기상을 가리켜야 합니다: macOS 상을 골랐다면 오디오, WebGL 이미지 같은 같은 그룹 파라미터도 macOS로서 합리적인 범위로 함께 맞춰야 하고, Canvas 하나만 보면 그룹 안의 어긋남을 놓치기 쉽습니다. 오디오 항목의 모드 논리는 AudioContext 핑거프린트 설정 방법 글에서 다뤘으니 발상을 그대로 가져와도 됩니다.
설정을 마쳤다면 검증을 한 바퀴 돌립니다. 지문 설정에서 Canvas 모드를 확인하면 오른쪽 지문 미리보기 패널의 Canvas 필드에 Noise[3LR450] 같은 코드가 표시됩니다. 이것은 이 노이즈 설정의 식별자로 환경마다 하나씩 있으며, 감지 페이지가 계산하는 해시값과는 별개입니다. 코드로 해시를 맞추지 마세요. 실제 측정값은 환경을 열어 감지 페이지에 접속해 확인하고 기대와 맞는지 대조합니다. 이후 프록시를 바꾸거나 지문 설정을 조정할 때마다 재측정을 거쳐 실전에 투입하세요.

자주 묻는 질문
Canvas 핑거프린트와 브라우저 핑거프린트는 같은 개념인가요?
아닙니다. 브라우저 핑거프린트는 수십 개 파라미터로 이루어진 전체이고, Canvas는 그중 렌더링 계열 특징 하나로 WebGL, 폰트 목록과 같은 부류입니다. 총점은 각 항목이 합쳐진 결과이며, Canvas 항목의 식별력이 높다고 전체 지문이 희귀한 것은 아닙니다.
Canvas를 비활성화하면 식별을 막을 수 있나요?
권하지 않습니다. Canvas는 수많은 웹 기능이 의존하므로 비활성화는 정상적인 이용에 지장을 줍니다. 게다가 정상 브라우저는 거의 모두 Canvas를 지원하므로 '미지원'이 오히려 희귀 특징이 되어 더 쉽게 걸러집니다. 합리적인 방법은 측정값의 출처와 일관성을 관리하는 것이지 API를 끄는 것이 아닙니다.
Canvas 핑거프린트는 브라우저 업데이트로 바뀌나요?
바뀝니다. 다만 리듬은 무작위화와 완전히 다릅니다. 브라우저 메이저 업데이트가 가져오는 렌더링 변화는 전 사용자가 동시에 바뀌므로 플랫폼도 이런 리듬은 경험했습니다. 실제 환경의 Canvas 값이 1년에 몇 번 바뀌는 것은 정상이고, 잦고 규칙 없는 변화가 이상입니다.
안티디텍트 브라우저로 환경마다 Canvas를 다르게 할 수 있나요?
할 수 있습니다. Noise 모드가 맡은 역할이 바로 이것으로, Canvas 값에 노이즈를 더해 대량 환경의 값을 서로 벌립니다. 전제는 노이즈 세기가 합리적이어야 하고 값이 해당 시스템의 정상 범위 안에 있어야 한다는 것입니다.
맺음말
Canvas 핑거프린트의 본질은 기기의 렌더링 경로가 캔버스 한 장에 집중드러나는 것으로, 항목 하나로는 신원을 특정할 수 없으면서도 스스로 말하기 가장 어렵고 현장에서만 잴 수 있는 항목입니다. 관리에서는 두 가지를 잡습니다. 환경 하나의 측정값이 재측정에 견딜 것, 환경 사이의 해시 차이가 충분히 벌어질 것, 그리고 같은 계열 파라미터가 같은 기기상을 가리킬 것입니다. 환경을 처음부터 구축하고 싶다면 MostMate 다운로드에서 환경을 만든 뒤 각 환경의 Canvas 값을 검증하고 실전에 투입하세요.
MOSTMATE
안전한 다중 계정 관리, 더 간편하게
첫 계정부터 MostMate와 함께 더 안전하고 스마트하며 효율적인 다중 계정 운영을 시작하세요.
- 독립적인 프로필. 일관된 식별 정보.
- AI 자동화 · 계정 건전성 · 팀 운영



