Verschlüsselung von Bytes mit dem TPM (Trusted Platform Module)

Wie kann ich Bytes mit dem TPM-Modul eines Computers verschlüsseln?

CryptProtectData

Windows bietet eine (relativ) einfache API zum Verschlüsseln eines Blobs mit demCryptProtectData API, mit der wir eine einfach zu verwendende Funktion verpacken können:

public Byte[] ProtectBytes(Byte[] plaintext)
{
   //...
}

Die Details vonProtectBytes sind weniger wichtig als die Idee, dass Sie es ganz einfach verwenden können:

hier sind die Bytes, die ich mit einem geheimen Schlüssel verschlüsseln möchte, der sich im @ befindSystem Gib mir den verschlüsselten Blob zurück

Die zurückgegebenenKleck ist ein undokumentiertesDokumentatio Struktur, die alles enthält, was zum Entschlüsseln und Zurückgeben der Originaldaten erforderlich ist (Hash-Algorithmus, Verschlüsselungsalgorithmus, Salt, HMAC-Signatur usw.).

Der Vollständigkeit halber hier die Beispiel-Pseudocode-Implementierung vonProtectBytes das benutzt dasCrypt API um Bytes zu schützen:

public Byte[] ProtectBytes(Byte[] plaintext)
{
   //Setup our n-byte plaintext blob
   DATA_BLOB dataIn;
   dataIn.cbData = plaintext.Length;
   dataIn.pbData = Addr(plaintext[0]);

   DATA_BLOB dataOut;

   //dataOut = EncryptedFormOf(dataIn)
   BOOL bRes = CryptProtectData(
         dataIn,
         null,     //data description (optional PWideChar)
         null,     //optional entropy (PDATA_BLOB)
         null,     //reserved
         null,     //prompt struct
         CRYPTPROTECT_UI_FORBIDDEN || CRYPTPROTECT_LOCAL_MACHINE,
         ref dataOut);
   if (!bRes) then
   {
      DWORD le = GetLastError();
      throw new Win32Error(le, "Error calling CryptProtectData");
   }

   //Copy ciphertext from dataOut blob into an actual array
   bytes[] result;
   SetLength(result, dataOut.cbData);
   CopyMemory(dataOut.pbData, Addr(result[0]), dataOut.cbData);

   //When you have finished using the DATA_BLOB structure, free its pbData member by calling the LocalFree function
   LocalFree(HANDLE(dataOut.pbData)); //LocalFree takes a handle, not a pointer. But that's what the SDK says.
}
Wie mache ich dasselbe mit dem TPM?

Der obige Code ist nur zum Verschlüsseln von Daten für den lokalen Computer nützlich. Die Daten werden mit dem @ verschlüsseSystem account als Schlüsselgenerator Details sind zwar interessant, aber unwichtig). Das Endergebnis ist, dass ich Daten (z. B. einen Festplattenverschlüsselungs-Hauptschlüssel) verschlüsseln kann, die nur vom lokalen Computer entschlüsselt werden können.

etzt ist es Zeit, diesen Schritt weiter zu gehen. Ich möchte einige Daten verschlüsseln (z. B. einen Festplattenverschlüsselungs-Hauptschlüssel), die nur vom lokalen TPM entschlüsselt werden können. Mit anderen Worten, ich möchte die vertrauenswürdige Ausführungsumgebung von Qualcomm ersetzen TEE) im Blockdiagramm unten für Android mit dem TPM in Windows:

Hinwei: Mir ist klar, dass das TPM keine Datensignierung durchführt (oder, falls dies der Fall ist, nicht garantiert, dass das Signieren der gleichen Daten jedes Mal die gleiche Binärausgabe liefert). Welches ist, warum ich bereit wäre, @ zu ersetz "RSA-Signatur" mit "Verschlüsseln eines 256-Bit-Blobs mit einem hardwaregebundenen Schlüssel".

So wo ist der Code?

Das Problem ist, dass die TPM-Programmierungollständig undokumentiert auf MS. Es ist keine API verfügbar, um Vorgänge auszuführen. Stattdessen müssen Sie sich eine Kopie des @ findTrusted Computing Group Software Stack (auch bekannt als TSS), finden Sie heraus, welche Befehle in welcher Reihenfolge mit Nutzdaten an das TPM gesendet werden sollen, und rufen Sie @ au Window's Tbsip_Submit_Command function um Befehle direkt zu senden:

TBS_RESULT Tbsip_Submit_Command(
  _In_     TBS_HCONTEXT hContext,
  _In_     TBS_COMMAND_LOCALITY Locality,
  _In_     TBS_COMMAND_PRIORITY Priority,
  _In_     const PCBYTE *pabCommand,
  _In_     UINT32 cbCommand,
  _Out_    PBYTE *pabResult,
  _Inout_  UINT32 *pcbOutput
);

Windows verfügt über keine API höherer Ebene, um Aktionen auszuführen.

Es ist das moralische Äquivalent zum Versuch, eine Textdatei zu erstellen, indem Sie SATA-E / A-Befehle an Ihre Festplatte senden..

Warum nicht nur Hosen benutzen

Die Trusted Computing Group (TCG) hat ihre eigene API definiert:TCB Software Stack (TSS). Eine Implementierung dieser API wurde von einigen Leuten erstellt und heißtHos. Ein Typ dannportierte das Projekt nach Windows.

Das Problem mit diesem Code ist, dass er nicht in die Windows-Welt portierbar ist. Sie können es beispielsweise nicht in Delphi und nicht in C # verwenden. Es benötigt

OpenSSL pThread

Ich will nur dasCod um etwas mit meinem TPM zu verschlüsseln.

ObenstehendesCryptProtectData erfordert nichts anderes als das, was sich im Funktionskörper befindet.

Was ist der entsprechende Code zum Verschlüsseln von Daten mit dem TPM? Wie andere angemerkt haben, Sie müssen wahrscheinlich die drei TPM-Handbücher konsultieren und die Blobs selbst erstellen. Es geht wahrscheinlich um dieTPM_seal Befehl. Obwohl ich glaube, ich will nichtSiege Daten, ich denke, ich möchtebinde it:

Bindun - verschlüsselt Daten mit dem TPM-Bindungsschlüssel, einem eindeutigen RSA-Schlüssel, der von einem Speicherschlüssel abgeleitet ist.Abdichtun - verschlüsselt Daten auf ähnliche Weise wie beim Binden, gibt jedoch zusätzlich einen Zustand an, in dem TPM sein muss, damit die Daten entschlüsselt werden (entsiegelt)

Ich versuche, die drei erforderlichen Bände zu lesen, um die 20 benötigten Codezeilen zu finden:

Teil 1 - GestaltungsprinzipienTeil 2 - Strukturen des TPMTeil 3 - Befehle

Aber ich habeNei Idee, was ich lese. Wenn es ein Tutorial oder Beispiele gäbe, hätte ich vielleicht eine Chance. Aber ich bin völlig verloren.

So fragen wir Stackoverflow

Auf die gleiche Weise konnte ich Folgendes bereitstellen:

Byte[] ProtectBytes_Crypt(Byte[] plaintext)
{
   //...
   CryptProtectData(...); 
   //...
}

kann jemand das entsprechende Äquivalent bereitstellen:

Byte[] ProtectBytes_TPM(Byte[] plaintext)
{
   //...
   Tbsip_Submit_Command(...);
   Tbsip_Submit_Command(...);
   Tbsip_Submit_Command(...);
   //...snip...
   Tbsip_Submit_Command(...);
   //...
}

das tut dasselbe, außer dass ein Schlüssel in @ verriegelt iSystem LSA, ist im TPM verriegelt?

Start of Research

Ich weiß nicht genau wasbinde meint. Betrachtet man jedoch TPM Main - Teil 3 Befehle - Spezifikation Version 1.2, wird @ erwähnbinde:

10.3 TPM_UnBind

TPM_UnBind nimmt das Daten-Blob, das das Ergebnis eines Tspi_Data_Bind-Befehls ist, und entschlüsselt es für den Export an den Benutzer. Der Anrufer muss die Verwendung des Schlüssels genehmigen, der den eingehenden Blob entschlüsselt. TPM_UnBind arbeitet blockweise und hat keine Ahnung, ob ein Block mit einem anderen in Beziehung steht.

Was verwirrend ist, ist da ist NeinTspi_Data_Bind Befehl

Forschungsaufwand

Es ist entsetzlich, wie niemand sich jemals die Mühe gemacht hat, das TPM oder seinen Betrieb zu dokumentieren. Es ist, als ob sie all ihre Zeit damit verbracht hätten, sich dieses coole @ auszudenkeSach zu spielen, aber wollte nicht mit dem schmerzhaften Schritt, es zu machen, umgehenverwendba für etwas

Starten mit dem (jetzt) kostenlosen BuchEin praktischer Leitfaden zu TPM 2.0: Verwenden des Trusted Platform Module im neuen Zeitalter der Sicherheit:

Kapitel 3 - Kurzanleitung zu TPM 2.0

Das TPM hat Zugriff auf einen selbst generierten privaten Schlüssel, sodass es Schlüssel mit einem öffentlichen Schlüssel verschlüsseln und den resultierenden Blob dann auf der Festplatte speichern kann. Auf diese Weise kann das TPM eine praktisch unbegrenzte Anzahl von Schlüsseln zur Verwendung bereithalten, jedoch keinen wertvollen internen Speicher verschwenden. Auf der Festplatte gespeicherte Schlüssel können gelöscht, aber auch gesichert werden, was den Designern als akzeptabler Kompromiss erschie

Wie kann ich einen Schlüssel mit dem öffentlichen Schlüssel des TPM verschlüsseln?

Kapitel 4 - Vorhandene Anwendungen, die TPMs verwendenAnwendungen, die das TPM verwenden sollten, aber nicht

In den letzten Jahren hat die Anzahl der webbasierten Anwendungen zugenommen. Dazu gehören webbasierte Sicherung und Speicherung. Eine große Anzahl von Unternehmen bietet solche Dienste an, aber unseres Wissens lässt keiner der Clients für diese Dienste den Benutzer den Schlüssel für den Sicherungsdienst für ein TPM sperren. Wenn dies geschehen wäre, wäre es sicherlich schön, wenn der TPM-Schlüssel selbst durch Duplizieren auf mehreren Computern gesichert würde. Dies scheint eine Gelegenheit für Entwickler zu sein.

Wie sperrt ein Entwickler einen Schlüssel für das TPM?

Kapitel 9 - ErbenUSE CASE: SPEICHERN VON LOGIN-PASSWÖRTERN

Eine typische Passwortdatei speichert gesalzene Hashes von Passwörtern. Die Überprüfung besteht darin, ein angegebenes Kennwort zu salzen, zu haschen und mit dem gespeicherten Wert zu vergleichen. Da die Berechnung kein Geheimnis enthält, wird die Kennwortdatei offline angegriffen.

In diesem Anwendungsfall wird ein von TPM generierter HMAC-Schlüssel verwendet. In der Kennwortdatei wird eine HMAC des gesalzenen Kennworts gespeichert. Die Überprüfung besteht aus dem Salzen und HMACen des angegebenen Passworts und dem Vergleich mit dem gespeicherten Wert. Da ein Offline-Angreifer nicht über den HMAC-Schlüssel verfügt, kann der Angreifer durch Ausführen der Berechnung keinen Angriff starten.

Dieskönnte Arbeit. Wenn das TPM einen geheimen HMAC-Schlüssel hat und nur mein TPM den HMAC-Schlüssel kennt, könnte ich "Signieren (auch TPM-Verschlüsselung mit privatem Schlüssel)" durch "HMAC" ersetzen. Aber dann kehrt er sich in der nächsten Zeile komplett um:

TPM2_Create, einen HMAC-Schlüssel angeben

Es ist kein TPM-Geheimnis, wenn ich den HMAC-Schlüssel angeben muss. Die Tatsache, dass der HMAC-Schlüssel nicht geheim ist, macht Sinn, wenn Sie feststellen, dass dies das Kapitel über kryptografische Dienstprogramme ist, die das TPM bereitstellt. Anstatt dass Sie selbst SHA2, AES, HMAC oder RSA schreiben müssen, können Sie wiederverwenden, was das TPM bereits herumliegt.

Kapitel 10 - Schlüssel

Als Sicherheitsgerät die Fähigkeit einer Anwendung,erwenden Sie Schlüssel, während Sie sie in einem Hardwaregerät aufbewahre ist die größte Stärke des TPM. Das TPM kann extern generierte Schlüssel sowohl generieren als auch importieren. Es unterstützt sowohl asymmetrische als auch symmetrische Schlüssel.

Ausgezeichnet! Wie machst du das!

Schlüsselgenerato

Die größte Stärke des TPM ist wahrscheinlich die Fähigkeit, einen kryptografischen Schlüssel zu generieren und sein Geheimnis innerhalb einer Hardwaregrenze zu schützen. Der Schlüsselgenerator basiert auf dem Zufallszahlengenerator des TPM und ist nicht auf externe Zufallsquellen angewiesen. Auf diese Weise werden Schwachstellen beseitigt, die auf einer schwachen Software mit unzureichender Entropiequelle beruhe

Tut Ist das TPM in der Lage, kryptografische Schlüssel zu generieren und seine Geheimnisse innerhalb einer Hardwaregrenze zu schützen? Ist so, wie?

Kapitel 12 - PlattformkonfigurationsregisterPCRs zur AutorisierungUSE CASE: VERSCHLÜSSELUNG EINER FESTPLATTEN-VERSCHLÜSSELUNG FÜR PLATTFORM STATE

Anwendungen für die Festplattenverschlüsselung sind weitaus sicherer, wenn ein TPM den Verschlüsselungsschlüssel schützt, als wenn er auf derselben Festplatte gespeichert ist, die nur durch ein Kennwort geschützt ist. Erstens verfügt die TPM-Hardware über einen Anti-Hammering-Schutz (eine detaillierte Beschreibung des TPM-Wörterbuch-Angriffsschutzes finden Sie in Kapitel 8), sodass ein Brute-Force-Angriff auf das Kennwort nicht praktikabel ist. Ein Schlüssel, der nur durch Software geschützt ist, ist weitaus anfälliger für ein schwaches Kennwort. Zweitens ist ein auf der Festplatte gespeicherter Softwareschlüssel viel einfacher zu stehlen. Nehmen Sie die Festplatte (oder ein Backup der Festplatte) und Sie erhalten den Schlüssel. Wenn ein TPM den Schlüssel enthält, muss die gesamte Plattform oder zumindest die Festplatte und das Motherboard gestohlen werden.

it @Sealing kann der Schlüssel nicht nur durch ein Kennwort, sondern auch durch eine Richtlinie geschützt werden. Eine typische Richtlinie sperrt den Schlüssel für die zum Zeitpunkt des Versiegelns aktuellen PCR-Werte (den Softwarestatus). Dies setzt voraus, dass der Status beim ersten Start nicht gefährdet ist. Jegliche vorinstallierte Malware, die beim ersten Start vorhanden ist, wird in den PCRs gemessen, und der Schlüssel wird somit an einen gefährdeten Softwarestatus gebunden. Ein weniger vertrauenswürdiges Unternehmen verfügt möglicherweise über ein Standard-Disk-Image und ein Siegel für PCRs, die dieses Image darstellen. Diese PCR-Werte würden auf einer vermutlich vertrauenswürdigeren Plattform vorberechnet. Ein noch komplexeres Unternehmen würde TPM2_PolicyAuthorize verwenden und mehrere Tickets bereitstellen, die eine Reihe vertrauenswürdiger PCR-Werte autorisieren. In Kapitel 14 finden Sie eine detaillierte Beschreibung der Richtlinienautorisierung und ihrer Anwendung zur Lösung des Problems der PCR-Sprödigkeit.

Auch wenn ein Kennwort den Schlüssel schützen kann, gibt es auch ohne ein TPM-Schlüsselkennwort einen Sicherheitsgewinn. Ein Angreifer konnte die Plattform starten, ohne ein TPMkey-Kennwort anzugeben, konnte sich jedoch nicht ohne den Benutzernamen und das Kennwort des Betriebssystems anmelden. Die OSsecurity schützt die Daten. Der Angreifer kann ein alternatives Betriebssystem, beispielsweise von einer Live-DVD oder einem USB-Stick, anstatt von der Festplatte starten, um die Anmeldesicherheit des Betriebssystems zu umgehen. Diese unterschiedliche Boot-Konfiguration und Software würde jedoch die PCR-Werte ändern. Da diese neuen PCRs nicht mit den versiegelten Werten übereinstimmen, gibt das TPM den Entschlüsselungsschlüssel nicht frei und die Festplatte konnte nicht entschlüsselt werden.

Ausgezeichnet! Dies ist genau der Anwendungsfall, den ich will. Es ist auch der Anwendungsfall, für den Microsoft das TPM verwendet. Wie mache ich es!

So habe ich das ganze Buch gelesen und es lieferte nichts Nützliches. Das ist ziemlich beeindruckend, weil es 375 Seiten hat. Sie fragen sich, was das Buch enthielt - und rückblickend habe ich keine Ahnung.

So geben wir die endgültige Anleitung zur Programmierung des TPM auf und wenden uns stattdessen einer Dokumentation von Microsoft zu:

Von demMicrosoft TPM Platform Crypto-Provider Toolkit. Es wird genau erwähnt, was ich tun möchte:

Der Endorsement Key oder EK

Der EK wurde entwickelt, um eine zuverlässige kryptografische Kennung für die Plattform bereitzustellen. Ein Unternehmen verwaltet möglicherweise eine Datenbank der Endorsement Keys, die zu den TPMs aller PCs in seinem Unternehmen gehören, oder ein Data Center Fabric-Controller verfügt möglicherweise über eine Datenbank der TPMs in allen Blades. Unter Windows können Sie den im Abschnitt "Platform Crypto Provider in Windows 8" beschriebenen NCrypt-Anbieter verwenden, um den öffentlichen Teil des EK zu lesen.

Irgendwo im TPM befindet sich ein privater RSA-Schlüssel. Dieser Schlüssel ist dort eingesperrt - niemals von der Außenwelt gesehen zu werden. Ich möchte, dass das TPM etwas mit seinem privaten Schlüssel signiert (d. H. Mit seinem privaten Schlüssel verschlüsselt).

Also ich will am meistenBasi Operation, die möglicherweise vorhanden sein kann:

Encrypt etwas mit Ihrem privaten Schlüssel. Ich frage (noch) nicht einmal nach den komplizierteren Sachen:

"Abdichtung" es basiert auf PCR-StatusErstellen eines Schlüssels und Speichern in einem flüchtigen oder nichtflüchtigen SpeicherErstellen eines symmetrischen Schlüssels und Versuch, ihn in das TPM zu laden

Ich frage nach der grundlegendsten Operation, die ein TPM ausführen kann. Warum ist es unmöglich, Informationen darüber zu erhalten, wie es geht?

Ich kann zufällige Daten bekommen

Ich nehme an, ich war ziemlich unzufrieden, als ich sagte, RSA-Signierung sei die grundlegendste Funktion, die das TPM ausführen kann. Dasdie meiste Grundlegend, dass das TPM aufgefordert werden kann, ist, mir zufällige Bytes zu geben.Da Ich habe herausgefunden, wie es geht:

public Byte[] GetRandomBytesTPM(int desiredBytes)
{
   //The maximum random number size is limited to 4,096 bytes per call
   Byte[] result = new Byte[desiredBytes];

   BCRYPT_ALG_HANDLE hAlgorithm;

   BCryptOpenAlgorithmProvider(
         out hAlgorithm,
         BCRYPT_RNG_ALGORITHM, //AlgorithmID: "RNG"
         MS_PLATFORM_CRYPTO_PROVIDER, //Implementation: "Microsoft Platform Crypto Provider" i.e. the TPM
         0 //Flags
   );
   try
   {                
      BCryptGenRandom(hAlgorithm, @result[0], desiredBytes, 0);
   }
   finally
   {
      BCryptCloseAlgorithmProvider(hAlgorithm);
   }

   return result;
}
The Fancy Thing

Ich stelle fest, dass die Anzahl der Benutzer des TPM sehr gering ist. Deshalb hat niemand auf Stackoverflow eine Antwort. Deshalb kann ich nicht zu gierig werden, eine Lösung für mein gemeinsames Problem zu finden. Aber das Ding würde ichJa wirklic tun wollen, ist zu"Siegel" Daten

tellen Sie dem TPM einige Daten vor (z. B. 32 Byte Schlüsselmaterialenn das TPM die Daten verschlüsselt, wird eine undurchsichtige Blob-Struktur zurückgegebepäter fordern Sie das TPM auf, den Blob zu entschlüsseldie Entschlüsselung funktioniert nur, wenn die PCR-Register des TPM mit denen während der Verschlüsselung identisch sind.

Mit anderen Worten

Byte[] ProtectBytes_TPM(Byte[] plaintext, Boolean sealToPcr)
{
   //...
}

Byte[] UnprotectBytes_TPM(Byte[] protectedBlob)
{
   //...
}
Cryptography Next Gen (Cng, aka BCrypt) unterstützt TPM

ie ursprüngliche Kryptografie-API in Windows wurde als Krypto-API bezeichne

Bei Windows Vista wurde die Crypto-API durch @ ersetzCryptography API: Next Generation (intern bekannt als BestCrypt, abgekürzt als BCrypt, nicht zu verwechseln mitder Passwort-Hashing-Algorithmus).

Windows wird mit zwei BCrypt @ ausgeliefe provider:

Microsoft Primitive Provider (MS_PRIMITIVE_PROVIDER) Standar: Standardsoftwareimplementierung allerprimitives (Hashing, symmetrische Verschlüsselung, digitale Signaturen usw.)Microsoft Platform Crypto Provider (MS_PLATFORM_CRYPTO_PROVIDER): Anbieter, der TPM-Zugriff bereitstellt

DasPlattform Cryptoer @ -Anbieter ist nicht auf MSDN dokumentiert, verfügt jedoch über eine Dokumentation von einer 2012 Microsoft Research-Website:

TPM Platform Crypto-Provider Toolkit

Der TPM-Plattform-Kryptoanbieter und das TPM-Toolkit enthalten Beispielcode, Dienstprogramme und Dokumentation zur Verwendung von TPM-bezogenen Funktionen in Windows 8. Zu den beschriebenen Subsystemen gehören der von TPM unterstützte Kryptoanbieter der nächsten Generation (CNG) und der Bestätigungsdienst Anbieter können die neuen Windows-Funktionen nutzen. Es werden sowohl TPM1.2- als auch TPM2.0-basierte Systeme unterstützt.

s scheint, dass Microsoft beabsichtigt, die TPM-Kryptofunktionalität mit demMicrosoft Platform Crypto Provider desCryptography NG API.

Verschlüsselung mit öffentlichem Schlüssel mit Microsoft BCrypt

Gegeben, dass:

Ich möchte eine asymmetrische RSA-Verschlüsselung durchführen (mit dem TPM)MicrosoftBestCrypt unterstützt die asymmetrische RSA-VerschlüsselungMicrosoft BestCrypt hat einTPM Provider

Ein Weg in die Zukunft könnte sein, herauszufinden, wie man mit dem @ -Zeichen digital signierMicrosoft Cryptography Next Gen API.

Mein nächster Schritt besteht darin, den Code für die Verschlüsselung in BCrypt mit einem öffentlichen RSA-Schlüssel unter Verwendung des Standardanbieters MS_PRIMITIVE_PROVIDER). Z.B.

modulus: 0xDC 67 FA F4 9E F2 72 1D 45 2C B4 80 79 06 A0 94 27 50 8209 DD 67 CE 57 B8 6C 4A 4F 40 9F D2 D1 69 FB 995D 85 0C 07 A1 F9 47 1B 56 16 6E F6 7F B9 CF 2A 58 36 37 99 29 AA 4F A8 12 E8 4F C7 82 2B 9D 72 2A 9C DE 6F C2 EE 12 6D CF F0 F2 B8 C4 DD 7C 5C 1A C8 17 51 A9 AC DF 08 22 04 9D 2B D7 F9 4B 09 DE 9A EB 5C 51 1A D8 F8 F9 56 9E F8 FB 37 9B 3F D3 74 65 24 0D FF 34 75 57 A4 F5 BF 55publicExponent: 65537

Wenn dieser Code funktioniert, kann ich möglicherweise zur Verwendung des TPM-Providers wechseln MS_PLATFORM_CRYPTO_PROVIDER).

2/22/2016: Und da Apple gezwungen ist, beim Entschlüsseln von Benutzerdaten mitzuwirken, besteht ein erneutes Interesse daran, wie das TPM die einfachste Aufgabe ausführen kann, für die es erfunden wurde - etwas zu verschlüsseln.

Es ist ungefähr gleichbedeutend mit jedem, der ein Auto besitzt, aber niemand weiß, wie man eines startet. Es kann wirklich nützliche und coole Dinge tun, wenn wir nur vorbei kommen könntenSchritt .

Bonus ReadingAndroid - Verschlüsselung - Speichern des verschlüsselten SchlüsselsAndroid Explorations - Überarbeitung der Android-FestplattenverschlüsselungDPAPI-Geheimnisse. Sicherheitsanalyse und Datenwiederherstellung in DPAPI (Teil 1)

Antworten auf die Frage(6)

Ihre Antwort auf die Frage