dice83의 모든 결과는 브라우저의 웹 보안 API에서 생성됩니다. 이는 온라인 뱅킹을 보호하는 것과 동일한 암호학적 엔트로피 소스입니다. 이 페이지에서는 그 기술을 설명하고 직접 검증할 수 있도록 합니다.
물리적 현실에서 무작위 결과까지, 네 단계를 거칩니다.
기기의 실리콘에서 발생하는 열 잡음, 전기적 지터, 양자 효과가 예측 불가능한 물리적 신호를 생성합니다.
운영 체제가 이러한 신호를 수집, 혼합, 정제하여 CSPRNG을 통해 고품질 엔트로피 풀을 구성합니다.
브라우저가 W3C에서 정의한 getRandomValues()를 통해 OS 엔트로피를 노출합니다.
JavaScript가 원시 바이트를 결과로 변환합니다: 동전, 주사위, 색상, 패턴. 서버는 이미 역할을 마쳤습니다.
클릭 한 번으로 동전을 10,000번 던져 보세요. 앞면 비율이 50%로 수렴하는 과정을 확인하세요.
6면 주사위를 10,000번 굴려 보세요. 히스토그램에서 6개 면이 균등한 높이에 가까워야 합니다.
getRandomValues() 메서드는 월드 와이드 웹 컨소시엄(W3C)이 정의한 Web Cryptography API의 일부입니다. 이 명세는 구현체가 충분한 엔트로피로 시딩된 암호학적으로 강력한 의사 난수 생성기(CSPRNG)를 사용하도록 요구합니다. 모든 주요 브라우저가 이 요구 사항을 충족합니다: Chrome, Firefox, Safari, Edge 모두 운영 체제의 엔트로피 소스에서 추출하며, 운영 체제는 하드웨어 무작위성을 수집합니다.
dice83의 모든 도구를 구동하는 무작위 바이트는 암호화 키, 세션 토큰, TLS 핸드셰이크 논스를 생성하는 데 사용되는 것과 동일한 암호학적 표준을 충족합니다. 이는 웹 브라우저에서 사용할 수 있는 가장 강력한 무작위성입니다. 약한 무작위성은 전체 웹의 보안을 위협하기 때문에 이 명세가 존재합니다. 모든 브라우저 벤더가 독립적으로 이 API를 암호학적 표준에 맞게 구현하고 테스트합니다.
getRandomValues()에 대한 MDN 웹 문서 페이지는 기술 문서, 브라우저 호환성 표, 사용 예제를 제공합니다. W3C 명세 섹션은 구현체가 충족해야 하는 정확한 요구 사항을 정의합니다. 이들은 웹 표준 커뮤니티가 유지 관리하는 공개 문서입니다.
암호학적 무작위성은 출력 범위 전체에 걸쳐 균일한 분포를 보장합니다. 모든 비트는 다른 모든 비트와 독립적입니다. dice83 자체를 포함한 어떤 관찰자도 이전 출력이 아무리 많더라도 다음 출력을 예측할 수 없습니다. 이 페이지의 두 가지 실시간 테스트가 이러한 특성을 경험적으로 입증합니다: 수렴 테스트는 많은 시행을 거치면 앞면과 뒷면이 정확히 50/50에 근접함을 보여주고, 분포 테스트는 주사위의 6면 모두 동일한 빈도로 나타남을 보여줍니다. 각 테스트를 원하는 만큼 실행할 수 있습니다. 매번 실행할 때마다 기기에서 새로운 엔트로피를 사용합니다.
서버는 페이지를 전달합니다. 모든 결과는 기기에서 생성됩니다.
모든 무작위 값은 브라우저의 웹 보안 API에 의해 생성됩니다. 결과는 기기의 메모리에만 존재합니다. 서버는 생성된 어떤 값도 수신, 저장, 처리하지 않습니다.
굴림 기록과 세션 통계는 브라우저의 localStorage에 저장됩니다. 브라우저 설정을 통해 언제든지 삭제할 수 있습니다. dice83는 다른 기기의 데이터에 접근할 수 없습니다.
추적 쿠키, 분석 픽셀, 핑거프린팅 스크립트가 없습니다. dice83는 어떤 종류의 쿠키도 설정하지 않습니다. 활동 패턴은 어떤 서버에도 흔적을 남기지 않습니다.
dice83 URL을 공유하면 수신자는 도구 설정만 받습니다. 수신자의 브라우저가 자체 엔트로피에서 독립적인 결과를 생성합니다. 동일한 링크를 방문하는 두 사람은 완전히 별개의 결과를 얻습니다.
일일 영감
A' Design Award의 심사위원 선정 작품, 매일 아침 새롭게 소개됩니다.