WebActivator - клиент/сервер защиты от копирования для платных программ.
Тема защиты интеллектуальной собственности программистов - одна из самых спорных и обсуждаемых в интернете. Многие считают, что ограничение доступа к мыслям - это нонсенс, ибо программы - это нематериальные мысли, а мысли распространяться должны свободно.В доказательство абсурдности замысла продажи мыслей можно превести сам факт существования Билла Гейта. Изготовив несколько паршивеньких программок, стоимостью 10-20 долларов (а зачастую даже не изготовив, а просто внеся небольшие косметические изменения в ранее опубликованные OpenSource-продукты), маневрируя путем подкупа и взяток, он стал распространять эти продукты (без малейших метериальных затрат) в миллионах экземплярах. Причем по самым фантастическим ценам.
В наиболее отсталых и коррумпированных странах появились "национальные проекты информатизации", где тысячи учебных классов были оборудованы компьютерами с наиболее отстойным и дорогим программным обеспечением от империи Билла Гейтса. Апофеозом коррупции и мракобесия стало введение в учебные планы уроков информатики с обязательной сдачей экзаменов по наиболее дорогим и отстойным продуктам Билла Гейтса.
Обманув IBM, Mocrosoft создала за ее деньги MS DOS и стала выпускать его под своей торговой маркой. Украв у Apple идею иконок и графического интерфейса, Micrisoft выпустила Windows 3.1 -> Windows 95. Скопировав и немного косметически переработав известное опубликованное мультизадачное ядро UNIX, микрософт выпустила линейку своих продуктов Windows NT -> Windows 2000 -> Windows 2008, которая стоит 4 тысячи долларов. Купив копеечный продукт Sybase и немного косметически доработав его - MS создала линейку продуктов SQL Server 6.5 -> SQL Server 2008, стоимостью 25 тысяч долларов. Абсолютно бесплатный SuperCalc стал перепродаваться как основа дорогущего Microsoft Office. Cкопировав существующие бесплатные JAVA-оболочки, такие как Eclipse, микрософт выпустил свою Visual Studio 2003 -> Visual Studio 2010 - стоимостью более 10 тысяч долларов в полной комплектаци.
Облапошенные авторы всех этих программ, обнародовавшие свои идеи OpenSource, в удивлении наблюдали этих хищников, паразитирующих на рынке программного обеспечения. Совершив свои похищения интеллектуальной собственности, Билл Гейтс сумел достаточно успешно уклониться от многих cудебных преследований (всего несколько раз заплатив за кражи - в том числе по иску Европарламента всего-то около двух миллардов долларов) и приступил к активной защите украденного.
Для защиты наворованного Microsoft купила и украла множество технологий, например Vista Software Protection Platform (SPP), которые впрочем, были незамедлительно взломаны и справедливость была восстановлена.
Деятельность таких бандитов, как Билл Гейтс, наносит колоссальный ущерб всему обществу. И это не только трата драгоценных школьных учебных часов на изучение продуктов империи Билла Гейтса. Правоохренительные органы используют якобы существующие "права" Билла Гейтса на украденное программное обеспечения для давления на гражданское общество - чтобы делать нас еще более бесправными. Только в течении 2009-го года множество общественных и правозащитных организаций, редакций газет было полностью разгромлено. Компьютеры были изъяты "на экспертизу". Никакого другого повода для разгрома наших общественных и правозащитных организаций у властей не нашлось вообще - кроме нарушения мифических "прав" Билла Гейтса на продажу нам краденых программ.
Конечно, наблюдая таких отъявленных негодяев, как Билл Гейтс - кажется, что защитой программ от копирования заниматся не стоит вообще и именно поэтому вы найдете на моем сайте более тысячи страниц с OpenSource-кодом различных программ (причем 300 страниц моего сайта - с полностью оформленным OpenSource-кодом бейсика).
Но все же, в исключительных случаях, программисты нуждаются в защите свой интеллектуальной собственности - в том числе, чтобы откровенные злодеи, вроде Билла Гейтса (и его шестерок) не воровали чужой код, не декомпилировали его и не перепродавали в тысячи раз дороже, в качестве своего собственного интеллектуального продукта.
Как вы видите на скрине выше, моя система WebActivator состоит из клиентской и серверной части. Клиентская часть прилинковывается к защищаемой программе и привязывает ее к оборудованию конкретного компьютера. Сервер активации (по основному и альтернативному URL) - размещен в интернете.
На скрине вы видите, что обязательным оборудованием (после беседы с клиентом) я выбрал номер процессора, MAC-адрес сетевой карты, модель hard-диска, название видео карты. Все эти сведения, как вы видите на скрине ниже, отображаются серверной частью моего активатора (который имеет Web-интерфейс).
Это довольно развитый Web-интерфейс, в котором видны все запросы оплаченных и левых версий продуктов на активацию, все случаи креков, изменения обязательного оборудования - пару скринов я привожу на монтаже ниже (в частности двойка во второй и третьей появилась в результате экспериментального пропатчивания защищаемой моей системой клиентской программы).
Покупатель программы может дополнять оборудование своего компьютера в любой момент - пока обязательное оборудование сохранено, те наличие дополнительного оборудования не ломает активацию программы (в данном случае, как вы видите, клиент дополнил свой компьютер еще несколькими дисками) .
Как вы видите, в мониторе в любой момент щелкнуть галочки и вывести (по просьбе клиента) часть оборудования из перечня обязательного. Как вы понимаете, эта технология на порядок выше убогого микрософтовской активации, где достаточно сделать малейшее изменение аппаратной конфигурации - как активация продукта пропадает (полностью условия использования платных программ на основе этого WebActivator'а вы можете прочитать здесь).
В моей системе много всяких хитростей, которые я не буду описывать досконально, чтобы не облегчать работу хацкерам. Упомяну самые простейшие, например моя программа, подсчитывает свой хэш-код и не дает пропатчить себя по диску. Есть и антиотладочные меры.
Для передачи сведений об оборудовании я придумал офигительный (не могу подобрать другого слова) протокол. Который на две головы выше того, что может своровать где-нибудь микрасофт.
Даже при беглом взгляде на этот впечатляющий скрин видно, что это абсолютно невоспроизводимый сеанс связи. По логике он несколько напоминает SSL (по крайней мере точно так же начинается с получения открытых асимметричных ключей). Вот только дальше все закручено гораздо круче, чем в SSL. Более хитро выполняется IKE - смена сеансовых ключей. Мне вообще очень не нравится SSL в плане DOS-уязвимости (да и в остальном он явно паленый, напоминает больше обманку, чем реальную защиту). Хотя защитить публичный RSA-ключ от DOS невозможно в принципе, но я предпринял специальные меры - чтобы даже реквест на активацию не создавался при DOS-атаках.
Функционально протокол WebActivator'а включает набор команд сервера активации, например "проверить оплату этого экземпляра программы", "принять криптохэш защищаемой программы" и так далее. Клиент выдает серверу активации команды и получает от сервера активации ответы. Логика моего протокола активации такая, что все команды сервера активации даже уже в расшифрованном виде не имеют фиксированных сигнатур, они формируются динамически, на ходу. Поэтому даже наличие мастер-ключей (маски перемножаемых чисел) к RSA-алгоритму (эти маски выдает ФСБ для ГОСТ'овского "шифрования") - или даже мощная атака перебором в алгоритме перестановки для фрагментов, где поток идет в симметричном сеансовом шифровании - не приведет ни к чему. Вскрытые в одном сеансе команды сервера повторно отдать серверу активации в другом сеансе не получится. В следующем сеансе команды будут иметь другой код.
Испытать мою систему защиты вы можете с помощью любой из моих платных программ, например WebDownloader_UltraLite. После запуска программа неактивирована (что видно по красненькой иконке). Начинать работу можно независимо от активации (активация не тормозит поток формы). Секунд через 5-10 сеанс активации завершается и иконка слева внизу становится зелененькой, что означает, что программа была оплачена.
Естественно, защищена может быть произвольная программа, а не только эта конкретная, которая на скрине.
Область защищаемой клиентской части я определяю как произвольный NET-код. Хотя в принципе в клиентской части моей системы защиты идет работа с Raw-указателями памяти, не используя переменные NET Framework. Поэтому, вероятно, неуправляемый код тоже будет хорошо защищаться - пока это еще не тестировалось.
Следуя своей традиции, я публикую отдельные компоненты моего WebActivator'а в виде OpenSource - NetStringObfuscatorHelper - код моей библиотеки симметричной криптографии. Пожалуйста, сообщайте обо всех замеченных багах в баг-трекер WebActivator'а.
Кроме того, упростив код защищенного драйвера передачи данных по сети примерно в 10 раз по обьему - я опубликовал OpenSource-продукт на MONO для организации распределенных вычислений на PostgreSQL - Remote SQL execute for PostgreSQL on GSM/GPRS channel with extreme compress and cryptography.
|