AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Rest Service Authentifizierung und Sicherheit Konzept
Thema durchsuchen
Ansicht
Themen-Optionen

Rest Service Authentifizierung und Sicherheit Konzept

Ein Thema von fillibuster · begonnen am 30. Jul 2012 · letzter Beitrag vom 30. Jul 2012
Antwort Antwort
fillibuster

Registriert seit: 3. Nov 2010
Ort: Coesfeld
245 Beiträge
 
Delphi 2010 Professional
 
#1

Rest Service Authentifizierung und Sicherheit Konzept

  Alt 30. Jul 2012, 08:55
Hallo,

derzeit entwickle ich eine Anwendung, die mit einem REST Webservice kommunizieren soll. Die Frage, wie sichere ich das ganze vernünftig ab? Bisher ist mein Vorgehen wie folgt (grob gezeichnet):
  • SERVER-Benutzer meldet sich am Server mit Benutzername und Passwort an (einmalig über Webinterface)
  • SERVER-Passwort wird als gesalzener Hash in DB geschrieben
  • SERVER-Aus Teilen von diesem Hash wird ein gesalzener Authentifizierungsschlüssel generiert
  • CLIENT-Benutzer gibt Benutzername und Passwort ein - Passwort wird verschlüsselt gespeichert
  • CLIENT-Jetzt kommt die eigentliche Anfrage an den Webservice: Passwort wird auf dem Client entschlüsselt, gehasht und der gesalzene Authentifizierungsschlüssel generiert und pro Request gesendet
  • Kommunikation läuft über SSL
Die Anwendung soll kommerziell werden. Ich denke, das Thema Sicherheit habe ich schon ganz gut mit der obigen Vorgehensweise im Griff, aber was mir Bauchschmerzen bereitet: Was mache ich, wenn ein böser Bube einen CLienten knackt. So erhält er alle Infos zu den Verschlüsselungen und könnte den kompletten Server kompromittieren. Was mein Ihr?

Viele Grüße...
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

AW: Rest Service Authentifizierung und Sicherheit Konzept

  Alt 30. Jul 2012, 09:05
Mir ist nicht ganz klar warum du das Passwort auf dem Cient verschlüsselt (statt gehasht) speicherst.
Überhaupt könntest du darauf verzichten:

Nachdem sich der Benutzer auf dem Server angemeldet hat, generierst du einen komplett zufälligen Zugriffsschlüssel. (oder wie du es nennen möchtest)
Ein Zugriffsschlüssel ist genau einem Benutzer und einer Anwendung zugeordnet. Der Benutzer kopiert diesen jetzt in den Client.
Der Client meldet sich mit Username, Passwort-Hash (?) und Zugriffsschlüssel an und bekommt damit (falls alles gültig ist) Zugriff.

So (oder so ähnlich) läuft das ja auch bei Twitter oder Facebook, vll. kannst du dir das Prinzip abgucken

Geändert von jfheins (30. Jul 2012 um 09:14 Uhr)
  Mit Zitat antworten Zitat
fillibuster

Registriert seit: 3. Nov 2010
Ort: Coesfeld
245 Beiträge
 
Delphi 2010 Professional
 
#3

AW: Rest Service Authentifizierung und Sicherheit Konzept

  Alt 30. Jul 2012, 09:17
Hi,

danke für deine Antwort!
Mir ist nicht ganz klar warum du das Passwort auf dem Cient verschlüsselt (statt gehasht) speicherst.
Damit der Hash nicht im "Klartext" irgenwo in den Einstellungen steht (daraus wird ja mein Zugriffsschlüssel generiert).
Die von dir skizzierte Vorgehensweise klingt logisch! Allerdings ist mir nicht klar, wieso der Bentutzer sich mit Username, Passwort und Zugriffsschlüssel anmelden soll. Nur Zugriffsschlüssel würd ja eigentlich reichen, oder?

Viele Grüße ...
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

AW: Rest Service Authentifizierung und Sicherheit Konzept

  Alt 30. Jul 2012, 09:24
Ja, schon. Das wird dann wohl OAuth sein. ( http://de.wikipedia.org/wiki/Oauth )

Zumindest bei Twitter braucht man keinen Passwort Hash (der Client bekommt also zu keinem Zeitpunkt dass Passwort zu sehen) aber da ist noch einiges an Hashing und so dabei. ( https://dev.twitter.com/docs/auth/authorizing-request )

Die Sache mit "Kein Passwort beim Client" ist dann auch schon das Sicherheitsfeature. Den Zugriffsschlüssel sollte man natürlich im online Account sperren können.
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#5

AW: Rest Service Authentifizierung und Sicherheit Konzept

  Alt 30. Jul 2012, 09:25
  • SERVER-Passwort wird als gesalzener Hash in DB geschrieben
Hier gibt es eine interessanten Überblick zu Hashing von Passwörtern.
tl;dr: Normales Hashing geht zu schnell um sicher zu sein, nutze daher: bcrypt oder PBKDF2.



Wenn du eh SSL nutzt, könntest du auch "einfach" Zertifikate zur Authentifizierung von Client und Server nehmen.

Das Problem das ein Client potenziell immer feindlich ist, wirst du nicht überwinden können.
Wenn es sinnvoll/nötig ist, könntest du serverseitig ein Rechtesystem verwalten um den Schaden gering zu halten.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
fillibuster

Registriert seit: 3. Nov 2010
Ort: Coesfeld
245 Beiträge
 
Delphi 2010 Professional
 
#6

AW: Rest Service Authentifizierung und Sicherheit Konzept

  Alt 30. Jul 2012, 10:32
Hi,
@jfheins: ich glaube in diese Richtung wird die Reise gehen. Diesen API-Key könnte man ja dann zusätzlich auf dem Clienten verschlüsselt speichern (je nach Implementierung (Delphi, Android ...) unterschiedlich).
...
Wenn es sinnvoll/nötig ist, könntest du serverseitig ein Rechtesystem verwalten um den Schaden gering zu halten.
Der Schaden bestände dann ja höchstens aus einem geklautem APIKey, welchen man dann sperren kann, oder ging deine o. g. Aussage in eine andere Richtung?

Vielen Dank und viele Grüße ...
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#7

AW: Rest Service Authentifizierung und Sicherheit Konzept

  Alt 30. Jul 2012, 10:40
Der Schaden bestände dann ja höchstens aus einem geklautem APIKey, welchen man dann sperren kann, oder ging deine o. g. Aussage in eine andere Richtung?
Ich meinte:
Der Schaden den man mit einem geklauten API-Key anstellen kann, ist genauso groß, wie der zum Key gehörige Nutzer auf dem Server Rechte dazu hat. Wenn nicht eh jeder Benutzer alles machen kann, sollte die Überprüfung, ob der Nutzer etwas darf, (auch) auf dem Server stattfinden.

Eigentlich ist es klar, aber im Eifer des Gefechts neigt man ja dazu, sowas zu vergessen
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
fillibuster

Registriert seit: 3. Nov 2010
Ort: Coesfeld
245 Beiträge
 
Delphi 2010 Professional
 
#8

AW: Rest Service Authentifizierung und Sicherheit Konzept

  Alt 30. Jul 2012, 10:52
Hi,
Der Schaden den man mit einem geklauten API-Key anstellen kann, ist genauso groß, wie der zum Key gehörige Nutzer auf dem Server Rechte dazu hat. Wenn nicht eh jeder Benutzer alles machen kann, sollte die Überprüfung, ob der Nutzer etwas darf, (auch) auf dem Server stattfinden.
Ah ok, das ist sowiso gesetzt.

Danke für eure Antworten!
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#9

AW: Rest Service Authentifizierung und Sicherheit Konzept

  Alt 30. Jul 2012, 12:56
Zitat:
Normales Hashing geht zu schnell um sicher zu sein
?? Ich bin mir nicht sicher, ob mein Krypo-Prof, das in der Uni als Antwort hätte durchgehen lassen


Zum Thema: OAuth? Benutzen (fast) alle anderen ja auch.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz