Qui PHP mcrypt de chiffrement est la plus sûre?
Alors les gars, il ya beaucoup de différents algorithmes disponibles - mais qui est le plus sûr à utiliser de nos jours?
Liste: http://www.php.net/manual/en/mcrypt.ciphers.php
Vous devez vous connecter pour publier un commentaire.
En cas de doute, utiliser AES (aussi connu comme "Rijndael") avec une clé de 128 bits. Si vous avez développé une sorte de fétiche à propos de la taille de la clé, alors vous pourriez répondre à vos irrationnel de scrupules à en sélectionnant une plus grande clé, par exemple, 192 ou 256 bits; le coût supplémentaire n'est pas très élevé (+de 40% de la charge de travail pour l'AES-256, par rapport à l'AES-128, et il faut très très réseau rapide de réellement observer que la différence).
Méfiez-vous que, quelle que soit la taille de la clé choisi, le bon mcrypt de chiffrement AES est toujours
MCRYPT_RIJNDAEL_128
. C'est parce que le standard AES se réfère à la saveur de la Rijndael de chiffrement à 128 bits taille du bloc. Si vous voulez AES-256, vous devez utiliserMCRYPT_RIJNDAEL_128
avec une 256 bits (32 bits) clé, pasMCRYPT_RIJNDAEL_256
.AES a été publié en 1998 et adopté par le gouvernement AMÉRICAIN comme une norme fédérale en 2001, et il ne montre aucun signe de faiblesse de nos jours. Certaines propriétés mathématiques ont été trouvés par la suite, mais ils n'ont pas d'incidence réelle de la sécurité; surtout, ils mettent en évidence que nous avons un certain nombre d'assez d'avoir des connaissances précises sur les raisons de l'AES est sécurisé. Aucun autre algorithme de chiffrement symétrique a reçu autant d'attention (en milliers de talentueux cryptographes) que le cryptage AES.
La plupart des problèmes de sécurité viennent de la façon dont l'algorithme de chiffrement est utilisé, pas de l'algorithme lui-même. Utiliser un chaînage de mode, ajouter un MAC, gérer rembourrage, et la plupart de tous gérer la clés en toute sécurité. Si vous avez tous de ce droit (qui est beaucoup plus difficile que ce qu'il semble), puis il devient temps de s'inquiéter au sujet de le choix de Rijndael, Twofish ou quoi que ce soit.
RINJDAEL_128
est AES indépendamment de keysize?En plus de Thomas Pornin de la grande réponse, vous devez également penser à ce que vous essayez d'atteindre en termes de "sécurité" (confidentialité/intégrité/authenticité/disponibilité).
Pour tous les cas, vous aurez besoin pour répondre à quelques questions, comme... Qui cela s'? Où et pourquoi est-elle utilisée (ce que vous protéger)? Combien de temps est-il fait pour durer? etc.
Par exemple, il n'y a probablement pas de point réellement le cryptage des données de session avec une véritable succession de 256 bits opérations lorsque les données n'est vraiment fait pour durer pour dire de 20 à 30 minutes. Sécurisé 128 bits de l'algorithme serait près de deux fois plus vite ou, au moins, utiliser des charges de moins de cycles d'horloge et être tout aussi (sinon plus) sécurisé.
Il n'y a aucun point dans cryptage de quelque chose qui est destiné à durer longtemps (comme un document confidentiel ou fichier de clé privée etc...) avec une faible touche de raccourci de la méthode. Vous voulez à la fois plusieurs algorithmes avec une certaine sorte de l'authentification et de la bonne utilisation de rembourrage. J'ai régulièrement chiffré et signé de contenu sur demande pour les clients à l'aide de plusieurs algorithmes (surtout twofish, AES, RSA).
Et de ne pas oublier (comme Thomas l'a souligné), vous pouvez mettre en œuvre une méthode (ou les méthodes) de façon sécurisée. Avec la grande quantité de variantes de chaque formule et le tel, il peut être difficile à mettre en oeuvre quelque chose qui est "sûr".
Généralement, quelque chose est aussi sûr que la clé est pour le déverrouiller. Si je laisse mes clés de voiture dans la voiture avec la voiture déverrouillée, les touches ne sont pas sécurisé et il est ouvert pour le prendre par n'importe qui marche au-delà. Blowfish avec un bien dispersé 32 touche de caractère serait tout aussi sécurisé que tout autre chose aujourd'hui. 3 touche de caractère pourrait cependant être brisé en un clin d'œil.
"Le plus fort niveau de chiffrement est AES-256"
De détails sur Bruce Schneier site web, AES-256 peut, paradoxalement, être le moins sécurisé des trois tailles de clé de 128, 192 et 256. Il y a des problèmes avec la génération de la clé de 256-bit.
Certains algorithmes sont mieux que d'autres à des choses différentes - pas sûr de ce que vos critères pour les plus "sûrs" est.
Vous certainement ne devriez pas l'utiliser tout de la DES algorithmes à base de ces jours (en supposant que vous avez un libre choix). AES (Rijndael) est la norme actuelle pour le NIST et d'autres organes.
En général plus de bits pour un algorithme spécifique qui signifie plus sûr, mais assurez-vous d'utiliser un vecteur d'initialisation et de ne PAS utiliser de la BCE.
HTH
C.
Selon le NIST, le papier, RJINDAEL avait une faible marge de sécurité par rapport à MARS, twofish ou de serpent. Si vous avez vraiment besoin le plus fort chiffre, de choisir l'un de ces.
http://csrc.nist.gov/archive/aes/round2/r2report.pdf
Citer:
"MARS semble avoir une grande marge de sécurité. Une caractérisation précise de MARS est
difficile en raison du fait que MARS utilise deux différents types de tours. MARS
a reçu quelques critiques qui s'appuient sur sa complexité, ce qui peut avoir entravé son
l'analyse de la sécurité au cours de la période de l'AES processus de développement.
Rijndael semble avoir une marge de sécurité adéquate. La marge de sécurité est un peu
difficile de mesurer le nombre de tours de change avec la taille de la clé. Rijndael
a reçu quelques critiques sur deux motifs: que la marge de sécurité est sur le bas côté
parmi les finalistes, et que sa structure mathématique peut conduire à des attaques. Cependant, son
la structure est assez simple, ce qui peut avoir de la facilité de son analyse de la sécurité au cours de la
des délais spécifiés de l'AES processus de développement.
Serpent semble avoir une grande marge de sécurité. Serpent a également une structure simple,
qui pourrait avoir facilité son analyse de la sécurité au cours de la période de l'
AES processus de développement.
Twofish semble avoir une grande marge de sécurité. Depuis Twofish principales utilisations-dépendante
tour de fonction, la notion de marge de sécurité peut avoir moins de sens pour cet algorithme
que pour les autres finalistes. La dépendance de la Twofish S-boxes uniquement sur k/2 bits de
l'entropie dans les k bits de la clé de cas a conduit à une spéculation que Twofish peuvent faire l'objet d'une
divide-and-conquer attaque, bien qu'aucune attaque n'a été trouvé. Twofish a reçu
certains critiques pour sa complexité, rendant difficile toute analyse au cours de la période de l'
AES processus de développement."
Si vous voulez regarder les détails, il y a un article, surtout par moi, sur les algorithmes de chiffrement par bloc à http://en.citizendium.org/wiki/Block_cipher
Afin d'être conforme aux normes américaines, utiliser EI, anciennement Rijndael. L'un des autres finalistes du concours AES -- Serpent, MARS, Twofish ou RC-6 -- devrait être très bien. Je pense que vous avez besoin d'une licence pour RC6, cependant.
J'ai l'habitude d'utiliser AES-128 depuis AES est FIPS approuvé. Le plus fort niveau de chiffrement est AES-256 (MCRYPT_RIJNDAEL_256).
mcrypt a une conception modulaire et les nouvelles de chiffrement peuvent être ajoutés facilement.