Size: a a a

2019 July 10

OS

Olga Shkryaba in Android Guards
Rtem
Не помню чтобы я тебя банил тут за это =) Или ты про android_ru?
да, про android_ru
источник

R

Rtem in Android Guards
А, ну там народ нежный видимо да =) Разработчики! Их нужно любить и беречь.
источник

D

Dmitriy in Android Guards
Olga Shkryaba
ахах, я тут заблочена как раз за такие вопросы, так что поосторожнее там) публика очень чувствительная
я там забанен за молчание (люблю больше читать, чем писать)
источник

OS

Olga Shkryaba in Android Guards
источник

VR

Vitaliy Raevskiy in Android Guards
бан за молчание - это топчик
источник

R

Rtem in Android Guards
Ага.
источник

R

Rtem in Android Guards
Респект таким пацанам)
источник

VR

Vitaliy Raevskiy in Android Guards
которые молчат ?
источник

VR

Vitaliy Raevskiy in Android Guards
источник

A

Anton in Android Guards
Чё, теперь помолчать нельзя?
источник

D

Dmitry in Android Guards
Гы. Я постоянно захожу в тот чат, спрашиваю что-то и ухожу. Ибо как можно чтобы постоянно горели бейджи о непрочитанных сообщениях, приходится постоянно заходить в чат, отвлекает от работы
источник

R

Rtem in Android Guards
Dmitry
Гы. Я постоянно захожу в тот чат, спрашиваю что-то и ухожу. Ибо как можно чтобы постоянно горели бейджи о непрочитанных сообщениях, приходится постоянно заходить в чат, отвлекает от работы
Для этого в телеге завели архив
источник

D

Dmitry in Android Guards
Ну там тоже будут гореть непрочитанные =(
источник

D

Dmitry in Android Guards
Но бан за тишину жесть конечно
источник

D

Dmitriy in Android Guards
в десктопной workmode до архива норм был
источник

c

cyber in Android Guards
Rtem
@NeonLost как и обещал, позанимался твоей задачкой. Имею сказать по ней следующее. Твоя уверенностиь в “невзамываемости” шифра базировалась на том, что ты используешь шифрование без дополнения, что исключает атаку padding oracle, которую я в самом начале и собирался применить когда вообще зашел разговор о локальном взломе. Обычно такие брутфорсеры собираются на коленке на базе BadPaddingException или GeneralSecurityException и время взлома пинкода занимается около 20минут в самом худшем случае.

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

Все в этой схеме складно, если бы не 2 больших НО. Во-первых, Refresh Token - это не какой-то рандомный мусор, который ты можешь нагенерить с помощью SecurityRandom(), это вполне себе нормальная строка которая соответствует [a-zA-Z0-9]. Во-вторых, отсутствие дополнения вынуждает тебя или использовать RT равный размеру блока (16 байт) или дополнять пришедший с сервера токен статической строкой, что сводит на нет все преимущества предложенной схемы шифрования.

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

Чтобы быть совсем честным. Расшифровать приведенную тобой строку я конечно же не могу, по причинам описанным выше. Невозможно отличить правильный мусор от неправильного, даже будучи человеком. Поэтому способ вполне себе имеет право на жизнь для своего круга задач, но точно не для задачи безопасного хранения токенов.
так да, в этом и суть, что RT кратен размеру блока чтоб не было паддинга...но я не понял почему RT не может быть нагенерен с помощью SecureRandom() и завернут в Base64? RT летает везде как строка, но шифруется не как строка, а как набор байт, какая тут проблема?..)
источник

c

cyber in Android Guards
>но точно не для задачи безопасного хранения токенов
и тут почему нет, если расшифровать не получается?..(
источник

R

Rtem in Android Guards
cyber
так да, в этом и суть, что RT кратен размеру блока чтоб не было паддинга...но я не понял почему RT не может быть нагенерен с помощью SecureRandom() и завернут в Base64? RT летает везде как строка, но шифруется не как строка, а как набор байт, какая тут проблема?..)
Так-то может быть все что угодно на самом деле. Но в реально жизни происходит все несколько иначе. Я написал как бывает. Не видел еще ни одного приложения, в котором бы RT был нагенерен рандомом и завернут в Base64
источник

R

Rtem in Android Guards
Повторюсь, если брать те допущения, которые берешь ты, то схема кажется достаточно безопасной. Но этих допущений обычно не бывает =)
источник

c

cyber in Android Guards
а, так могу подсказать в каком приложении так реализовано...)
источник