Beste Verschlüsselung für große Mengen von Daten (Geschwindigkeit ist wichtig)?
Ich bin relativ neu in C# und Verschlüsselung, also bitte Geduld mit mir. Ich arbeite an einer business-Anwendung (in C#.NET 4.0, VS 2010), die speichert sehr viele Daten und muss es auch Lesen können Recht große Mengen von Daten und filter, um Sie anzuzeigen (meist im datagridview, manchmal nur einige Berechnungen,...). Sowieso Daten muss verschlüsselt werden und es muss möglich sein, zu verschlüsseln und zu entschlüsseln, nur Teile von Dateien (in der Reihenfolge zu schreiben & Lesen von zufälligen Positionen). Speed ist wichtig (sollte der Benutzer nicht warten, für die Daten zum laden von&display), Sicherheit kommt an zweiter Stelle. Der computer, auf dem diese ausgeführt wird, werden mindestens dual-core mit 2,0+ Ghz und mindestens 2 GB RAM.
Ich dachte über die Verwendung einer relativ großen (etwa 1 MB) xor-pad, die zur Laufzeit errechnet werden. Ich denke, dass eine benutzerdefinierte Datei design in binärer Kombination mit xor sollte relativ gute Sicherheit und Geschwindigkeit. Aber jetzt begann ich darüber nachzudenken, mit etwas, das stärker ist, wenn es ist immer noch schnell genug, vielleicht AES (wahrscheinlich .NET-Implementierungen: Rijindael oder Serpent oder Twofish). Also, was denkst du ist es am besten? Was tun andere Firmen /Entwickler in der Regel verwenden Sie in solchen Fällen? Wie schnell /langsam ist, ist AES? I/O-Operationen sind schon sehr langsam und ich weiß nicht, ob AES werden die Dinge noch schlimmer machen, oder es vielleicht nicht einmal bemerkt.
Oder haben Sie vielleicht andere Ideen, wie man zu verschlüsseln, die Daten schnell genug?
p.s. Ich weiß, dass, wenn jemand erfolgreich(!) debuggt oder zerlegt Sie den code, den er kann die Daten entschlüsseln.
EDIT: ich bin nur die Entwicklung einer benutzerdefinierten Anwendung für einen Kunden, so kann ich nicht Sie zu zwingen, bessere hardware, kann ich nur empfehlen, bessere hardware. Meine software besteht hauptsächlich aus 3 teilen, POS -, server-und eine Art manager. Wenn Sie denken, dass meine erste Idee (eine Art xor) ist nutzlos, und dass ich verwenden soll einige bessere Verschlüsselung bitte zumindest versuchen einzuschätzen, welche Art von hardware (minimum) würde die gewünschten Ergebnisse ("schnell genug" = Entschlüsselung sollte keinen Einfluss auf die Anzeige von Daten, zum Beispiel, wenn es dauert 1s um die Daten zu laden und die Anzeige im datagridview-es sollte nicht mehr als 1,2-1,3 s, das gleiche zu tun mit der Entschlüsselung).
- Komprimiert die Daten, so dass Sie nicht so groß? Ich vermute Nein, mit der ganzen Geschwindigkeit Ding.
- Auch Festplatten sind Billig, so dass ich wirklich don ' T care so viel über Größe, Kompression würde wahrscheinlich nur verlangsamen, alles oder vielleicht bieten eine minimale Erhöhung der Geschwindigkeit auf Kosten der Komplexität.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht entscheiden, für Geschwindigkeit und gegen Sicherheit. Versuchen Sie beide!
Verschlüsselungs-algorithmen wie Blowfish oder Rijndael/AES sind ziemlich performant (sehen). Definitiv investieren in bessere hardware! Ihre server-setup ist nicht wirklich Stand der Technik. In der Tat, mein notebook hat mehr power als dein server-setup 😉
Die Hardware ist viel billiger als developer Stunden. Stick mit standard-und bewährte Verschlüsselungstechniken! Wenn Ihre hardware ist Stand der Technik und Sie sind immer noch vor einem Engpass während der Verschlüsselung/Entschlüsselung dann ist es Zeit zu quälen Gehirns. Nicht vor.
Just my 2 cents.
Update
Definitiv empfehlen Ihre Kunden kaufen bessere hardware. Ich kann nicht wirklich geben Sie eine Antwort auf "welche hardware wäre genug", weil Sie nicht wirklich angeben, die Geschwindigkeit ist akzeptabel für die Menge der Daten, die Verschlüsselung/Entschlüsselung (dies ist wirklich nur schwer zu beantworten, denn es hängt von so vielen Faktoren ab). Ich würde empfehlen, dass Sie (oder Ihr Unternehmen) zu mieten hardware zu tun, performance-tests mit standard-Verschlüsselungs-Techniken. Sobald Sie eine geeignete hardware-setup mit einer guten Leistung für Ihre Bedürfnisse, sorgen diese performance-Messungen für Ihre Kunden.
Zunächst sollten Sie untersuchen, ob der Aufwand angesichts von gängigen algorithmen wirklich ein problem. Die Implementierungen der algorithmen .NET sind schnell, und Sie sollten erwarten, zu verarbeiten zu können, werden 50 - 400 MB/s Rohdaten (natürlich eine sehr grobe Abbildung... lächeln). Wenn Ihre Datenquelle ist die SQL-Abfragen (was es oft ist) Sie haben in der Regel eine Daten-Quelle für die Bereitstellung von Daten zu einem viel niedrigeren Preisen, was zu einer Einschränkung der Leistung Implikation der Verschlüsselung/Entschlüsselung.
Für details auf die Leistung, die Sie haben, um zu versuchen, es in Ihre Anwendung.
Ich möchte etwas kaufen, bessere hardware und konzentrieren Sie sich auf wesentliche management-und andere schwierige Fragen - sonst-Verschlüsselung kann übersprungen werden, insgesamt ist das setup viel zu leicht zu brechen.
Einem 2.0-GHz-Core2-PC sollte in der Lage sein zu verschlüsseln oder entschlüsseln von Daten mit AES bei einer Geschwindigkeit von mehr als 120 MB/s (hundert und zwanzig Megabyte pro Sekunde), wobei die Umsetzung in OpenSSL, mit einem single-core. Das ist schneller als eine moderne Festplatte oder einen gigabit-ethernet-link.
Sicherheits-Weise, Ihre Idee von einem wieder verwendbaren "xor-pad" ist reiner Schrott. Tun Sie das nicht.
Vielleicht dieser Artikel kann Ihnen helfen.
Außerdem müssen Sie definieren, schnell genug... machen Sie messbar, da es ein relativer Begriff ist.