| Preface | p. xv |
| Acknowledgments | p. xvii |
| Smart Cards | p. 1 |
| Smart Card Basics | p. 3 |
| Logic of Integrated Circuit Cards | p. 3 |
| Communication Interface of Integrated Circuit Cards | p. 6 |
| Smart Card Operating Systems | p. 7 |
| Smart Card Life Cycle | p. 8 |
| Integrated Circuit Card Standards | p. 11 |
| Security Issues | p. 13 |
| Symmetric Cryptography | p. 14 |
| Asymmetric Cryptography | p. 17 |
| Authentication | p. 22 |
| Smart Card Security | p. 25 |
| Known Attacks on Smart Cards | p. 26 |
| System Security | p. 28 |
| Security Evaluation Criteria | p. 31 |
| Common Criteria | p. 32 |
| Visa Smart Card Protection Profile | p. 37 |
| Eurosmart Protection Profiles | p. 38 |
| Smart Card Security User Group's Protection Profile | p. 39 |
| Secure Signature-Creation Device Protection Profile | p. 40 |
| References | p. 42 |
| File Structure and Commands | p. 43 |
| File Structure of Integrated Circuit Cards | p. 43 |
| Command Structure of ICCs | p. 45 |
| Examples of Smart Card Commands | p. 46 |
| Cryptographic Authentication and Secure Messaging | p. 48 |
| ISO 7816 Smart Card Communication | p. 53 |
| Answer to Reset | p. 54 |
| T = 1 Protocol | p. 57 |
| Card Readers, Card Terminals, and Related Technologies | p. 59 |
| Card Readers and Card Terminals | p. 59 |
| Related Technologies | p. 61 |
| References | p. 62 |
| Debit and Credit Cards | p. 63 |
| Relevant Specifications | p. 65 |
| EMV Transactions | p. 67 |
| EMV 2000 Details | p. 73 |
| EMV Book 1 | p. 73 |
| EMV Book 2 | p. 74 |
| EMV Book 3 | p. 75 |
| EMV Book 4 | p. 76 |
| Java Card | p. 77 |
| Java Card Basics | p. 79 |
| Java Card Architecture | p. 79 |
| Differences from Java | p. 84 |
| Primitive Data Types and Arrays | p. 84 |
| Operations and Type Casting | p. 86 |
| Exceptions | p. 86 |
| Java Card Applet | p. 89 |
| Installation and Registration | p. 90 |
| Selection and Deselection | p. 91 |
| APDU Processing | p. 92 |
| References | p. 93 |
| Deployment of Java Card Technology | p. 95 |
| Java Card Forum | p. 95 |
| Card Management | p. 96 |
| SIM Application Toolkit | p. 97 |
| Visa Open Platform | p. 98 |
| References | p. 99 |
| Java Card Security | p. 101 |
| Java Card Language Subset Security | p. 101 |
| Java Safety | p. 102 |
| Java Type Safety | p. 103 |
| Transient Objects | p. 103 |
| Atomicity of Transactions | p. 104 |
| Card Applet Security Mechanisms | p. 104 |
| Card Applet Firewall | p. 105 |
| Secure Object Sharing | p. 106 |
| Java Card Crypto APIs | p. 108 |
| PIN Verification | p. 109 |
| References | p. 110 |
| Application Development | p. 111 |
| Java Card API | p. 111 |
| JCSystem Class | p. 112 |
| Applet Class | p. 112 |
| APDU Class | p. 113 |
| OwnerPIN Class | p. 115 |
| Util Class | p. 115 |
| Interface ISO7816 | p. 116 |
| Existing Implementations | p. 116 |
| Giesecke and Devrient Sm@rtCafe | p. 116 |
| Gemplus GemXpresso 211 | p. 118 |
| Schlumberger Cyberflex Access | p. 119 |
| OpenCard Framework | p. 121 |
| OCF Basics | p. 123 |
| Smart Card Applications | p. 124 |
| The OCF | p. 125 |
| The OpenCard Consortium | p. 126 |
| OCF Architecture Overview | p. 126 |
| What Is a Framework? | p. 129 |
| What Is an Abstract Factory? | p. 130 |
| Singleton and Registry | p. 132 |
| PC/SC | p. 133 |
| OCF Versus PC/SC | p. 136 |
| Platform | p. 137 |
| Operating System | p. 137 |
| Terminal Application | p. 137 |
| Programming Language | p. 138 |
| Architecture | p. 138 |
| Interoperability | p. 140 |
| Java Card and Windows for SmartCard | p. 140 |
| Other Card Terminal APIs | p. 140 |
| References | p. 142 |
| OCF Structure | p. 143 |
| OCF Card Terminal Layer | p. 144 |
| Core Part of the Card Terminal Layer | p. 145 |
| Optional Part of the Card Terminal Layer | p. 147 |
| OCF Card Service Layer | p. 148 |
| Core Part of the Card Service Layer | p. 148 |
| Optional Part of the Card Service Layer | p. 151 |
| Standard Card Service Interfaces | p. 151 |
| OCF Security | p. 152 |
| OCF Card Terminal Communication | p. 154 |
| OCF and Java Card Applets | p. 155 |
| References | p. 157 |
| Case Study: Java Card Application Development with the OpenCard Framework | p. 159 |
| Case Study Overview | p. 161 |
| Sample Application Functionality | p. 161 |
| Application Architecture | p. 162 |
| Transaction Flow | p. 163 |
| Data Objects | p. 165 |
| Application Selection | p. 172 |
| Processing Options Retrieval | p. 173 |
| Reading Application Parameters | p. 175 |
| Cardholder Verification | p. 176 |
| Application Cryptogram | p. 178 |
| Security Functions | p. 184 |
| Card Risk Management | p. 184 |
| Session Key Derivation Algorithm | p. 187 |
| AC Calculation Algorithm | p. 188 |
| Application Design | p. 190 |
| References | p. 191 |
| Java Card Applet Development | p. 193 |
| Applet Architecture | p. 193 |
| EMVPurse Class | p. 195 |
| Data Structures and Related Methods | p. 196 |
| Class Constructor | p. 199 |
| GENERATE AC Command Processing | p. 201 |
| CVR Object | p. 204 |
| Card Risk Management and Card Action Analysis | p. 206 |
| Application Cryptogram Calculation | p. 209 |
| EMVdemo Class | p. 211 |
| Class Constructor, Methods install and select | p. 212 |
| Method process | p. 212 |
| EMVFileSystem Class | p. 220 |
| Record | p. 220 |
| File | p. 222 |
| File System | p. 223 |
| OCF Card Service Development | p. 227 |
| Setting Up the Environment | p. 227 |
| The Properties File and the Factory | p. 228 |
| The Card Service | p. 232 |
| SELECT Command | p. 234 |
| VERIFY Command | p. 235 |
| Read Record Command | p. 237 |
| Get Processing Options Command | p. 238 |
| Generate AC Command | p. 242 |
| References | p. 244 |
| Terminal Application | p. 245 |
| Startup and Shutdown | p. 245 |
| Processing Options and Restrictions | p. 248 |
| Dynamic Data Authentication | p. 253 |
| Certificate Chain | p. 253 |
| Signing Authentication Data | p. 256 |
| Terminal Risk Management | p. 256 |
| Verification of the Result | p. 260 |
| General Verification | p. 260 |
| AC Calculation | p. 263 |
| References | p. 265 |
| Conclusion | p. 267 |
| Card Applet Source Code | p. 271 |
| OCF Reference Manual | p. 297 |
| Package opencard.core.service | p. 297 |
| Class SmartCard | p. 297 |
| Class CardRequest | p. 300 |
| Class CardServiceFactory | p. 302 |
| Class CardServiceRegistry | p. 304 |
| Class CardService | p. 307 |
| Class CardServiceScheduler | p. 310 |
| Class CardChannel | p. 312 |
| Class CardType | p. 315 |
| Class DefaultCHVDialog | p. 316 |
| Package opencard.core.terminal | p. 316 |
| Class APDU | p. 316 |
| Class CardID | p. 319 |
| Class CardTerminalFactory | p. 321 |
| Class CardTerminalRegistry | p. 322 |
| Class CardTerminal | p. 324 |
| Class SlotChannel | p. 329 |
| Package opencard.opt.service | p. 331 |
| Class OCFllCardServiceFactory | p. 331 |
| Package opencard.opt.util | p. 331 |
| Class TLV | p. 331 |
| Class Tag | p. 334 |
| Reference | p. 337 |
| List of Acronyms | p. 339 |
| About the Authors | p. 349 |
| Index | p. 351 |
| Table of Contents provided by Syndetics. All Rights Reserved. |