Как защитить свою программу ключом

Андрей Калужский
дата публикации 19-03-2003 12:40

Электронный ключ в сети. Обзор технологий защиты программ в локальных сетях.

М П 3 / Лекция_8

Рассмотрим вопрос: каким образом обезопасить себя от несанкционированного копирования лицензионных программ?

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

Основные функции ключей заключаются в следующем:

  • пользователи могут создавать неограниченное число резервных копий защищенной программы, но использовать могут только одну, работающую с ключом, установленным в один из портов компьютера;
  • данные пользователей защищаются от несанкционированного использования, поскольку без ключа расшифровать их практически невозможно;
  • защищенная программа при запуске может проверяться на наличие вирусов или подвергаться контролю на целостность.
  • проверяется наличие электронного ключа и считывание из него требуемых параметров;
  • проверка «ключевых» условий и выработка решения;
  • в случае успешных проверок производится загрузка, расшифровка и передача управления защищенной программе;
  • в случае неудачных проверок загрузка и расшифровка тела программы в память не производится, выдается сообщение об ошибке и защищенное приложение заканчивает свое выполнение.
  • обеспечивают фоновые проверки ключа в процессе работы защищенного приложения, так что вытащить и перенести ключ на другой компьютер после запуска на нем защищенной программы нельзя;
  • установить для программы счетчик запусков;
  • задать предельную дату выполнения программы.
  • микросхем энергонезависимой электрически перепрограммируемой памяти;
  • заказных микросхем с памятью или без памяти;
  • на базе микроконтроллеров.
  • ключ для параллельного порта HASP;
  • микропроцессорная карта ASE (рекомендуется использовать, когда одним компьютером пользуются несколько человек);
  • плату PCMCIA (для пользователей портативных компьютеров);
  • устройство e-Token — ключ для порта USB (удобен тем, кто уже использует периферийное оборудование, подключаемое к порту USB).
Читайте также:
Программа выдает out of memory

Источник: studfile.net

КАК ЗАЩИТИТЬ СВОЮ ИГРУ?

Public Key Cryptography: осваиваем открытые ключи на практике

В этой статье я покажу, как реализовать основные операции по работе с PKI. Речь идет о подписи, проверке подписи, шифровании и расшифровании в контексте PKI. Теоретически данный код может использоваться с любым CSP (Cryptography Service Provider), поддерживающим интерфейс MS Crypto API. Я пользуюсь бесплатным отечественным CSP. Почему отечественным? Дело в том, что в .NET нет поддержки алгоритмов ГОСТ.

Как защитить свой код на Python от ВЗЛОМА

А если мы работаем с реальными проектами и, следовательно, вынуждены соответствовать требованиям регуляторов в России, то без гостовских алгоритмов нам никак. Но если установить отечественный криптопровайдер, поддерживающий MS Crypto API, то все будет тип-топ, потому что .NET при работе с CMS дергает именно MS Crypto API.

Картина мира

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

Вместе они образуют ключевую пару.

Информация, необходимая для работы PKI, содержится в сертификате X.509. В PKI участвуют как минимум три стороны: Алиса, Боб и удостоверяющий центр (УЦ). У Алисы и Боба есть сертификаты с закрытым ключом, подписанные так называемым корневым сертификатом УЦ. У Алисы есть сертификат Боба с открытым ключом, а у Боба — сертификат Алисы с открытым ключом. Алиса и Боб доверяют УЦ и благодаря этому могут доверять друг другу.

Упрощенная структура PKI

Другие статьи в выпуске:

Xakep #206. Ключ от всех дверей

  • Содержание выпуска
  • Подписка на «Хакер» -60%

Сертификаты X.509

Так повелось, что основным «активом» в PKI является сертификат X.509. Сертификат — это что-то вроде паспорта, он содержит информацию, позволяющую идентифицировать субъект, которому выдан сертификат (поле Subject), указывает, кем он был выпущен (поле Issuer), серийный номер сертификата и многое другое. В Windows управлять сертификатами можно с помощью оснастки «Сертификаты» ( run->certmgr.msc ).

Читайте также:
Pip не является внутренней или внешней командой исполняемой программой или пакетным файлом win 7

Менеджер сертификатов

Сертификаты хранятся в хранилищах («Личное», «Доверенные центры сертификации», «Доверенные лица». ).

При получении сертификата важно установить его в правильное хранилище. Так, сертификаты, которые ты хочешь использовать для электронной подписи, должны быть установлены в хранилище «Личное», а сертификаты получателей, которым нужно будет отправлять зашифрованные сообщения, — в хранилище «Доверенные лица».

Сертификаты удостоверяющих центров (УЦ) должны быть установлены в хранилище «Доверенные корневые центры сертификации». При установке сертификата система предлагает два варианта: выбрать хранилище автоматически либо указать вручную. Рекомендую использовать второй вариант, так как автоматика иногда устанавливает сертификат не в то хранилище. Сертификат, которым мы хотим подписывать сообщения, должен иметь закрытый ключ. О наличии закрытого ключа можно узнать, посмотрев на свойства сертификата, где русским по белому будет написано: «есть закрытый ключ для этого сертификата».

Закрытый ключ для сертификата

Самое интересное о сертификате мы можем узнать на вкладке «Состав».

Состав сертификата

Обрати внимание на поля «Алгоритм подписи», «Алгоритм хеширования подписи» и «Открытый ключ». Если хочешь использовать сертификат для осуществления транзакций в России, во всех этих полях ты должен видеть слово «ГОСТ».

Также следует обратить внимание на значение поля «Использование ключа» и поля «Действителен с» и «Действителен по»: первое позволит понять, возможно ли использование сертификата для выполнения нужной нам операции (шифрование, подпись), а второе и третье — возможно ли использовать данный сертификат в указанный момент времени. В дополнение к этому следует убедиться, что сертификат действителен. В этом нам поможет вкладка «Путь сертификации». Если с сертификатом все хорошо, мы увидим надпись: «Этот сертификат действителен».

Состояние сертификата

WARNING

Приведенный ниже код предназначен исключительно для ознакомления с PKI. Не следует без оглядки использовать его в реальной работе.

Цифровая подпись

Представь, дорогой читатель, что ты занимаешься некой очень ответственной работой. И результаты своей работы отправляешь в виде отчетов, от которых в конечном итоге зависят чьи-то конкретные судьбы и жизни. Получатели твоих отчетов принимают на их основе очень важные решения, и, если ты напортачишь, вполне можешь получить срок.

Читайте также:
Программа для рисования схемы дома

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

Электронная подпись применяется не только в спецслужбах и органах, но и в бизнесе. Например, для перевода пенсионных накоплений в НПФ: мы генерируем запрос на сертификат, отправляем его в удостоверяющий центр (УЦ). УЦ выпускает сертификат, мы подписываем сертификатом заявление на перевод пенсионных накоплений, отправляем — и вуаля. Подпись также позволяет осуществлять контроль целостности подписываемых данных. Если данные будут изменены, подпись не пройдет проверку.

Для программирования подписи необходимо ознакомиться с несколькими классами .NET Framework:

  • X509Certificate2 — представляет собой сертификат X.509. Имя класса, оканчивающееся на 2, говорит о том, что класс является усовершенствованным аналогом класса X509Certificate.
  • X509Chain.aspx) — позволяет строить и проверять цепочку сертификатов. Необходима для того, чтобы убедиться в действительности сертификата.
  • SignedCms.aspx) — позволяет подписывать и проверять сообщения PKCS#7.

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

X509Chain certificateChain = new X509Chain < ChainPolicy = < RevocationMode = X509RevocationMode.Online, VerificationFlags = X509VerificationFlags.IgnoreNotTimeValid, RevocationFlag = X509RevocationFlag.ExcludeRoot >>; bool chainOk = certificateChain.Build(certificate); bool certNotExpired = (certificate.NotAfter >= DateTime.Now) (certificate.NotBefore

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru