Есть приложение в Google Play, которое получает информацию с сервера посредством вызова API, защищенного SSL. С помощью charles расшифровал SSL трафик, разобрался со структурой передаваемых данных. Хочу использовать эту информацию, чтобы выпустить свое приложение и вызывать это API.
Интересует правовой вопрос подобных действий. Законно ли использовать API, защищенное SSL и на основе него сделать свое приложение?
Законно или нет - это сложный вопрос. Смотря где, какое, как и когда. Тут даже опытный юрист гарантий не даст, окончательно решит только судья когда вы будете отвечать в суде :) Другой вопрос что вряд ли будете - кому вы нужны. Скорее вам просто создадут проблем и в лучшем случае вы будете испытывать постоянные проблемы с тем чтобы ваше приложение работало.
Даже если вы получите какую-то информацию и вам за это ничего не будет, то за ее использование можно уже огрести.
Самым надежным вариантом будет договориться с владельцами API, найти чем вы можете им быть полезны со своей аппой и предложить какие-то условия. А может им в принципе не жалко.
Обычный SSL (https) сам по себе ко всему этому не имеет отношения.
Да, согласен, что сам по себе SSL не имеет к этому отношение. Это API сейчас защищено SSL и чтобы понять какие данные передаются по сети приходится использовать MITM с помощью Charles. В андроиде, начиная с версии 7, внесли изменение и теперь по-умолчанию приложение не доверяет сертификатам, которые были загружены с диска. Т.е. на новых андроидах вообще MITM не сделаешь. На этот случай у меня есть старый андроид, где нет этой проблемы, но как-то все это наводит на мысли.
Нет ничего незаконного в том, что Вы используете чье-то API, если оно публично и доступно извне.
Другое дело, что его быстро для Вас прикроют, если им это не понравится.
Оно доступно извне, но по сути для понимания того, какие данные передаются по сети использую атаку MITM с помощью прокси Charles, добавляя его сертификат в доверенные. К тому же начиная с Android версии 7 так просто сертификат не добавишь и по-умолчанию нет доверия к пользовательским сертификатам. Т.е. получается если бы у меня не было телефона со старым андроидом, то трафик я бы не смог расшифровать и это вызывает вопросы законности подобных действий.
Дмитрий, на своем устройстве со своим траффиком вы можете делать все что угодно, сайт вы не ломали, приложение не декомпилировали, а значит ничего незаконного нет.
Отправлять любые данные, не нарушающие работоспособность удалённых систем через интернет - законно. Ограничение стороннего доступа - обязанность владельца сервера, т. е. в вашем случае API.
Использовать любое публичное апи, технически может кто угодно и ему за это ничего не будет, но подобное довольно просто обнаружить, поэтому если вы так сделаете то вас быстро прикроют. Наказания вы не получите, но потратите силы на то что решается минут за 10
Дмитрий, выпустить новое обновление безопасности довольно просто, а потом просто перейдут на аутентификацию и другие истории. А еще . можно банально заблокировать пул ваших ip
Иван Шумов, обращение к API будет с телефонов тех, кто использует приложение. Т.е. по IP проблематично заблокировать.
С аутентификацией сложнее, т.к. скорее всего в клиентское приложение добавят некую генерацию кода и получить данный код можно будет только если декомпилировать их приложение, а это наверное точно не законно :)
Дмитрий, да используют обычный JWT с токенами на 5 минут с другим identity server с другими сертификатими, дополнительным шифрованием payload RS256 (тоже ассиметричное шифрование, только ключ вы вообще никогда не получите). Работы без шуток на 10-30 минут суммарно
Сейчас в этом приложении тоже есть генерация токена, но я его так же получаю в своем приложении и отправляю во все запросы. Все работает.
Т.е. получается все что умеет их приложение по сути может уметь и мое.
Вопрос только в том, что мое приложение перестанет работать если они добавят такие возможности. Но это опять же произойдет не за одно обновление, т.к. обратную совместимость они не могут потерять.
В общем лучше пытаться договориться с владельцем, но это проблематично. Не хочется потратить время на создание приложения, а потом оно перестанет работать.