EnvelopedCms mit nicht standardmäßigen AlgorithmIdentifier entschlüsseln

8

Ich versuche, ein EnvelopedCms , das mit einem nicht standardmäßigen Algorithmus-Identifizierer so:

%Vor%

Die Verschlüsselung funktioniert wie erwartet. Jetzt, wenn ich versuche, die envelopedCms mit etwas wie diesem zu entschlüsseln:

%Vor%

Ich bemerke, dass a.) der Zugriff auf das Zertifikat dauert ziemlich lange (länger als bei der Verwendung der Standard AlgorithmIdentifier) ​​und b.) Ich bekomme diese Fehlermeldung:

%Vor%

Es ist wahrscheinlich nicht das Problem, wenn man sich die Quelle anschaut, bei der das scheitert. Kann jemand den obigen Entschlüsselungscode [mit einer Smartcard] erhalten?

// EDIT1 Bitte beachten Sie, dass dieses Problem nur dann auftritt, wenn das verwendete Zertifikat auf einer Smartcard abgelegt wird und wenn ein anderer AlgorithmIdentifier als der Standard (3DES) wie im Beispielcode angegeben wurde. Alles funktioniert einwandfrei, wenn entweder der standardmäßige AlgorithmIdentifier verwendet wird oder das Zertifikat NICHT auf einer Smartcard platziert wird. Es scheint nicht wie ein SC-Problem per se, da es mit dem Standard AlgorithmIdentifier arbeitet. Es ist eher die Kombination aus einem SC und dem AES AlgorithmIdentifier, die das Problem verursacht haben, aber ich konnte keine funktionierende Lösung finden.

// EDIT2 Ein vollständiges Beispiel, das das Problem demonstriert, lesen Sie Kommentare für Details:

%Vor%     
masi 27.06.2017, 08:57
quelle

2 Antworten

0

Okay, also habe ich endlich den Grund dafür gefunden, warum das nicht funktioniert. Es hängt wirklich vom SC ab, den ich benutze (Yubikey 4). In meinem Fall habe ich meine RSA-Schlüssel mit openssl erstellt und dann mit dem offiziellen Yubico PIV Manager / PIV Tool auf den SC übertragen. Dies scheint mit dem offiziellen SC-Treiber von Yubico (YubiKey Smart Card Minidriver (YKMD)) noch nicht unterstützt zu werden. Der offizielle Treiber scheint jedoch der einzige Treiber zu sein, der alle erweiterten Funktionen des Yubikey unterstützt und momentan scheint es erforderlich zu sein, wenn Sie AES als Verschlüsselungsalgorithmus verwenden möchten. Ich habe den OpenSC-Treiber verwendet, bevor das für 3DES funktioniert, aber für erweiterte Funktionen fehlschlagen wird. Also, wenn jemand mit dem Yubikey auf dieses Problem stößt:

  1. Stellen Sie sicher, dass Sie den offiziellen Treiber (YubiKey Smartcard Minidriver (YKMD)) anstelle des Windows-Basistreibers oder des OpenSC-Treibers
  2. verwenden
  3. Damit der offizielle Treiber funktioniert, müssen Sie Ihre Zertifikate mit certutil unter Windows importieren, wie in diesem Artikel gezeigt .
  4. Wenn Sie beim Importieren mit certutil einen Fehler in der Zeile "NTE_BAD_KEYSET" erhalten, liegt dies wahrscheinlich daran, dass Sie die PIV-Funktion mit den Yubico-Tools (PIV-Tool und / oder PIV-Manager) initialisiert haben. Dies wird in diesem Fall ebenfalls nicht unterstützt. Daher müssen Sie zuerst Ihre Yubikey PIV-Konfiguration zurücksetzen (geben Sie die falsche PIN x mal ein, dann die falsche PUK x mal und dann können Sie die PIV-Konfiguration zurücksetzen - das ist alles getan mit dem PIV-Tool von Yubico wie hier unten auf der Seite gezeigt )
  5. Jetzt können Sie Ihre benutzerdefinierte PIN, PUK, Management-Key usw. mit den Yubico Tools einstellen. Es scheint so, als ob "nur" die Init der PIV-Konfiguration mit diesen Tools nicht möglich ist. Beachten Sie auch, dass Sie weitere Details finden, wie zum Beispiel "wie man die Touch-Richtlinie einstellt" (standardmäßig deaktiviert, was irgendwie ***). im SC-Bereitstellungshandbuch von Yubico .
masi 15.01.2018, 23:01
quelle
1

Obwohl meine Antwort zu einigen unvollständigen Tangenten führen kann, glaube ich, dass es Ihnen die gleiche Behauptung bringen wird, zu der ich gekommen bin. Tatsache ist, dass ich einen X509Store benutze, der es mir ermöglicht, die Zertifikate zu finden, die mein Computer hat. Ich übergebe dann die Sammlung in die CmsReceipientCollection mit einer X509Certificate2Collection, die von meinem store.Certificates gefunden wird. Diese Methode benötigt 128ms zur Ausführung. HTH!

%Vor%     
Programmer 03.01.2018 14:49
quelle

Tags und Links