Les solutions 4D ont toujours été sûres et stables. Cela s’explique par le fait que 4D investit énormément dans le développement et la mise à jour des fonctions de sécurité. 4D poursuit cet effort dans 4D v18 R4 avec une nouvelle fonctionnalité qui améliore encore sa boîte à outils de sécurité. Une nouvelle classe fournissant un ensemble de méthodes pour effectuer des opérations cryptographiques courantes est maintenant disponible : La classe CryptoKey.
Fonctions cryptographiques
Les fonctions cryptographiques peuvent être utilisées pour mettre en œuvre des fonctions de sécurité telles que la confidentialité et l’authentification. La classe CryptoKey fournit les fonctions cryptographiques suivantes :
- sign() et verify() : création et vérification de signatures numériques
- encrypt() et decrypt() : crypter et décrypter des données.
En plus de ces opérations, la classe CryptoKey vous permet également de générer de nouvelles clés RSA ou ECDSA, ou de charger une paire de clés existante à partir d’une définition PEM.
Signer et vérifier
Les fonctions sign() et verify() vous permettent de signer et de vérifier les signatures de messages. Cela vous permet de fournir une preuve d’authenticité pour les messages numériques ou les documents électroniques.
Les signatures numériques fournissent :
- L’authentification du message: la preuve qu’un expéditeur connu a créé et signé le message.
- l’intégrité du message: la preuve que le message n’a pas été modifié après avoir été signé
- lanon-répudiation: le signataire ne peut pas nier la signature d’un document une fois que la signature a été créée.
Un message est signé par une clé privée et la signature est vérifiée par la clé publique correspondante :
Exemple
Voici un extrait de code montrant comment vous pouvez signer et vérifier la signature d’un message grâce aux méthodes de la nouvelle classe CryptoKey de 4D :
Du côté de Bob
// Create the message $message:="hello world" Folder(fk desktop folder).file("message.txt").setText($message) // Create a key $type:=New object("type";"RSA") $key:=4D.CryptoKey.new($type) // Get the public key and save it Folder(fk desktop folder).file("public.pem").setText($key.getPublicKey()) // Get signature as base64 and save it Folder(fk desktop folder).file("signature").setText($key.sign($message;$type)) /*Bob sent the message, the public key and the signature to Alice*/
Côté Alice
// Get message, public key & signature $message:=Folder(fk desktop folder).file("message.txt").getText() $publicKey:=Folder(fk desktop folder).file("public.pem").getText() $signature:=Folder(fk desktop folder).file("signature").getText() // Create a key $type:=New object("type";"PEM";"pem";$publicKey) $key:=4D.CryptoKey.new($type) // Verify signature If ($key.verify($message;$signature;$type).success) // The signature is valid End if
ENCRYPTAGE et DECRYPTAGE
Le cryptage et le décryptage sont réalisés à l’aide de paires de clés. Le processus de cryptage transforme l’information originale en une forme méconnaissable, tandis que le processus de décryptage convertit les données cryptées en une forme qui peut être lue et comprise par un humain ou un ordinateur.
Une sécurité efficace exige :
- Les clés privées restent privées
- Les clés publiques peuvent être distribuées ouvertement sans compromettre la sécurité.
Exemple
Imaginons que je veuille crypter « hello world ». Voici comment faire :
$encrypted:=$key.encrypt("hello world")
Et pour le décryptage :
$status:=$key.decrypt($encrypted)
Pour des informations plus détaillées, n’hésitez pas à consulter la documentation!
Dans un prochain article de blog, nous vous montrerons jusqu’où vous pouvez aller avec cette classe et les possibilités qu’elle offre pour construire des applications sophistiquées. En attendant, n’hésitez pas à partager vos expériences en matière de cryptage sur le forum 4D !