RSA-Verschlüsseln/Entschlüsseln, in TypeScript
Ich bin mit Winkel 4, um das vordere Ende meiner Bewerbung. Ich habe umgesetzt OAuth2 auf mein backend (entwickelt mit dem Frühling in Java), so können die Leute mit meiner Anwendung authentifiziert werden muss.
Die Sache ist, dass wir klar sehen können die Passwörter von backend-server-logs und könnte es sein gefangen durch eine MITM, bis ich ein SSL.
Deshalb habe ich mich entschlossen zum verschlüsseln der gesendeten Passwort, mit RSA. Mein backend ist bereits fertig, aber ich finde nicht alle up-to-date-Bibliotheken, die bieten eine anständige API zum verschlüsseln/entschlüsseln von RSA-key-paar.
Auch gesehen crypto
Modul, aber nicht mehr nutzbar ECMAS6. Die crypto-js
man nur AES und einige Hashalgorithmen wie MD5/SHA.
- Es gibt nichts Eckiges bestimmten. Sie können nur die Suche für die gleiche Frage in JavaScript und TypeScript.
- Warum Passwort existiert in server-log-Datei?
- Hab ich bereits gemacht, nichts
- denn die Netzwerk-Protokollen, who cares. Ich möchte nur hinzufügen, einen security-layer, ich will nicht senden Sie es deutlich
- Auch ich bin neugierig, wie hast du das Passwort per mitm auch Sie ssl verwenden?
- Ich war was bedeutet, es ist derzeit möglich, es zu fangen, bis ich einen SSL-später
- es ist microsoft javascript crypto library (MIT Lizenz) : microsoft.com/en-us/download/details.aspx?id=52439, die rsa-verschlüsseln/entschlüsseln
- Dieser hat Probleme, die weit über RSA und Typoskript. Wenn Sie sind ein modernes Unternehmen, Sie sammeln keine Kennwörter im nur-Text-Zeit. Es ist nicht eine Debatte, wie wenn Sie an einem Schießstand, dass Sie nicht Schießen Sie Ihre Freunde. Passwörter sollten gesammelt werden und gesendet, wie hashes in einer modernen kryptografisch sicheren Hash-system wie bcrypt oder scrypt, oder am minimum, sha256, um sicherzustellen, Kennwörter können nicht wiederhergestellt werden oder abgefangen werden im Klartext. Ich würde mein bestes tun, um sicherzustellen, dass Ihr Unternehmen oder wer baute das system Sie arbeiten, das weiß, wie sind Sie öffnen sich bis zu Lasten von Themen.
- du hast Recht, aber das MITM egal was Sie senden über die Leitung - wenn Sie erhalten einen hash, die Sie Einreichen können, um bösartige Anfragen in Ihrem Namen anstelle von einem Passwort, so was? Passwort Salzen und zu Hashen ist, mehr über die Lagerung in der backend-Datenbank. Schützen Sie das Kennwort in transit ist über Verbindungs-Sicherheit: stackoverflow.com/a/37707074/3001761
- + es gibt keine hash standardmäßig, habe ich zu nennen ein ldap-Verzeichnis (active directory) von meinem backend
Du musst angemeldet sein, um einen Kommentar abzugeben.
Endlich einen Weg gefunden, nach der Installation einige.
Dann verwenden Sie es
npm install buffer npm install crypto-browserify
Je nachdem, wo diese Netzwerk-Protokolle erfasst, es ist wirklich möglich, um wieder alle http-Rohr-Linie, die in einem reinen text-wie, wenn einmal die SSL arbeitet auf eine spezifische Kommunikations-Ebene ist es nur hört der stream auf einer höheren Ebene, und Zack, schon ist es da, dies ist eine Antwort für einige Kommentare oben.
Über die Architektur selbst, machen völlig Sinn, sobald Sie besorgt sind um Ihre Daten zu schützen vor unerwünschten Augen, so in einer theoretischen Art und Weise würde ich vorschlagen, einige Ansätze:
1) erstellen Sie Ihre eigenen Verschlüsselungs-Methode, und verwenden Sie es auf beiden Seiten. Eine einfache matrix-Multiplikation nützlich sein könnte, Klang verrückt, ich weiß, aber wenn es ein nicht Kritischer Strömung sehe ich keine problem mit, dass
2) mit cryto-js auf beiden Seiten so gut, wie der Aufruf einer javascript-code Teil aus java-code (de)verschlüsseln Sie das Kennwort
3) verwendet eine externe Authentifizierungs - /Autorisierungs-Entität, wie google, twitter, facebook, oder in einer enterprise-Lösung wie IBM BlueID, Azure oder AWS oder sogar mit Ihrem eigenen domain-controller für, die, oder sogar noch mehr können Sie mit einem externen auth Person mit Ihrem eigenen domain-controller, es nennt sich Föderation
Ich meine, es gibt mehrere Möglichkeiten, um es gelöst bekommen, da ein sehr einfaches wie die Herstellung Ihrer eigenen Lösung, bis Sie eine riesige Struktur, die nicht sicher sind, wo Sie liegen zwischen diese zwei Punkte, aber es ist cool, sich bewusst sein, die mit sensiblen Daten.