Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Quelle est la meilleure façon de chiffrer les SSN dans SQL Server 2008 ?

Si vous chiffrez des données, vous devez vous demander qui les déchiffrera. Si vous utilisez un système de chiffrement asymétrique (par exemple RSA), le chiffrement utilise la clé publique et le déchiffrement utilise la clé privée correspondante ; "l'asymétrie" vient du fait que la clé privée ne peut pas être recalculée à partir de la clé publique (bien que les deux clés soient mathématiquement liées).

Le chiffrement asymétrique a tendance à avoir une surcharge. Une première remarque est qu'un tel chiffrement doit avoir une partie aléatoire, car tout le monde peut chiffrer (la clé publique est, oui, publique) :si le processus de chiffrement est déterministe, alors n'importe qui peut chiffrer tous les SSN possibles (il y a moins d'un milliard d'entre eux, ce qui est un très petit nombre pour un ordinateur moderne) et correspondent aux valeurs chiffrées. Par conséquent, des éléments aléatoires doivent être ajoutés lors du cryptage, et le SSN crypté est plus grand que le SSN en clair.

Les systèmes de chiffrement asymétrique connus utilisent des structures mathématiques qui ont leur propre coût. Fondamentalement, pour le système de cryptage RSA, avec une clé "suffisamment forte", un message crypté aura une longueur d'au moins 128 octets. Certains systèmes de cryptage font mieux; tout en restant sur les sentiers battus de la recherche universitaire, je pouvais le faire en 41 octets environ (avec El-Gamal sur la courbe elliptique NIST K-163). Plus petit semble plus difficile.

Il n'est donc pas étonnant qu'un système de base de données donné n'inclue pas une telle fonctionnalité par défaut.

Pour votre problème, vous devez d'abord définir (et écrire), aussi clairement que possible :

  • quelles sont les données que vous souhaitez protéger
  • qui saisit les données
  • qui est censé relire les données

et alors seulement devriez-vous vous demander si le cryptage est un outil approprié pour cela. Le cryptage est bon lorsque l'attaquant envisagé peut mettre la main sur les données brutes stockées. Cela signifie que l'attaquant a contourné les protections du système d'exploitation. À ce stade, quoi que le système d'exploitation sache, l'attaquant le sait également. Si la base de données est hébergée sur une machine et qu'il existe une interface via laquelle le SSN déchiffré peut être obtenu, alors cette machine "sait" comment obtenir les données, et l'attaquant aussi... D'autre part, si l'hôte le système d'exploitation de la machine est considéré comme suffisamment résilient, alors le chiffrement ne semble pas du tout nécessaire.

Le chiffrement symétrique sur la base de données peut résoudre un problème plus faible, dans lequel l'attaquant obtient une copie du disque dur après . Le système hôte connaît la clé de chiffrement symétrique, mais il ne la connaît que dans la RAM. Un attaquant volant le disque dur n'aura pas cette clé.