Aller au contenu

Liaison et transfert des licences entre appareils

Avec une licence pour un seul appareil, copier le logiciel et son cache sur un autre ordinateur ordinaire ne transfère pas l’autorisation.

Device binding vs user account licensing

Account sign-in identifies the customer and their purchases; device binding determines which machine may use the license. After sign-in, the SDK must still verify device identity, signatures and feature entitlements. Copying account session data or cache files to another computer does not replace that computer's own license verification.

Comment le SDK identifie-t-il l’ordinateur ?

À chaque démarrage, le SDK lit l’identité système et calcule un hash avec l’identifiant produit. La signature du serveur contient ce hash, également vérifié en local.

Windows lit MachineGuid, Linux machine-id et macOS IOPlatformUUID. Seul le hash calculé est envoyé, pas l’identité brute. L’ancien champ de configuration device_id ne remplace pas l’identité locale réelle.

Que se passe-t-il si les fichiers de A sont copiés sur B ?

  1. A reçoit une signature liée à son hash d’appareil.
  2. B lit son identité, obtient un autre hash et refuse le cache de A.
  3. B doit s’activer en ligne. Avec une limite d’un appareil et A encore lié, le serveur refuse B.

Comment un client change-t-il d’ordinateur ?

Le client délie l’ancien ordinateur, puis active le nouveau. Si l’ancien est endommagé, libérez-le depuis Activations d’appareils dans la console. Le changement ne réinitialise pas l’échéance.

Une réinstallation peut changer l’identité du système et nécessiter une nouvelle activation. Clonage complet, identité falsifiée ou client modifié sont des attaques plus fortes : ce hash seul ne garantit pas leur blocage.

Avec une longue durée hors ligne, la signature de A ignore sa libération jusqu’à une requête serveur réussie. Plus la durée est longue, plus l’application des restrictions à distance est retardée.

Hash d’appareil entre langages
Les neuf SDK utilisent le même algorithme
SHA256(UTF8(
  "LicenovaDevice/v2\n"
  + lower(product_id) + "\n"
  + lower(trim(OS_machine_identity))
))