Как создать ключ для программы

Мне нужно создать ключ продукта (или лицензии), который я обновляю ежегодно. Кроме того, мне нужно создать его для пробных версий.

  • Как мне лучше обфускать код проверки вашей лицензии на С#?
  • Активация веб-лицензии
  • Как защитить свое программное обеспечение от незаконного распространения?
  • Лучшее программное обеспечение для активации для приложения .NET?

Лучший ответ:

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

Как сделать Usb ключ

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

Не имеет значения, насколько вы запутались в своей схеме, все, что вы для этого сделаете, в конечном итоге будет безопасностью через неясность, и они всегда будут быть в состоянии. Даже если они не смогут кого-то и будут распространять взломанную версию. То же самое относится, даже если вы поставляете ключ – если кто-то захочет, они могут исправить также чек. Цифровое подписание кода не поможет, они могут удалить эту подпись или уйти в отставку.

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

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

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

edit: Я просто хочу добавить, не вкладывайте слишком много времени в это или думайте, что каким-то образом ваша запутанная схема будет отличаться и не поддаётся проверке. Это не будет, и не может быть до тех пор, пока люди будут контролировать оборудование и ОС, на которых работает ваша программа. Разработчики пытались придумать все более сложные схемы для этого, думая, что, если они разработают для себя свою собственную систему, то они будут известны только им и, следовательно, “более безопасны”. Но это действительно эквивалент программирования, который пытается построить вечный двигатель.: -)

Лицензионный ключ программы на Python | ЧАСТЬ 2 | Создание клиент-серверной программы и генератора

Кому вы доверяете?

Я всегда считал эту область слишком критичной, чтобы доверять третьей стороне для управления безопасностью вашего приложения. Как только этот компонент взломан для одного приложения, он взломан для всех приложений. Это случилось с Discreet через пять минут после того, как они пошли с решением сторонней лицензии для 3ds Max лет назад… Хорошие времена!

Серьезно подумайте о том, чтобы перевернуть свой собственный, чтобы иметь полный контроль над вашим алгоритмом. Если вы это сделаете, подумайте о том, чтобы использовать компоненты в вашем ключе в соответствии с:

  • Название лицензии – имя клиента (если есть), которое вы лицензируете. Полезно для управления развертываниями компаний – заставить их чувствовать себя особенными, чтобы иметь “персонализированное” имя в информации о лицензии, которую вы им предоставляете.
  • Срок действия лицензии
  • Количество пользователей для запуска под одной лицензией. Это предполагает, что у вас есть способ отслеживания выполнения экземпляров на сайте, на сервере-ish way
  • Коды функций – позволяют использовать одну и ту же систему лицензирования для нескольких функций и для нескольких продуктов. Конечно, если он треснул для одного продукта, он взломал для всех.
Читайте также:
Самая лучшая программа для оптимизации ПК

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

Чтобы сделать пробный лицензионный ключ, просто установите значения для вышеуказанных значений, которые переводится как “пробный режим”.

И так как это, вероятно, самый важный код в вашем приложении/компании, поверх/вместо обфускации, подумайте о том, чтобы поместить процедуры расшифровки в собственный DLL файл и просто P/Invoke.

Несколько компаний, с которыми я работал, с большим успехом приняли обобщенные подходы к этому. Или, может быть, продукты не стоили взломать;)

Является ли это тривиальным или трудно взломать, я не уверен, что это действительно имеет большое значение.

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

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

В любом случае, это не принесет вам больше денег.

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

Простая логика ключа продукта может состоять в том, чтобы сказать, что ключ продукта состоит из четырех 5-значных групп, таких как abcde-fghij-kljmo-pqrst , а затем далее указывать внутренние отношения, такие как f + k + p, равный a, что означает первые цифры групп 2, 3 и 4 должны составлять a. Это означает, что 8xxxx-2xxxx-4xxxx-2xxxx действителен, поэтому 8xxxx-1xxxx-0xxxx-7xxxx. Конечно, были бы и другие отношения, в том числе сложные отношения типа, если вторая цифра первой группы нечетна, тогда последняя цифра последней группы также должна быть нечетной. Таким образом, были бы генераторы ключей продукта, а проверка ключей продукта просто проверяет, соответствует ли это всем правилам.

Шифрование обычно представляет собой строку информации о лицензии, зашифрованной с использованием закрытого ключа (== с цифровой подписью) и преобразованной в Base64, Открытый ключ распространяется вместе с приложением. Когда строка Base64 приходит, она проверяется (== расшифрована) открытым ключом и, если она будет найдена, продукт активируется.

Существует опция Лицензирование и защита программного обеспечения Microsoft (SLP). Прочитав об этом, я действительно хотел бы использовать его.

Мне очень нравится идея блокировки частей кода на основе лицензии. Горячий материал и наиболее безопасный для .NET. Интересное чтение, даже если вы его не используете!

Лицензирование программного обеспечения Microsoft® и Служба защиты (SLP) – это услуга активации программного обеспечения, которая позволяет независимым поставщикам программного обеспечения (ISV) принять гибкое лицензирование условия для своих клиентов. Microsoft SLP Services использует уникальную метод защиты, который помогает защитить ваша заявка и лицензирование информацию, позволяющую вам добраться до быстрее рынка соблюдение требований клиентов.

Примечание. Это единственный способ опубликовать продукт с чувствительным кодом (например, ценный алгоритм).

Я должен признать, что я сделал бы что-то довольно безумное.

  • Найдите узкое место процессора и извлеките его в файл P/Invokeable.
  • Как действие post build, зашифруйте часть DLL файла с помощью XOR
    ключ шифрования.
  • Выберите схему открытого/закрытого ключа, включите открытый ключ в DLL файл
  • Упорядочить так, чтобы дешифровать ключ продукта и XORing два
    половина вместе приводит к ключу шифрования для DLL.
  • В коде DLL DllMain отключите защиту (PAGE_EXECUTE_READWRITE)
    и расшифровать его с помощью ключа.
  • Сделайте метод LicenseCheck(), который делает проверку работоспособности
    лицензионный ключ и параметры, затем проверяет весь файл DLL, бросая
    нарушение лицензии. О, и выполните другую инициализацию
    здесь.

Когда они находят и удаляют LicenseCheck, что за забавой будет
когда DLL запускает segmentation faulting.

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

Другим полезным недорогим инструментом для ключей и активаций продукта является продукт под названием InstallKey. Взгляните на www.lomacons.com

Фокус в том, чтобы иметь алгоритм, который вы только знаете (чтобы его можно было декодировать на другом конце).

Есть такие простые вещи, как “Выберите простое число и добавьте к нему магическое число”

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

Читайте также:
В какой программе наложить музыку на видео для инстаграм

Возможно также стоит прочитать ответы на этот вопрос, а также

Для него есть некоторые инструменты и API. Однако, я не думаю, что вы найдете его бесплатно;)

Вы можете проверить LicenseSpot. Он обеспечивает:

  • Бесплатный компонент лицензирования
  • Онлайн-активация
  • API для интеграции вашего приложения и интернет-магазина
  • Генерация серийного номера
  • Отменить лицензии
  • Управление подпиской

Один простой метод использует глобально уникальный идентификатор (GUID). GUID обычно сохраняются как 128-битные значения и обычно отображаются как 32 шестнадцатеричных цифры с группами, разделенными дефисами, например .

Используйте следующий код в С# с помощью System.Guid.NewGuid() .

getKey = System.Guid.NewGuid().ToString().Substring(0, 8).ToUpper(); //Will generate a random 8 digit hexadecimal string. _key = Convert.ToString(Regex.Replace(getKey, «.», «$0/»)); // And use this to separate every four digits with a «/».

Надеюсь, это поможет.

Идея заключается в использовании SKM Platform в качестве сервера лицензий. Здесь шаг за шагом пример (в VB.NET)

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

Для начала мы могли бы создать 2 типа лицензии (называемые политиками в Keygen), и всякий раз, когда пользователь регистрирует учетную запись, вы можете создать для нее пробную лицензию ( “пробная версия” “лицензия реализует нашу” пробную “функциональную политику), которую вы можете использовать для различных проверок в приложении, например может пользователь использовать пробную функцию-A и пробную-функцию-B.

И основываясь на этом, всякий раз, когда пользователь покупает ваше приложение (независимо от того, используете ли вы PayPal, Stripe и т.д.), вы можете создать лицензию, реализующую “полную” политику функций и связать ее с учетной записью пользователя. Теперь в вашем приложении вы можете проверить, имеет ли пользователь полную лицензию, которая может выполнять Pro-Feature-X и Pro-Feature-Y (делая что-то вроде user.HasLicenseFor(FEATURE_POLICY_ID) ).

Я упомянул, что позволяет пользователям создавать учетные записи пользователей – что я имею в виду? Я подробно рассмотрел в пару других ответов, но быстро понял, почему я считаю, что это лучший способ аутентификации и идентификации ваших пользователей:

  • Учетные записи пользователей позволяют связывать несколько лицензий и несколько компьютеров с одним пользователем, давая вам представление о поведении вашего клиента и предлагая им “покупки в приложении”, то есть приобретая вашу “полную” версию (вроде мобильных приложений).
  • Мы не должны требовать от наших клиентов ввода длинных лицензионных ключей, которые являются утомительными для ввода и трудно отслеживать, то есть они легко теряются. (Попробуйте найти “потерянный лицензионный ключ” в Twitter!)
  • Клиенты привыкли пользоваться электронной почтой/паролем; Я думаю, мы должны делать то, что люди привыкли делать, чтобы мы могли обеспечить хороший пользовательский интерфейс (UX).

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

Наконец, поскольку вы также упомянули о том, что хотите обновлять эти лицензии ежегодно, вы можете установить длительность ваших политик, чтобы “полные” лицензии истекали через год, а “пробные” лицензии – 2 недели, требуя, чтобы ваши пользователи приобретать новую лицензию после истечения срока действия.

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

Источник: techarks.ru

Открытие, создание и закрытие ключей

Прежде чем приложение сможет добавлять данные в реестр, оно должно создать или открыть раздел. Чтобы создать или открыть ключ, приложение всегда ссылается на ключ как на подраздел открытого ключа. Всегда открыты следующие стандартные ключи: HKEY_LOCAL_MACHINE, HKEY_CLASSES_ROOT, HKEY_USERS и HKEY_CURRENT_USER.

Приложение использует функцию RegOpenKeyEx для открытия ключа и функцию RegCreateKeyEx для создания ключа. Дерево реестра может иметь глубину 512 уровней. Вы можете создать до 32 уровней одновременно с помощью одного вызова API реестра.

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

Читайте также:
В какой программе нарисовать эскиз тату

Обратная связь

Были ли сведения на этой странице полезными?

Источник: learn.microsoft.com

Как сгенерировать SSH-ключ для Windows: пошаговая инструкция

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

SSH-ключ в Windows — это один из способов безопасного подключения к удаленному серверу. Преимущество данного метода подключения — это отсутствие возможности взлома, как это происходит с паролем.

Для подключения создаются два SSH-ключа:

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

Для корректной и полной работы SSH — ключей необходимо будет отключить аутентификацию по паролю.

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

Генерация SSH — ключей в Windows

Существует два варианта генерации SSH-ключей в Windows. Первый — использование OpenSSH клиента, второй — использование клиента PuTTY. Ниже опишем инструкции по созданию ключей, используя и первый, и второй вариант. В качестве операционной системы будет использоваться Windows 10.

OpenSSH клиент

  1. Для начала нужно проверить установлен ли OpenSSH клиент на Windows 10. Для этого зайдем в «Параметры», а после перейдем во вкладку «Приложения». Далее нажимаем на ссылку «Дополнительные компоненты», как показано на картинке ниже.

В открывшемся окне в строку поиска вводим «Клиент OpenSSH». Если в списке он будет найден, то можно сразу приступать к генерации ключей. Если же он отсутствует, то нужно нажать на кнопку «Добавить компонент», а после найти его и выбрать среди всех доступных, используя строку поиска. Далее останется нажать кнопку «Установить» снизу слева и можно переходить ко второму шагу.

  1. Теперь нужно открыть командную строку. Для этого открываем диалоговое окно «Выполнить» (комбинация клавиш Win+R), вводим в строку cmd и нажимаем кнопку «ОК».
  1. В открывшемся окне вводим команду:

ssh-keygen

После этого запустится процесс генерации.

В первую очередь пользователю будет предложено ввести путь к папке, в которой будут храниться ключи. Чтобы оставить вариант по умолчанию ( . /.ssh/id_rsa ), предложенный системой, нужно нажать клавишу «Enter».

Далее пользователю будет предложено ввести ключевое слово к ключу. Чтобы пропустить этот шаг, нажмите также клавишу «Enter» 2 раза.

  1. Проверим, что все ключи успешно сгенерированы. Для этого переходим в соответствующий каталог на своем компьютере. У нас это /.ssh/id_rsa , так как мы оставили все по умолчанию.

Как видно по картинке выше, ключи сгенерированы успешно.

Переходим к варианту их создания с помощью клиента PuTTY.

PuTTY

Клиент PuTTY был популярным, когда OpenSSH отсутствовал в Windows. Но и сейчас его не перестают использовать. Он находится в свободном доступе на официальном сайте разработчика. Рассмотрим ниже подробную инструкцию по генерации SSH-ключей на Windows 10 в PuTTY.

  1. Для начала необходимо скачать архив клиента PuTTY с официального сайта.
  2. После его нужно будет разархивировать и запустить файл puttygen.exe от имени администратора.
  3. В открывшемся окне выбираем классический и повсеместно использующийся тип ключа для генерации — RSA. Длину оставляем 2048 бит и нажимаем кнопку «Генерировать».
  1. Во время генерации нужно водить курсором по серой области внутри окна до заполнения зеленой полоски. Это позволит улучшить защищенность генерируемого ключа, благодаря созданию псевдослучайности.
  2. После успешной генерации нужно сохранить публичный и приватный ключ на компьютере. Для этого создадим папку на диске.

Ключи успешно созданы и сохранены на локальной машине. На этом этапе их генерация закончена.

Заключение

В данной инструкции были рассмотрены два варианта создания SSH-ключей в Windows. Для подключения к серверу нужно скопировать в него созданный публичный ключ. При попытке соединиться с сервером будет происходить проверка публичного ключа на стороне сервера с приватным на стороне клиента. Если вы пользуетесь облачными серверами Timeweb Cloud, то можете добавить сгенерированный публичный ключ в разделе « SSH-ключи » в панели управления.

Источник: timeweb.cloud

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