Hallo Leute
Demnächst wird auf mich das Thema „Verschlüsselung der Daten in der Datenbank“ zukommen. Eingesetzt wird dabei Oracle 10g (genaue Version steht noch nicht fest). Im Detail geht es darum, dass Dokumente, die in der Datenbank in einem BLOB abgelegt werden, so verschlüsselt werden sollen, dass Unbefugte die Dokumente nicht auslesen können.
Oracle bietet dafür grundsätzlich ja mal das DBMS_CRYPTO-Package an. Dieses hat auch Prozeduren zum Ent- und Verschlüsseln von Blobs. Die entsprechende Prozedur hat dabei u.a. ein BLOB-Argument mit den zu verschlüsselnden Daten sowie ein BLOB-Argument mit den verschlüsselten Daten.
Ist es mit diesem Package möglich, Dokumente so zu verschlüsseln, dass es für die Anwendung transparent ist? Sprich: Anwendung geht davon aus, dass Dokumente unverschlüsselt in den Blob geschrieben werden. Ein Trigger fängt das entsprechende Updatestatement ab und verschlüsselt die Daten, bevor sie tatsächlich weggeschrieben werden. Umgekehrt soll es natürlich auch funktionieren, d.h. die Anwendung greift beim Auslesen nicht direkt auf die Tabelle zu sondern auf eine View, die die Blob-Spalte quasi „on-the-fly“ entschlüsselt.
Das obige Konzept ist mit „normalen“ Varchar-Spalten ja kein Problem. Wie aber sieht die Sache bei BLOB-Spalten aus - schließlich bekommt man ja prinzipiell nicht die Daten selbst sondern nur den BLOB-Locator, wenn man per Select darauf zugreift. Kann hier das obige Konzept überhaupt greifen? Hat irgendwer bereits Erfahrung mit der Verschlüsselung von BLOBs in der DB?
Währe über Hilfe sehr dankbar.
Erwin
PS: Die Doku zu DBMS_CRYPTO ist leider ziemlich dürftig und Metalink habe ich auch schon abgegrast. Eine Testdatenbank habe ich auch noch nicht zur Verfügung, kann also nicht einfach so herumprobieren.