2009-11-06 4 views
0

Quelqu'un peut-il suggérer un algorithme de cryptage rapide à 2 voies pour les longs caractères?Suggestions pour un cryptage bidirectionnel rapide?

Mes candidats sont les suivants:

  • AES: Advanced Encryption standard spécifié par le NIST FIPS-197. BLOWFISH: l'algorithme Blowfish défini par Bruce Schneier. DES: l'algorithme Data Encryption Standard défini par NIST FIPS-46-3. DESORD: l'algorithme "Triple DES" défini par NIST FIPS-46-3.

Edition -

La vitesse est plus d'un facteur de sécurité. La requête réelle était de "obscurcir" les ids passés sur les services web internes, donc dans le cas où un identifiant est jamais exposé, on ne peut pas deviner les autres id en ajoutant 1. (un argument pour les clés UUID par rapport à l'auto-incrémentation ??)

+3

-t-il besoin d'être clé publique ou tout simplement réversible? Pouvez-vous donner une idée de la façon dont l'algorithme sera utilisé? –

+0

Je n'ai pas besoin de clé publique. L'exigence est de chiffrer les identifiants dans une base de données lorsqu'ils passent entre les machines. Les deux machines auront le sel. –

+0

Intel Nehalem aura des instructions pour soutenir AES dans le matériel. Une fois que les CPU de base Nehalem seront disponibles, il sera difficile de battre AES en vitesse. – Accipitridae

Répondre

2

Utiliser AES. La vitesse a été une considération majeure dans sa sélection pour remplacer DESEDE. Sur le matériel PC moderne, il a tendance à être plus rapide que Blowfish, et en standard, il est plus susceptible d'avoir un support matériel spécialisé. Par ailleurs, tous les chiffrements chiffrent les entiers longs — chaque flux d'octets est un entier, représenté en base-256.

1

Je n'ai pas besoin de clé publique. L'exigence est de chiffrer les identifiants dans une base de données lorsqu'ils passent entre les machines. Les deux machines auront le sel

Ensuite, XOR?

+0

L'un des environnements sera ColdFusion qui n'a pas de support intégré pour XOR bien que ce soit à peu près juste. Rapide et simple. –

+2

Non, absolument pas! Si le modèle de menace est qu'un attaquant ajoutera 1 à un ID pour obtenir l'ID suivant, il peut prendre (ID XOR key), retourner le dernier bit, et avoir 50% de chance que le résultat soit ((ID + 1) Touche XOR). Donc, si tout ce que vous avez fait est XOR, alors il peut encore usurper des messages comme s'il connaissait l'ID suivant, même s'il ne le sait pas. –

1

Quel est votre principal critère de sélection? Vitesse ou sécurité? C'est le compromis fondamental dans le domaine de la cryptographie. Voici un ensemble de benchmark results for Crypto++. Ils ne vous diront pas tout, mais vous serez en mesure de dire quels algorithmes sont généralement plus rapides que d'autres. Voici un whitepaper discussing the relative strengths of some popular algorithms. Déterminer la force est une chose très difficile à faire dans le cas général, bien que certains algorithmes aient reçu suffisamment d'attention pour que leurs forces et leurs faiblesses soient assez bien connues (DES, RSA, etc.). Une règle générale est que les clés plus longues impliquent de plus grandes forces, mais vous devez être très prudent avec cela. Je soupçonne que dans votre cas, AES ou Blowfish ira bien. AES sera probablement un peu plus largement soutenu, mais vraiment - soit ferait probablement. Restez à l'écart de DES sauf si la vitesse est un facteur critique.

1

Si la sécurité est votre principale préoccupation, j'irais avec AES.

Toutefois, le texte chiffré peut être trop volumineux pour votre base de données. Si vous ajoutez IV, padding, il y a 64 caractères en hexagone au moins. Vous pouvez utiliser l'algorithme que j'ai posté ici si vous couru dans cette limite,

simple symmetric encryption of long to String (and back) in java