Несколько мыслей о защите интеллектуальной собственности

Jan 27, 2009 07:04

Понемногу у меня встает вопрос, обозначенный в заголовке.

Хочется и сесть (удачно выпустить хороший софт), и рыбку съесть (защитить софт от посягательств на слизывание).

Посягательства можно поделить на две категории:
1. "Срисовывание"
Подразумевает вдумчивый анализ и полную запись логики работы программы, затем написание собственного уникального кода и копирование или проектирование собственного, более удачного интерфейса. Я бы сказал, что это честный путь (по нему идут вообще все под этой луной :) ) Защититься от такого посягательства нельзя, ибо сам факт посягательства доказуем с трудом, да и труд прикладывается честный, в отличие от второго способа. Вдобавок, практически любая идея не нова - а значит, Ваша реализация является лишь новой копией и сама с чего-то срисована.
2. "Воровство"
Подразумевает вдумчивое написание кряка или кейгена к программе, декомпиляцию исходных кодов. Путь со всех сторон нечестный - но и куда менее затратный с точки зрения времени и денег. Написание кряка к Photoshop CS3 заняло всего один-два дня с момента релиза, помнится - это совершенно не сравнимо со временем разработки.
Защититься от такого посягательства в теории также невозможно, ибо компиляция в любом случае не необратима.

Теперь перейдем к практике.
Пусть защититься "на все сто" нельзя, но можно усложнить жизнь взломщику, заобфусцировав исходник перед компиляцией и сжав скомпилированное. Исторически складывается так, что раньше взламывать было сложнее - приходилось копаться в ассемблере, разбирая ворох наставленных обфускатором ловушек. В настоящее время все больше приложений пишутся в управляемом коде (тем, кто видел MSIL, не надо объяснять) - а для взлома IL-кода усилий требуется несоизмеримо меньше, есть готовые примочки для разработчиков по рефакторингу и восстановлению кода. У меня есть знакомый, который занимался конкретно такой примочкой в здоровой компании - и информация "из первых рук" просто ужасна. В трех словах - "IL не защищен" - и порядок затрат на полную расшифровку кода даже сложного проекта составляет (всего!) десятки тысяч рублей.
Меня, как использующего VS, все это близко касается.

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

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

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

Заключение истории весьма просто.
Если захотели взломать - то взломают. Меры противодействия надо выбирать просто из соображений затрат и того, какая часть пользователей может воспользоваться (читай - найти) кейген. В случае крупных продуктов и в случае внедряемых решений задача расширяется за счет контроля и наблюдения за установленными продуктами и несколько упрощается за счет возможности силового решения проблемы средствами ПОО при возникновении обоснованных подозрений.

Благодарю за внимание

техника, программирование, жизнь

Previous post Next post
Up