sql >> Database >  >> RDS >> Sqlserver

Wat is de beste manier om SSN's in SQL Server 2008 te versleutelen?

Als u gegevens versleutelt, moet u zich afvragen wie deze gaat ontsleutelen. Als u een asymmetrisch encryptiesysteem gebruikt (bijv. RSA), dan gebruikt de encryptie de publieke sleutel en de decryptie gebruikt de corresponderende private sleutel; "asymmetrie" komt voort uit het feit dat de privésleutel niet opnieuw kan worden berekend uit de openbare sleutel (hoewel beide sleutels wiskundig aan elkaar zijn gekoppeld).

Asymmetrische codering heeft meestal overhead. Een eerste opmerking is dat een dergelijke versleuteling een willekeurig deel moet hebben, omdat iedereen kan versleutelen (de openbare sleutel is, ja, openbaar):als het versleutelingsproces deterministisch is, kan iedereen alle mogelijke SSN's versleutelen (er zijn minder dan een miljard van hen, wat een heel klein aantal is voor een moderne computer) en overeenkomen met de gecodeerde waarden. Daarom moet er iets willekeurigs worden toegevoegd tijdens de codering, en de gecodeerde SSN is groter dan de platte tekst SSN.

Bekende asymmetrische encryptiesystemen gebruiken wiskundige structuren die hun eigen kosten hebben. Kortom, voor het RSA-coderingssysteem, met een sleutel die "sterk genoeg" is, zal een versleuteld bericht een lengte hebben van ten minste 128 bytes. Sommige coderingssystemen doen het beter; terwijl ik me aan de platgetreden paden van academisch onderzoek hield, kon ik het in 41 bytes of zo doen (met El-Gamal over de NIST K-163 elliptische curve). Kleiner lijkt moeilijker.

Het is dus geen wonder dat een bepaald databasesysteem niet standaard een dergelijke functie zou bevatten.

Voor uw probleem moet u eerst zo duidelijk mogelijk definiëren (en schrijven):

  • wat zijn de gegevens die u wilt beschermen
  • wie de gegevens invoert
  • wie moet de gegevens teruglezen

en dan pas moet je je afvragen of encryptie daar een geschikt instrument voor is. Versleuteling is goed wanneer de beoogde aanvaller de onbewerkte, opgeslagen gegevens in handen kan krijgen. Dit betekent dat de aanvaller de beveiligingen van het besturingssysteem heeft omzeild. Op dat moment weet de aanvaller wat het besturingssysteem ook weet. Als de database op een machine wordt gehost en er is een interface waarmee het gedecodeerde SSN kan worden verkregen, dan "weet" die machine hoe de gegevens te verkrijgen, en de aanvaller ook... Aan de andere kant, als de host het besturingssysteem van de machine als veerkrachtig genoeg wordt beschouwd, dan lijkt codering helemaal niet nodig.

Symmetrische codering op de database kan een zwakker probleem aanpakken, waarbij de aanvaller achteraf een kopie van de harde schijf krijgt . Het hostsysteem kent de symmetrische coderingssleutel, maar kent deze alleen in RAM. Een aanvaller die de harde schijf steelt, heeft die sleutel niet.



  1. Rust:Hoe draaien we een DML op MySQL met veel parameters?

  2. Snelle tip – Versnel een langzaam herstel vanuit het transactielogboek

  3. Wat is beter in MYSQL count(*) of count(1)?

  4. Stel de AUTO_INCREMENT-waarde programmatisch in