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.8 Application Binding Protocol - Distributed<br />

C.8.2<br />

Server Application<br />

Implementation of a server application that responds to the application binding request in<br />

the CDAM rewall mechanism is listed as below:<br />

1 package protocolABPDServerApp ;<br />

2<br />

3 import javacard . framework .APDU;<br />

4 import javacard . framework . Applet ;<br />

5 import javacard . framework . ISO7816 ;<br />

6 import javacard . framework . ISOException ;<br />

7 import javacard . framework . JCSystem ;<br />

8 import javacard . framework . U t i l ;<br />

9 import javacard . s e c u r i t y . AESKey ;<br />

10 import javacard . s e c u r i t y . Key ;<br />

11 import javacard . s e c u r i t y . KeyBuilder ;<br />

12 import javacard . s e c u r i t y . KeyPair ;<br />

13 import javacard . s e c u r i t y . MessageDigest ;<br />

14 import javacard . s e c u r i t y . RSAPrivateKey ;<br />

15 import javacard . s e c u r i t y . RSAPublicKey ;<br />

16 import javacard . s e c u r i t y . RandomData ;<br />

17 import javacard . s e c u r i t y . S i g n a t u r e ;<br />

18 import javacardx . apdu . ExtendedLength ;<br />

19 import javacardx . crypto . Cipher ;<br />

20 public class ProtocolHandler extends Applet implements ExtendedLength<br />

21 {<br />

22 private byte [ ] ClientAppRandomNumberArray ;<br />

23 private byte [ ] ClientAppCookieArray ;<br />

24 private byte [ ] ServerAppClientAppDHGeneratedValue ;<br />

25 private byte [ ] ServerAppRandomNumberArray ;<br />

26 private byte [ ] S e r v e r A p p C e r t i f i c a t e ;<br />

27 private byte [ ] ClientAppDHChallengeTag = {<br />

28 ( byte ) 0x1F , ( byte ) 0x5F , ( byte ) 0x5C , ( byte ) 0x01 } ;<br />

29 private byte [ ] MessageHandlerTagOne = {<br />

30 ( byte ) 0x1F , ( byte ) 0xC0 , ( byte ) 0xAA, ( byte ) 0xAA, ( byte ) 0x00 , ( byte )<br />

31 0x00 , ( byte ) 0x00 } ;<br />

32 private byte [ ] MessageHandlerTagTwo = {<br />

33 ( byte ) 0x1F , ( byte ) 0xC0 , ( byte ) 0xBB, ( byte ) 0xBB, ( byte ) 0x00 , ( byte )<br />

34 0x00 , ( byte ) 0x00 } ;<br />

35 private byte [ ] ClientAppIdentity = null ;<br />

36 private byte [ ] ClientAppRandomNumberTag = {<br />

37 ( byte ) 0x1F , ( byte ) 0x5F , ( byte ) 0x5A , ( byte ) 0x01 } ;<br />

38 private byte [ ] ClientAppCookieTag = {<br />

39 ( byte ) 0x1F , ( byte ) 0x5F , ( byte ) 0x5B , ( byte ) 0x01 } ;<br />

40 private byte [ ] EncryptedDataTag = {<br />

41 ( byte ) 0x1F , ( byte ) 0xC0 , ( byte ) 0xFE , ( byte ) 0x01 } ;<br />

42 private byte [ ] SignedDataTag = {<br />

43 ( byte ) 0x1F , ( byte ) 0x5F , ( byte ) 0x5D , ( byte ) 0x02 } ;<br />

44 private byte [ ] MACedDataTag = {<br />

45 ( byte ) 0x1F , ( byte ) 0x5F , ( byte ) 0x5D , ( byte ) 0x01 } ;<br />

46 private byte [ ] Plat<strong>for</strong>mHash = {<br />

392

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

Saved successfully!

Ooh no, something went wrong!