BitLocker - Sstic
BitLocker - Sstic
BitLocker - Sstic
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
38 <strong>BitLocker</strong><br />
23. Compromission physique par le bus PCI. http://www.sstic.org/2009/presentation/Compromission_<br />
physique_par_le_bus_PCI/<br />
24. Trusted Computing : Limitations actuelles et perspectives. http://www.sstic.org/2010/<br />
presentation/Trusted_Computing_Limitations_actuelles_et_perspectives/<br />
8 Annexe 1 - Code de déchiffrement AES-CCM<br />
// Fonction incomplete de dechiffrement d ’un datum DATUM_AES256_CCM<br />
// La cle est specifiee via le parametre pKey et doit faire 256 bits (32 octets<br />
)<br />
// Le parametre dwEncryptedDataSize indique la taille des donnees chiffres dans<br />
le datum pDatumAES<br />
PBYTE DecryptDatumAES256CCM ( PBYTE pKey , PDATUM_AES256_CCM pDatumAES , DWORD<br />
dwEncryptedDataSize )<br />
{<br />
BCRYPT_ALG_HANDLE hAesAlg ;<br />
BCRYPT_KEY_HANDLE hKey ;<br />
BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO AuthCipher ;<br />
DWORD dwPlainTextSize , dwKeyObjectSize , dwDataSize ;<br />
PBYTE pbPlainText , pbKeyObject ;<br />
BCryptOpenAlgorithmProvider (& hAesAlg , BCRYPT_AES_ALGORITHM , NULL , 0);<br />
BCryptGetProperty ( hAesAlg , BCRYPT_OBJECT_LENGTH , ( PBYTE )& dwKeyObjectSize ,<br />
sizeof ( DWORD ), & dwDataSize , 0);<br />
pbKeyObject = ( PBYTE ) HeapAlloc ( hHeap , HEAP_ZERO_MEMORY , dwKeyObjectSize );<br />
BCryptSetProperty ( hAesAlg , BCRYPT_CHAINING_MODE , ( PBYTE )<br />
BCRYPT_CHAIN_MODE_CCM , sizeof ( BCRYPT_CHAIN_MODE_CCM ), 0);<br />
BCryptGenerateSymmetricKey ( hAesAlg , &hKey , pbKeyObject , dwKeyObjectSize ,<br />
pKey , 32 , 0);<br />
BCRYPT_INIT_AUTH_MODE_INFO ( AuthCipher );<br />
AuthCipher . pbNonce = ( PUCHAR )& pDatumAES -> ftFileTime ;<br />
AuthCipher . pbTag = ( PUCHAR )& pDatumAES -> bMac ;<br />
AuthCipher . cbNonce = 12;<br />
AuthCipher . cbTag = 16;<br />
// Premier appel pour avoir la taille du clair<br />
BCryptDecrypt (hKey , pDatumAES -> bEncryptedData , dwEncryptedDataSize , &<br />
AuthCipher , NULL , 0 ,NULL , 0, & dwPlainTextSize , 0);<br />
pbPlainText = ( PBYTE ) HeapAlloc ( hHeap , 0, dwPlainTextSize );<br />
// Second appel pour le dechiffrement<br />
BCryptDecrypt (hKey , pDatumAES -> bEncryptedData , dwEncryptedDataSize , &<br />
AuthCipher , NULL , 0, pbPlainText , dwPlainTextSize , & dwPlainTextSize ,<br />
0);<br />
// Liberation des ressources a realiser<br />
// via BCryptDestroyKey BCryptCloseAlgorithmProvider et HeapFree<br />
}<br />
return pbPlainText ;