gifts2017

Разрабатываем систему защиты авторских прав. Урок 1. Мозговой штурм

Опубликовал Александр Шуравин (megabax) в раздел Программирование - Защита и шифрование

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

Разрабатываем систему защиты авторских прав. Урок 1. Мозговой штурм

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

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

  • Привязаться к реестру Windows. При переносе на другой   компьютер потребует повторной активации.

  • Сделать аппаратный ключ.

  • При старте программа коннектиться к сайту, а там есть сведения, сколько лицензий.

  • Определенное количество запусков.

  • Сделать программный ключ.

  • Сделать ключевой диск или флэшку.

  • Определять, сколько человек пользуются программной.

  • Идентификация по отпечатку пальцев.

  • Идентификация по голосу.

  • Идентификация по лицу через вэб камеру.

  • Постоянно менять регистрационный ключ и сделать автоматическое обновление ключа с сайта.

Теперь сделаем первый проход, вычеркивая очевидно неудачные решения. Но при этом смотрим, нет ли в казалось бы бредовых идеях какого либо рационального звена. И так, начнем.

Сделать ключевой диск или флэшку. Технология использования специальной дискеты с защитой от копирования (ключевой диск) давным давно устарела. Более того, сейчас даже не на всех компьютерах есть дисковод.  Как правило, дисковода нет на ноутбуках и даже не некоторых стационарах компьютерах, не говоря уже про нетбуки, на которых нет даже привода CD-ROM. Использовать флэшку? Ничего не даст. Поясню почему. Дело в том, что технология ключевой дискеты заключалась в том, что дискету умышленно портили, например, прокалывали в ней дырочку. Естественно, скопировать ее полностью стандартными средствами было невозможно. Но в начале дискеты находилась программа, которая "умела" читать остальную часть информации, обходя поврежденный участок. Как такое провернуть на флэшке, вообще непонятно. Мы не можем избирательно повредить часть ее микросхемы, можем только испортить ее полностью. Кстати защита, основанная на ключевом диске, она защитит только от ламеров. Мало мальский опытный пользователь легко взломает эту защиту, используя различные системные утилиты копирования.

Что насчет рационального звена? Может, использовать "хитрую" флэшку, которую нельзя скопировать? Электронный эмулятор флэшки? Но эта идя уже есть в списке: Сделать аппаратный ключ.

Идентификация по отпечатку пальцев. Ага, вместе с прогой продавать дактилоскопический девайс. Дорогая тогда будет программа. Конечно, если это супер пупер нетленка, которая очень нужна богатым покупателям и они согласны выложить за нее кругленькую сумму зелени, то почему бы и нет? Но, скорее всего, в одиночку вы не сможете написать дорогую инженерную программу типа AutoCAD или север баз данных Oracle. А если и сможете, то уже и так все знаете, и, значит, не читаете эту статью.  В общем, эту идею тоже вычеркиваем. Но у нас есть правило - найти рациональное звено. Как пользователь еще может идентифицировать себя? Паролем? Но пароль он может передать другому человеку. Можно, конечно, время от времени менять пароли. Вот тебе и рациональное звено: выдавать пользователю пароль, а через какое то время менять его и выдавать новый. Даже если он кому то скажет свой пароль, то по истечению какого то времени он перестанет действовать. Идея, конечно не ахти, у нее много недостатков, но, тем не менее, есть пища для размышлений.

Идентификация по голосу. Эту идею отвергаем по причине, что слишком сложно и дорого реализовать для рядового программиста. К тому, же, голос можно записать на диктофон. А рациональное зерно? Может, определять пользователя по манере работы с мышкой или нажимать на клавиши? Тоже как то не айс.  Но опять же, пища для размышлений, когда мы будет усовершенствовать защиту. А пока выберем чего попроще, для начала.

Идентификация по лицу через вэб камеру. Отвергаем по той же причине, что и предыдущий пункт. Сложно, хотя это уже почти не фантастика. Но, если мы не глава спецслужбы типа ФБС или ЦРУ, то реализовать такое нам не под силу. Кстати, сразу возникает мысль, а может, привязывать программу не к пользователю, а к компьютеру? Хотя подобна идея уже есть списке: прописаться в реестр Windows, но, как вариант, можно определять конфигурацию компьютера и привязаться к ней. Правда, тогда программа перестанет работать, если юзер апгредит свой комп. Нехорошо, пользователь то не виноват, что у нас приязка к конфигурации. Но, тем не менее, идея имеет право на существование.

В итоге у нас список идей становиться таким:

  • Привязаться к реестру Windows. При переносе на другой   компьютер потребует повторной активации.

  • Привязаться к конфигурации компьютера. При переносе на другой   компьютер прога так же потребует повторной активации.

  • Сделать аппаратный ключ.

  • При старте программа коннектиться к сайту, а там есть сведения, сколько лицензий.

  • Определенное количество запусков.

  • Сделать программный ключ.

  • Определять, сколько человек пользуются программной.

  • Постоянно менять регистрационный ключ и сделать автоматическое обновление ключа с сайта.

Его мы будем анализировать уже на следующем уроке.

Источник: http://easyprog.ru/index.php?option=com_content&task=view&id=1227&Itemid=29

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Александр Орефков (orefkov) 03.04.13 20:47
Не могу не удержаться от цитаты:
[quote]
Однажды Сисадмин пожаловался Учителю:
– Мы выдали всем нашим пользователям индивидуальные пароли, а они не желают хранить их в тайне. Записывают на листочках и приклеивают к мониторам. Что нам делать? Как заставить их?
Инь Фу Во спросил:
– Сначала скажи, почему они это делают.
Сисадмин подумал и ответил:
– Может быть, они не считают пароль ценным?
– А разве пароль сам по себе ценный?
– Не сам по себе. Ценна информация, которая под паролем.
– Для кого она ценна?
– Для нашего предприятия.
– А для пользователей?
– Для пользователей, видимо, нет.
– Так и есть, – сказал Учитель. – Под паролем нет ничего ценного для наших работников. Надо, чтоб было.
– Что для них ценно? – спросил Сисадмин.
– Догадайся с трёх раз, – рассмеялся Учитель.
Сисадмин ушёл просветлённый и сделал на корпоративном портале персональные странички для всех работников. И на тех страничках был указан размер зарплаты. Узнав об этом, все пользователи забеспокоились о своих паролях. На другой день в курилке обсуждали размер зарплаты Главбуха. На третий день ни у кого не было видно листочков с паролями.
[/quote]
Так и с программой. В идеале она должна нести такую ценность для пользователя, что бы он сам ее защищал от распространения :) И даже сам просил поставить на нее ключ :)
salexdv; CaSH_2004; VRP; teflon; bulpi; awk; СергейКа; утюгчеловек; KonstB; SpartakM; +10 Ответить
2. Руслан Зиатдинов (RaketaSoft) 03.04.13 22:30
Почему не рассмотрен вариант идентификации с помощью днк?
Светлый ум; Sbiz; +2 Ответить
3. Игорь Steelvan (Steelvan) 03.04.13 22:35
Это намек на твое использование "водяного знака" с риском потерять подписку ?
4. Александр Орефков (orefkov) 03.04.13 22:38
(3)
Угу. Понятно, что для очень тиражных решений это не подойдет, но принцип понятен.
Так же по этой модели не получится "один раз написать программу, а потом загорать на Канарах".
Хотя имхо, так вообще очень редко бывает.
5. andrewks 03.04.13 23:06
(4) orefkov,
Хотя имхо, так вообще очень редко бывает.

да так вообще не бывает :)
6. Сергей Кучеров (СергейКа) 05.04.13 11:10
Какой-то странный "мозговой штурм" - в один мозг. Похоже что он сильно "заштурмован" :)
Очень не верится что с таким подходом к своему продукту можно будет "один раз написать программу, а потом загорать на Канарах".
adhocprog; +1 Ответить
7. Александр Орефков (orefkov) 05.04.13 11:35
Имхо, все перечисленные методы - это не защита.
Все это ломается, рано или поздно, дешево или дорого.
Когда начинаешь тему глубже изучать (причем со стороны ломальщиков) - убеждаешься, что сделать качественную защиту очень сложно. Причем ломают в самом "слабом" месте, обычно на стыке защиты и программы. Вот например, сделал навороченную проверку отпечатка пальца, а потом оказывается, что в коде надо только один условный переход заменить на безусловный.
Поэтому принцип прост - защита должна быть такой, чтобы стоимость взлома превышала выгоду от взлома.
На какуюнить дешевую прогу хватит и покупной навесной защиты, из свежих, чтобы еще не было автораспаковщиков.
Если делаешь свою защиту - код защиты должен сразу интегрироваться с кодом программы, желательно, чтобы программа использовала код защиты в качестве данных, все шифровать/расшифровывать налету.

А идеал - это вообще не давать прогу пользователю. Нет проги - нечего ломать. Отсюда у всех этих облачных сервисов ноги и растут. Получил от юзера ввод, обработал, отдал результат, красота.

Вон, посмотрите интервью с Нуралиевым, он сам сказал: "Это просто мечта, не один раз получить деньги с клиента, а регулярно"
8. Владимир Гусев (adhocprog) 27.09.13 14:48
(7)
не один раз получить деньги с клиента, а регулярно

это мечта всех бизнесменов )
9. Михаил Ражиков (tango) 27.09.13 14:59
(8) adhocprog, Нуралиев о своей мечте говорил
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа