Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Проверяем, что алгоритм, с помощью которого подписано тело, нами поддерживается:
There have been ways to exploit JWT libraries by replacing RS256 with HS256 and using the known public key as the HMAC-SHA256 key, thereby allowing arbitrary token forgery.
Клиент начинает процесс и получает nonce с сервера, и он же (клиент) отправляет nonce гуглу.
— Сервер с гуглом не общается при этом?
Клиенту возвращается JWS, с информацией о нем же самом, т.е. о клиенте.
— Сервер и тут не общается с гуглом? Нужна ли информация клиенту о нем же? И почему время начинается от гугла, а не от сервера?
Клиент отправляет JWS в неизменном виде на Backend для проверки.
— На этом этапе Клиент точно не меняет ничего? даже время?
На стороне сервера: анализ того что прошло через руки клиента? И тут сервер тоже не общается с гуглом? (ну хотя бы проверки ради)
Вся верификация клиента происходит на основании данных полученных от клиента, или прошедших через клиента, т.е. еще до того как будет сделан вывод по верификации, сервер полагает что эти данные верны и неподдельны, презумпция?
И что позволяет проверить технология:
Что именно вы являетесь автором приложения, которое сейчас взаимодействует с сервером.
— Конечно же я, но только вот кто же я, то ли я это клиент, то ли не клиент?
Что в процессе взаимодействия клиента и сервера нет больше никого, кроме вашего приложения и сервера.
— На чем основан такой вывод? из статьи ничего этого не видно.
Есть два параметра, на основе которых можно принимать решение о надежности устройства: ctsProfileMatch и basicIntegrity.
ctsProfileMatch — более строгий критерий, он определяет сертифицировано ли устройство в Google Play и верифицировано ли устройство в сервисе проверки безопасности Google.
basicIntegrity — определяет, что устройство не было скомпрометировано.
— И тут не все ясно, сервис может подтвердить что когда то устройство было зарегистрировано у них, всего лишь. А было ли оно скомпрометировано или нет откуда гуглу это ведомо?
Что операционная система мобильного устройства не претерпела изменений, критичных для обеспечения безопасного обмена с сервером (не «заручено» — не взломано, а также то, что устройство прошло аттестацию совместимости с Android).
— Вообще ничем не подтвержденный предосудительный рекламный вывод, ведущий в обман доверчивого читателя?
И еще вопрос: сервер самостоятельно без гугла не может провести всю процедуру, рассчитывая и опираясь на себя самого, а не на чей то посторонний авторитет, и доверяя только себе?
Это предложение гугла, который собственно и заинтересован в сборе информации не обязательно его касающейся, стоит ли идти в капкан?
Во первых о какой угрозе идет речь, и во вторых для этого вовсе не обязательно серверу каждый раз использовать ресурсы клиента для подобной проверки, серверу достаточно самому напрямую без ухищрений спросить об этом у всезнающего сервиса.
SafetyNet Attestation — описание и реализация проверки на PHP