2009-11-20 7 views
0

Notre client veut nous donner une base de données. La base de données d'origine possède une colonne de numéros de téléphone. Il ne veut pas nous donner de numéro de téléphone. Quelque part, je ne sais pas pourquoi - il est décidé que le client nous donnera des numéros de téléphone cryptés avec une clé AES 128 bits.s'il vous plaît conseils si sur notre cas d'utiliser le cryptage

Nous indiquerons au client quel numéro de téléphone doit être présélectionné dans un certain but mais nous ne saurons jamais quel est le numéro de téléphone réel .. nous connaîtrons simplement les nombres cryptés.

Voici ce que je ne comprends pas:

  1. utilise le cryptage AES clé 128 bits appropriée à cet effet?
  2. si le client préserver la clé AES utilisé pour convertir les nombres ou si le client au lieu de préserver la clé créer une base de données cartographie des numéros Orignal avec numéros chiffrés
  3. doit être utilisé la même clé pour convertir tous numéros ou différents
  4. si des clés générées aléatoirement sont utilisées pour chiffrer des numéros n'est-il pas possible que pour deux numéros de téléphone le texte crypté peut être le même?
+1

Soit dit en passant, il n'y a pas un seul modérateur sur le SO - toute personne ayant un Représentant raisonnablement élevé peut fermer des questions. Le meilleur moyen de ne pas clôturer une question n'est pas de dire que c'est pertinent, mais plutôt * montrer * qu'en rédigeant simplement une bonne question pertinente. Les bonnes questions restent et les mauvaises questions se referment, indépendamment des appels "personnels" aux mods. –

Répondre

1

vos préoccupations dans l'ordre:

  1. Il peut être, il ne peut pas être. Vous n'avez pas vraiment mentionné quel est le but du tout, en fait:

    • Pourquoi le besoin de cryptage?
    • De qui est-il protégé?
    • Quelle est la valeur (ou la responsabilité à vous, en cas de perte) des données?
    • Dans quelle mesure les assaillants hypothétiques sont-ils motivés?
    • Quelle perte de performance est acceptable pour le gain de sécurité?
    • De quel matériel disposez-vous?
    • Qui a quel accès physique/logique aux différentes parties du système?

    Et ainsi de suite, et ainsi de suite. Sans connaître la situation, il n'est pas possible de dire si c'est un schéma de chiffrement approprié. (Bien que ce soit susceptible d'être un choix solide).

  2. Sûrement que c'est au client de décider? Je dirai, cependant, que le dernier cas semble aller à l'encontre du but du cryptage entièrement.
  3. La même clé doit être utilisée pour convertir tous les nombres, sauf si vous avez envie de jongler avec les touches pour essayer de vous rappeler lequel utiliser pour déchiffrer les numéros de téléphone. Si le système de sécurité est bien conçu, cela ne donnerait aucune sécurité supplémentaire et serait juste un casse-tête bizarre. Par définitiong de , le cryptage, no. C'est toujours une cartographie réversible, ce qui signifie qu'il n'y a pas de perte d'information telle que vous obtiendriez avec un hachage. Et par conséquent, chaque instance de texte chiffré a un seul texte en clair qui lui cryptera (avec une clé donnée).

Bien que dans l'ensemble cela ne semble pas nécessaire. Il me semble que quelqu'un a pris des décisions basées sur les apparences plutôt que sur le mérite technique - "Nous chiffrons vos numéros de téléphone avec le même cryptage 128 bits utilisé dans les navigateurs" sonne bien mais est-ce vraiment nécessaire?

5

IMO c'est la mauvaise approche. Au lieu de crypter le numéro de téléphone, ce qui laisse encore une chance de le décrypter (par exemple, parce que quelqu'un fuit la clé), le client doit simplement les remplacer par un ID qui pointe vers une table avec les vrais numéros de téléphone; bien sûr, cette table de consultation reste avec lui, vous ne l'obtenez jamais.

I.E.

Table originale:

Name | Phone 
-------+--------- 
Erich | 555-4245 
Max | 1234-567 

Vous obtenez:

Name | Phone 
-------+--------- 
Erich | 1 
Max | 2 

Seul votre client a:

ID | Phone 
---+--------- 
1 | 555-4245 
2 | 1234-567