Chiffrement ZIP et Partage de Secret |
|
|
|
Classe CShamirNative7z : Chiffrement ZIP et Partage de Secret de Shamir (100% Natif WLangage)
Bonjour à tous,
Je partage avec vous aujourd'hui une classe 100% native WLangage permettant de sécuriser des archives (ZIP) en utilisant le célèbre algorithme cryptographique de partage de secret de Shamir (Shamir's Secret Sharing).
?? Le concept
Le schéma de Shamir permet de diviser un secret (ici, un mot de passe très fort généré aléatoirement) en N clés (parts). Pour reconstruire ce mot de passe et déchiffrer l'archive, il faudra réunir un seuil minimum de K clés.
Exemple d'usage : Vous protégez un document RH confidentiel en générant 5 clés. Vous distribuez ces clés à 5 directeurs. Vous paramétrez le seuil à 3. Ainsi, le fichier ne pourra être ouvert que si au moins 3 directeurs réunissent leurs clés. Si un ou deux directeurs perdent leur clé, le fichier reste récupérable. S'ils ne sont que deux, le fichier est mathématiquement indéchiffrable.
?? Les points forts de cette classe
100% Natif WLangage : AUCUNE dépendance externe. Pas de DLL, pas d'API Windows, pas de script Python ou .NET. Un simple copier-coller de la classe dans votre projet suffit. Déploiement garanti sans prise de tête !
Mathématiques Infaillibles : Le cœur de l'algorithme a été codé de zéro en utilisant l'algèbre des Corps de Galois finis GF(2^8). Il utilise le polynôme irréductible cryptographique standard 0x11D (285) garantissant un générateur primitif parfait.
Sécurité de la Mémoire : La classe a été blindée contre les pièges classiques du WLangage (conversions ANSI/Unicode implicites, corruption de Buffers). Toutes les manipulations d'octets passent par des séquences hexadécimales strictes (HexaVersEntier / EntierVersHexa).
Clés de taille optimisée : Les clés générées sont compactes, lisibles et peuvent être facilement envoyées par email, stockées en BDD ou imprimées sous forme de QR Code.
??? Méthodes Principales
ProtegerArchive(sCheminSource, sCheminArchive7z, nSeuilRequis = 2, nTotalCles = 3)
Action : Génère un mot de passe fort (16 caractères), crée une archive ZIP chiffrée contenant votre fichier, découpe le mot de passe, et vous renvoie le tableau des clés générées.
Retour : Un tableau de chaînes contenant les clés.
ExtraireArchive(sCheminArchive7z, sDossierDestination, tabClesSaisies)
Action : Prend les clés fournies, reconstruit le mot de passe via interpolation polynomiale de Lagrange sur GF(256), et extrait l'archive dans le dossier cible.
Retour : Un booléen (Vrai si succès, Faux si clés insuffisantes, invalides ou archive corrompue).
?? Exemple d'utilisation
oSecurite est un CShamirNative7z sFichierSource est une chaîne = "C:\Temp\Secret.pdf" sArchiveCible est une chaîne = "C:\Temp\ArchiveProtegee.zip" sDossierExtraction est une chaîne = "C:\Temp\Extraction\"
// ========================================== // 1. CRÉATION (Exemple : 2 requises sur 3) // ========================================== tabMesCles est un tableau de chaînes tabMesCles = oSecurite.ProtegerArchive(sFichierSource, sArchiveCible, 2, 3)
SI tabMesCles..Occurrence = 3 ALORS Info("Archive chiffrée avec succès ! Voici les clés générées :", ... "Clé 1 (Alice) : " + tabMesCles[1], ... "Clé 2 (Bob) : " + tabMesCles[2], ... "Clé 3 (Charlie) : " + tabMesCles[3]) FIN
// ========================================== // 2. EXTRACTION (Avec seulement 2 clés sur 3) // ========================================== tabClesSaisies est un tableau de chaînes // Admettons que Charlie est absent, Alice et Bob veulent ouvrir l'archive : TableauAjoute(tabClesSaisies, tabMesCles[1]) // Clé d'Alice TableauAjoute(tabClesSaisies, tabMesCles[2]) // Clé de Bob
bSucces est un booléen = oSecurite.ExtraireArchive(sArchiveCible, sDossierExtraction, tabClesSaisies)
SI bSucces ALORS Info("Succès !", "L'archive a été déchiffrée avec 2 clés !") SINON Erreur("Échec de l'extraction.") FIN
N'hésitez pas à l'intégrer dans vos projets nécessitant des protocoles de sécurité avancés (coffres-forts numériques, gestion de mots de passe maîtres, protection de données RGPD sensibles avec multi-approbation).
Bons développements à tous ! |
|
|
|
|
|
|
|
| Illustrations, copies d'écran |
|
|
|
| (Pour noter la ressource, cliquez sur Ecrire un avis) |
|
|
| pour pouvoir poster un avis |
|
|
|
|
|
|
|
|
| Aucun avis ou commentaire ? Soyez le premier ! |
|
|
|
| Version minimale : 01A31.2.018 |
|
|
|
|
|