Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: datekk am November 21, 2016, 19:33:46

Titel: Verschlüsselung eines String via Prozedur
Beitrag von: datekk am November 21, 2016, 19:33:46
Hallo, meine DB ist in FE und BE aufgeteilt, wobei das BE ein SQL Server ist. Im Standard-Access hat man ja die Möglichkeit, Tabellenspalten als 'Kennwort' zu definieren. Damit kommen dann immerhin Punkte statt der Klartext. Mit dem via ODBC eingebundenen Tabellen funktioniert das nicht. Nun möchte ich gern via eines Verschlüsselungsmoduls die Passwörter verschlüsseln. Der User gibt also ein Passwort ein, dieses wird in einer Variable gespeichert und durch eine Prozedur geschickt, in der es verschlüsselt wird. Das verschlüsselte PW wird dann zum BE übertragen und dort in der Tabelle abgelegt. Gibt es irgendwo fertigen Verschlüsselungscode oder wie handhabt ihr das so?
Titel: Re: Verschlüsselung eines String via Prozedur
Beitrag von: DF6GL am November 21, 2016, 20:26:44
Hallo,

Eine Suchmaschine könnte Hunderte von Prozeduren liefern...

z. B.
http://www.vbarchiv.net/tipps/tipp_2285-aes-128-und-256-bit-string-verschluesselung.html
Titel: Re: Verschlüsselung eines String via Prozedur
Beitrag von: PhilS am November 21, 2016, 20:35:13
Zitat von: datekk am November 21, 2016, 19:33:46Damit kommen dann immerhin Punkte statt der Klartext. Mit dem via ODBC eingebundenen Tabellen funktioniert das nicht.
Du kannst das entsprechende Anzeigefeld mit Format "Kennwort" versehen. Das hat denselben Effekt. Dies wirkt sich aber nur auf die Anzeige in der Benutzeroberfläche aus. Eine Verschlüsselung erfolgt dadurch nicht, auch nicht bei Access-Tabellen.
Zitat von: datekk am November 21, 2016, 19:33:46Nun möchte ich gern via eines Verschlüsselungsmoduls die Passwörter verschlüsseln.
Bist du sicher? Ich glaube eher, du möchtest einen Hash des Passwortes berechnen lassen.
Zitat von: datekk am November 21, 2016, 19:33:46Gibt es irgendwo fertigen Verschlüsselungscode ...
Du solltest vielleicht erstmal zu dem Unterschied von Hashwerten und Verschlüsselung nachlesen, um zu wissen, was du genau willst.
Wenn ich bezgl. Hashwerte richtig liege, findest du mit einer Google Suche nach Hash +SHA1 +VBA (https://www.google.de/search?q=Hash+%2BSHA1+%2BVBA) ein paar Treffer. - Ich kann die Qualität der Ergebnisse nicht bewerten, daher nur der Link zur Suche.

Zitat von: datekk am November 21, 2016, 19:33:46... oder wie handhabt ihr das so?
Windows Authentifizierung! :-)
Titel: Re: Verschlüsselung eines String via Prozedur
Beitrag von: Wurliwurm am November 22, 2016, 08:57:05
Zitat von: datekk am November 21, 2016, 19:33:46
Der User gibt also ein Passwort ein, dieses wird in einer Variable gespeichert und durch eine Prozedur geschickt, in der es verschlüsselt wird. Das verschlüsselte PW wird dann zum BE übertragen und dort in der Tabelle abgelegt.

Ohne jetzt genau zu wissen, worum es geht: Verschlüsselungen sollten auf dem Server stattfinden.
Titel: Re: Verschlüsselung eines String via Prozedur
Beitrag von: datekk am November 22, 2016, 09:48:51
Danke Euch Allen für die vielen Hinweise. Eine Frage noch @Wurliwurm: Wie läuft das ab? Per Prozedur auf dem SQL Server? Dazu hatte ich schon mal gegoogelt aber nix passendes gefunden. Das was ich gefunden habe bezog sich meist auf MySQL. Bei mir läuft ein reiner SQL Server (Express). Wenn die Verschlüsselung auf dem Server läuft, werden Kennwörter immer noch in reinform über die Leitung geschickt. Also wäre es doch sicher besser, die Verschlüsselung oder den  Hash (ich muss mich da wirklich nochmal einlesen @PhilS) übers Netz zum Server zu senden.
Titel: Re: Verschlüsselung eines String via Prozedur
Beitrag von: Wurliwurm am November 22, 2016, 10:03:56
Im Idealfall ist die Verschlüsselung transparent, sprich passiert auf Netzwerkebene, ohne daß sich Server oder Client damit befassen müssen. Wenn Dein Anliegen ist, die Daten sicher vor Abhören in der Leitung zu machen, würde ich schauen, wie man das im Netzwerk macht. Die andere Sache ist Hash-Verschlüsselung in der Datenbank, damit also keiner mit einem SELECT auf dem Server die Passwörter im Klartext zu sehen bekommt. Die schlechteste Lösung ist m.E. sich die Verschlüsselungsalgorithmen im Client zusammenzufrickeln.

Leider habe ich hier auch nur Halbwissen. In meiner "persönlichen" Datenbank zuhause verwende ich Oracle 11g. Hier ist die sichere Passwortabfrage zur Anmeldung eingebaut, ich gehe davon aus, daß das bei SQL Server genauso ist.

Vielleicht interessant zum Thema
http://www.oracle.com/webfolder/technetwork/de/community/dbadmin/tipps/netzwerkverschluesselung/index.html (http://www.oracle.com/webfolder/technetwork/de/community/dbadmin/tipps/netzwerkverschluesselung/index.html)
Titel: Re: Verschlüsselung eines String via Prozedur
Beitrag von: PhilS am November 22, 2016, 11:05:30
Zitat von: Wurliwurm am November 22, 2016, 08:57:05Ohne jetzt genau zu wissen, worum es geht: Verschlüsselungen sollten auf dem Server stattfinden.
In diesem Kontext ist es aber wichtig zu wissen, worum es geht.

Ein Hash ist eine "wiederholbare Einweg-Verschlüsselung", um z.B. aus einem Passwort einen neuen Wert zu errechnen, der es unmöglich macht, Rückschlüsse auf das Passwort selbst zu ziehen. Eine Entschlüsselung ist unmöglich (außer durch "Brute Force"). Sie ist auch nicht nötig, weil der Benutzer ja das Klartext-Passwort kennt. Wenn der gleiche Hash-Algorithmus auf das gleiche Klartext-Passwort angewendet wird, kommt wieder der gleiche Hashwert raus und kann mit dem gespeicherten Wert verglichen werden.

Ich bin kein Security-Experte, aber aus meiner Sicht ist es sinnvoll, den Hash eines Passwortes so früh wie möglich im Verarbeitungsprozess zu berechnen und dann nur noch diesen zu verwenden. Wenn das Klartext-Passwort nie über das Netzwerk übermittelt und in der DB verarbeitet wird, dann kann es dort auch niemals eingesehen/abgegriffen werden.