Version : 1.0 — Mars 2026 Scope : Tout logiciel distribué (installeur, binaire, app desktop) par Gentle Designs ou ses clients Objectif : Guider les décisions de protection de propriété intellectuelle dès la Phase 1 (Concevoir), avant que le code ne soit distribué
Le problème
Quand on distribue un logiciel (installeur, binaire, app desktop), l'utilisateur reçoit une copie complète du code exécutable. Selon la technologie, ce code est plus ou moins facile à reverse-engineer.
Niveau d'exposition par technologie
| Technologie | Reverse engineering | Temps pour un dev motivé | Résultat |
|---|---|---|---|
Python (PyInstaller .pyc) |
Trivial | 30 secondes (uncompyle6, decompyle3) |
Code source quasi-original, noms de variables inclus |
| JavaScript (bundle WebView/Electron) | Facile | 5 minutes (DevTools → Sources) | Code lisible même minifié, routes API, structure de données |
SQLite (fichier .db local) |
Trivial | Instant (n'importe quel client SQLite) | Schéma complet, données, relations |
| Rust (compilé natif) | Difficile | Jours/semaines (Ghidra, IDA Pro) | Assembleur, peu lisible, noms de variables perdus |
| Code serveur (API hébergée) | Impossible sans accès | N/A | Le client ne reçoit que les résultats, jamais la logique |
Stratégies par niveau
Niveau 1 : Architecture (le plus efficace, coût zéro en vibe coding)
Principe : mettre la logique à valeur dans la couche la plus dure à reverse-engineer.
| Stack | Stratégie |
|---|---|
| Tauri (desktop) | Déplacer les algorithmes critiques du Python vers des commandes Rust Tauri. Le Python ne garde que le serveur API/CRUD sans valeur propriétaire. |
| Electron (desktop) | Isoler la logique métier dans un addon natif Node (C++/Rust via NAPI) |
| Web (Next.js) | Logique métier dans les Server Components / API Routes / Server Actions — jamais dans le frontend |
| Mobile (React Native) | Logique critique dans un module natif (Swift/Kotlin/Rust via FFI) |
Leçon EVQuest : la quasi-totalité de la logique métier (algorithmes d'analyse poker, calcul de stats, heuristiques de catégorisation, DQS) était en Python — décompilable en 30 secondes. La migration de ces algorithmes en commandes Rust Tauri doit se faire AVANT la première distribution payante, pas après. Une fois le code Python dans la nature, l'IP est compromise de manière irréversible.
Niveau 2 : Obfuscation (ralentir, pas empêcher)
| Stack | Outil | Effet | Coût |
|---|---|---|---|
| Python | Nuitka | Compile en binaire natif C — protection solide | Temps de build plus long |
| Python | PyArmor | Chiffre le bytecode | Licence payante |
| JavaScript | Terser (minification) | Renomme variables, supprime whitespace | Gratuit, inclus dans la plupart des bundlers |
| JavaScript | javascript-obfuscator | Aplatit le control flow, chiffre les strings | Ralentit l'exécution |
| SQLite | SQLCipher | Chiffre la base de données au repos | Intégration simple, gestion de clé nécessaire |
| Rust | strip = true + opt-level = 3 dans Cargo.toml |
Supprime les symboles de debug | Déjà fait par défaut en release |
Niveau 3 : Legal
LICENSE.txtpropriétaire dans chaque build distribué- CGU interdisant explicitement le reverse engineering (limitable contractuellement même si l'UE autorise par défaut pour interopérabilité)
- Contrats de prestation Gentle Designs avec clause de propriété intellectuelle claire
- Marque déposée si le nom du produit a de la valeur
Niveau 4 : Architecture hybride (produits matures)
Pour les produits ambitieux, le pattern le plus robuste :
- Client léger distribué (UI + communication) — intrinsèquement exposé mais ne contient rien de valeur
- Logique métier sur serveur (API cloud) — inaccessible
- Nécessite connexion internet + infrastructure serveur
- Modèle GTO Wizard, Poker Copilot cloud, etc.
Matrice de décision par type de projet
| Type de projet | Risque IP | Stratégie recommandée |
|---|---|---|
| App desktop propriétaire (EVQuest) | Élevé | Architecture : logique métier en Rust. SQLCipher pour la BDD. Nuitka pour le Python restant. |
| Outil interne entreprise (AeroForge/SLICK) | Moyen | Logique critique en Rust, licence restrictive, distribution contrôlée |
| Site/app web client (Gentle Designs) | Faible | Logique côté serveur (naturellement protégée), minification frontend standard, contrat IP |
| Projet open-source | N/A | Licence MIT/Apache, pas de secret à protéger |
Checklist Phase 1 (PRD) — Section IP
À inclure dans chaque PRD de projet distribué :
## Protection de la propriété intellectuelle
### Algorithmes à valeur propriétaire
- [Lister les 2-5 algorithmes/logiques qui font la valeur du produit]
### Couche d'implémentation cible
- [ ] Chaque algorithme listé est assigné à une couche protégée (Rust/natif/serveur)
- [ ] Le Python/JS ne contient que du CRUD et de la plomberie sans valeur propriétaire
### Mesures de protection
- [ ] SQLCipher ou BDD chiffrée si données locales sensibles
- [ ] Licence propriétaire dans le build
- [ ] Obfuscation du frontend (minification minimum)
Rappel vibe coding
Dans un workflow vibe coding, déplacer un algorithme de Python vers Rust via une commande Tauri n'est pas un "gros chantier d'ingénierie" — c'est une tâche Claude Code comme une autre. L'argument "c'est trop complexe à migrer" ne s'applique plus. Seule la décision d'architecture compte : si c'est la bonne cible, y aller.
Dernière mise à jour : mars 2026