Безопасность приложения Райффайзенбанка

Первый пост пишу в попытке повлиять на Райффайзенбанк.

С начала августа Райф заставляет пользователей приложений онлайн банка и инвестиций устанавливать 4-значный код, который будет использоваться для входа. То есть, вместо сочетания "логин + пароль + код из смс", Райф заставляет использовать для входа всего 4 цифры. Если код не установить, приложениями пользоваться нельзя. Если установить код, то для входа в приложение потребуется ввести только его (ни пароля, ни смс-кода)!

Вот ответ разработчиков на просьбу вернуть логин без кода:

На данный момент вход по короткому коду является обязательным.
Короткий код безопаснее входа по логину и паролю. Короткий код хранится только на стороне пользователя.
Для входа по короткому коду обязателен доступ к устройству, необходимо знать короткий вход / иметь биометрические данные клиента (отпечаток, лицо).

Типичная тупая отписка, возникают вопросы:

1. Если код хранится только на стороне пользователя, то есть аутентификация происходит на стороне клиента, можно клиентское приложение взломать?

2. А пароль где хранится, на стороне банка? Они хранят мой пароль в сыром виде?!

3. Для входе с логином и паролем не требуется доступа к устройству? xD


Короче, тут есть представители Райфа? Вы чё творите то?

Безопасность приложения Райффайзенбанка

Правила сообщества

Обязательно к прочтению для авторов:

1. Если вы добавляете пост, утверждающий об утечке данных или наличии дыр в системе, предоставьте ссылку на источники или технически подкованное расследование. Посты из разряда "Какой-то банк слил данные, потому что мне звонили мошенники" будут выноситься в общую ленту.
2. Все вопросы "Как обезопасить сервер\приложение\устройство" - в лигу "Компьютер это просто".

Обязательно к прочтению для всех:

Добавление ссылки разрешено если она не содержит описание коммерческих (платных) продуктов и/или идентификаторов для отслеживания перехода и для доступа не нужен пароль или оплата в т.ч. интернет-ресурсы, каналы (от 3-х тематических видео), блоги, группы, сообщества, СМИ и т.д.


Запрещены политические holy wars.

По решению модератора или администратора сообщества пользователь будет забанен за:

1. Флуд и оскорбление пользователя, в т.ч. провокация спора, флуда, холивара (высказывание без аргументации о конкретной применимости конкретного решения в конкретной ситуации), требование уже данного ответа, распространение сведений порочащих честь и репутацию, принижающих квалификацию оппонента, переходы на личности.

2. Публикацию поста/комментария не соответствующего тематике сообщества, в том числе обсуждение администраторов и модераторов сообщества, для этого есть специальное сообщество.

3. За обвинение в киберпреступной деятельности.

4. За нарушение прочих Правил Пикабу.

10
DELETED
Автор поста оценил этот комментарий

Никто нормально не ответил, по этому попробую я.

Немного лирики (на самом деле все работает по другому, но для наглядности пойдет).

- Логин и пароль в открытом виде нигде не хранится, кроме вашей памяти и стикера у монитора.

- Хранят хэш. Хэш это результат некоторой математической асимметричной функции, через которую прогнали ваш логин и пароль.

- Асимметричная функция - это такая штука которая в одну сторону считается легко, а вот в обратную оооочень сложно. Пример простейшей (подчеркиваю, простейшей) функции - деление на три. Взяв число 10 мы можем легко поделить его на 3 и получить 3.33(3), но умножив результат на три число 10 мы не получим. Можем еще, например, после деления на три отбрасывать целую чать... итог такой функции будет 0.333(3), что опять таки при умножении на три ну ни как не даст 10, а какое целое число прибавлять вообще не ясно.

- Существуют алгоритмы хэшей которые позволяют из 8-знака получить 32 значный (и более) хэш.

- Мы можем брать хэши от логин+пароль+дата\ID-приложения\MAC-устройства и пр.


Итак. Вы вводите пароль - ваш браузер считает от нее хэш и передает 32-знака на сервер. Вы вводите ту же связку в приложении, процедура повторяется Итог - пароль в открытом виде никуда не передался, мы повысили его сложность (с 8 знаков до 32).

Осталось две проблемы 1. если кто-то перехватит хэш по дороге из приложения к банку, то он может получить доступ к системе

2. как узнать, что хэшом воспользовался именно пользователь, а не злоумышленник, который этот хэш скопировал себе.

Первый пункт выходит за рамки вопроса, по этому оставим его. А вот со вторым все просто - мы можем зашифровать хэш, можем закрыть паролем приложение.


Собираем знания воедино.

- При регистрации, приложение создает уникальный ID, получает от вас логин и пароль. Считает хэши и передает их на сервер - вы авторизованы.

- Закрывает приложение PINом, которым шифрует хэши логина, пароля и ID приложения.

Итог: PIN-код никуда не передается ни в каком виде. Логин и пароль в открытом виде не хранятся, а их расшифровка займет много-много лет.


Раньше злоумышленнику достаточно было подсмотреть ваш логин и пароль. А вам е*ся с вводом длинного зло*чего пароля.


Что теперь изменилось для вас?

- Надо запомнить 4 цифры PIN-кода

Что теперь изменилось для злоумышленника:

1. Возросла сложность перебора пароля с 8 знака на 32+

2. Eму необходимо похитить зашифрованный хэш логина+пароля

3. Ему необходимо похитить ID-приложения

4. Необходимо узнать PIN для расшифровки данных из п.2 и п.3

т.е по факту подсмотреть пин и похитить устройство, которое может (и должно) быть закрыто еще одним паролем\pin-ом.


P.s. На самом деле там под капотом еще пачка технологий, типа изменяющихся во времени хэшей, добавления соли и прочих крипто-штук. Но понимания это не прибавит, а ответ сильно усложнит.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Спасибо большое за такой развернутый ответ. Механика всего этого мне более-менее понятна, но собственно пункт 4 меня изначально и смутил - "4. Необходимо узнать PIN для расшифровки данных из п.2 и п.3, т.е по факту подсмотреть пин и похитить устройство". Подсмотреть пин проще чем пароль.

По итогам этого поста - похоже придется смириться и закрывать экран от всех, когда ввожу пин-код.

показать ответы
6
Автор поста оценил этот комментарий

Сейчас такое много где, это локальный пин код. На безопасность это не влияет, так как пин код только защищает настоящий пароль, а сам по сети не передается. А так как пароль не вводится пользователем, то его можно сделать очень сложным. Пин код же защищен на уровне операционной системы, на нерутованном телефоне его не взломать.

Что касается райфа, у них в приложении есть совсем другая дырка, даже дырища. Двухфакторная аутентификация у них по факту не работает, так как код верификации приходит на этот же телефон в это же приложение и перевести подтверждение на другой телефон невозможно, из за чего двухфакторность вообще не имеет смысла, а только добавляет неудобства.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Если бы они давали выбор - использовать пин-код или продолжать вводить логин-пароль, то было бы понятно. Мне же не дали выбора, и говорят что так безопаснее. Как бы ни так, подсмотреть код из 4 цифр, который вводит пользователь, проще чем подсмотреть пароль. Как теперь в общетвенном месте в банк заходить - закрывая экран рукой?

показать ответы
16
Автор поста оценил этот комментарий

Вроде же обычная практика. Полноценная авторизация в приложениях используется только при первом входе. Дальше на телефоне хранится токен, а для его защиты используется код для входа. Другое дело было бы, если для входа в интернет-банк через браузер достаточно было бы только этого 4-х значного кода.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Я пока не встречал другого приложения, где было бы сделано так же.

показать ответы