Ich fürchte, Sie hier zwei Konzepte mischen, Authentifizierung/Genehmigung und Vertraulichkeit, versuchen, beide Aspekte in einem einzigen Schritt abzudecken, und das wird nicht funktionieren. Sie sollten niemals "echte Daten" mit asymmetrischen Algorithmen verschlüsseln. a) Sie sind viel zu langsam dafür, b) es gibt subtile Probleme, die, wenn sie nicht richtig gemacht werden, die Sicherheit Ihrer Lösung ernsthaft schwächen werden.
Eine gute Faustregel ist, dass das einzige, was man von einem viel schnelleren symmetrischen Algorithmus mit privaten asymmetrischen Schlüsseln ist symmetrische Schlüssel verwendet Verschlüsselung sollte am Ende. Aber in fast allen Fällen sollten Sie das nicht einmal tun, denn in 90% der Fälle, was Sie eigentlich wollen, ist TLS (SSL) in diesen Fällen - ich habe vor einer Weile versucht zu erklären, warum here.
In Ihrem Fall gehe ich davon die Anforderungen sind:
Vertraulichkeit der Daten, die in der Datenbank gespeichert werden soll: die breite Öffentlichkeit sollte es nicht in der Lage sein zu lesen (oder sogar auf sie zugreifen
)
Auserwählte (wahrscheinlich sollte nur eine Person) in der Lage sein und lesen Sie den Zugriff auf diese Daten
Das erste Ziel im allgemeinen unter Verwendung 012.318 erreicht wird. Das zweite Ziel wird, wenn auch verwandt, auf ganz andere Weise realisiert. Sie möchten, dass der Benutzer, der auf die Datei zugreift, authentifiziert wird (d. H. Die Identität festlegt), und ob Sie außerdem möchten, dass sie autorisiert werden (d. H.prüfen, ob die festgestellte Identität das Recht hat zu tun, was sie beabsichtigen). Dies ist, wo asymmetrische Kryptographie kann betreten die Bühne, aber nicht unbedingt. Da Ihre Frage mit Rails getaggt ist, nehme ich an, dass wir über eine Rails-Anwendung sprechen. In der Regel verfügen Sie bereits über Möglichkeiten, Benutzer dort zu authentifizieren und zu autorisieren (höchstwahrscheinlich mit dem oben genannten TLS). Sie können sie einfach wiederverwenden, um einen symmetrischen Schlüssel für die tatsächliche Dateiverschlüsselung/-entschlüsselung zu erstellen. Password-based encryption würde für diesen Zweck passen, wenn Sie asymmetrische Verschlüsselung überhaupt vermeiden möchten. Die Dinge werden noch komplizierter, wenn Sie auch die Integrität der bereits vertraulichen Daten sicherstellen wollen, das heißt, Sie möchten dem authentifizierten und autorisierten Benutzer eine Art Garantie geben, in dem Sinne, dass das, worauf sie letztendlich zugreifen, in keiner Weise verändert wurde in der Zwischenzeit.
Die Entwicklung einer Lösung hierfür ist keine triviale Aufgabe und hängt in hohem Maße von Ihren Anforderungen ab. Daher gibt es leider keinen "goldenen Weg", der zu allen passt. Ich würde vorschlagen, etwas zu recherchieren, ein klareres Bild davon zu bekommen, was Sie erreichen wollen und wie, und dann versuchen, zusätzliche Ratschläge zu Themen zu bekommen, bei denen Sie sich immer noch unsicher/unwohl fühlen.
Ich bin eigentlich kein Rubyist, aber das sind ziemlich gute Batterien. Ich frage mich, wie schwer wäre das Äquivalent in Python ... – brice
Ich möchte nur hinzufügen, dass Dateien mit zum Beispiel AES-256, aber sein Schlüssel sollte mit RSA gesendet werden. – tiktak
Es tut mir leid, aber das ist wirklich ein schlechter Rat. Das OP spricht über Dateiverschlüsselung/Entschlüsselung und Sie sollten RSA dafür nie verwenden. – emboss