Comment chiffrer une chaîne et d'obtenir une égalité de longueur de la chaîne cryptée?
Mon problème est le suivant:
Dans une base de données existante, je veux crypter les données dans un couple de colonnes.
Les colonnes contient des chaînes de longueurs différentes.
Je ne veux pas changer la taille des colonnes pour le chiffrement de la nécessité de produire une longueur égale représentation textuelle de l'entrée de texte.
La force de l'algorithme de chiffrement est d'un intérêt secondaire, mais bien sûr, je veux qu'il soit aussi puissant qu'il peut l'être. Sinon, je n'aurais pas besoin de crypter les données. Mais la chose la plus importante est la taille de la sortie.
Est-ce possible?
Si oui, comment aurais-je le faire?
Je suis intéressé à le faire .NET. Pas de base de données au niveau de chiffrement.
(oserais-je suggérer ROT13? ;-p)
Pourquoi ne peux-tu modifier la table et les colonnes de grand? Je ne vois pas pourquoi cela devrait être une question....
C'est un problème. Nous avons eu plus de 150 colonnes qui doit être rendu plus grand et un autre système d'héritage de la communication avec la base de données. Cependant, nous sommes maintenant à la recherche en les rendant plus gros et à l'aide de l'algorithme AES.
Pour moi où la sécurité est vraiment une préoccupation mineure, j'ai fini par utiliser ROT47.
OriginalL'auteur Christian80 | 2009-06-12
Vous devez vous connecter pour publier un commentaire.
Au sein de votre constrants, je voudrais utiliser AES dans BFC mode, qui le transforme en un chiffrement de flux et de la longueur de sortie sera le même que l'entrée de la longueur. Sauf si vous êtes stocker les chaînes dans les gouttes, vous aurez besoin de hex ou base64 encode la sortie pour le rendre char sympa, ce sera un 100% ou 33% d'augmentation de la longueur.
Un .NET de la mise en œuvre est ici.
BTW, un point important, assurez-vous que chaque colonne utilise une clé différente pour amorcer le chiffrement, afin d'éviter toute fuite d'informations par xoring voisins ensemble. L'ensemencement avec des <key> <key+1> <key+2>, et ainsi de suite est très bien.
eh bien, tous les algorithmes de chiffrement par bloc en mode CFB agir comme des chiffrements de flux.
OriginalL'auteur Jason Fritcher
Vous devriez prendre une minute pour penser le réel problème que vous essayez de résoudre. J'ai vu très peu de cas où chiffrement de base de données a été vraiment nessecary, puisque l'information rarement flux directement à partir de la base de données à un utilisateur final.
Si vous avez besoin de protéger le contenu de la base de données, alors vous devriez peut-être regarder dans son standard mécanismes de contrôle d'accès au lieu.
OriginalL'auteur Christoffer
De cryptage sécurisé exige que le texte chiffré être plus grand que le texte en clair; sinon identique en clair toujours les résultats à l'identique du texte chiffré, et il n'y a pas une telle chose comme une défaillance du texte chiffré, qui sont à la fois des faiblesses.
Toutefois, si vous ne pouvez vraiment pas vous développez les données que vous chiffrez, le meilleur que vous pouvez faire est un tweakable en mode bloc. Rechercher XTS et CMC modes qui sont utilisés pour le chiffrement du disque.
De cryptage, bien que, n'offrent en général binaire texte chiffré et si vous avez besoin d'une représentation de texte (par exemple, pour mettre dans une colonne de texte dans une base de données), il aura besoin d'être représenté dans un format de texte et que augmenter la taille. Ce n'est pas une considération de sécurité, mais simplement une conséquence du fait que certaines valeurs binaires ne sont pas valides des caractères de texte.
Ce n'est pas le bon. Pour transport sécurisé des données, vous avez besoin non seulement de cryptage, mais d'authentification; ainsi la sortie d'un AVANT à un mode de fonctionnement (par exemple EAX, GGM) doit être plus grande que celle de l'entrée. Pour la sémantique de sécurité, vous devez également répété cryptage de le même texte de rendement différentes cipertexts; EAX ou GGM va le faire. Le cryptage sans authentification est l'un des top les plus courantes des débutants erreurs en crypto, que ce n'est pas à l'aide d'un changement de nonce. J'ai fait ces deux choses dans le commentaire vous répondre!
OriginalL'auteur Paul Crowley
C'est normalement impossible, parce que (d'une façon naïve) que vous attendez de la chaîne cryptée pour contenir plus d'informations que le texte brut.
De vagues idées pour résoudre votre problème:
- Votre numéro de carte sur une plus courte chaîne de texte: deux chiffres pourrait correspondre à un caractère.
- Pouvez-vous éviter de chiffrer les x premiers chiffres?
- Quelles sont les possibilités pour crypter un nombre entier plutôt que du texte?
Oups, désolé, je voulais dire détient plus d'informations à la suite du mot de passe.
OriginalL'auteur Suvesh Pratapa
Vous pourriez regarder pour un chiffrement par bloc ajustable. Si vos lignes ont un identifiant unique (par exemple une clé primaire), puis l'identifiant unique peut être utilisé comme un tweak. L'avantage de ce type de chiffrement est que vous n'avez pas besoin de tout IV de rendre aléatoire le chiffrement. Même si une colonne contient la même valeur à plusieurs reprises, cette valeur est chiffrée différemment, en raison de la modifier.
Moins sécurisée, la solution est d'utiliser un algorithme de chiffrement par bloc en mode compteur et l'utilisation de l'identifiant unique pour calculer le comptoir. Mais ce mode a un grave inconvénient: Vous ne pouvez pas solidement renouveler les champs, sauf si vous modifiez également l'identifiant unique.
Depuis les deux cas ne sont pas aléatoire, le texte chiffré, il est possible qu'un attaquant peut observer si un champ a été modifié. Cela pourrait fuite de quelques précieuses informations. Notez également que ni les cas, vous donne toute l'intégrité des données. Même si un attaquant ne peut pas décrypter les informations, il pourrait toujours être en mesure de le modifier à son avantage.
OriginalL'auteur Accipitridae
La Chiffrement de Vigenère peut le faire. Mais il est vieux (pré-ordinateur) et sûr uniquement si votre phrase clé est plus longue que la plus longue chaîne que vous souhaitez chiffrer. De Plus, avoir une base de données complète de chaînes cryptées avec la même phrase-clé sera probablement faire de cela une semaine de chiffrement, surtout si les textes simples peuvent être deviné.
Il fonctionne plus ou moins comme le césar changement de l'algorithme de add n de chaque lettre dans le texte brut), sauf que ce n est différent pour chaque lettre étant changé, basée sur une expression-clé.
Si votre phrase clé est ABCDEFG, alors n=1 pour la première lettre de l'entrée, 2 pour la deuxième lettre de l'entrée, etc.
Avec une clé aléatoire phrase plus longue que le texte brut, le résultat est tout aussi aléatoire (sécurisé). Mais je crois que ça va briser le bas si vous avez de nombreuses chaînes cryptées avec la même clé. ..
OriginalL'auteur Daren Thomas
Tout algorithme de chiffrement par bloc va faire. En effet, l'entrée d'un bloc de longueur fixe et d'obtenir une taille similaire bloc crypté en arrière. Le chiffrement est une permutation de {0,...,2^blocklength} à {0,...,2^blocklength}. (L'entrée de la longueur doit être collier d'une longueur de bloc de limite.)
Le problème ici est que si les colonnes sont de type texte, vous ne pouvez pas nécessairement lieu binaire cryptotext en eux, et vous aurez à encoder les données dans un format texte (base64 (33% de l'augmentation de la taille).
AES est un algorithme de chiffrement par bloc est largement disponible.
OriginalL'auteur laalto
Idéalement, si les colonnes existantes sont plus grands qu'un seul bloc dans un standard de chiffrement par bloc (16 octets pour l'AES, de 8 octets pour TDES), alors vous pouvez chiffrer en CTS (cipher vol de texte) mode. Malheureusement, .net ne prend pas en charge CTS dans un de ses algorithmes. 🙁
Normalement CTS utilise un hasard IV qui devrait être stockés avec le texte chiffré, mais vous pouvez simplement utiliser l'ID de ligne ou même une valeur constante si vous n'avez pas l'esprit identiques en clair les valeurs de chiffrement à l'identique du texte chiffré.
S'avère que vous avez raison. Pourquoi Microsoft serait-il ajouter à l'énumération et de la dérange pas, jamais mise en œuvre, il est un mystère pour moi.
OriginalL'auteur Theran