24.07.2014 Views

BitLocker - Sstic

BitLocker - Sstic

BitLocker - Sstic

SHOW MORE
SHOW LESS

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 ;

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!