Teško da solidan odgovor može da stane u ovaj textbox ;-)
Postoji više strategija, koje jako zavise od toga kakvog je tipa program. Recimo:
0. Velik i komplikovan program, vrlo skup, isplati ti se da:
0.0 Kreiraš tvoj privatni i public RSA ključ (DEV-PRIV, DEV-PUB)
0.1 Za samu aplikaciju napraviš privatni i public RSA ključ (APP1-PRIV, APP1-PUB)
0.1 Napraviš installer za njega
0.2 Ti odeš kod klijenta, upališ installer, on instalira program i ti odneseš installer, ne ostane kod klijenta
Instaler radi sledeću stvar:
- napravi signaturu mašine (iz najmanje 3 dela: serijski broj diska, matične ploče, video karte itd) - SIG
- uzme tvoj privatni ključ DEV-PRIV, uzme public ključ od aplikacije APP1-PUB, šifruje SIG i dobiješ S-SIG koji se snimi ili u registru ili u neki konfig fajl od mašine
Program prilikom podizanja:
- napravi signaturu mašine - SIG2
- otključa S-SIG koristeći APP1-PRIV i DEV-PUB
- Uporedi SIG i SIG2 i ako nisu isti, odbije da radi.
1. Srednji program:
1.0 Napraviš signaturu mašine
1.1 Iskoristiš ovo kao šifru za šifrovanje podataka u bazi
Ako se signatura promeni, podaci će postati neupotrebljivi - samo pažnja! da ne uništiš legitimne podatke kod legitimnog klijenta
2. Mali program:
2.1 Postaviš na internet server za registraciju
2.2 Program prilikom instalacije pravi signaturu mašine i šalje je na server za registraciju: (Username, regNum, signatura) gde je u RegNum minglovan username
2.3 Ako mu server vrati da već postoji par (Username, regNum, druga-signatura), odbije da radi
2.4 Ako nema internet konekcije (firewall), program polako smanjuje funkcionalnost, dok se ne ugasi sve dok mu se ne da internet konekcija
itd, itd, itd.