Je vous recommande d'utiliser une implémentation S/MIME (ou CMS) existante avec un module cryptographique solide pour crypter votre contenu. Les données enveloppées S/MIME constituent un bon format pour le stockage des données cryptées "au repos": l'enveloppe enregistre des informations sur les algorithmes et les clés utilisés pour que l'information soit disponible plus tard aux destinataires autorisés, lorsque cela est nécessaire. De plus, même s'il ne supporte pas les «meilleurs» algorithmes (comme l'accord de clé ECDH), une bonne bibliothèque est beaucoup moins susceptible d'avoir des vulnérabilités que quelque chose écrit par un programmeur général. Comme il est loin, loin plus probable que la sécurité sera violée par une erreur de mise en œuvre que cryptanalysis, il est logique de minimiser ces erreurs.
Dans les protocoles légitimes, les clés publiques sont signés par l'un d'un petit nombre d'émetteurs de confiance, dont les clés publiques sont distribués par des moyens sûrs « out-of-band ». Si vous avez déjà un moyen sécurisé d'obtenir une clé publique pour l'expéditeur du message, pourquoi envoyer un autre message? Et si vous ne le faites pas, vous êtes foutu.
TLS et S/MIME dépendent de l'existence d'un ensemble de certificats CA bien connus sur chaque client. Ils sont utilisés pour signer la clé publique du serveur afin qu'un client puisse détecter les tentatives de substitution de clés. Le protocole ne peut pas s'amorcer lui-même; il doit y avoir un moyen sûr de distribuer des «ancres de confiance» hors bande.
Notez également que RSA est incroyablement lent par rapport aux chiffrements symétriques. Les protocoles réels génèrent une «clé de chiffrement de contenu» pour un algorithme symétrique comme AES, puis utilisent une clé publique RSA comme «clé de chiffrement de clé» pour chiffrer la clé de chiffrement de contenu pour le (s) destinataire (s) du message. Par conséquent, le principal problème consiste à obtenir votre clé publique auprès du client en toute sécurité. Si vous pouvez le faire, soit l'option # 1 ou # 2 est bon — en supposant que vous utilisez simplement cette clé publique, plutôt que d'essayer d'en envoyer un autre "in-band". En fait, dans CMS, l'option 1 est appelée «transport de clé» et l'option 2 est appelée «accord de clé». En pratique, le «serveur» peut utiliser un certificat émis par une autorité de certification déjà connue, ou le client peut comparer un hachage du certificat avec un certificat que vous lui avez donné par téléphone, ou vous faire une image au visage d'une falaise, ou peu importe. La chose critique est, tous de votre sécurité dépend de l'intégrité du certificat. Vous devez le protéger contre la falsification.
Alors que Crypto ++ est un "standard de l'industrie", sa sécurité dépend de comment vous l'utilisez.Just like Jerry told Kramer, "la porte doit être & hellip; fermé!" L'utilisation des primitives cryptographiques dans Crypto ++ avec un protocole mal conçu ne vous mènera nulle part.C'est pourquoi je souligne l'utilisation de CMS (un protocole de plus haut niveau) avec un bon module cryptographique (primitives cryptographiques).
J'utiliserais simplement GPG. Il est prêt à l'emploi et répond aux standards de l'industrie pour les emails (pour ceux qui se soucient des emails sécurisés). Mais vous pourriez avoir des exigences particulières, je ne sais pas. – liori
AES-128 est en fait plus sécurisé que les autres variantes AES. http://neworder.box.sk/newsread.php?newsid=22916 –
GPG n'est vraiment pas utile dans ce cas. @ AES-128 étant plus sûr, AES n'est pas près d'être cassé. La page que vous avez liée indique même que les attaques sont complètement impraticables. Il dit aussi que seul le 9 round de Rinjdael a été potentiellement cassé. La norme AES spécifie que le minimum est de 10 rounds et AFAIK la version 256 bits a 14 rounds. – CMircea