Caputchin
Caputchin 이해하기

계측

Proof of work는 노력이 들었음을 증명합니다. 그것은 무엇이 그것을 들였는지는 증명하지 않습니다. 진짜 브라우저 농장을 가진 작정한 공격자는 퍼즐을 싸게 갈아낼 수 있습니다. 계측은 그 간극을 닫는 두 번째 계층입니다: 그것은 그 일이 진짜 브라우저 안에서 일어났음을 증명합니다.

동작 방식

모든 요청에서, Caputchin은 갓 만든 일회성 JavaScript 프로그램을 생성해 방문자의 브라우저에서 돌립니다. 그 프로그램은 진짜 브라우저만 가진 기계를 가동하고, 자기가 관찰한 것을 보고합니다:

  • 진짜 브라우저 기능이 있고 올바르게 동작하는지 확인하는 브라우저 API 탐침.
  • 비트 단위 정수 연산의 연산 사슬.
  • 요소의 트리를 짓고, 레이아웃 엔진이 그것들에 대해 계산하는 값을 읽고, 그것들을 도로 헐어 내리는 DOM 산술.

요령은 비대칭입니다: 진짜 렌더링 엔진은 거의 공짜로 맞는 답을 내는 반면, 헤드리스나 스크립트 런타임은 이 연산을 스텁으로 처리하거나, 잘못 구현하거나, 속도를 위해 건너뜁니다. 그 불일치가 방문자를 들통나게 합니다.

Content-Security-Policy

프로그램이 방문자의 브라우저에서 eval을 돌리므로, 당신의 위젯을 임베드하는 페이지는 그 script-src Content-Security-Policy에서 'unsafe-eval'을 허용해야 합니다. 이것에는 대체가 없습니다: 'unsafe-eval'이 차단되면, 프로그램이 돌 수 없고 검증이 실패합니다. 당신의 정책이 그것을 허용할 수 없다면, 키의 보안 페이지에서 계측을 끄세요, 그것은 자동화 브라우저 탐지를 대가로 그 요건을 떨굽니다(proof of work와 모든 필수 게임은 여전히 돕니다). 전체 호스트 페이지 정책은 게임 샌드박싱을 보세요.

왜 proof of work와 짝짓는가

두 계층은 서로의 사각을 덮습니다. Proof of work만으로는 진짜 브라우저가 싸게 채굴할 수 있고; 계측만으로는 그 일을 결코 하지 않는 스크립트가 위조할 수 있습니다. 함께 그것들은 두 독립 축에서 비용을 올립니다: proof of work는 노력을 증명하고, 계측은 환경을 증명합니다.

난독화

프로그램이 방문자에게 출하되므로, 동기 있는 공격자가 그것을 연구해 답을 미리 계산하려 들 수 있습니다. 그것을 더 어렵게 하려고, 프로그램은 난독화됩니다. 키의 보안 페이지는 난독화 수준을 노출합니다: 그것을 올리면 더 많은 서버 측 CPU를 대가로 프로그램이 역공학하기 더 어려워집니다. 같은 신호가 탐지된 헤드리스와 WebDriver 클라이언트를 단호히 거부하는 자동화 브라우저 차단 옵션을 뒷받침합니다.

정직한 한계

계측은 완벽하지 않습니다. 스텔스 브라우저는 그것이 찾는 단서를 패치하고, 확인 자체도 깨질 수 있다고 적습니다. 그것은 여럿 중 한 계층이며, proof of work와 키의 나머지 보안 설정과 쌓일 때 가장 강합니다.

이 페이지에서