Search
Write a publication
Pull to refresh
9
0
Иван Кинаш @receiver

CEO, Co-founder, quite technical though

Send message

Подоспело дополнение - https://licelus.com/guide-to-mobile-application-protection

Год слез и пота анализа нашего опыта и гид готов.

Подавляющее большинство приложений не использует вторую схему, что печально. Раз статья пиарная, будет справедливым сказать: «пользуйтесь DexProtector!»
… конвертер из JC SDK 2.2.x не конвертит апплеты, в которых используется int...

-i опция конвертора (-i
Instructs the Converter to support the 32-bit integer type.)

Не совсем справедливо делать выводы о том как работает менеджер памяти и gc в общем случае, основываясь на поведении конкретных реализаций Java Card.

Карт, поддерживающих 3.x версию SDK мне не попадалось.

Карт, кстати, достаточно,  в том числе и российских www.esmart.ru/_products/_token-gost.  Опять таки, нужно разделять 3.0.x Classic  и Connected Edtion. Хоть Вы и говорите в начале о том, что речь пойдет о 2.2.1, но было бы здорово добавить, как дела обстоят сейчас.
Пардон, спросоня.
«Произвольные байты это не 1…120», имел в виду, конечно, 0...119.
Спасибо за статью. Вы пишите, что int не поддерживается, на самом деле это не совсем так. Данный тип является опциональным по спецификации, и в конкретных реализациях JCRE он может быть, и может не быть.

По примеру:

        // Заполняем буфер произвольными байтами
        for (byte i = 0; i < 120; i++) {
            buffer[i] = i;
        }



Произвольные байты это не 1…120, как минимум рекомендуется сделать так:
RandomData.getInstance(RandomData.ALG_SECURE_RANDOM).generateData(buffer, (short)0, (short) 120);

будет надежнее и быстрее чем цикл.

Второй момент — фрагментация памяти карты при управлении апплетами. Апплет в памяти карты — что файл на жестком диске. Если вы удалите апплет, записанный перед каким-нибудь другим, в памяти карты останется «дырка» свободного пространства размером с удаленный апплет.

Здесь есть некоторая путаница,  следует различать код апплета и созданный экземпляр класса. Код апплета может храниться как в EEPROM, так и в ROM (маска). Экземпляр класса хранится в EEPROM.
Соотвественно, можно создать несколько экземпляров апплета с разными AID, и при этом будет выдяляться память необходимая именно на хранение экземляра класса апплета.
Поскольку с отладкой апплетов все сложно в этом случае можно посоветовать комментировать части апплета и заливать его в карту, пока не наткнетесь на часть, которая вызывала ошибку.

Тут все как раз просто. Есть встроенный в NetBeans отладчик правда для JC 3.0.4, есть JCOP Tools, а если хотите под все платформы и бесплатно, и еще писать unit-тесты — вот наш проект jCardSim.
Мы вынуждены вставлять водяные знаки, как раз из-за таких случаев, чтобы иметь возможность блокировать лицензию.
Чувака нашли, бригада с паяльниками выехала :-)
Такая защита — это результат работы одной из версий нашего продукта DexProtector, к сожалению, иногда, среди наших хороших клиентов, попадаются злые негодяи, которые во-первых портят себе карму и вредят пользователям Android, а во вторых приводят к false positive антивирусов для нормальных защищенных приложений, соответственно, вредят и нам. Если не сложно, можете прислать нам этот apk, для того чтобы мы разобрались с этим нехорошим человеком?

Спасибо за пост.
Внутри jCardSim? :-)
Чувствуется, что беседа заходит в тупик, и пропадает всякое желание тратить свое время на ни к чему не ведущую полемику. Где вы нашли RC4 и 3DES? На всякий случай, восклицательный знак стоит трактовать как «кроме». Я ничего никому не рекламирую, но призываю думать, и разумеется, без фанатизма.

P.S.
“Just because you're paranoid doesn't mean they aren't after you”
Школота минусует, я смотрю, ну вперед, продолжайте в том же духе.

Как вы правильно подметили, при «правильном» использовании. Вот пример tools.ietf.org/html/draft-ietf-ipsec-ciph-aes-ctr-00. Опять же сам факт неправильного использования сводит на нет все преимущества использования такого режима. Найдите в рекомендуемых параметрах SSL например вот здесь wiki.mozilla.org/Security/Server_Side_TLS хоть один CTR режим.

+ вот еще ссылка www.nsa.gov/ia/programs/suiteb_cryptography/
The Galois/Counter Mode (GCM) is the preferred AES mode.

Для общего развития можно почитать habrahabr.ru/post/120096/
Как раз CTR один из самых уязвимых режимов работы, google в помощь ctr cipher mode vulnerability.

И если говорить формально, то распараллеливаются не режимы работы, а базовые циклы конкретного симметричного шифра.
Приложения из Yandex.store работают отлично (пока с проблемами не сталкивался) и сам store, соответственно.
В ожидании жены, примеряющей платья, я как-то около получаса простоял недалеко от островка, торгующего какой-то бижутерией, понаблюдал за трафиком и реакцией людей, потом спросил у продавца в какую сумму обходится аренда, сумма меня впечатлила. Вывод, который я сделал для себя: островки в торговых центрах такого формата — штука очень спорная, мне известен только один пример реально успешных островков — WrapMe, и по всей видимости, островки, которые делают какую-то полезную услугу, ту же упаковку, например, могут быть весьма успешными.
Кстати, вам можно было бы попробовать сделать корнер, в каком-нибудь большом магазине электроники, аудитория качественнее, не знаю насколько это реализуемо, но попробовать можно.
[grammar nazi mode on] then -> than
Я игрался в клон — Clumsy Bird на Android, за час больше 10 не научился набирать, подпилил кое-что в APK, и птичка стала летать скозь стены, но вы ребята, конечно, отлично заморочились!
image
Чтобы заниматься разработкой защиты, надо как минимум на один шаг опережать противника по другую сторону баррикад, а следовательно знать методы взлома, иначе защита просто не будет никому нужна. Хотя, устроить баттл reverse/cracking vs. protection было бы здорово.
Из чего вы сделали вывод о том, что никто из докладчиков не знает, как ломать мобильные приложения?

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

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity