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.5 Secure and Trusted Channel Protocol Smart Card<br />

89 f i n a l s t a t i c byte GEN_DHKEY = 0x02 ;<br />

90 AESKey phCipherKey ;<br />

91 Cipher syCipher ;<br />

92 byte [ ] I n i t i a l i s a t i o n V e c t o r = {<br />

93 ( byte ) 0x6C , ( byte ) 0xDE, ( byte ) 0xBE, ( byte ) 0x7B , ( byte ) 0x89 ,<br />

( byte ) 0x99 ,<br />

94 ( byte ) 0x8C , ( byte ) 0xAF, ( byte ) 0xC5 , ( byte ) 0x7D , ( byte ) 0xB1 , ( byte )<br />

95 0x7C , ( byte ) 0x62 , ( byte ) 0x0A , ( byte ) 0x86 , ( byte ) 0x52 } ;<br />

96 AESKey phMacGeneratorKey ;<br />

97 S i g n a t u r e phMacGenerator ;<br />

98 S i g n a t u r e phSign ;<br />

99 KeyPair phSCKeyPair ;<br />

100 KeyPair ph<strong>User</strong>KeyPair ;<br />

101 RSAPublicKey SPVerificationKey = null ;<br />

102 private ProtocolHandler ( ) {<br />

103 phMacGeneratorKey = (AESKey) KeyBuilder . buildKey<br />

104 ( KeyBuilder .TYPE_AES_TRANSIENT_DESELECT,<br />

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

106 phMacGenerator =<br />

S i g n a t u r e . g e t I n s t a n c e ( S i g n a t u r e .ALG_AES_MAC_128_NOPAD,<br />

107 f a l s e ) ;<br />

108 phSign = S i g n a t u r e . g e t I n s t a n c e ( S i g n a t u r e .ALG_RSA_SHA_PKCS1, f a l s e ) ;<br />

109 phSCKeyPair = new KeyPair ( KeyPair .ALG_RSA, KeyBuilder .LENGTH_RSA_512) ;<br />

110 ph<strong>User</strong>KeyPair = new KeyPair ( KeyPair .ALG_RSA,<br />

KeyBuilder .LENGTH_RSA_512)<br />

111 ;<br />

112 phCipherKey = (AESKey) KeyBuilder . buildKey<br />

113 ( KeyBuilder .TYPE_AES_TRANSIENT_DESELECT,<br />

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

115 syCipher = Cipher . g e t I n s t a n c e ( Cipher .ALG_AES_BLOCK_128_CBC_NOPAD,<br />

116 f a l s e ) ;<br />

117 randomDataGen = RandomData . g e t I n s t a n c e (RandomData .ALG_SECURE_RANDOM) ;<br />

118 pkCipher = Cipher . g e t I n s t a n c e ( Cipher .ALG_RSA_NOPAD, f a l s e ) ;<br />

119 d h I n i t i a l i s a t i o n ( ) ;<br />

120 phSCKeyPair . genKeyPair ( ) ;<br />

121 ph<strong>User</strong>KeyPair . genKeyPair ( ) ;<br />

122 }<br />

123 public s t a t i c void i n s t a l l ( byte bArray [ ] , short bOffset , byte bLength )<br />

124 throws ISOException {<br />

125 new ProtocolHandler ( ) . r e g i s t e r ( ) ;<br />

126 }<br />

127 public void i n i t i a l i s e P r o t o c o l ( ) {<br />

128 short i n i t i a l P o i n t e r = 0 ;<br />

129 SCDHData = JCSystem . makeTransientByteArray ( ( short ) ( ( short )<br />

130 this . ClassDH . dhModulus . l e n g t h + PTLVDataOffset ) ,<br />

131 JCSystem .MEMORY_TYPE_TRANSIENT_DESELECT) ;<br />

132 U t i l . arrayCopyNonAtomic ( this . SCDHChalleneTag , ( short ) i n i t i a l P o i n t e r ,<br />

133 this . SCDHData , ( short ) 0 , ( short )<br />

134 this . SCDHChalleneTag . l e n g t h ) ;<br />

135 this . shortToBytes (SCDHData , ( short ) 4 , ( short ) ( ( short )SCDHData . l e n g t h −<br />

136 ( short ) PTLVDataOffset ) ) ;<br />

315

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

Saved successfully!

Ooh no, something went wrong!