Информация об изменениях

Сообщение Re: Простая схема ключепроверки - Собственно, а как сделать от 20.02.2019 15:39

Изменено 22.04.2019 8:08 deleted2

Re: Простая схема ключепроверки - Собственно, а как сделать из программы шаровар
0>Также, как я понимаю, нужно встроить ввод и проверку ключа в саму программу. Никаких платных защит навешивать не хочу, все это чисто эксперименты для пробы пера, поэтому нужно чтобы все было максимально бюджетно.

Вот минимально самое простое, что можно сделать:

Ключ состоит из трех частей:

DDDDD-RRRRR-KKKKKK-SS
D — дата генерации ключа и любые нерандомные числа на ваш выбор
R — рандомная часть
K — хэш от D и R. Если хэш очень длинный (много-много бит), то записана только часть этих битов для компактности ключа
S — контрольная сумма, потому что пользователи ошибаются во вводе

Как все это упаковать в ключ — ваше дело. Рекомендую для простоты взять для начала просто hex, а для продакшена потом поменяете на многобитные кодировки, например из 32 символа или 64 символа, во что влезет английский алфавит и символы типа _= и т.п.

Ключегенератор:

Генерим DDDDD и RRRRR, используя текущую дату и рандомные числа. Берем хеш и пишем в KKKKK ту часть битов, сколько нам хватит для короткой длины, весь ключ дополняем контрольной суммой.

Проверка ключа при вводе:

Сверяем контрольную сумму. Если все отлично, делаем enabled кнопку регистрации.

Проверка самого ключа:

Берем DDDDD и RRRR и берем от нее хеш. Сравниваем с KKKKKK. Если все ок, то все хорошо, иначе пишем куда-то что ключ бракованный.

Проверка бракованного ключа:
Рандомно с вероятностью 0.01 ... 0.2 проверяем не записано ли где, что ключ бракованный, если записано, то втихую для пользователя сбрасываем ключа в режим триала. Нужно это для кул-хаскеров, кто не проверяет работоспособность взлома, и для кул-горе-пиратов, кто скачал ключ, попользовался, а потом обнаруживает, что ключ не работает. А ему уже вломы снова искать работающий ключ, что повышает шанс к покупке. Смысл в том, чтобы проверка заработала не сразу и не всегда обнаруживался крак.

Действия если нашли работоспособный ключегенератор на крак сайтах:

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

На форумах кракеров появится срач — я скачал и у меня не работает. Да нет, все работает отлично, спасибо за крак. Помогите, ключ не работает! Да работает же, у тебя руки из задницы растут.

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

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

Лично у меня такая схема работает с самого начала моей шаревары. Она чуть сложнее, но принцип такой же. Раньше я использовал ElGamal, сейчас эллиптические кривые в качестве крипто-хеша.

Закрывать ключ криптерами не советую. Во-первых, это все-равно ломается, пусть сложнее, но ломается, во вторых, антивирусы не любят криптеры.

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

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