클라이언트가 실시간 모드에서 Google 세이프 브라우징 v5를 사용하기로 선택하면 클라이언트는 로컬 데이터베이스에 (i) 호스트 서픽스/경로 프리픽스 URL 표현식의 SHA256 해시로 형식이 지정된, 양성일 가능성이 높은 사이트의 전역 캐시와 (ii) 호스트 서픽스/경로 프리픽스 URL 표현식의 SHA256 해시 프리픽스로 형식이 지정된 위협 목록 집합을 유지합니다. 개략적인 아이디어는 클라이언트가 특정 URL을 확인하려고 할 때마다 전역 캐시를 사용하여 로컬 확인이 실행된다는 것입니다. 이 검사를 통과하면 로컬 위협 목록 검사가 실행됩니다. 그렇지 않으면 클라이언트는 아래에 설명된 대로 실시간 해시 확인을 계속합니다.
클라이언트는 로컬 데이터베이스 외에도 로컬 캐시를 유지합니다. 이러한 로컬 캐시는 영구 저장소에 있을 필요가 없으며 메모리 압력의 경우 삭제될 수 있습니다.
절차에 대한 자세한 사양은 아래에서 확인할 수 있습니다.
실시간 URL 확인 절차
이 절차는 단일 URL u를 사용하고 SAFE, UNSAFE 또는 UNSURE를 반환합니다. SAFE를 반환하면 URL이 Google 세이프 브라우징에 의해 안전한 것으로 간주됩니다. UNSAFE를 반환하면 URL이 Google 세이프 브라우징에 의해 잠재적으로 안전하지 않은 것으로 간주되므로 최종 사용자에게 경고를 표시하거나, 수신된 메시지를 스팸 폴더로 이동하거나, 계속 진행하기 전에 사용자의 추가 확인을 요구하는 등의 적절한 조치를 취해야 합니다. UNSURE를 반환하는 경우 이후에 다음 로컬 확인 절차를 사용해야 합니다.
expressions을 URLu에 의해 생성된 서픽스/프리픽스 표현식 목록이라고 가정합니다.expressionHashes를 목록이라고 가정합니다. 여기서 요소는expressions에 있는 각 표현식의 SHA256 해시입니다.expressionHashes의 각hash에 대해 다음을 실행합니다.hash가 전역 캐시에 있으면UNSURE을 반환합니다.
expressionHashPrefixes를 목록이라고 가정합니다. 여기서 요소는expressionHashes에 있는 각 해시의 처음 4바이트입니다.expressionHashPrefixes의 각expressionHashPrefix에 대해 다음을 실행합니다.- 로컬 캐시에서
expressionHashPrefix을 조회합니다. - 캐시된 항목이 발견되면 다음을 실행합니다.
- 현재 시간이 만료 시간보다 큰지 확인합니다.
- 더 큰 경우 다음을 실행합니다.
- 찾은 캐시 항목을 로컬 캐시에서 삭제합니다.
- 루프를 계속합니다.
- 더 크지 않은 경우 다음을 실행합니다.
expressionHashPrefixes에서 이 특정expressionHashPrefix를 삭제합니다.expressionHashes내의 해당 전체 해시가 캐시된 항목에 있는지 확인합니다.- 찾은 경우
UNSAFE를 반환합니다. - 찾을 수 없는 경우 루프를 계속합니다.
- 캐시된 항목을 찾을 수 없는 경우 루프를 계속합니다.
- 로컬 캐시에서
- RPC SearchHashes 또는 REST 메서드 hashes.search를 사용하여
expressionHashPrefixes를 Google 세이프 브라우징 v5 서버로 전송합니다. 오류가 발생한 경우 (네트워크 오류, HTTP 오류 등)UNSURE를 반환합니다. 그렇지 않으면 응답이 SB 서버에서 수신한response(위협의 성격(소셜 엔지니어링, 멀웨어 등)을 식별하는 일부 보조 정보와 캐시 만료 시간expiration이 포함된 전체 해시 목록)이 되도록 합니다. response의 각fullHash에 대해 다음을 실행합니다.expiration와 함께fullHash를 로컬 캐시에 삽입합니다.
response의 각fullHash에 대해 다음을 실행합니다.isFound을expressionHashes에서fullHash을 찾은 결과라고 하겠습니다.isFound이 False이면 루프를 계속합니다.isFound이 True이면UNSAFE를 반환합니다.
SAFE를 반환합니다.
이 프로토콜은 클라이언트가 서버에 expressionHashPrefixes를 언제 전송하는지 지정하지만, 어떻게 전송하는지는 의도적으로 지정하지 않습니다. 예를 들어 클라이언트가 단일 요청으로 모든 expressionHashPrefixes를 전송해도 되고, 클라이언트가 expressionHashPrefixes의 각 개별 접두사를 별도의 요청으로 서버에 전송해도 됩니다 (아마도 병렬로 진행). 단일 요청에서 전송되는 해시 프리픽스 수가 30개를 초과하지 않는 한 클라이언트가 expressionHashPrefixes의 해시 프리픽스와 함께 관련이 없거나 무작위로 생성된 해시 프리픽스를 전송해도 됩니다.