암호 모니터링
암호 모니터링은 사용자의 암호 자동 완성 키체인에 저장된 암호와 여러 온라인 조직에서 발생한 유출에 노출된 것으로 알려진 암호로 구성된 지속적으로 업데이트되는 선별 목록과 비교하여 매칭하는 기능입니다. 이 기능이 켜져 있으면 모니터링 프로토콜이 사용자의 암호 자동 완성 키체인 암호를 선별된 목록과 비교하여 지속적으로 매칭합니다.
모니터링 작동 방식
사용자의 기기는 계속해서 각 암호 또는 암호 관리자의 사용 패턴과 무관한 간격을 쿼리하면서 사용자의 암호에 라운드 로빈 점검을 수행합니다. 이를 통해 확인 상태와 유출된 암호가 선별된 목록이 최신으로 유지됩니다. 사용자가 가진 고유 암호 개수와 관련된 정보의 유출을 방지하기 위해 요청은 일괄 처리되며 동시에 수행됩니다. 고정된 수의 암호는 각 검사에서 동시에 확인되며 사용자가 가진 개수가 이 수보다 적은 경우 임의의 암호가 생성되고 쿼리에 추가되어 차이를 보완합니다.
암호를 매칭하는 방법
암호 매칭은 두 개의 프로세스로 이루어집니다. 가장 흔하게 유출되는 암호는 사용자 기기의 로컬 목록에 포함되어 있습니다. 이 목록에 사용자의 암호가 포함되면 외부 상호 작용 없이 즉시 사용자에게 알립니다. 이렇게 하면 암호 위반으로 인해 위험에 가장 많이 노출된 사용자 암호에 대한 정보가 유출되지 않습니다.
가장 빈도가 높은 목록에 해당 암호가 포함되어 있지 않으면 유출 빈도가 낮은 암호와 매칭됩니다.
사용자 암호와 선별된 목록 비교하기
로컬 목록에 없는 암호가 매칭되는 암호인지 확인하려면 Apple 서버와의 상호 작용이 필요합니다. 합법적 사용자 암호가 Apple로 전송되지 않도록 하기 위해 사용자의 암호를 대량의 유출된 암호 목록과 비교하는 일종의 암호화 비공개 교집합이 배포됩니다. 이렇게 하면 암호가 침해될 위험이 낮기 때문에 Apple에 정보가 거의 공유되지 않습니다. 사용자 암호의 경우 이 정보는 사용자 암호의 15비트 프리픽스 암호화 해시로 제한됩니다. 가장 흔하게 유출되는 암호 로컬 목록을 통해 이 상호 작용 프로세스에서 가장 자주 유출되는 암호를 제거하면 웹 서비스 버킷에서 암호의 상대적 빈도에 대한 델타 값이 감소하며, 이러한 조회 항목에서는 사용자 암호 추측이 불가능합니다.
기본 프로토콜은 이 문서 작성 시점에 약 15억개의 암호를 포함한 선별된 암호 목록을 215개의 서로 다른 버킷으로 분할합니다. 암호가 속한 버킷은 암호의 SHA256 해시 값의 처음 15비트에 기반합니다. 또한 유출된 각 암호(pw)는 NIST P256 곡선의 타원 곡선 포인트와 연결됩니다. Ppw = ⍺·HSWU(pw)에서 ⍺는 Apple만 알고 있는 비밀 임의 키이고 HSWU는 Shallue-van de Woestijne-Ulas 방법을 기반으로 암호를 곡선 포인트에 매핑하는 임의 오라클 함수입니다. 이러한 변환은 암호 값을 계산적으로 숨기고 암호 모니터링을 통해 새롭게 유출된 암호가 드러나지 않도록 설계되었습니다.
비공개 교집합을 계산하기 위해 사용자의 기기는 SHA256(upw)의 15비트 프리픽스 λ를 사용하여 사용자의 암호가 속한 버킷을 결정합니다. 여기서 upw는 사용자 암호 중 하나입니다. 기기는 자체 임의 상수 β를 생성하고 λ와 일치하는 버킷에 대한 요청과 함께 포인트 Pc = β·HSWU(upw)를 서버로 보냅니다. 여기서 β는 사용자의 암호에 관한 정보를 숨기고 해당 암호로부터 Apple에 노출되는 정보를 λ로 제한합니다. 마지막으로 서버는 사용자 기기에서 전송한 포인트를 가져와서 ⍺Pc = ⍺β·HSWU(upw)를 계산한 다음, 적절한 버킷 포인트 Bλ = {프리픽스 λ로 시작하는 Ppw | SHA256(pw)}과 함께 기기에 반환합니다.
반환된 정보를 통해 기기는 B’λ = {β·Ppw | Ppw ∈ Bλ}를 계산할 수 있으며, ⍺Pc ∈ B'λ의 경우에 사용자 암호가 유출되었는지 확인합니다.