Цель данного поста донести информацию о способах охраны ИТ-решений в России — патенты, авторское право, ноу-хау. Протестующих против интеллектуальной собственности – просьба не сюда. Не будем разводить дебатов, сотни их…
Первым делом, давайте начнем с истоков, чтобы выстроить терминологию, которую будем использовать в дальнейшем. Наша первоочередная задача понять взаимоотношение между алгоритмом и программой ЭВМ.
Задача
Пусть у нас есть задача, которую выдали программисту Валере, чей интеллектуальный труд мы собираемся охранять.
Имеется последовательность целых чисел:
1, 4, 0, 3, 7, 11
Требуется упорядочить числа по возрастанию, т.е. привести их к виду
0, 1, 3, 4, 7, 11
Для решения этой задачи необходимо разработать алгоритм.
Алгоритм — способ решения вычислительных и др. задач, точно предписывающий, как и в какой последовательности получить результат, однозначно определяемый исходными данными.
Валера разработал алгоритм, который решает поставленную задачу. Для упрощения он «разработал/придумал» пузырьковую сортировку, блок-схема алгоритма которой выглядит так:
И написал несколько реализаций данного алгоритма в виде программ ЭВМ.
Программа ЭВМ — представленная в объективной форме совокупность данных и команд, предназначенных для функционирования ЭВМ и других компьютерных устройств в целях получения определенного результата, включая подготовительные материалы, полученные в ходе разработки программы для ЭВМ и порождаемые ею аудиовизуальные отображения (статья 1261 ГК РФ).
Т.е. одну программу он написал на C:
#define SWAP(A, B) { int t = A; A = B; B = t; }
void bubblesort(int *a, int n)
{
int i, j;
for (i = n - 1; i > 0; i--)
{
for (j = 0; j < i; j++)
{
if (a[j] > a[j + 1])
SWAP( a[j], a[j + 1] );
}
}
}
Вторую на Python:
def swap(arr, i, j):
arr[i], arr[j] = arr[j], arr[i]
def bubble_sort(arr):
i = len(arr)
while i > 1:
for j in xrange(i - 1):
if arr[j] > arr[j + 1]:
swap(arr, j, j + 1)
i -= 1
А третью – на ассемблере:
mov bx, offset array
mov cx, n
for_i:
dec cx
xor dx, dx
for_j:
cmp dx, cx
jae exit_for_j
jbe no_swap
mov ah, byte ptr bx[di]
mov byte ptr bx[di], al
mov byte ptr bx[si], ah
no_swap:
inc dx
jmp for_j
exit_for_j:
loop for_i
Отсюда возникает следующее утверждение, довольно-таки банальное:
У одного алгоритма может быть множество реализаций, как в рамках одного языка программирования, так и на разных языках программирования. И, наоборот, в любой программе ЭВМ (не берем вырожденные случаи) всегда есть какой-то алгоритм.
И теперь встает вопрос: «Как и что из этого, и каким способом, мы можем защитить в рамках закона?»
Охрана алгоритма
Патенты
На алгоритм программы ЭВМ можно получить патент на изобретение (на способ) при соблюдении всех условий, предъявляемых к изобретениям:
- Наличие новизны;
- Изобретательского уровня;
- Промышленной применимости.
И наличие технического результата.
Примерами технических результатов могут быть:
- ускорение доступа к релевантной информации
патент RU2456661 “ЭФФЕКТИВНАЯ НАВИГАЦИЯ РЕЗУЛЬТАТОВ ПОИСКА”, МАЙКРОСОФТ КОРПОРЕЙШН (US) - повышение качества поиска
патент RU2460131 “ОСНАЩЕНИЕ ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА РАСШИРЕНИЕМ ПОИСКОВЫХ ЗАПРОСОВ”, ГУГЛ ИНК (US)
Плюсы патентов:
- Охраняют алгоритм и любые его реализации на любых языках программирования;
- Действует 20 лет.
Минусы патентов:
- Национальный/региональный характер – охрана действует только на территории тех стран, куда подавалась заявка на патент;
- Довольно ощутимо «бьют по карману» в случае патентования за рубежом;
- Долгий срок получения патента (1.5 года в РФ, 3-4 года в США, больше 4-х лет в Европе).
Из чего состоят расходы на патент (цены указаны примерно, для оценки):
- Пошлины:
- Патентные поверенные (для подачи заявки в другое государство) – ~2000 Euro для каждой страны;
- Перевод заявки на др. язык – от 20 000 руб.;
- Консалтинговые услуги – большой разброс цен от 20 000 до 200 000 руб. (если делать в заграничных компаниях, то еще дороже).
Ноу –Хау или коммерческая тайна
Так же, если нет денег, то можно ввести на предприятии/в организации режим коммерческой тайны.
Подробно останавливаться не имеет смысла, т.к. эта тема широко расписана в интернете.
Плюсы ноу-хау:
- Недорогое внедрение
- Защита от утечек идеи из коллектива
Минусов у ноу-хау несколько:
- Нет защиты от реверс-инжиниринга;
- Нет защиты от разработки другой компанией вашего аналога;
- Возможность «попасть» под патентные разборки, если кто-то ушлый запатентует схожее с вашим решением.
Смешанный тип – Ноу-Хау + Патенты
Очень распространенное решение. Патентами защищается основная часть системы, а все детали реализации, «тонкие настройки» охраняются в режиме ноу-хау.
Плюсы:
- Экономия денег, по сравнению с чисто патентной защитой;
- Никто не может повторить полностью ваше решение (легальными способами), т. к. детали скрыты от посторонних, но при этом основной функционал покрыт патентами.
Минусы:
- Минусы комбинированные – часть, защищенная ноу-хау, имеет минусы как у ноу-хау, часть, защищенная патентами – минусы патентной защиты.
Охрана программы ЭВМ
Программы ЭВМ охраняются как литературные произведения нормами авторского права, и поэтому охраняют конкретную реализацию алгоритма, а не сам алгоритм.
Чтобы заявить свое авторство, можно воспользоваться, как простым вариантом, из серии отправить письмо с распечаткой исходников самому себе через почту России, так и можно зарегистрировать программу ЭВМ в Роспатенте (депонирование), но, правда, не более 70 страниц – при этом приходится программы разбивать на части. Так же, при регистрации в Роспатенте можно к программе ЭВМ прикрепить аудиовизуальные отображения, а попросту – скриншоты программы, что в дальнейшем можно использовать для охраны интерфейса от подделок или прямого копирования.
Плюсы:
- Охрана программы от «утечки» исходников;
- Охрана от копирования интерфейса (в разумных пределах).
Минусы:
- Охрана конкретной реализации, а не алгоритма (не получится зарегистрированную программу на Python’e защитить от реализации на ассемблере);
- Частое изменение исходников требует частых «телодвижений».
Собираем все вместе в виде FAQ
Я хочу защитить свою идею от реализации конкурентами:
Я хочу «застолбить» свой алгоритм за собой:
Я разработал уникальные алгоритмы, которые могут украсть:
Я боюсь, что мою идею украдут методом обратного проектирования:
- Патент
Что делать, чтобы идею не украли:
Что делать, чтобы идея не утекла из компании вместе с сотрудниками:
- Введение режима коммерческой тайны
Как защититься от утечки исходников:
Как застолбить авторство программы за собой:
Как защитить интерфейс от подделок
- Регистрация (депонирование) программы ЭВМ
Вместо послесловия
Пока наши разработчики спят… Крупные корпорации переходят на нацфазу в Россию. По статистике, Microsoft подает заявки в РФ более чем на 100 патентов ежегодно. Среди софтверных патентов отметились так же: VISA, AVG, MOTOROLA, FORD (см. патент), GOOGLE, FACEBOOK, INTEL… тысячи их.
А что у нас?
Большинство Российских софтверных компаний игнорируют интеллектуальную собственность (А может ее там и нет…?:-)). Из тех, кто успел засветиться на поприще интеллектуальной собственности – Abbyy (порядка 17 патентов РФ), Лаборатория Касперского (43 патента), да некоторые наши НИИ. Такой расклад немного печален по нескольким факторам – никто не застрахован от патентных исков со стороны выше перечисленных компаний, патентных троллей и все это может аукнуться на любом этапе проекта.
Используемая литература и источники
www.uspto.gov — сайт патентного ведомства США
www1.fips.ru — сайт патентного ведомства России
epo.org — сайт патентного ведомства Европы
Вопросы/Пожелания/Уточнения?
Автор: capitnblack