06.11.2014 Views

A User Centric Security Model for Tamper-Resistant Devices

A User Centric Security Model for Tamper-Resistant Devices

A User Centric Security Model for Tamper-Resistant Devices

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

C.3 Attestation Protocol<br />

362 ISOException . throwIt ( ( short ) c h i l d L e f t ) ;<br />

363 }<br />

364 }<br />

365 void protocolImplementation ( ) {}<br />

366 void d h I n i t i a l i s a t i o n ( ) {<br />

367 dhKey . setModulus ( ClassDH . dhModulus , ( short ) 0 ,<br />

( short ) ClassDH . dhModulus . l e n g t h ) ;<br />

368 }<br />

369 void keygenerator ( ) {<br />

370 AESKey sessionGenKey = (AESKey) KeyBuilder . buildKey<br />

371 ( KeyBuilder .TYPE_AES_TRANSIENT_DESELECT,<br />

372 KeyBuilder .LENGTH_AES_128, f a l s e ) ;<br />

373 sessionGenKey . setKey ( SCCMDHGeneratedValue , ( short ) 0) ;<br />

374 phMacGenerator . i n i t ( sessionGenKey , S i g n a t u r e .MODE_SIGN,<br />

375 I n i t i a l i s a t i o n V e c t o r , ( short ) 0 , ( short )<br />

376 I n i t i a l i s a t i o n V e c t o r . l e n g t h ) ;<br />

377 byte [ ] keyGenMacData = JCSystem . makeTransientByteArray ( ( short ) 64 ,<br />

378 JCSystem .MEMORY_TYPE_TRANSIENT_DESELECT) ;<br />

379 short p o i n t e r = 0 ;<br />

380 p o i n t e r = U t i l . arrayCopyNonAtomic ( this . CMRandomNumberArray ,<br />

381 this . PTLVDataOffset , keyGenMacData , ( short ) pointer , ( short ) 16) ;<br />

382 p o i n t e r = U t i l . arrayCopyNonAtomic ( this . SCRandomNumberArray ,<br />

383 this . PTLVDataOffset , keyGenMacData , ( short ) pointer , ( short ) 16) ;<br />

384 p o i n t e r = U t i l . arrayCopyNonAtomic ( SCCMDHGeneratedValue , ( short ) 16 ,<br />

385 keyGenMacData , ( short ) pointer , ( short ) 16) ;<br />

386 <strong>for</strong> ( short i = 4 8 ; i < 6 4 ; i ++) {<br />

387 keyGenMacData [ i ] = ( byte ) 0x02 ;<br />

388 }<br />

389 phMacGenerator . s i g n ( keyGenMacData , ( short ) 0 , ( short )<br />

390 keyGenMacData . length , SCCMDHGeneratedValue ,<br />

( short )<br />

391 0) ;<br />

392 this . phCipherKey . setKey ( SCCMDHGeneratedValue , ( short ) 0) ;<br />

393 <strong>for</strong> ( short i = 4 8 ; i < 6 4 ; i ++) {<br />

394 keyGenMacData [ i ] = ( byte ) 0x03 ;<br />

395 }<br />

396 phMacGenerator . i n i t ( sessionGenKey , S i g n a t u r e .MODE_SIGN,<br />

397 I n i t i a l i s a t i o n V e c t o r , ( short ) 0 , ( short )<br />

398 I n i t i a l i s a t i o n V e c t o r . l e n g t h ) ;<br />

399 phMacGenerator . s i g n ( keyGenMacData , ( short ) 0 , ( short )<br />

400 keyGenMacData . length , SCCMDHGeneratedValue ,<br />

( short )<br />

401 0) ;<br />

402 this . phMacGeneratorKey . setKey ( SCCMDHGeneratedValue , ( short ) 0) ;<br />

403 SCCMDHGeneratedValue = null ;<br />

404 JCSystem . r e q u e s t O b j e c t D e l e t i o n ( ) ;<br />

405 }<br />

406 void messageEncryption ( byte [ ] i n b u f f , short i n b u f f O f f s e t , short<br />

407 inbuffLength ) {<br />

408 syCipher . i n i t ( phCipherKey , Cipher .MODE_ENCRYPT, I n i t i a l i s a t i o n V e c t o r ,<br />

409 ( short ) 0 , ( short ) I n i t i a l i s a t i o n V e c t o r . l e n g t h ) ;<br />

280

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

Saved successfully!

Ooh no, something went wrong!