Вопрос: Система онлайн защиты программного обеспечения.
Добавлено: 24.07.08 02:32
Автор вопроса: Demrak | Web-сайт:xmaker.ru | ICQ: 213668448
Витает идейка в воздухе, намутить сабж, от всех остальных аналогов отличается следующим. Активация только через тырнет, работа ПО - также только при подключенном тырнете, контроль целостности приложения осуществляется либо по защищенному соединению, либо средствами собственной наработки шифрования потока информация по незащищенным каналам связи с плавающим ключем. защищаемый функционал ПО не вшит в программу а подгружается через вышеобозначенный спецканал, расшифровывается(??? или нет еще не решил) и встраивается на лету в запущенную программу (возможны проблемы с антивирем). После закрытия приложения защищаемые модули программы становятся нерабочими и при следующем запуске необходимо повторить все вышеупомянутые этапы. Как идейка?
На компьютере на котором хочется запустить прогармму, устанавливается системы биометрической идентификации (как минимум две).
У каждого пользователя с собой токен который может генерировать уникальный ключи для запуска программы.
Итак, пользователь идентифицирует себя, сервер с помощью эмпирического алгоритма шифрования (алгоритм создается при шифровании - то есть, даже если злоумышленник получит ключи, исходные данные. расшифрованные, все равно не сможет взломать, типа искуственный интеллект).
Далее сервер присылает на клиентский компьютер специальный 20-символьный код (или 40-символьный для надежности).
Пользовтаель должен его набрать на токене, токен выдаст ему новый код, он вводит этот код в программу. Прогармма по шифрованому каналу (дальше блин не буду говорить что канал шифрованый эмпирически - это и так понятно) отправляет код на сервер.
Пользователю отправляется номер телефона по которому нужно позвонить (номеров несколько тысяч, каждый раз выбирается случайный) и новый код
Пользователь звонит по этому номеру, диктует код, ему диктуют ответный код, он вводит этот код на токене, токен генерирует новый код, пользователь по телефону диктует этот код, ему в ответ диктуют очередной код (все коды 40-символьный, то есть брутфорс не пройдет ), и он вводит этот код в программу, программа отправляет код на сервер, на этом процедура идентификации считается успешной и завершенной.
Разумеется, на сервере на каждом этапе стоят специальные проверки, что не допустить неавторизованый доступ!
Далее поднимается вопрос о том как передать программу.
По каналу сервер передает клиенту специальную программу-загрузчик.
Эта программа должна запуститься в режиме ядра в нулевом кольце (как считаете, могут быть проблемы с антивирусом?), выгрузить из памяти все остальные программы и модули в том числе ядро операционной системы, и загружает с сервера код самой программы.
Разумеется, чтоб не могли проснифить каналы, память и т.п. - программа присылается зашифрованой и в таком зашифрованом виде загружается в память и запускается. Оперерирует она также с зашифроваными данными в памяти, чтоб никто не смог с помощью спец. оборудования получить код или данные. (нужно продумать математические алгоритмы, чтоб зашифрованый код работал также как и расшифрованый!, то же касается и данных)
Чтоб никто не смог сфотографировать содержимое экрана, на мониторе ставится веб-камера, а за пользователем - зеркало, то есть чтоб веб-камера могла зафиксировать что перед компьютером сидит только один человек без всяких фотоаппаратор и что эта веб-камера стоит именно на компьютере и показывает на оператора, а не куда-нибудь в воздух - через зеркало видит свой экран.
Это изображение передается на сервер и там проверка идет (нужно продумать алгоритмы распознавания образов в реальном времени или посадить много операторов со стороны сервера). Если камера фиксирует что к пользователю кто-то подошел, или он достал фотоаппарат или мобильный телефон - сеанс немедленно прекращается.
При завершеннии работы программа-загрузчик удаляет из памяти все данные и код программ, а также уничтожает данные на жестком диске, которые могут нести какую-то информацию о системе, причем не просто удаляет, а перезаписывает каждый байт 1000 раз случайными данными (чтоб числа были реально случайными, нужно будет в компьютер вставить специальный генератор).
Кроме того запускается специальная программа "обнуления" - чтоб злоумышленние не мог по остаточному свечению люминофора монитора определить какие примерно данные он отображал, она начинает постоянно показывать случайные пикселы, пока люминофор не "забудет" что он показывал.
То же самое касается и памяти - каждая ячейка миллион раз перезаписывается (чтоб по остаточному статическому напряжению в микросхемах не могли восстановить исходные данные - есть блин умельцы!
Также очищается и процессор - с той же целью в нем втечение нескольчих часов выполняются случайные инструкции, и в кеш-память постоянно забивается рандомными данными, то есть из процессора тоже ничего не вытянут.
После этого нужно физически отключить питание (пользователь сам может это не сделать, поэтмоу нужен специальный блок питания, который можно _полностью_ обесточить, дав команду с процессора!
Ну и плюс - последнее - прогонка чипсета случайными командами чтоб он тоже все "забыл", обнуление биоса (с физическим отключением батарейки - тоже нужно предусмотреть такую схему)!
При следующем запуске необходимо повторить все вышеупомянутые этапы.
не понимаю к чему сарказм? Если что-то непонятно из идеи, то могу объяснить, стоит только спросить , а экономическая сторона этой идейки - вполне адекватная
Мне уже позвонили из нескольких компаний, занимающихся разработкой Shareware игр и заявили о своей заинтерисованности встраивать данную систему в свои программы и финансировать дальнейшее исследование этого направления!