[Java/PHP] Public-/Private-Key Authentifizierung

CPU

Lieutenant
Registriert
Jan. 2006
Beiträge
704
Hallo,

ich möchte eine Authentifizierung basteln. Dabei ruft ein Java-Programm (Client) eine URL auf und der Server (PHP) übermittelt dann den public-Key. Dann kann der Client mit dem Server sicher kommunizieren. (Also auf dem Server läuft PHP, dass diese Transaktion durchführen soll).

Nun kann man ja mit Java und diesem Code:
Code:
        KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
        keyGen.initialize(512);
        KeyPair keypair = keyGen.genKeyPair();
        PrivateKey privateKey = keypair.getPrivate();
        PublicKey publicKey = keypair.getPublic();
einen public-/private-Key erzeugen. Und hier ist das Ergebnis:
Code:
Sun RSA private CRT key, 512 bits
  modulus:          753139777611241241881144900089670732121585480227456394189858703
115447406279855976899378541403114382769435500027018366436002063314609855379
4572177506711843
  public exponent:  65537
  private exponent: 1327420780808924361043243471769502208940969815845606117046410101116397300
7520044256292900305915374091786816198334387570344104745659078030261943962
33765217
  prime p:          1072150227464078036484269943452139664908934657787860225329669388354
21245845969
  prime q:          7024573220420968368212173340452970044839207300045922417162209704035
3700717747
  prime exponent p: 1795287638462363607180429125447271111389085392154657386326470828356
3677799009
  prime exponent q: 208088659079989440927218415904838427835433984654609667526415824944
90543444685
  crt coefficient: 110440274191235043955359857752537267197767018054506605666249400514
83116677307
Sun RSA public key, 512 bits
  modulus: 7531397776112412418811449000896707321215854802274563941898587031154474062
798559768993785414031143827694355000270183664360020633146098553794572177
506711843
  public exponent: 65537

Doch in PHP geht das garnicht so geordnet zu ... Ich habe mal gesucht und das hier gefunden: http://www.torsten-keil.net/privates/rsa.php.

Doch es gibt sicherlich noch einige Probleme: Wird PHP mit solch großen Zahlen fertig (in einer zufriedenstellenden Zeit)? Gibt es Alternativen Inhalte sicher von einem Java-Programm zu einem Server, auf dem PHP läuft zu transportieren? Workarounds?

CPU
 
Zuletzt bearbeitet: (Ich habe ein bisschen den Rahmen gesprengt ;-))
Wenns schnell sein muss, solltest du was nehmen was in der mcrypt-Library drin ist.
Die RSA-Klasse von der Seite habe ich schonmal benutzt. Schnell ist sie aber nicht (u.a. weil sie wegen den großen Zahlen dann mit der bcmath-Library arbeiten muss); kommt aber natürlich auch auf deine Anforderungen an. Denn oft macht man asymmetrische Krypto ja nur für den Sessionkeyaustausch und wechselt dann für die eigentliche Kommunikation zu den performanteren symmetrischen Algorithmen...
 
Also möglich ist es in PHP und ich würde da genauso wie BerniG auf mcrypt zurückgreifen. Wahnsinnig performant ist das aber nun nicht und in PHP gibt es praktisch auch keine Alternativen. Hast du schon darüber nachgedacht, auf was anderes wie z.B. Perl (ist hier noch schneller), CGI++ (wäre deutlich aufwändiger) und ansonsten ein separater Prozess, den du per PHP aufrufst und der die Ver- und Entschlüsselung übernimmt.
 
mcrypt ist nativer Code (kompilierter C-Code der auch recht gut optimiert ist) und dürfte daher wirklich schnell sein. Das kann man schon nutzen; andere Methoden werden da kaum schneller sein!
 
Zuletzt bearbeitet:
Zurück
Oben