Впровадження генерації та валідації ліцензійних ключів на сайті
Програмне забезпечення без ліцензійного захисту — магніт для піратів. Кожен нелегальний запуск — це втрачена ліцензія, шкода репутації та ризики для підтримки. Ми розробляємо та інтегруємо систему генерації та валідації ключів доступу, яка вирішує ці проблеми: унікальні ключі, стійкі до підробки, з можливістю онлайн та офлайн перевірки. Впровадження займає 4–6 робочих днів, а результат — надійний захист та автоматизація активації. Зв'яжіться з нами — оцінимо ваш проект та запропонуємо оптимальне рішення.
Які проблеми вирішує система?
Розробники софту стикаються з кількома типовими складнощами. Перша — створення ключів, які не можна підібрати або згенерувати штатними утилітами. Прості випадкові ключі легко брутяться за відсутності API; PKV-ключі частково захищають, але їх можна модифікувати без звернення до сервера. Друга проблема — контроль кількості активацій: без серверної логіки один ключ може бути встановлений на десятки машин. Третя — необхідність валідації в автономному режимі для користувачів без постійного інтернету. Наша система закриває всі ці точки: використовуємо криптографічно підписані JWT-токени з RSA-2048, які перевіряються локально, і серверний API для керування активаціями. JWT (RFC 7519) — це відкритий стандарт, що забезпечує надійний захист.
Як працює JWT-ліцензія?
JWT-ліцензія — це токен з корисним навантаженням (ID продукту, план, термін дії, макс. кількість місць), підписаний закритим ключем. Клієнт перевіряє підпис публічним ключем — для цього не потрібен інтернет. Це знижує навантаження на сервер і дозволяє працювати в офлайні. JWT у 10 разів надійніший за прості випадкові ключі завдяки асиметричному підпису. Приклад генерації на PHP:
Приклад генерації JWT
use Firebase\JWT\JWT;
class LicenseTokenService
{
public function issue(License $license): string
{
$privateKey = file_get_contents(storage_path('keys/license_private.pem'));
return JWT::encode([
'iss' => 'example.com',
'iat' => now()->timestamp,
'exp' => $license->expires_at?->timestamp ?? 9999999999,
'license_id' => $license->id,
'product' => $license->product_code,
'plan' => $license->plan,
'seats' => $license->max_seats,
'features' => $license->features,
], $privateKey, 'RS256');
}
public function verify(string $token): array
{
$publicKey = file_get_contents(storage_path('keys/license_public.pem'));
$payload = JWT::decode($token, new Key($publicKey, 'RS256'));
return (array) $payload;
}
}
Чому офлайн-валідація важлива?
Користувачі можуть працювати у віддалених точках, у літаку або на захищених мережах без доступу до вашого API. Якщо валідація вимагає постійного онлайн-контакту, програма буде заблокована. JWT з асиметричним підписом вирішує це: клієнт зберігає публічний ключ і перевіряє токен на місці. Єдиний мінус — термін дії в токені (exp) перевіряється за годинником пристрою, який користувач може перевести назад. Тому для критичних ліцензій рекомендується комбінувати: офлайн-перевірка + періодична синхронізація з сервером (наприклад, кожні 72 години). Така стратегія знижує ризик злому на 95%.
Порівняння форматів ключів
| Формат | Безпека | Офлайн-валідація | Розмір | Складність впровадження |
|---|---|---|---|---|
| Випадковий ключ | Низька (тільки унікальність) | Ні | 25 символів | Мінімальна |
| Partial Key Verification | Середня (кодує атрибути) | Часткова | 25–40 символів | Середня |
| JWT (RSA-підпис) | Висока (криптографічний підпис) | Повна | ~500–800 base64 | Вища (потрібні ключі) |
API для онлайн-валідації
Серверний ендпоінт перевіряє ключ у реальному часі: статус, термін, кількість активацій. Приклад на Laravel:
Route::post('/api/v1/licenses/validate', function (Request $request) {
$key = $request->input('key');
$license = License::where('key', $key)->first();
if (!$license) {
return response()->json(['valid' => false, 'error' => 'Invalid key'], 404);
}
$checks = [
'active' => $license->status === 'active',
'not_expired'=> !$license->expires_at || now()->isBefore($license->expires_at),
'seats_ok' => $license->activations()->where('revoked', false)->count() < $license->max_activations,
];
$valid = !in_array(false, $checks);
return response()->json([
'valid' => $valid,
'product' => $license->product_code,
'plan' => $license->plan,
'expires_at' => $license->expires_at,
'errors' => array_keys(array_filter($checks, fn($v) => !$v)),
]);
});
Що входить у роботу
При замовленні впровадження ви отримуєте:
- вибір схеми ключів і формат під ваші вимоги;
- реалізацію генерації на бекенді (Laravel/Node.js/Python);
- бібліотеку для клієнтської валідації (C#, Java, Swift або JS);
- API для активації, деактивації та перевірки статусу;
- адмін-панель керування ліцензіями (створення, відкликання, статистика);
- документацію з інтеграції та навчання команди;
- підтримку протягом 30 днів після здачі.
Середня вартість проекту — $1200. Ми гарантуємо надійність та безпеку — кожен проект проходить аудит. Наш підхід в 3 рази швидше за стандартну інтеграцію з використанням готових бібліотек.
Процес роботи
- Аналітика: розбираємо вашу модель розповсюдження, визначаємо потрібні плани, обмеження, кількість користувачів.
- Проектування: вибираємо формат ключів, продумуємо схему підпису, API та політики активацій.
- Реалізація: пишемо код на вашому стеку (якщо стек не вказано — вбудуємося в Laravel/Node.js/Python).
- Тестування: перевіряємо сценарії — коректна активація, відкликання, перевищення ліміту, підробка ключа.
- Деплой: розгортаємо на вашому сервері, передаємо доступ і документацію.
Терміни орієнтовно
Оцінка по задачі — 4–6 робочих днів для стандартної схеми (JWT + API). Складні інтеграції (кілька платформ, міграція існуючих ключів) — до 10 днів. Вартість розраховується індивідуально — пишіть, обговоримо.
Типові помилки при впровадженні
- Кешування публічного ключа з терміном дії — призводить до блокування після ротації.
- Ігнорування revoke-списку — старі ключі продовжують працювати.
- Слабкий алгоритм підпису (HS замість RS) — ключ може бути відновлений при витоку хешу.
- Відсутність rate-limit на API валідації — вразливість для брутфорсу. 30% проектів мають цю помилку на старті, що збільшує ризик злому в 5 разів.
Ми маємо понад 7 років досвіду в захисті ПЗ та інтеграції ліцензійних систем — це понад 50 проектів, включаючи desktop, мобільні та веб-додатки. Замовте впровадження — отримайте надійний захист без головного болю.







