c# openssl_decrypt Ist die Formularauthentifizierung für die Entschlüsselung von Tickets mit PHP möglich?



php aes verschlüsselung (3)

Öffnen Sie zunächst Ihre machine.config und fügen Sie einen Maschinenkey-Eintrag hinzu. Legen Sie den Entschlüsselungsschlüssel und den Überprüfungsschlüssel nach einer zufällig generierten aus einem Maschineschlüsselgenerator für aspnet 2.0.

Achten Sie darauf, die Standardwerte zu verwenden, dh. AES und SHA1. Jetzt, da Sie den AES-Entschlüsselungsschlüssel haben, speichern Sie ihn irgendwo, weil Sie ihn auf der PHP-Seite benötigen. Rufen Sie in Ihrer dot net-App die Datei web.config auf und rufen Sie den Namen des Formular-Authentifizierungscookies ab, normalerweise etwas wie .ASPXAUTH

Gehen Sie jetzt zur PHP-Seite. Laden Sie eine AES-Verschlüsselungsbibliothek wie diese hier herunter und richten Sie sie ein: http://phpseclib.sourceforge.net/documentation/

Dann können Sie in PHP so etwas tun (das verwendet die phpsec-lib):

set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
include('Crypt/AES.php');

$authCookie = $_COOKIE['_ASPXAUTH'];

echo $authCookie;

$aes = new Crypt_AES();

$aes->setKey('BCDCBE123654F3E365C24E0498346EB95226A307857B9BDE8EBA6198ACF7F03C');

echo $aes->decrypt($authCookie);

Was nun herauskommt, ist zuerst pm + der SHA1-Hash + eine Byte-Darstellung des Auth-Tickets. Sie müssen die serialisierten Bytes in eine Zeichenfolge konvertieren, um sie lesbar zu machen. Kann jemand anders auf diesem letzten Schritt iluminieren?

https://ffff65535.com

Ich bin ein PHP-Entwickler, der fast nichts über .NET weiß. Ich wurde von den .NET-Jungs bei der Arbeit gebeten, .NET-Code zu übersetzen, der ein Authentifizierungsticket in PHP entschlüsselt, so dass der PHP-Code dann die geeigneten Sitzungsvariablen für die Ausführung meiner Anwendung setzen kann. Ist das überhaupt möglich? Ich starre auf den Code und es verblüfft mich. Ich werde es weiter versuchen, wenn mir jemand sagen kann, dass es keine Zeitverschwendung ist, aus irgendeinem Grund, den ich nicht einmal kenne. Danke für jede Hilfe!

Zusatzinfo: Kann ich überhaupt das Ticket mit PHP bekommen?


Von Microsoft KB

Das Formularauthentifizierungsticket wird verwendet, um der ASP.NET-Anwendung mitzuteilen, wer Sie sind. Ticket ist somit ein Baustein für die Sicherheit von Forms Authentication.

Das Ticket wird mithilfe des Konfigurationselements der Datei Machine.config des Servers verschlüsselt und signiert. ASP.NET 2.0 verwendet den Entschlüsselungsschlüssel und das neue Entschlüsselungsattribut des Elements zum Verschlüsseln von Formularauthentifizierungstickets. Mit dem Entschlüsselungsattribut können Sie den zu verwendenden Verschlüsselungsalgorithmus angeben. ASP.NET 1.1 und 1.0 verwenden die 3DES-Verschlüsselung, die nicht konfigurierbar ist. Die Manipulation des Ticketwerts wird durch einen Fehler beim Entschlüsseln des Tickets auf dem Server festgestellt. Daher wird der Benutzer zur Anmeldeseite umgeleitet.

Wenn die Anwendung in einer Webfarm bereitgestellt wird, müssen Sie sicherstellen, dass die Konfigurationsdateien auf jedem Server denselben Wert für die Attribute validationKey und decryptionKey im Tag aufweisen, die für das Hashen bzw. Entschlüsseln des Tickets verwendet werden. Sie müssen dies tun, da Sie nicht garantieren können, welcher Server sukzessive Anfragen bearbeitet. Weitere Informationen zur FormsAuthenticationTicket-Verschlüsselung und Überlegungen zur Webfarmimplementierung finden Sie auf der folgenden MSDN-Website:

Sie können also angeben, welcher Verschlüsselungs- / Entschlüsselungsalgorithmus und welcher Schlüssel folgen sollen. Sie können die gleiche Entschlüsselungslogik in PHP verwenden.


Wie Gumbo sagte, müssen Sie die beteiligten Algorithmen berücksichtigen. Das asp.net-Authentifizierungsticket verwendet:

  1. Erstellen Sie ein serialisiertes Formularauthentifizierungsticket. Eine Byte-Array-Darstellung des Tickets wird erstellt.
  2. Unterschreiben Sie das Formularauthentifizierungsticket. Der MAC-Wert (Message Authentication Code) für das Bytearray wird mithilfe des Algorithmus und des Schlüssels berechnet, der durch die Attribute validationKey und validationKey des Elements machineKey angegeben wird. Standardmäßig wird der SHA1-Algorithmus verwendet.
  3. Formularauthentifizierungsticket verschlüsseln Das zweite Byte-Array, das erstellt wurde, wird mithilfe der Encrypt-Methode der FormsAuthentication-Klasse verschlüsselt. Die Encrypt-Methode verwendet intern den Algorithmus und den Schlüssel, die durch die Entschlüsselungs- und decryptionKey-Attribute auf dem machineKey-Element angegeben werden. ASP.NET Version 1.1 verwendet standardmäßig den 3DES-Algorithmus. ASP.NET Version 2.0 verwendet standardmäßig den Rinjdael (AES) -Algorithmus.




encryption