Public Key Verfahren mit PHP

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Public Key Verfahren mit PHP

    Hallö zusammen,
    hat einer von Euch schon mal etwas in der Richtung Public Key und PHP implementiert, oder kennt eine entsprechende Entwicklung? Wir wollen eine Client -Server Applikation über HTTP implementieren, die sicherstellen muss, dass der CLient auch der ist, der er vorzugeben versucht. Sprich sich am Server authentifiziert. Er soll dabei allerdings eben die Authentifizierung nicht plain übers Web senden. IMO geht das nur gescheit über ein Public Key Verfahren, wo der Client den Serverschlüssel anfordert und damit die Authentifizierung verschlüsselt.
    Also grabt mal in Euren Hirnen.

    Vielen Dank im Voraus.

  • #2
    Sprich sich am Server authentifiziert. Er soll dabei allerdings eben die Authentifizierung nicht plain übers Web senden.
    klingt ganz nach ssl.

    Kommentar


    • #3
      Hallo,

      definiere bitte noch den Client - ist damit ein Browser gemeint, oder ist das ganze eher Server - Server-like zu sehen, wo einer der beiden quasi der Client ist?
      Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
      Schön - etwas Geschichte kann ja nicht schaden.
      Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

      Kommentar


      • #4
        Also, das ganze soll natürlich von Webserver zu Webserver gehen. Sprich zwei PHP's sollen sich damit Daten austauschen können. Also standard PK Verfahren: PHP1 fordert Schlüssel bei PHP2 an, verschlüsselt die Logindaten, bekommt eine Session zugewiesen und dann kann man munter Daten secure austauschen. Dabei müssen nciht alle Daten verschlüsselt werden, sondern es muss nur sichergestellt sein, dass PHP1 auch der ist, für den er sich ausgibt (Anhand Username Passwort zum Beispiel).
        Man könnte das ganze mit openSSL bateln, das haben wir uns auch schon angesehen. Dann muss das aber auch richtig installiert sein und für PHP konfiguriert sein - was ja bei den wenigsten PRovidern funzen dürfte.

        Kommentar


        • #5
          Interessant könnte für dich sowas in der Art sein:

          http://docs.oasis-open.org/wss/2004/...rofile-1.0.pdf

          Das ist ein Standard zur Verschlüsselung der Autentifizierung bei Webservices mit SOAP.

          Hab das ganze kürzlich Client-seitig zum Datenaustausch mit einer XML-Schnittstelle realisiert - aber auch die Prüfung dieser Autentifizerung ist mit PHP für die Serverseite ohne allzugroße Umstände machbar.

          Funktioniert zwar nicht so, das der Client erst nen Schlüssel anfordert und diesen dann widerrum zum Verschlüsseln verwendet, aber mir gefällt da dieser Ansatz sowieso besser.
          Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
          Schön - etwas Geschichte kann ja nicht schaden.
          Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

          Kommentar


          • #6
            Jo, schon nicht schlecht. Das ist allerdings nur eine Spezifikation. Etwas ähnliches hatten wir ja auch vor. Ich dachte natürlich, ob nicht irgendein Held hier schon mal 'nen Verschlüsselungsalgorythmus implementiert hat. Am besten ist halt mit Public Key, weil das Handling dann einfacher wird und mann muss den Schlüssel nicht auf allen Clients implementieren.

            Kommentar


            • #7
              Mit dem Public-Key-Verfahren hab ich noch nix gemacht - der von mir verlinkte Standard ist aber mit ein paar wenigen Codezeilen zu realisieren, hier wird ja lediglich ein timestamp + zufällige, nur einmal gültige Nummer + Passwort gehasht und übertragen - PHP bietet ja die Hashfunktionen an. Allerdings ist hier halt die Vergabe von Benutzernamen und Passwörtern nötig welche auf beiden Seiten bekannt sein müssen.
              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
              Schön - etwas Geschichte kann ja nicht schaden.
              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

              Kommentar


              • #8
                Das ist schon richtig, das problem dabei ist ja, dass man mit dem hashcode des usernames und passwort die anfrage stellen kann. ALso hört man den Datenverkehr ab und benutzt die verschlüsselung besagter Parameter, dann braucht man gar nciht username und passwort in reintext. Das ist doch extrem uncremig, gerade, wenn man sensible Daten am Start hat.

                Kommentar


                • #9
                  nönö, da hast du das ganze noch nicht genau verstanden - den Hashcode abzuhören bringt gar nix, weil er nur einmal gültig ist:

                  Deswegen wird zum einem der Timestamp mitgehasht, sowie eine zufallszahl.

                  Der Timestamp hat dann eine gewisse gültigkeit - meinetwegen 60 Sekunden - der Server muss dann für jede sekunde selbst den Hashwert aus den übermittelten Daten und dem auf dem Server direkt vorliegenden Passwort prüfen - ist ein gültiger Hash dabei gilt die Anfrage als Authentifiziert.

                  Zusätzlich ist dann noch diese Nonce vorhanden - innerhalb der Gültigkeitsdauer eines Timestamps muss die Nonce (Number used once - einfach eine Zufallszahl ) auf dem Server gespeichert und als 'bereits benutzt' hinterlegt werden. Somit kann auch innerhalb der Gültigkeitsdauer ein Hash immer nur einmal gültig sein.
                  Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                  Schön - etwas Geschichte kann ja nicht schaden.
                  Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                  Kommentar

                  Lädt...
                  X