- PVSM.RU - https://www.pvsm.ru -
В данном цикле статей пойдет речь об использовании Java смарт-карт (более дешевых аналогов электронных ключей) для защиты программного обеспечения. Цикл разбит на несколько глав.
Для прочтения и осознания информации из статей вам понадобятся следующие навыки:
Цель цикла — познакомить читателя с Ява-картами (литературы на русском языке по их использованию крайне мало). Цикл не претендует на статус «Руководства по разработке защиты ПО на основе Ява-карт» или на звание «Справочника по Ява-картам».
В 90% случаев вы не сможете придумать такого алгоритма, который обладал бы всеми следующими свойствами:
Если вы попали на эти 90%, то вам в обязательном порядке следует:
Если вы желаете выстроить надежную защиту, ключи шифрования трафика должны меняться. Новый ключ следует генерировать как минимум каждый раз, когда запускается ваше приложение. Генерировать сессионные ключи следует на основании данных, как предоставленных картой, так и вашей программой. Механизм защищенной сессии может в примитивном варианте выглядеть, например, так:
Внимание! Ни в коем случае не делайте так, как описано.
В случае, если расшифрованные данные кажутся карте некорректными, ее следует заблокировать. Самый простой вариант реализовать подобный вариант — завести в классе апплета булево поле CardIsLocked и проверять его содержимое в методе process перед вызовом метода, соответствующего переданному коду команды. Если CardIsLocked — отдавать софту вместо данных ошибку.
Themida по праву считается одним из самых трудных для снятия протекторов. Однако просто повесить сверху проектор — мало. Если вы желаете построить действительно надежную защиту, вам следует задействовать API Themida в полной мере:
Работая с криптографией важно понимать, что вы делаете, что можно делать, а чего нельзя. Разумеется, если вы защищаете смарт-картой консольный тетрис, вы можете позволить себе все, что угодно. Но если этот тетрис уникален и принесет вам завтра миллион долларов… Тогда, например, единожды использовав определенный вектор инициализации с конкретным DES ключом, не делайте это снова.
Не изобретайте собственных супер-секретных-никому-не-известных собственных алгоритмов шифрования и хеширования. Помните о судьбе GSM A5/3 шифра и его бедных авторах, решивших, что уж они-то суперкриптографы.
Спроектировав супер-стойкую систему защиты не оставляйте в ней тупых дырок, вроде той в банковском клиенте на базе BS-Client [6].
Спасибо всем, кто дочитал до этого места. Благодарности и негодования принимаются.
Буду рад любым вопросам в комментариях и постараюсь обновлять статью так, чтобы она включала ответы.
Автор: FractalizeR
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/java/88671
Ссылки в тексте:
[1] Глава 1. Ява-карта. Общие-сведения.: http://habrahabr.ru/post/255529/
[2] Глава 2. Ява карта с точки зрения разработчика апплетов: http://habrahabr.ru/post/255531/
[3] Глава 3. Установка и настройка IDE: http://habrahabr.ru/post/255533/
[4] Глава 4. Пишем первый апплет: http://habrahabr.ru/post/255535/
[5] Глава 5. Безопасность: http://habrahabr.ru/post/255537/
[6] той в банковском клиенте на базе BS-Client: http://geektimes.ru/post/83025/
Нажмите здесь для печати.