![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: Firedac
Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
Hallo , das ist keine ausschließliche Firebird-Frage, sondern ehere eine Datenbank und Dateien Frage.
Wenn mein Dienst auf verschlüsselte Daten/Dateien CRUD-operationen ausübt, muss er die ja auch Entschlüsseln/Verschlüsseln können. Also muss der Dienst den Schlüssel kennen. Ein Passswort verschlüsselter Key mit Passwortabfrage bei Dienststart geht leider nicht, weil der Dienst nach einem Rechner Neustart laufen muss ohne Menschliches zutun. Also muss der Symetrische schlüssel Irgendwo gespeichert werden oder? Aber wo? Am besten als verteilter schlüssel, falls der Rechner/die VM mal wegkommt? Wer hat sowas schonmal gemacht? Gibts fertige Lösungen dafür in Delphi? |
AW: Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
.. den symetrischen Schlüssel asymetrisch verschlüsseln.
Den sym. Schlüssel mit dem priv. Key verschlüsseln. Der Dienst kann diesen Schlüssel dann mit dem public Key lesen. Grüße Klaus |
AW: Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
Zitat:
Dann kann doch jeder den symetrischen Schlüssel mit dem public Key lesen oder? Oder ist das einfach nur als zusätzliche Maßnahme gedacht? Beispielsweise: \\Rechner1\unverdächtigesverzeichnis1\K1.txt XOR \\Rechner2\unverdächtigesverzeichnis2\K2.txt XOR \\Rechner3\unverdächtigesverzeichnis3\K3.txt DECRYPT VIA c:\unverdächtigesverzeichnis\PUBLIC_KEY.PEM = Symetrischer Schlüssel für Datenbank ???? |
AW: Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
|
AW: Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
Da keine zusätzliche Information eingegeben werden kann, muss zum Lesen des Schlüssels logischerweise alles direkt zur Verfügung stehen. Daraus folgt auch, dass jemand mit dem entsprechenden Aufwand auch immer an diese Informationen herankommen kann. Man kann den Zugang lediglich erschweren. An der Stelle ist security by obscurity einmal tatsächlich sinnvoll, aber wie immer kein Schutz, sondern nur eine Verzögerung.
Für wirklich sensible Daten ist dies allerdings nicht geeignet. Da braucht man immer eine zusätzliche Informationsquelle, sei es z.B. eine Passworteingabe oder ein Hardwaredongle (der natürlich nicht einfach stecken bleiben darf), oder einen Zugangsschutz zum System, z.B. ein gesichertes Rechenzentrum. |
AW: Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
Zitat:
Ich habe ein anderes Problem. Es geht darum Daten auf einem kompromitierten system zu schützen. Wenn du den Rechner oder die VM mit nimmst sollst du nicht die Datenbank auslesen können. Wenn du ein unglücklicher MA bist mit Zugang zum Server, sollst du die Daten nicht (einfach) veröffentlichen können. Oder übersehe ich da etwas? Misverstehe ich dich? |
AW: Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
Zitat:
Ich habe über folgendes nachgedacht: 1.Wenn der Vertrauenswürdige da ist , dann ist eine Eingabe eines Geheimnisses notwendig, beim Start des Dienstes. 2.Wenn der Vertrauenswürdige im Urlaub ist, fragt der Dienst einen microservice der bei dem Vertrauenswürdigen gehostet, ist nach dem Geheimnis. So hätte man eine art Urlaubsmodus mit herabgesetzter Sicherheit....aber was soll man machen? |
AW: Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
Zitat:
Zitat:
Mögliche Lösung: USB Stick mit dem Passwort an einem USB to Ethernet Router irgendwo in einem Schrank einschließen. Firewall so einstellen, dass die IP nur hausintern geroutet wird. Ist der Server/die VM im Büro ist der Kontakt möglich, ansonsten nicht. Ansonsten gilt das von jaenicke. Immer da, wo der menschliche Faktor ausgeschaltet/umgangen wird, muss man Sicherheitseinschränkungen akzeptieren. Alles automatisch und absolut sicher geht in der Werbung oder im Film, aber nicht in der Realität. Auch nicht mit KI. |
AW: Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
Nichtsdestotrotz hat man bei einem Dienst natürlich zumindest die Möglichkeit, dass man zum Zugriff hohe Rechte benötigt. Dann kommt zumindest kein einfacher Benutzer einfach so an die Daten heran.
|
AW: Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
Wenn es wenigstens keine VM wäre dann hätte man bei einem geteilten Schlüssel einen Teil aus dem Hardwareprofil nehmen können. Das wäre nicht gleich ein offensichtlicher Speicherort...leider ist es ne VM...
und da bekommt man höchstens unterschiedliche prozessornamen.... Andererseits habe ich diese Lösung( ![]() Der Vertrauenswürdige könnte sich im Urlaub auch von nem Rubber-Ducky vertreten lassen... Gut aber dann kann man auch gleich auf eine richtige Dongel Lösung setzen. |
AW: Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
Was aber auch bei einer VM geht sind andere Geräte im Netzwerk, deren Namen oder Freigaben. Das setzt natürlich weiterhin voraus das Geheim gehalten wird was es nun genau ist.
Besser wäre es wenn der berechtigte eine Nachricht bekommt, SMS oder sowas, und antworten muss. |
AW: Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
Vielleicht kann man ja das TPM-Modul nutzen. Problematisch ist aber in jedem Fall ein unbefugter physischer Zugriff auf das System.
|
AW: Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
Zitat:
Zitat:
|
AW: Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
Zitat:
Kann ein TPM modul letzten endes nicht auch ein Dongel sein? Zitat:
Zitat:
Ein Authenticator ließe sich zumindest auch im Urlaub aber nicht so toll im Krankenhaus benutzen. Aber so eine App ist sicher der komfortabelste Weg das Geheimnis einzugeben, wenn man sich nicht Remote auf die VM wo der Dienst läuft einlogen will. |
AW: Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
[irony on]
in den alten nntp newsgroups hatte MM damals angemerkt, man könnte die Zugangsdaten im Klartext in die readme packen, da die eh niemand liest [irony off] Wenn der Schlüssel auf dem System gespeichert ist, gilt er als bekannt. Da gibt es keine Ausnahme, auch kein Verschleiern. Die einzige Möglichkeit: pack den Schlüssel in eine Hardware und nur mit dieser Hardware ist der Dienst lauffähig. Die Kollegen von ![]() |
AW: Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
Zitat:
Halt mindestens als Urlaubs/Krankenhaus Modus. Zitat:
|
AW: Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
Zitat:
ich habe mit dem Hardware-Schutz (Dongle) von MatrixLock ![]() |
AW: Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
Ich mache das in einer Anwendung mit einem USB-Zu-Ethernet-Gerät (wie auch schon von johndoe049 vorgeschlagen). Bei meinem Kunden gab es die Möglichkeit, das Gerät (und somit den USB-Stick) im nicht frei zugänglichen Keller aufzustellen. Der Server steht dann anderswo im Gebäude und die Firewall erlaubt nur von der Server-IP Zugriff auf den USB-Netzwerkadapter. Die Überlegung dabei: wenn der Server geklaut wird, dann muss der Dieb nochmal kommen, um den Stick zu klauen. Das verhindert aber natürlich nicht den Angriff auf das System über's Internet, aber das sollte ja eigentlich die Firewall verhindern...
Fazit: absolute Sicherheit gibt es nicht, aber es kann einem Angreifer so schwer wie möglich gemacht werden. Hartmut |
AW: Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
Zitat:
Ich hatte schon mal nen Alptraum das die weggekommen sind und ich bin der Entwickler und Admin usw. für das Ding. |
AW: Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
Für den Zugriff auf eine API/Cloud müsste ich im Programm die Zugangsdaten hinterlegen.
Da hab ich demnächst vor, dass im KeyStore des Windows zu hinterlegen (wo auch RDP und Co. ihre Passwörter hinterlegen). Aktuell ist das auch noch hässlich pseudoverschlüsselt im Programm (Datenbank) hinterlegt. Windows (Win32) bietet auch "einfache" Verschlüsselungsfunktionen an, * mit dem aktuellen Programm als Schlüssel (so lange es aktiv ist, kann es Daten der selben Instanz entschlüsseln) * mit dem UserLogin ... so lange der Nutzer eingeloggt ist, können Daten innerhalb der Session ver-/entschlüsselt werden * oder mit einem SystemKey (der WindowsInstallation), können innerhalb dieser Installation Daten ver-/entschlüsselt werden ![]() Im WinRT soll es besseres Zeugs geben, aber von Win32 muß man sich erst dahin durchkämpfen (wie bei der API für die Notifications im Windows). |
AW: Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
Hi,
CryptProtectData and its companion API, are good as they encrypt and store the encrypted data on a local machine, but it comes with few cons, the ability to decrypt from within the system, by either an application running with same user, or any an application running on any user, all you need is to extract the entropy from the application. USB and TPM also not that viable for portability. Better the above is using the LDAP, but again this has its own cons. I solved this in two ways over the years and hope you finds them useful: 1) My data bank server will load (grab) the key from another different location over the wire (internet or local network), the connection is secure, also that server is a windows service, that detect any login for Windows user and delete the key from the memory, meaning stop the server operation until no more user are logged on the system, then grab the key again, in fact i use it a little differently, the server on detecting a connection it does encrypt all the high value and critical data in memory to make sure, then proceed to march them to the controller, if failed to march them then it will dump them encrypted on the disk with a already supplied key from the controller and will not be able to decrypt them without an admin interaction on the controller side. 2) For easier deploy also when many instances will be used, I use WinLicense ![]() ![]() It has its own highly protected storage that support custom data in the licensing key ![]() It also can lock the license key to a hardware and this will make things way easier by deploying and then apply licenses that have hidden encryption keys. |
AW: Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
Sorry for the screenshot, but for now this what i can post and hope you find it useful
Hi, CryptProtectData and its companion API, are good as they encrypt and store the encrypted data on a local machine, but it comes with few cons, the ability to decrypt from within the system, by either an application running with same user, or any an application running on any user, all you need is to extract the entropy from the application. USB and TPM also not that viable for portability. Better the above is using the LDAP, but again this has its own cons. I solved this in two ways over the years and hope you finds them useful: 1) My data bank server will load (grab) the key from another different location over the wire (internet or local network), the connection is secure, also that server is a windows service, that detect any login for Windows user and delete the key from the memory, meaning stop the server operation until no more user are logged on the system, then grab the key again, in fact i use it a little differently, the server on detecting a connection it does encrypt all the high value and critical data in memory to make sure, then proceed to march them to the controller, if failed to march them then it will dump them encrypted on the disk with a already supplied key from the controller and will not be able to decrypt them without an admin interaction on the controller side. 2) For easier deploy also when many instances will be used, I use WinLicense from "oreans.com" ( i posted this yesterday few times and there was some redirection of the page notifying that my post should be approved by administrator, so i re-posting without links in case it is the problem) It has its own highly protected storage that support custom data in the licensing key , custom data in this case can be you encryption key oreans com -> support -> online help WinLicense -> Licensing with WinLicense -> Customizing features in licenses Zitat:
|
AW: Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
It did went through !!, may be the "Hi" thingy.
|
AW: Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
Zitat:
This service is currently still running as a system user for too many customers, but in the future it will be a separate user account. Either way, from the client computers, as well as as a "simple user" on the server, you wouldn't normally have access to the user account used by the service. Currently, the client mostly still uses a database connection with SuperUser authorization, so that it would theoretically be easy to get the password that is stored in the database. And the password has to be decryptable in order to use it for login, I can't hash it. Unfortunately, the API does not offer the possibility of a restricted API key for the connection. In addition, the RESTful service runs into a timeout every 30 minutes, so that so far after at least 30 minutes the user + password, almost unencrypted, goes from the client to the Internet, which in future will only happen from the more protected server, which normal users will access less have access. |
AW: Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
Zitat:
Thanks for your suggestion. This sounds like very sophisticated system you have. Also double thanks for taking the effort to read/translate all those German posts, just to provide me with help. |
AW: Wie Speicher ich den Schlüssel für verschlüsselte Datenbanken oder Dateien
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz