2016-07-21 43 views
2

Sind die Sicherheitsverschlüsselungsklassen in .NET für Mono-Laufzeiten geeignet? (Insbesondere Monogame-Implementierungen, die Mono-Laufzeit auf Mac usw. verwenden)Ist die Verschlüsselung in C# Cross-Plattform in Mono?

Ich bin vor allem daran interessiert, ob ich die [AES] (https://msdn.microsoft.com/en-us/library/system.security.cryptography.aes(v=vs.110).aspx) -Klasse verwenden kann, weil ich sie vorher benutzt habe.

Wäre ich in der Lage, Strings (wie Konfigurationsdaten) zu verschlüsseln, zu verschleiern und dann als Datei zu speichern und später im Programm wieder zu entschlüsseln.

+1

Bitten Sie die Frage, wie Sie den Verschlüsselungsschlüssel geheim halten? – zaph

+0

Ich kenne noch keine Best Practices. Nur um es zum Laufen zu bringen, wird es im Quellcode sein, aber ich weiß für ein veröffentlichtes Produkt, das eine schlechte Idee ist. – lozzajp

+2

Definieren Sie Ihr Bedrohungsmodell von einem neugierigen Teenager bis hin zu einer gut finanzierten Nation. Sie definieren den Wert für den Angreifer, den Benutzer und sich selbst. Danach haben Sie eine bessere Vorstellung von der benötigten Sicherheit. Es kann sich herausstellen, dass es im Quellcode Ihren Anforderungen entspricht oder nicht. Denken Sie daran, dass es keine 100% sichere Lösung gibt. Wenn dies auf einem Server ist, ist es einfacher, die Anzeige zu verteidigen, wenn Sie den Server besitzen, können Sie ein Low-End-HSM hinzufügen, oder vielleicht ist ein TPM im Server enthalten. – zaph

Antwort

2

Ja ... Sie diese Klassen auf Mono-backed-Plattformen wie MacOS :)

https://developer.xamarin.com/api/type/System.Security.Cryptography.Aes/

bearbeiten verwenden können: @zaph ist ein ausgezeichneter Punkt in den Kommentaren ... es gibt Bibliotheken, wie PCLCrypto, die die nativen Bibliotheken auf jeder Plattform aus genau diesem Grund verwenden :)

+2

Wenn Sie diese iOS- oder MacOS-Software verwenden, ist die Leistung wesentlich schlechter als bei Verwendung der Apple Common Crypto-Funktionen. Je nach Implementierung und Plattform können sie bis zu 1000 mal langsamer sein. Ein iPhone 6s kann mit Common Crypto bei 430 MB/s verschlüsseln, Benchmark die Mono-Klassen. – zaph

+1

Großartiger Punkt @zaph ... aktualisierte Antwort mit einem Link zu einer großen Bibliothek, die dies berücksichtigt. –

+0

Verwendet PCLCrypto die Common Crypto-Bibliotheken? Insbesondere verwendet es die iPhone-Hardware-Verschlüsselungs-Engine? – zaph