Устройства, запущенные с Nougat или более ранними версиями, не обязаны поддерживать аттестацию с аппаратной поддержкой, но вместо того, чтобы просто давать сбой при запросе аттестации, они генерируют аттестацию в программном обеспечении, и это то, что вы видите: аттестация программного обеспечения для оборудования. на основе ключа. Если вы изучите запись аттестации (см. https://github.com/googlesamples/android-key-attestation для примера кода) вы обнаружите, что уровень безопасности аттестации - KM_SECURITY_LEVEL_SOFTWARE, но уровень безопасности keymaster - KM_SECURITY_LEVEL_TRUSTED_ENVIRONMENT. Это означает, что ключ на самом деле находится в защищенном оборудовании, но аттестация была сгенерирована программным обеспечением Android.
Чем это отличается от аттестации, сгенерированной безопасным оборудованием, с корнем аттестации Google?
Если злоумышленник скомпрометировал программное обеспечение данного устройства Android в достаточной степени, чтобы иметь возможность изменить работу демона хранилища ключей, он может заставить программное обеспечение сгенерировать любой вид подтверждения, который они хотят. Они могут заставить его сгенерировать запись аттестации, утверждающую, что ключ находится в защищенном оборудовании, когда это не так, или запись, в которой утверждается, что ключ имеет определенные ограничения на его использование, когда это не так. Чего они не могут сделать, так это подписать его с помощью ключа, который связывается с корнем Google.
Однако злоумышленник, взломавший Android, не может изменить работу защищенного оборудования. Если аттестация связана с корнем Google, тогда вы можете быть уверены, что аттестация была создана на защищенном оборудовании и, следовательно, защищена от злоумышленников, которые могут скомпрометировать ОС Android.
Кроме того, если вы проверите статус отзыва сертификатов в цепочке и ни один из них не отозван, вы также можете быть уверены, что в защищенном оборудовании нет известных уязвимостей, которые могли бы сделать возможной компрометацию ключа или аттестации. . Если обнаружена уязвимость, утечка ключей аттестации или возникнет другая проблема, Google отзовет ключ подписи аттестации, и вы увидите это в цепочке отзыва.
Обобщить:
- If you see an attestation chain that doesn't end in the Google root, you should assume that either:
- The device is not a Google Play device, or
- Устройство было выпущено с версией Android до Oreo.
- Если вы видите цепочку аттестации, содержащую отозванный сертификат, вы должны предположить, что возникла какая-то проблема. Чтобы узнать, что именно, проверьте данные отзыва.
В любом случае тот факт, что аттестация не заслуживает полного доверия, не означает, что вы должны предполагать, что устройство скомпрометировано или каким-то образом неисправно. В этом отношении полностью надежная аттестация не доказывает, что устройство является безопасным и бескомпромиссным, она просто доказывает, что ваши ключи хранилища ключей размещены на безопасном оборудовании, что означает, что вы можете предположить, что ключи не могут извлекаться или использоваться способами, которые аппаратное обеспечение должно предотвратить.
Извините, если это кажется очень тонким и сложным. Безопасность - дело тонкое и никогда не бывает простым «да» или «нет».
person
divegeek
schedule
13.08.2019