Ich lese gerade diesen Artikel RSA-Schlüssel unter 1024 Bit sind blockiert , und in meiner .NET-Software verwende ich umfangreich 384bit-Schlüssel. Kann mein Programm mit dem RSACryptoServiceProvider Schlüssel aus dem MachineKeyStore erzeugen / speichern / lesen? Oder muss ich einen Patch aussenden?
Dies ist eine vorgeschlagene Antwort auf eine Frage, die in den Kommentaren aufkam.
Sie könnten wahrscheinlich eine Möglichkeit finden, eine symmetrische Methode zur Authentifizierung von Clients zu verwenden. Ich gehe davon aus, dass Sie gerade ein typisches RSA-Signaturschema verwenden, bei dem ein Nachrichtenhash von einem privaten Schlüssel eines Clients signiert wird, der dann durch den öffentlichen Schlüssel verifiziert werden kann.
Sie könnten vielleicht einen dauerhaften Schlüssel austauschen und dann den Nachrichtenauszug mit diesem Schlüssel anstelle des asymmetrischen Schlüssels verschlüsseln. Sie würden immer noch garantieren, dass derjenige, der die Nachricht gesendet hat, den geheimen Schlüssel kannte, obwohl Sie keine Möglichkeit haben würden, zu überprüfen, ob die Nachricht vom Client oder vom Server gesendet wurde (da beide den Schlüssel kennen). Wenn der Client den Server während der Authentifizierung anforderte, würde dies dazu beitragen, Man in den mittleren Angriffen zu verhindern (obwohl der Client den öffentlichen Schlüssel des Servers lokal eingebettet haben müsste)
Wenn das Minimieren der Signaturgröße kritisch ist, dann ist RSA eine schlechte Wahl für den Anfang. DSA und ECDSA produzieren beide kürzere Signaturen mit viel größerer Stärke als RSA. Allerdings werden weder DSA noch ECDSA der Geschwindigkeit der Signaturprüfung für RSA 384 nahe kommen.
Wenn Sie jedoch weiterhin die Schlüssel verwenden müssen, die Sie haben, müssen Sie Ihren Code ändern, um die Verwendung von Microsoft-Kryptografie-APIs zu vermeiden. Sie können beispielsweise die Bouncycastle C # -Bibliothek verwenden, wenn Sie C # verwenden. Schließlich können Sie sich bei Microsoft darüber beschweren. Ich bezweifle, dass es etwas nützen wird, aber du kannst es immer versuchen.
Tags und Links .net cryptography rsa rsacryptoserviceprovider cryptoapi