Smart Card Based User Authentication
|
|
|
- Bernard Byrd
- 9 years ago
- Views:
Transcription
1 Smart Card Based User Authentication A thesis submitted in partial fulfilment of the requirements for the degree of Master of Science By BRANDON JAMES B.S., Wright State University, June Wright State University
2 Copyright c 2012 Brandon James All Rights Reserved
3 WRIGHT STATE UNIVERSITY GRADUATE SCHOOL June 11, 2012 I HEREBY RECOMMEND THAT THE THESIS PREPARED UNDER MY SUPERVISION BY Brandon James ENTITLED Smart Card Based User Authentication BE ACCEPTED IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE DEGREE OF Master of Science. Meilin Liu, Ph. D. Thesis Advisor Mateen Rizki, Ph.D., Chair Department of Computer Science College of Engineering and Computer Science Committee on Final Examination Meilin Liu, Ph. D. Travis Doom, Ph. D. Jack Jean, Ph. D. Andrew Hsu, Ph.D. Dean, Graduate School
4 ABSTRACT James, Brandon. M.S., Department of Computer Science, Wright State University, Smart Card Based User Authentication User authentication plays a very important role in building a secure computing system. In this thesis, we first studied and investigated existing user authentication schemes and some basic concepts of smart cards. We then proposed and implemented an improved user authentication scheme based on the smart card, specifically, Java card. We simulated a web server, and implemented the user authentication scheme with the Java card by programming a Java card applet and a Java program to send commands and receive responses from the card. The proposed user authentication scheme has two phases: the registration phase and the user authentication phase. In the registration phase, the server triggers the Java card to generate a secret value and store it. Then the Java card uses this secret value and hashes the username and password combination, which is stored in the web server s authentication database. The user s login request to the web server will start the user authentication phase, where the smart card will compute the hash, using the username and password entered, and return it to the web server for user verification. The implementation of the proposed user authentication scheme proved the correctness and effectiveness of the scheme. Compared with the previous user authentication schemes, our proposed authentication scheme is more secure because it implements a two-factor authentication. Even if the user s password is compromised, a user would still need the smart card to log into the system. iv
5 TABLE OF CONTENTS CHAPTER 1. INTRODUCTION Background Related Work Problem Statement Organization CHAPTER 2. BASIC CONCEPTS Overview of Security Smart Cards JavaCard History ISO-7816 Standards Contact Points Transmission Protocols Industry Standard Commands for Communicating with Smart Cards CHAPTER 3. SMART CARD APPLET DEVELOPMENT Add a New Virtual Smart Card Add a New Java Card Applet Application Protocol Data Unit (APDU) CHAPTER 4. USER AUTHENTICATION SCHEME WITH JAVA CARD APPLET Add a New Java Card Applet Sending Commands to a JavaCard: Java Program for Sending Commands to JavaCard User Authentication Scheme and Implementation Registration Phase User Authentication Phase v
6 4.3.3 Method to create new stored secret on Java card Method to Create New Login Session Method to return the user s hash value Server Side Implementation CHAPTER 5. CONCLUSION & FUTURE WORK Conclusion Future Work REFERENCES vi
7 LIST OF FIGURES 2.1 Smart Card Smart Card Pin Layout Add a new smart card. Step Add a new smart card. Step Creating a new Java Card Applet Step Creating a new Java Card Applet Step Creating a new Java Card Applet Step Creating a new Java Card Applet Step Registration Phase User Authentication Phase vii
8 LIST OF TABLES 3.1 Application Identifier (AID) Format Project AID Values Command APDU Structure Response APDU Structure viii
9 CHAPTER 1 INTRODUCTION 1.1 Background Information security has become important in recent years mainly because of the increase in availability of information. As computer systems become more complex and the internet allows for interconnectivity of systems, protecting access to information becomes crucial in order to preserve an individual s privacy and keep confidential information from being compromised. Computer systems now store credit card and banking information, social security numbers, health records, and various other data that may be very personal to an individual. Due to the private nature of information today, measures to improve confidentiality, data integrity, availability, and access control must be implemented in order to ensure that malicious users are prevented from accessing or altering data, yet information is still available to those who have rightfully been granted access to it. One main way of protecting data access is through authentication, the binding of an identity to a subject, as defined by Matt Bishop in Computer Security Art and Science [2]. One of the most common forms of authentication is having a username and password. A user must know its username and password in order to log into a system. However, if a password is compromised, a malicious user can gain access to a system in which they do not have access rights. The second method of authenticating users is to use something the users have, such as a badge or card. The third method of authenticating is to use the user s biometrics, or the biometrics together with a password. The objective of this Master s thesis is to study and 1
10 2 investigate the existing user authenticating schemes and some basic concepts of smart cards. Using a smart card for authentication requires a user to have a physical object in their possession and also know a password (in a smart card often referred to as a PIN) in order to authenticate themselves. Requiring both to verify a person s identity makes it more difficult for a user s identity to be compromised because one s adversary could still compromise a password, but he/she needs to have the smart card in their possession in order to gain access to the system. Compared with the previous user authentication schemes, our proposed authentication scheme using a smart card, is more secure because it implements a two-factor authentication. Even if the user s password is compromised, a user would still need the smart card to log into the system. 1.2 Related Work Many researchers have investigated how to utilize smart cards in a security solution. As far back as 1997, Guthery stated that Java Cards would become useful for secure internet computing [6]. His basis was primarily that by putting the Java language on a smart card, it would lend itself well for internet computing, since the Java language is used for internet programming. Also, by putting Java on a smart card, more developers would have the knowledge and ability to develop on the Java Card, since it is a level above the microcontroller level programming. Hiltgen, Kramp, and Weigold proposed two different authentication solutions for use in internet banking [8]. In [18], an authentication scheme for internet banking using smart cards was proposed too. Bichsel, Camenisch, Gro and Shoup [1], designed a scheme to use a smart card, a Java Card in particular, to build an electronic identity token to access buildings, in which the smart card was used to generate keys and random numbers that can be used to authenticate a user. Their research was primarily built around generating keys quickly and efficiently to prove that smart cards could in reality be used as secure identity tokens.
11 3 After studying and investigating the smart card, and the existing user authentication schemes, we proposed and implemented an improved user authentication scheme using a smart card. Our design is different, however, because many of the works cited here proposed solutions and proved that a certain authentication scheme would work and that using smart cards to perform authentication was feasible. In our case, by coding a Java applet, we proved that user authentication schemes using smart cards are indeed realizable and feasible. 1.3 Problem Statement As systems become more complex and hold more personal data for individuals, user authentication becomes important so that the data is protected. In this thesis we aim to develop an improved user authentication scheme based on smart card. A smart card is capable of storing confidential information (such as security keys) that can be used to authenticate a user. Smart cards lend themselves well to being used for user authentication. Furthermore, we decided on using the Java Card to develop our solution. MULTOS and Java Card are the two platforms that are considered leaders in smart card solutions, mostly in the banking industry. MULTOS is used by Mastercard, a major financial services corporation, and Java, which was developed by Sun Microsystems, is the standard for Visa s smart credit cards [9]. Since the Java language and its platform have been used extensively in real-world applications, this became the chosen platform for the development of this research project. As noted in [6], using Java on a smart card opens up more possibilities for developers, since Java is used quite extensively in various applications. For this reason, we opted to use the Java Card libraries to simulate our solution to the user authentication problem. We studied the syntax and requirements for developing a Java Card applet first. Then once we had some basic understanding of java card, we studied and investigated user authentication schemes and some different ways these schemes were implemented in the security applications. Based on
12 4 these knowledge, we then proposed and implemented an improved user authentication scheme based on the smart card, specifically, Java card. We simulated a web server, and implemented the user authentication scheme with Java card by programming a Java card applet and a Java program to send commands and receive responses from the card. The proposed user authentication scheme has two phases: the registration phase and the user authentication phase. In the registration phase, the server triggers the Java card to generate a secret value and store it. Then the Java card uses this secret value and hashes the username and password combination, which is stored in the web server s authentication database. The user s login request to the web server will trigger the user authentication phase. In the user authentication phase, once the username and password is entered, the username and the password will automatically be sent to the smart card. The smart card will use the username, the password, and the stored secret value to compute a hash value. Then the username and the computed hash value will be sent to the web server. The web server will compare the received username and the hash value with the username and hash value stored in the database. If both match, then the user is authenticated, the user will have certain access control priviledges on the web server. The implementation of the proposed user authentication scheme proved the correctness and effectiveness of the scheme. Compared with the previous user authentication schemes, our proposed authentication scheme is more secure because it implements a two-factor authentication. Even if the user s password is compromised, a user would still need the smart card to log in to the system. 1.4 Organization Chapter 2 presents an overview of information security and defines the basic concepts related to security. This section also includes an overview of the Java Card and smart cards, in general, along with the ISO-7816 standards that govern the definitions and functionality of a smart
13 5 card. In Chapter 3, we describe the basic set-up for our development environment and how to create a Java Card applet. Chapter 4 describes the specific applet that we have implemented and the user authentication scheme that we have implemented. Chapter 5, concludes the thesis and describes the future work.
14 CHAPTER 2 BASIC CONCEPTS 2.1 Overview of Security As the internet has progressed and computing systems have become more and more complex, security and privacy have become essential. Information security must be able to provide confidentiality to the user, ensure data integrity, as well as make sure that data is available whenever an authorized user needs to access information. Security, in the context of computing, can be divided into five areas, or domains: Confidentiality, Integrity, Authentication, Non-Repudiation, and Reliability [2]. Confidentiality Confidentiality can be defined as ensuring that any data is only shared with those users that are authorized to access it. According to the ISO (International Organization for Standardization), confidentiality is considered one of the cornerstones and a fundamental basis that any information security policy should contain. Without confidentiality, data can be compromised by those who should not have access to it, and thus could reveal information about a user that could be used in a malicious way. For most schemes, confidentiality is achieved by encrypting data during transmission so that an adversary cannot read the data during transmission easily even they can intercept the data during their transmission. 6
15 7 Integrity Integrity refers to being able to trust the data and ensuring that it is accurate and consistent. To ensure data integrity, checks must be done to verify that the data has not been altered by any unauthorized individuals. An authorized user performing a transaction must be able to trust the data that is being used so that all transactions are completed correctly and successfully. Authentication Authentication is confirmation that an individual is who they say they are. Essentially there are two sides to authentication: 1. A user must be able to verify that the host they are communicating is guaranteed to be the one they are intending to communicate with. 2. The host, or server, on the other hand also needs to be able to verify that the user is in fact who they say they are. The process of authentication proving who they are is often done using a shared secret that is communicated and verified. Non-Repudiation Non-Repudiation is the impossibility that an entity who performed a transaction could deny the transaction at a later time. To establish non-repudiation, a digital signature is often used. Digital signatures are done using a one-way hash function, such as SHA-1. By signing the data, the entity verifies that they were indeed the ones that performed the transaction, which prevents them from denying or challenging the action.
16 8 Reliability Reliability, or availability, describes the overall functionality of the security system. A transaction must be performed at any time under certain conditions and also ensure that the security and privacy is preserved. Privacy and security could be fully preserved if information was not available, however, this also would not be very useful. There needs to be a careful balance to ensure that data is available to any authorized users whenever they may need it. 2.2 Smart Cards The first patent for a smart card was filed in 1968 [7] which was for a card that included an integrated circuit chip. Since then, much progress has been made in the design of smart cards, and they are being used in various areas for providing security. The most familiar form of a smart card is the credit card-sized cards which can be used for electronic cash payments, but in more recent years, the SIM (Subscriber Identity Module) cards used in mobile phones are also used for smart cards. Smart cards are portable microcomputers that have the ability to perform operations and hold authentication data for a user. Inside of the card is a series of integrated circuit chips (ICCs) that form a microprocessor that is capable of storing data to identify the user and perform cryptographic operations. Because of the circuit chips they contain, smart cards are also known as integrated circuit cards. These cards are used in a variety of industries including: mobile phones, banking, and healthcare [16] for user identification. In addition, smart cards are increasingly being used to store loyalty cards, electronic ticketing, toll road passes, and electronic cash, such as VisaCash [7]. Figure 2.1 shows an example of a common Java smart card [4]. Having the capability to store user data and perform operations such as encryption, smart cards can be used to verify an user, thereby preventing an unauthorized user from altering
17 9 Figure 2.1. Smart Card data or accessing resources which they are not entitled. While the data and computation abilities of smart cards make them qualified to be used for authentication verification, their portability and tamper-resistant design also make them a viable option for integrity checks. They also come in two forms, contact and contactless. Depending on the type of smart card, the platform varies. Java,.Net, Multos, Windows for Smart Card, and Linux platforms are widely used for smart card development. Smart Card standards must conform to the ISO 7816 requirements [14]. Memory Limitations Smart cards contain three different types of memory: Read Only Memory (ROM), Electrical Erasable Programmable Read Only Memory (EEPROM), and Random Access Memory (RAM). ROM - contains the operating system for the smart card EEPROM - non-volatile memory which holds values even when the power is removed; holds values such as the user s PIN and passwords RAM - holds temporary values (variables), divided among the Java stack, Java heap, APDU buffer, and atomic transaction buffer [1] The memory on a smart card is quite small. In some cases the memory capacities may
18 10 be as small as: 24 K of ROM, 16 K of EEPROM, and 512 bytes of RAM [11]. 2.3 JavaCard There are multiple operating systems that can be used on a smart card, including: MultOS, Smart Card for Windows, and Java Card. For our research we opted to use the Java Card to perform security functions. The Java Card allowed us to develop the applet for our smart card using the Java language, which was used extensively. Technically, Java Card is a platform, or more specifically a framework, that is used to develop smart card applets, rather than an operating system. The Java card framework allows us to develop code that is compiled down to byte-code and then interpreted, and it has been specifically designed for mobility as well as security. Primitive Types Supported / Unsupported Due to the memory limitations of a smart card, only a subset of the primitive types available in the Java language are available in the Java Card framework. Supported Primitive Types: boolean - 8 bits byte - 8 bits short - 16 bits Unsupported Primitive Types: char - 16 bits float - 32 bits
19 11 int - 32 bits double - 64 bits long - 64 bits History Engineers working for Schlumberger in Austin, TX, one manufacturer of smart cards, came up with the idea of putting Java on a smart card in March 1996 [6]. Internet development was growing rapidly, and the Java language was being used quite extensively as an internet language. For this reason, engineers decided that putting Java on a smart card would allow the cards to be used to authenticate users into internet systems. Because both components were using the same language, integrating the two would be much easier. Even today the Java Card is still being used and allows developers to code in a more familiar language rather than coding at the byte or assembly language level. 2.4 ISO-7816 Standards The standards that govern the design and functionality of smart cards have been established by the ISO. The ISO-7816 standards have been established by the organization to provide a basis and guideline for how a smart card, or integrated circuit card, with contacts should be designed. These standards describe requirements for the physical aspects of the smart cards as well as how the cards should communicate with terminals and off-card applications. When a framework, such as the JavaCard framework, is created, it must be able to operate within the bounds set forth by the ISO standards including how the commands on the smart card are processed and which transmission protocols can be used [14]. Part 1 of the ISO 7816 standards defines the physical design of the smart card, including the materials that the chips should be made out of and the flexibility/bendability of the card.
20 Contact Points Part 2 of the ISO 7816 standards defines the card contact-point dimensions and the contactpoint placement. The minimum size of a contact-point of a smart card must be 1.7mm in height and 2.0mm in width [15]. A smart card has 8 contacts, or pins. Only 6 of these pins, however, are currently used. The other two are reserved for future expansion. Figure 2.2 shows the pin layout for a smart card according to the ISO 7816 standards [13]. Figure 2.2. Smart Card Pin Layout Vcc (1) - The Vcc pin is where the supply voltage is connected to the microchip [15]. This supply voltage is generally 5 volts [13]. GND (5) - The GND pin is where the common ground is connected to the smart card. RST (2) - The RST (Reset) pin is used either by the card itself or the reader/interface to send a reset command to the smart card. Based on the answer-to-reset (ATR), the interface can determine which protocol (T=0 or T=1) the card is using to communicate commands and responses.
21 13 Vpp (6) - The Vpp pin is where the programming voltage is connected to the smart card. This pin was used in older smart cards to program the high voltage signal to initialize the EEPROM but is now an optional pin. CLK (3) - The CLK (clock) pin is used to give the card a clock or timing signal input. I/O (7) - The I/O pin is used for basic input/output to and from the card reader. 2 RFU pins (4 and 8) - The RFU pins are not currently used and are reserved for future use Transmission Protocols Part 3 of the ISO 7816 standards defines the transmission protocols that can be used by smart cards to communicate commands and responses to and from the card. There are currently two protocols, T=0 and T=1, defined in the ISO standards. Other protocols: T=2, T=3, T=4, T=5, T=13, T=14, and T=15, are reserved for future use and expansion. T=0: The T=0 protocol is an asynchronous, half-duplex protocol where each character is transmitted separately [15]. This protocol issues a start signal followed by a character and then a stop signal. Being that it is a half-duplex protocol, it offers both sending and receiving communication, but not simultaneously. T=1: The T=1 protocol as defined in the ISO 7816 standards is an asynchronous, halfduplex protocol where blocks of data can be communicated instead of a single character as in the T=0 protocol.
22 Industry Standard Commands for Communicating with Smart Cards Part 4 of the ISO 7816 standards defines the commands and response structure for communicating with the smart cards. These application protocol data units (APDU s) are illustrated in section 3.3 in detail.
23 CHAPTER 3 SMART CARD APPLET DEVELOPMENT 3.1 Add a New Virtual Smart Card To begin programming a Java card applet, the first thing that was done was adding Java Card libraries to NetBeans IDE. For the purpose of our research, NetBeans version 7.0 is being used. Then a virtual smart card was created that would be used for testing purposes. This was added through the Services menu. Figure 3.1. Add a new smart card. Step 1 As shown in the Figure 3.2, the new virtual smart card can be assigned a RAM size, EEPROM size, the HTTP port, and other attributes. The HTTP port is assigned to be used as the server for processing the smart card commands. 15
24 16 Figure 3.2. Add a new smart card. Step Add a New Java Card Applet Once the smart card is added, a new applet can be created to be used for processing the commands given to the smart card. The type of project that was created was a Classic Applet Project. The applet is added with an applet ID and a package ID, that must be assigned according to the requirements of ISO The ID s are application identifiers (AID). When a Java Card reads a command, it chooses the applet based on the bytes received. This command is then executed with the data that was also passed to the smart card. Each AID must be between 5 and 16 bytes long. The format must conform to format shown in the table 3.1 and table 3.2.
25 17 Table 3.1. Application Identifier (AID) Format Registered Application Provider (RID) Proprietary Application Identifier Extension (PIX) 5 bytes 0-11 bytes Table 3.2. Project AID Values RID* PIX Applet AID 0x1000AABB00 0x9B Package AID 0x1000AABB00 0x1001 *Note that the RID for both the applet and the package are the same value. The procedure of creating a new Java card applet is illustrated as follows: Step1 is to create a new project as shown in Figure 3.3. Step2 is to choose the project to be a classic applet project as shown in Figure 3.4. Step3 is to choose the project to specify the application identification for this project as shown in Figure 3.5. Step4 is to to specify the package application identification for this project as shown in Figure 3.6.
26 18 Figure 3.3. Creating a new Java Card Applet Step 1 Figure 3.4. Creating a new Java Card Applet Step 2
27 19 Figure 3.5. Creating a new Java Card Applet Step 3 Figure 3.6. Creating a new Java Card Applet Step 4
28 20 After the preceding steps, an applet template is then generated by the Java Card Runtime Environment (JCRE): package smartcardapplet; import javacard.framework.*; /** * BRANDON JAMES */ public class SmartCardApplet extends Applet /** * Installs this applet. * barray * the array containing installation parameters boffset * the starting offset in barray blength * the length in bytes of the parameter data in barray */ public static void install(byte[] barray, short boffset, byte blength) new SmartCardApplet(); /** * Only this class s install method should create the applet object. */ protected SmartCardApplet() register(); /** * Processes an incoming APDU. * APDU apdu * the incoming APDU */ public void process(apdu apdu) //Insert your code here Each of these methods is required for the Java Card to work properly. The required methods for the Java Card applet are install(), the applet constructor, and process(), which
29 21 processes the commands sent to the smart card. install() - creates a new instance of the applet by calling the applet constructor; ultimately, this method also registers the newly created instance with the JCRE, which is done through the applets constructor. SmartCardApplet() - the constructor for the applet calls the register() method which is a part of the Applet class. As messages are passed to the smart card the JCRE has a list of registered applets that can be searched so that the messages are sent and received correctly. process() - accepts a parameter of type APDU (application protocol data unit). This method accepts a buffer from the card reader and processes the command. Each function that this applet performs will be included in this process method. The applet uses the process() method to interpret and perform the task specified by the command APDU [3]. 3.3 Application Protocol Data Unit (APDU) The process() function takes an argument in the form of an application protocol data unit (APDU). This is the communication format that is used by the Java Card to communicate between the card and the terminal [12]. This format is specified in section 4 of the ISO-7816 standards. These messages are passed through the card reader that is connected to the terminal. The APDU messages come in pairs. There is a command APDU that issues a request or command to the Java Card, and then the card produces a response to the command. Each of these messages has a specific format or structure that needs to be followed so that the messages can be properly processed by and sent from the smart card. Both of the structures are shown in the tables below. The command APDU is formatted into 7 parts as shown in Table 3.3. CLA - the Class Of Instruction, which indicates the type of command.
30 22 Table 3.3. Command APDU Structure Required Optional CLA INS Param1 Param2 L data Data L expected 1 byte 1 byte 1 byte 1 byte 1 byte variable 1 byte INS - the Instruction Number, which indicates the specific command (instruction) being called. Param1 - the first parameter of the instruction. Param2 - the second parameter of the instruction. L data - the length (in bytes) the data field contains. Data - the command data. L expected - the length (in bytes) expected in the response APDU. Table 3.4. Response APDU Structure Optional Required Data StatusWord1 StatusWord2 variable 1 byte 1 byte The response APDU is formatted into 3 parts as shown in Table 3.4. Data - the data returned in response to the command APDU should not exceed the length specified in the command L expected field. StatusWord1*. StatusWord2*. *StatusWord1 and StatusWord2 together indicate the status of the APDU command, e.g. Successful Processing, Execution Error, Execution Warning, etc.
31 CHAPTER 4 USER AUTHENTICATION SCHEME WITH JAVA CARD APPLET 4.1 Add a New Java Card Applet The basic JavaCard template for our applet was generated in Section 3.2. To this we first need to added some final static byte variables that will be used in the applet. These bytes will determine which methods get called. Recall from the discussion of the APDU format from 3.3 that the first byte of the APDU is the class of instruction and the second byte of each command APDU is the instruction byte. These bytes need to be defined so that when the APDU is sent to the JavaCard, it is able to be processed correctly. As globals inside the class for our applet we define the bytes that we will need for processing incoming APDU s. final static byte CLA = (byte) 0xA0; //defines the CLA byte used for instructions final static byte generaterandomdata = (byte) 0x20; final static byte generatenewstoredsecret = (byte) 0x40; final static byte generatehash = (byte) 0x60; Following the definitions for the instruction bytes in our applet, we can define any other global values that we may need for our applet. A couple examples here would be any status words that we want to return which inform the user the outcome of a specific method. These status words are crucial, especially in the testing process, for the functionality of the smart card because they allow us to inform the user of any exceptions that were thrown or what the result of the function was. We can define a specific value for our applet that gets returned if a NULL pointer exception was thrown or if an Array Out-Of-Bounds exception was thrown. This helps 23
32 24 to improve the communication to the smart card because it makes the response APDUs more meaningful. final static short SW_CryptoException = 0x6900; final static short SW_ARRAY_OUT_OF_BOUNDS = 0x6902; final static short SW_NULLPOINTER = 0x6904; The standard template was created for the Java Card applet back in section 3.2. Here the process() method can be defined to call the various functions defined in our Java Card applet. Starting out we define some global values that we can use for our applet. Then we first have a constructor that registers the applet. The process() method takes any incoming APDU and decides what function needs to be performed. Each method is chosen based on the given instruction (INS) byte in the APDU that corresponds to the final static byte defined. Through the process() function the java card knows how to take the incoming command APDU and send it to a method in order to get the response that the user expects. private byte[] storedsecret; public static void install(byte[] barray, short boffset, byte blength) new SmartCardApplet(bArray, boffset, blength); protected SmartCardApplet(byte[] barray, short boffset, byte blength) register(); public boolean select() return true; public void process(apdu apdu)
33 25 byte[] buffer = apdu.getbuffer(); /* * if statement executes the SELECT to select the applet functionality for the Java Card */ if ((buffer[iso7816.offset_cla] == (byte) 0x0) && (buffer[iso7816.offset_ins] == (byte) (0xA4))) return; switch (buffer[iso7816.offset_ins]) case generaterandomdata: generaterandomdata(apdu); return; case generatenewstoredsecret: generatenewstoredsecret(apdu); return; case generatehash: generatehash(apdu); return; default: ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED); Once the process() method has been defined, we need to define methods for each of the possible instructions. For this research project, we will be using the smart card to generate a new secret value that will be stored on the Java card. Using this secret, a hash function can be used to generate a value that will be unique to the user who owns the card, which contains the secret value. There will be two methods used here. The first will be to generate a new secret. This method will be called by the card issuing authority in the registration phase of the user authentication scheme. Then another method will be needed to compute the hash of the stored secret with the data input from the APDU. A third method has been added for generating random data. This will be used for testing and will be used in future research to generate random values based on an input seed. The Java card Applet code is shown below. public void generaterandomdata(apdu apdu) byte[] buffer = apdu.getbuffer(); short datalength = (short) buffer[iso7816.offset_lc]; byte[] outputbuffer = new byte[16]; RandomData data = RandomData.getInstance(RandomData.ALG_PSEUDO_RANDOM);
34 26 data.setseed(buffer, (short) ISO7816.OFFSET_CDATA, (short) datalength); data.generatedata(outputbuffer, (short) 0, (short) outputbuffer.length); apdu.setoutgoing(); apdu.setoutgoinglength((short) outputbuffer.length); apdu.sendbyteslong(outputbuffer, (short) 0, (short) outputbuffer.length); //generates a new stored secret of length 16 bytes //the seed is given through the data portion of the command APDU public void generatenewstoredsecret(apdu apdu) byte[] buffer = apdu.getbuffer(); short datalength = (short) buffer[iso7816.offset_lc]; byte[] outputbuffer = new byte[16]; storedsecret = new byte[16]; RandomData data = RandomData.getInstance(RandomData.ALG_PSEUDO_RANDOM); data.setseed(buffer, (short) ISO7816.OFFSET_CDATA, (short) datalength); data.generatedata(storedsecret, (short) 0, (short) storedsecret.length); data.generatedata(outputbuffer, (short) 0, (short) outputbuffer.length); apdu.setoutgoing(); apdu.setoutgoinglength((short) outputbuffer.length); apdu.sendbyteslong(outputbuffer, (short) 0, (short) outputbuffer.length); //generates and returns the hash //the data input in the command APDU will be the username and password //an XOR operation will be performed on the username and password //then the result will be XOR-ed with the stored secret on the card //then a SHA1 hash will be performed on the result //this result will be returned //input APDU //P1 - contains the length of the username //P2 - contains the length of the password //data - the username followed by the password public void generatehash(apdu apdu) byte[] Hash = new byte[20]; byte[] buffer = apdu.getbuffer(); byte usernamelength = buffer[iso7816.offset_p1]; byte passwordlength = buffer[iso7816.offset_p2]; short datalength = (short) 0; //data is the data from the buffer passed to the smart card //it contains the username and password byte[] username = null; byte[] password = null; byte[] data = null; //if the username is longer then pad the password with 0 s //to make the same length for XOR operation if(usernamelength > passwordlength)
35 27 datalength = (short) usernamelength; username = new byte[usernamelength]; password = new byte[usernamelength]; for(short j = 0; j < usernamelength; j++) username[(short) j] = buffer[(short)(iso7816.offset_cdata + j)]; if(j < passwordlength) password[(short) j] = buffer[(short)(iso7816.offset_cdata + j + (short) usernamelength)]; else password[(short) j] = (byte) 0x00;//pad end with 0 s if shorter else if(passwordlength > usernamelength) datalength = (short) passwordlength; username = new byte[passwordlength]; password = new byte[passwordlength]; for(short k = 0; k < passwordlength; k++) password[(short) k] = buffer[(short)(iso7816.offset_cdata + k + (short) usernamelength)]; if(k < usernamelength) username[(short) k] = buffer[(short)(iso7816.offset_cdata + k)]; else username[(short) k] = (byte) 0x00;//pad end with 0 s if shorter else datalength = (short) usernamelength; username = new byte[usernamelength]; password = new byte[usernamelength]; for(short j = 0; j < usernamelength; j++) username[(short) j] = buffer[(short)(iso7816.offset_cdata + j)]; for(short j = 0; j < passwordlength; j++) password[(short) j] = buffer[(short)(iso7816.offset_cdata + j + (short) username.length)];
36 28 data = new byte[datalength]; //XOR the username and password for(short k = 0; k < datalength; k++) data[(short) k] = (byte) (username[(short) k] ^ password[(short) k]); //data now contains the XOR output of the username and password //now need to XOR this value with the stored secret //make combination to hash equal to the XOR output of the data in and the stored secret byte[] combinationtohash; byte[] tempdata; byte[] tempstoredsecret; if(data.length > storedsecret.length) combinationtohash = new byte[data.length]; tempdata = new byte[data.length]; tempdata = data; tempstoredsecret = new byte[data.length]; for(short j = 0; j < data.length; j++) if(j < storedsecret.length) tempstoredsecret[(short) j] = storedsecret[(short) j]; else tempstoredsecret[(short) j] = (byte) 0x00;//pad end with 0 s if shorter else if(storedsecret.length > data.length) combinationtohash = new byte[storedsecret.length]; tempstoredsecret = new byte[storedsecret.length]; tempstoredsecret = storedsecret; tempdata = new byte[storedsecret.length]; for(short k = 0; k < storedsecret.length; k++) if(k < data.length) tempdata[(short) k] = data[(short) k]; else tempdata[(short) k] = (byte) 0x00;//pad end with 0 s if shorter
37 29 else combinationtohash = new byte[storedsecret.length]; tempdata = new byte[data.length]; tempdata = data; tempstoredsecret = new byte[storedsecret.length]; tempstoredsecret = storedsecret; //perform XOR operations for(short x = 0; x < data.length; x++) combinationtohash[(short) x] = (byte) (tempdata[(short) x] ^ tempstoredsecret[(short) x]); MessageDigest SHA1Engine = MessageDigest.getInstance(MessageDigest.ALG_SHA, false); SHA1Engine.reset(); try SHA1Engine.doFinal(combinationToHash, (short) 0, (short) combinationtohash.length, Hash, (short) 0); catch(cryptoexception e) ISOException.throwIt((short) e.getreason()); catch (ArrayIndexOutOfBoundsException ex) ISOException.throwIt(SW_ARRAY_OUT_OF_BOUNDS); catch (NullPointerException ex) ISOException.throwIt(SW_NULLPOINTER); apdu.setoutgoing(); apdu.setoutgoinglength((short) Hash.length); apdu.sendbyteslong(hash, (short) 0, (short) Hash.length); The code for generating the hash first parses the input APDU data. P1 of the input APDU is equal to the length of the username, and P2 gives the length of the password. Using these parameters, the data portion of the APDU is parsed to extract the username and password. Then an XOR operation is performed on the username and password. The XOR operation can only be performed on byte arrays of equal length. In order to perform a successful XOR operation, whichever is shorter, the username or password, must be padded with zeroes to make both the same length.
38 30 Once the XOR operation on the username and password is complete, the result is then XOR-ed with the stored secret on the card. Finally, a SHA1 hash operation is done on the final result of the XOR operations. This hash value is then returned in the response APDU. 4.2 Sending Commands to a JavaCard: Java Program for Sending Commands to JavaCard A Java program was created to send commands to the Java card and get a response. This program will be used for sending a command to the Java card and receiving a response that includes a hashed value that will be used for authentication. For this research project, the Java card is a service acting as a virtual card, which is running on the local computer port The main purpose of the SendCommandsToJavaCard program is to allow a system to execute this Java program which will handle all of the commands and responses to and from the Java card. To first get a connection to the virtual smart card, a socket is open to allow for communication to and from the smart card. The CadClientInterface method is called to create a new interface using communication protocol T1 and containing input and output streams. CadClientInterface clientinterface; Socket socket = null; InputStream input = null; OutputStream output = null; socket = new Socket("localhost", 9025); input = socket.getinputstream(); output = socket.getoutputstream(); clientinterface = CadDevice.getCadClientInstance(CadDevice.PROTOCOL_T1, input, output); Smart cards can use a couple different protocols for communication between the card and the reader. T0 and T1 protocols are defined in the ISO standards. T0 is a byte oriented protocol. This communication is asynchronous and for each character (byte) that is sent, an acknowledgement must be received. Using the T=0 protocol, each
39 31 character is transmitted individually [7]. T1 is a block oriented protocol, where data is transmitted through blocks of data. A number of bytes can be sent before an acknowledgement must be received. A smart card contains an Answer To Reset (ATR) which is a message sent to the card reader when the reader sends a command to electrically reset the smart card. This ATR contains various information about the card and its current state. With this message, a card reader is also able to determine which protocol the smart card is using so that it knows how to communicate data. For our purposes we are communicating to the local port using the T1 protocol because blocks (APDUs) of data will be transmitted to the smart card. When the virtual smart card was added (see figure 3.2), the protocol was set to be T=1. The first step then is to connect to the port in which the virtual smart card is running. The getcadclientinstance method throws an IOException if it is unable to connect to the given port. By surrounding this in a try/catch statement we can catch this exception and print the error message if the clientinterface is unable to connect. public void connecttosimulator() try socket = new Socket("localhost", 9025); input = socket.getinputstream(); output = socket.getoutputstream(); clientinterface = CadDevice.getCadClientInstance(CadDevice.PROTOCOL_T1, input, output); catch (IOException ex) System.out.println("IO Exception\n" + ex.getmessage() + "\n"); Note that our Java program is successfully connected to our simulation port. We can begin to exchange APDUs with the smart card. To do this we begin by creating a new instance
40 32 of the APDU object. Then we can begin setting the fields of our APDU. The APDU object contains a command array which holds the command that will be sent to the smart card. We access the various indices by using the offset which are constants that are built into the APDU class. We use this method to set the CLA, INS, P1, and P2 portions of the command. The data input, however, is set by calling the class method setdatain and passing in a byte array containing the data that should be sent. Apdu apdu = new Apdu(); apdu.command[apdu.cla] = (byte) 0x0; apdu.command[apdu.ins] = (byte) 0xA4; apdu.command[apdu.p1] = (byte) 0x04; apdu.command[apdu.p2] = (byte) 0x0; byte[] appletaid = (byte)0x10, (byte)0x0, (byte)0xaa, (byte)0xbb, (byte)0x0, (byte) 0x9C; apdu.setdatain(appletaid); try instance.clientinterface.exchangeapdu(apdu); catch (CadTransportException ex) System.out.println("Cad Transport Exception\n" + ex.getmessage().tostring()); catch (IOException ex) System.out.println("IO Exception\n" + ex.getmessage() + "\n"); Being that smart cards (also known as multi-application smart cards) can have multiple applets on them, it is important for a host to first send a command to the smart card to let it know which applet it wants to use. ISO-7816 standards dictate that this initial select command have a CLA of 0x0, an INS of 0xA4, and P1 equals 0x04. Then the data portion of the command contains the applet AID of the applet that the host wishes to use. Then to test that the send commands Java program, along with the Java Card simulator, a command was sent to the virtual card to call the generaterandomdata() method on the card.
41 33 apdu.command[apdu.cla] = (byte) 0xA0; apdu.command[apdu.ins] = (byte) 0x20; apdu.command[apdu.p1] = (byte) 0x0; apdu.command[apdu.p2] = (byte) 0x0; byte[] data = (byte)0xaa, (byte)0xbb, (byte)0xcc, (byte)0xdd; apdu.setdatain(data); try instance.clientinterface.exchangeapdu(apdu); catch (CadTransportException ex) System.out.println("Cad Transport Exception\n" + ex.getmessage().tostring()); catch (IOException ex) System.out.println("IO Exception\n" + ex.getmessage() + "\n"); Here the INS byte is set to 0x20 which informs the applet which instruction to call. The method in the Java Card applet which generates random data uses the date portion of the APDU as a seed value for the random data engine. In both instances, the select APDU and the command to generate random data, the bytes received in response from the smart card were printed using apdu.getresponseapdubytes(). A sample run is shown below. run: 0x0 0xA4 0x2 0x0 0x6 0x10 0x0 0xAA 0xBB 0x0 0x9C 0x0 0x90 0x0 0xA0 0x40 0x0 0x0 0x4 0xAA 0xBB 0xCC 0xDD 0x10 0xB7 0xD3 0x3B 0x96 0x99 0x75 0x53 0x5A... 0x7E 0xED 0x4C 0x34 0xA5 0xAC 0x13 0x3B 0x90 0x0 BUILD SUCCESSFUL (total time: 0 seconds) The first command was the select command, which successfully gave the status bytes SW1 and SW2 as0x90 0x0. The second command also was successful and the random data was returned. The first portion of each APDU reponse shows the command that was sent. Then the next byte gives the length of the response data. For the first command, no response data was returned, so this length is 0x0. The status words then follow this length byte. For the second command, however, there is some random data returned. Because of the coding of the applet method, sixteen bytes of random data should be returned. The length byte 0x10 in the response
42 34 shows that this is indeed the case. Then the sixteen bytes of random data are shown, as follows, 0xB7 0xD3 0x3B 0x96 0x99 0x75 0x53 0x5A 0x7E 0xED 0x4C 0x34 0xA5 0xAC 0x13 0x3B, followed by the status words, 0x90 0x0, which indicate that this command was executed sucessfully. 4.3 User Authentication Scheme and Implementation In this section, we will propose and implement an user authentication scheme based on the smart card, specifically, Java card. We will simulate a web server, and implement the user authentication scheme with Java card by programming a Java card applet and a Java program to send commands and receive responses from the card. The proposed user authentication scheme has two phases: the registration phase and the user authentication phase. In the registration phase, the server (the card issuing authority) uses the Java card to generate a secret value and store it. Then the Java card uses this secret value and hashes the username and password combination, which is stored in the web server s authentication database. The user s login request to the web server will trigger the user authentication phase. In the user authentication phase, once the username and password is entered, the username and the password will automatically be sent to the smart card. The smart card will use the username, the password, and the stored secret value to compute a hash value. Then the username and the computed hash value will be sent to the web server. The web server will compare the received username and the hash value with the username and hash value stored in the database. If both match, then the user is authenticated, the user will have certain access control priviledges on the web server. The detailed implementation is described as follows.
43 35 Once the Java card applet and the send commands to Java card program were implemented, methods needed to be set-up to create a new stored secret and return the user s hash. Creating a new stored secret would be done by the card issuing authority. Once this stored secret was created, it would persist throughout the use of the card. A method is also needed to perform and return the hash value for a user, so that a system can verify that a person is who they say they are. The smart card issuing authority will need to create a new login. The SendCommandsToJavaCard program will be called with three parameters: username, password, and C. This will create a new login. The username and password will be passed to the smart card, and then the username, password, and stored secret will be hashed to create a value to store in the system database, not on the smart card itself. This will be the hashed value that is compared when the user attempts to log into a system. A string (in bytes) containing the username and password will be sent to the smart card. Also in the command APDU, parameters P1 and P2 will be set with the lengths of the username and password, respectively. Then this command APDU will be sent to the Java card. The Java card will then XOR the username and password. The result will then be XOR-ed with the stored secret, and then the SHA1 hash will be computed. hashedvalue = SHA1( (username password) storedsecret )
44 Registration Phase The registration phase of the user authentication scheme is described as follows. The process is also illustrated in the diagram shown in Figure User requests to register with the server and give its username and password to the server 2. The server sends the command to the Java card to generate a new secret value and store it in Java card permanently 3. The server calls the SendCommandsToJavaCard to send the username and password to the smart card 4. Smart card performs XOR on the username and password (username password) 5. Smart card performs XOR on the previous XOR output and the storedsecret ((username password) storedsecret) 6. Smart card takes the result of the XOR operation and performs a SHA1 hash SHA1((username password) storedsecret) 7. SendCommandsToJavaCard returns the username and SHA1 hash value from the smart card to the server 8. The server stores the username and corresponding SHA1 hash value in the user authentication database 9. The server (the card issuing authority) issues a new smart card to user
45 37 Figure 4.1. Registration Phase User Authentication Phase The user authentication phase of the user authentication scheme is described as follows. The process is also illustrated in the diagram shown in Figure User sends request to server to login 2. The server then triggers the smart card 3. The SendCommandsToJavaCard program, which runs on the client, is started and prompts the user to enter the username and password 4. SendCommandsToJavaCard sends the username and password input to the smart card
46 38 5. Smart card performs XOR on the username and password (username password) 6. Smart card performs XOR on the previous XOR output and the storedsecret ((username password) storedsecret) 7. Smart card takes the result of the XOR operation and performs a SHA1 hash SHA1((username password) storedsecret) 8. Smart card returns the SHA1 hash value to the SendCommandsToJavaCard program 9. Server queries the database based on the username and pulls the stored hash value and compares to the data sent back from smart card 10. If the two hashed values match, then the user is authenticated; otherwise, the user is invalid and is not authenticated into the system In this user authentication scheme, the user s password is never transmitted across the network. The username and password are gathered on the client side using the SendCommandsToJavaCard program. Then these values are sent to the smart card. The only values that get passed across the network for verification are the username and the hashed output from the smart card. The system can then authenticate the user by comparing these two values to the username and the hash value stored in the user authentication database. The database values come from the registration phase, which are generated and stored in the user authentication database by the card issuing authority. The first step in setting up the Java Card would be to set a new stored secret that would persist throughout the life of the smart card. This step would be done by the card issuing authority. For demonstration and testing purposes a method was created to reset this stored secret value, however, in practice these methods should be kept separate from a program that creates logins and return hash values because a malicious user could run this function and reset
47 39 Figure 4.2. User Authentication Phase the stored secret so that the hash value returned is different and users would not be able to use the smart card to authenticate themselves. This method takes the args passed to the SendCommandsToJavaCard and passes the string to the Java card. The Java card uses this passed in data as a seed to generate a new random stored secret Method to create new stored secret on Java card The following Java card Applet code segment is the method to create new stored secret value on Java Card.
48 40 //generate new stored secret if(args.length == 2 && "N".equals(args[1])) byte[] SecretSeed = new byte[args[0].getbytes().length]; SecretSeed = args[0].getbytes(); //use Username to seed for the random stored secret instance.generatenewstoredsecret(secretseed); try instance.clientinterface.exchangeapdu(instance.apdu); catch (CadTransportException ex) System.out.println("Cad Transport Exception\n" + ex.getmessage().tostring()); catch (IOException ex) System.out.println("IO Exception\n" + ex.getmessage() + "\n"); System.out.println("New Stored Secret: "); //instance.printbytes(instance.apdu.getresponseapdubytes()); instance.printdataoutbytes(instance.apdu); Method to Create New Login Session The following Java card Applet code segment is the method to create a new login session while a username, password are provided and the user s smart card is present. //if last index of args is "C" means create a new login if(args.length == 3 && "C".equals(args[2])) //System.out.println("CreateNewLogin"); //command the java card to compute a hash using //its stored secret, the username, and password //args[0] contains the username ; args[1] contains the password byte[] data = new byte[args[0].getbytes().length + args[1].getbytes().length]; for(int i=0; i < data.length; i++) if(i < args[0].length()) data[i] = args[0].getbytes()[i]; else data[i] = args[1].getbytes()[i-args[0].length()];
49 41 instance.gethash(data, args[0].length(), args[1].length()); try instance.clientinterface.exchangeapdu(instance.apdu); catch (CadTransportException ex) System.out.println("Cad Transport Exception\n" + ex.getmessage().tostring()); catch (IOException ex) System.out.println("IO Exception\n" + ex.getmessage() + "\n"); //Print HASH value instance.printdataoutbytes(instance.apdu); Method to return the user s hash value The following Java card Applet code segment is the method for the Java card to return the user s hash value while a username, password are provided to the Java card and the user s smart card is stored inside the Java card. To just get the hash value for comparison, only the username and password are required. The SendCommandsToJavaCard program sends a command to the Java card to return SHA1 hash value to be sent to the server. //command the java card to compute a hash using its stored secret, the username, and password else //System.out.println("JustGetTheHash"); //command the java card to compute a hash using //its stored secret, the username, and password //args[0] contains the username ; args[1] contains the password byte[] username = new byte[usersusername.getbytes().length]; username = usersusername.getbytes(); byte[] password = new byte[userspassword.getbytes().length]; password = userspassword.getbytes(); byte[] data = new byte[usersusername.getbytes().length + userspassword.getbytes().length]; for(int i=0; i < data.length; i++) if(i < username.length) data[i] = username[i];
50 42 else data[i] = password[i-username.length]; System.out.println("Data: " + data.tostring()); System.out.println("Data2: "); instance.printbytes(data); instance.gethash(data, username.length, password.length); try instance.clientinterface.exchangeapdu(instance.apdu); catch (CadTransportException ex) System.out.println("Cad Transport Exception\n" + ex.getmessage().tostring()); catch (IOException ex) System.out.println("IO Exception\n" + ex.getmessage() + "\n"); //Print HASH value instance.printdataoutbytes(instance.apdu); These methods form the basis for user authentication. The SendCommandsToJavaCard is responsible for getting the username and password from the user. Since this program runs on the client s system, the user s password is never transmitted to the server over the network. Once the program takes in the username and password, it runs the necessary function to get the hash value from the Java card and return it. This hashed value and the user s username are passed through the network to the server. The server can then compare the username and hash value to verify that the user is who they say they are. If the checks are valid, then the user is authenticated and is granted access to the system. By computing this hash value by the Java card and sending the username and the computed hash value to the server for comparision, the authentication process requires the smart card to be present. If a malicious user manages to steal a user s username and password, they still will not be able to log into the system because they do not have the smart card which contains the stored secret value and can compute the hash value. This authentication scheme requires the user to have his or her smart card in possession in order to log into the
51 43 server. The stored secret value on the smart card is needed to calculate the hash value correctly and authenticate the user into the system. Compared with the previous user authentication schemes, our proposed authentication scheme is more secure because it implements a two-factor authentication. Even if the user s password is compromised, a user would still need the smart card to log into the system Server Side Implementation Registration Phase Server Code The server sided code was also implemented, using the C language, as part of this master thesis research project. When a registration request is received through the web application, the server side method gets the first name and last name that were entered through the web application text boxes. Then the web server calls the SendCommandsToJavaCard program which is on the client machine. A method is called which generates a new stored secret on the smart card. Then the method to get the username and the password on the client side is called. Using the new username and password entered and the new stored secret, the smart card computes the hash. The username and the hash value are returned to the web server to be stored in the authentication database. protected void CreateAccountButton_Clicked(object sender, EventArgs e) string usersfirstname = firstname.text; string userslastname = lastname.text; string usersusername = ""; string hashedvalue = ""; //generate new stored secret string commandstoredsecret = "java -jar \"C:\\Documents and Settings\\BRANDON JAMES\\My Documents\\NetBeansProjects \\SendCommandsToSmartCard\\dist\\SendCommandsToSmartCard.jar\""; commandstoredsecret = commandstoredsecret + " "; commandstoredsecret = System.DateTime.Now.ToString().Substring(0, 20) + " " + "N"; System.Diagnostics.ProcessStartInfo newsecret = new System.Diagnostics.ProcessStartInfo("cmd.exe", "/C " + commandstoredsecret);
52 44 newsecret.createnowindow = true; newsecret.useshellexecute = false; newsecret.redirectstandardoutput = true; System.Diagnostics.Process javaprocessnewsecret = System.Diagnostics.Process.Start(newSecret); javaprocessnewsecret.waitforexit(); javaprocessnewsecret.close(); //add login string command = "java -jar \"C:\\Documents and Settings\\BRANDON JAMES\\My Documents\\NetBeansProjects \\SendCommandsToSmartCard\\dist\\SendCommandsToSmartCard.jar\""; command = command + " " + "C"; System.Diagnostics.ProcessStartInfo startinfo = new System.Diagnostics.ProcessStartInfo("cmd.exe", "/C " + command); startinfo.createnowindow = true; startinfo.useshellexecute = false; startinfo.redirectstandardoutput = true; System.Diagnostics.Process javaprocess = System.Diagnostics.Process.Start(startInfo); System.IO.StreamReader outputreader = javaprocess.standardoutput; javaprocess.waitforexit(); javaprocess.close(); string returnapdu = outputreader.readtoend(); returnapdu = returnapdu.replace("\r", ""); returnapdu = returnapdu.replace("\n", ""); //returnapdu contains string formatted as follows: // username///////hashedvalue int index = returnapdu.lastindexof("///////"); usersusername = returnapdu.substring(0, index); hashedvalue = returnapdu.remove(0, usersusername.length + 7); OleDbConnection conn = new OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/Documents and Settings/BRANDON JAMES /my documents/visual studio 2010/Projects/TestAuth/TestAuth/App_Data/Users.mdb;"); conn.open(); OleDbCommand insertcommand = new OleDbCommand(); insertcommand.connection = conn; string insertquery = "INSERT INTO Users([firstName], [lastname], [username], @hashedvalue)"; insertcommand.commandtext = insertquery; insertcommand.parameters.add("@usersfirstname", OleDbType.VarChar).Value = usersfirstname; insertcommand.parameters.add("@userslastname", OleDbType.VarChar).Value = userslastname; insertcommand.parameters.add("@usersusername", OleDbType.VarChar).Value = usersusername; insertcommand.parameters.add("@hashedvalue", OleDbType.VarChar).Value = hashedvalue; insertcommand.executenonquery(); conn.close();
53 45 firstname.text = ""; lastname.text = ""; hashedvalue = ""; //clears any current authentication cookie FormsAuthentication.SignOut(); string returnurl = "~/Default.aspx"; Response.Redirect(returnURL); User Authentication Phase Server Code The server side code of the web application for the user authentication phase calls the client program SendCommandsToJavaCard. This program gets the username and password from the user and sends the values to the smart card. The smart card computes and returns the hash value using the stored secret that was generated during the registration phase. This hash value along with the username is sent from the client to the web server. Using the username and hash value from the client, the web server verifies that the data matches the values in the authentication database. protected void LoginButton_Clicked(object sender, EventArgs e) bool userisvalid = false; LoginError.Visible = false; LoginError.Text = "Login Error"; string usersusername = ""; string command = "java -jar \"C:\\Documents and Settings\\BRANDON JAMES\\My Documents\\NetBeansProjects \\SendCommandsToSmartCard\\dist\\SendCommandsToSmartCard.jar\""; System.Diagnostics.ProcessStartInfo startinfo = new System.Diagnostics.ProcessStartInfo("cmd.exe", "/C " + command); startinfo.createnowindow = true; startinfo.useshellexecute = false; startinfo.redirectstandardoutput = true; System.Diagnostics.Process javaprocess = System.Diagnostics.Process.Start(startInfo); System.IO.StreamReader outputreader = javaprocess.standardoutput; javaprocess.waitforexit(); javaprocess.close(); string returnapdu = outputreader.readtoend();
54 46 returnapdu = returnapdu.replace("\r", ""); returnapdu = returnapdu.replace("\n", ""); //return APDU contains the username and hash value formatted as follows: // username///////hashvalue int index = returnapdu.lastindexof("///////"); if (index > 0) usersusername = returnapdu.substring(0, index); returnapdu = returnapdu.remove(0, usersusername.length + 7); //Get Hashed Value from database to compare OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:/Documents and Settings/BRANDON JAMES /my documents/visual studio 2010/Projects/TestAuth/TestAuth/App_Data/Users.mdb;"); conn.open(); OleDbCommand querycommand = new OleDbCommand(); querycommand.connection = conn; string selectquery = "SELECT hashedun_pw_ss FROM Users"; querycommand.commandtext = selectquery; querycommand.parameters.add("@username", OleDbType.VarChar).Value = usersusername; OleDbDataReader result = querycommand.executereader(); string hashedvalue = ""; if (result.hasrows) while (result.hasrows) string colname = result.getname(0); while (result.read()) hashedvalue = result.getvalue(0).tostring(); result.nextresult(); else LoginError.Visible = true; conn.close(); if (returnapdu == hashedvalue) userisvalid = true;
55 47 else userisvalid = false; LoginError.Visible = true; if (returnapdu.contains("no Smart Card present.")) userisvalid = false; LoginError.Text = "Login Error. Please insert smart card."; LoginError.Visible = true; if (userisvalid) FormsAuthentication.SetAuthCookie(usersUsername, false /* createpersistentcookie */); string returnurl = "~/Default.aspx"; Response.Redirect(returnURL); Together these two methods implement the server-side functionality for the registration and user authentication phase of the proposed authentication scheme. Both of these methods execute a client side program which sends the commands to the smart card. The client-side program then processes the response from the smart card and returns the data to the web server.
56 CHAPTER 5 CONCLUSION & FUTURE WORK 5.1 Conclusion In this thesis, we have proposed and implemented an user authentication scheme based on the smart card. The smart card based user authentication scheme presented in this thesis showed that it is feasible to use a smart card to ensure that data is accessed only by authorized individuals. By combining two methods of authentication, what you have and what you know, we provide a two-factor solution which will authenticate a user to a system. The implementation of the proposed user authentication scheme proved the correctness and effectiveness of the scheme. Compared with the previous user authentication schemes, our proposed authentication scheme is more secure because it implements a two-factor authentication. Even if the user s password is compromised, a user would still need the smart card to log into the system. By implementing this scheme and writing the code for the Java card, client side, and server side, we have constructed a base that can be used in future research. 5.2 Future Work There is a weakness existing in our proposed user authentication scheme. It cannot withstand replay attack. When the adversary impersonates a legal user to login the specified server by replayingthe transmitted messages between the legal user and that server, then we say that this protocol is vulnerable to the replay attack [17]. 48
57 49 The first direction of our future work of this research project is to expand our authentication scheme to protect against replay attacks. The current scheme is susceptible to replay attacks because the username and hash value could be hacked from the web server database or intercepted during transmission from the client to the server. To protect against the replay attack, we will propose a modified user authentication schem that uses a random number generated by the web server and sent to the client for each login session. This random number will be unique to each login session. The hash value will then be re-computed, by the smart card, using this random number specific to the current session. This modified user authentication scheme will certainly prevent against the replay attack, but the computation complexity of the schem will be increased. More messages need to be exchanged between the server and the user. This modified user authentication scheme can be further improved with public key encryption. The random number used in the modified user-authentication scheme could be intercepted when sent to the client. To further enhance the security of the modified user authentication scheme, we propose to use public key encryption to protect the messages exchanged between the server and the user. The web server and the smart card all have their own pairs of public key and private key. The web server and the smart card will exchange their public keys during the registration phase. When the random message is sent to the smart card, it will be encrypted by the smart card s public key and the smart card can then decrypt the random number using its own private key, and then compute the hash. The computed hash value can then be encrypted by the web server s public key, and transmited to the web server, who will then decrypt it using its own private key. The web server can then send the username and hash value to the user authentication database to verify the user s identity. This user authentication scheme will be more secure then the modified user authentication scheme using random number. However, the computation complexity of the schem will be increased compared to the previous scheme. The second direction of our future work of this research project is to extend our re-
58 50 search to enhance the functionality and security of the computing system by coupling the smart card with another hardware security device, such as a TPM (Trusted Platform Module). In particular, the work done in [5] and [10] showed there is a lot of potential for using smart cards in various ways and coupling them with other security devices to design a more trusted computing platform. The foundation of the research presented in this thesis can be used in other ways to enhance information security by utilizing more of the smart card s features/functions. Also, combining smart card with other secure hardware components, for example, TPM (Trusted Platform Module), to further increase the security of a computing system. By coupling a smart card with a TPM and designing an authentication scheme using both of these components, our goal is to exploit the features and functions of both components to build a trusted computing system with higher level of security. Smart cards can perform cryptographic functions and other security protocols, while still providing portability. A TPM is installed on the motherboard, which adds an encryption barrier and a key hierarchy that is used to access the system. Both of these hardware devices can store keys and hashed values which can be used to ensure a system has not been altered. This coupling will make the system more secure because only when the smart card is present, the system will be able to operate normally and make changes. We can also utilize the features of the TPM to provide integrity checks on the operating system. In the future we also plan to move beyond implementing our user authentication solution in a simulation environment, and we will test our user authentication scheme using a physical smart card. By showing the user authentication scheme is realizable on a physical card, we will further prove that our authentication scheme with a smart card is feasible for use in real-world systems.
59 REFERENCES [1] Patrik Bichsel, Jan Camenisch, Thomas Groß, and Victor Shoup. Anonymous credentials on a standard java card. In ACM Conference on Computer and Communications Security, pages , [2] Matt Bishop. Computer Security Art and Science. Addison-Wesley, [3] Zhiqun Chen. How to write a java card applet: A developer s guide. online resource, accessed August jw-07-javacard.html. [4] creative commons. Smart card world. online resource, accessed June etopiamedia.net/smartcardworld/pages/smartcardworld html. [5] Paul England and Talha Tariq. Towards a programmable tpm. In TRUST, pages 1 13, [6] Scott B. Guthery. Java card: Internet computing on a smart card (industry report). IEEE Internet Computing, 1(1):57 59, [7] Uwe Hansmann, Martin S. Nicklous, Thomas Schäck, Achim Schneider, and Frank Seliger. Smart Card Application Development Using Java. Springer, 2nd edition, [8] A. Hiltgen, T. Kramp, and T. Weigold. Secure internet banking authentication. Security Privacy, IEEE, 4(2):21 29, march-april
60 52 [9] Food Marketing Institute. Reality bytes: What food retailers should know about smart cards in the U.S. online resource. electronic-payment-systems/smartcard. [10] Andreas Klenk, Holger Kinkelin, Christoph Eunicke, and Georg Carle. Preventing identity theft with electronic identity cards and the trusted platform module. In EUROSEC, pages 44 51, [11] Sun Microsystems. Java card applet developers guide, July [12] Sun Microsystems. Class apdu. online resource, accessed July nl/~woj/javacardapi/javacard/framework/apdu.html. [13] Smart Card News. Smart card tutorial - introduction to smart cards. online resource, September [14] CardWerk Smarter Card Solutions. ISO-7816 standards. online resource, July http: // [15] Smart Card Supply. ISO smart card standards overview. online resource, [16] Talha Tariq. Extending secure execution environments beyond the tpm (an architecture for tpm & smartcard co-operative model). Technical Report RHUL-MA , Department of Mathematics, Royal Holloway, University of London, Feb [17] Sung-Ming Yen and Kuo-Hong Liao. Shared authentication token secure against replay and weak key attacks. Inf. Process. Lett., 62(2):77 80, April [18] Feng Zhu. Smart card based solutions for secure internet banking with a primitive reader or mobile phone, January 2009.
Java Applet and Terminal Application for Financial transactions
Java Applet and Terminal Application for Financial transactions Security for Java and E-commerce Environment Behrooz Aghakhanian [email protected] Jalil Shokouh [email protected] May 2011 Introduction In this assignment
Measurement and Analysis Introduction of ISO7816 (Smart Card)
Measurement and Analysis Introduction of ISO7816 (Smart Card) ISO 7816 is an international standard related to electronic identification cards with contacts, especially smart cards, managed jointly by
JavaCard. Java Card - old vs new
JavaCard 1 Old Smart Cards: One program (applet) Written in machine-code, specific to chip Burned into ROM Java Card - old vs new old vs new smartcards New Smart Cards: Applet written in high-level language
Smart Card Application Development Using the Java Card Technology
Smart Card Application Development Using the Java Card Technology Milan Fort RWTH Aachen Abstract Through their combination of portability and security, smart cards are playing an increasingly important
RVS Seminar Deployment and Performance Analysis of JavaCards in a Heterogenous Environment. Carolin Latze University of Berne
RVS Seminar Deployment and Performance Analysis of JavaCards in a Heterogenous Environment Carolin Latze University of Berne Table of contents > Introduction Smartcards > Deployment Overview Linux Windows
Smart Cards a(s) Safety Critical Systems
Smart Cards a(s) Safety Critical Systems Gemplus Labs Pierre.Paradinas [email protected] Agenda Smart Card Technologies Java Card TM Smart Card a specific domain Card Life cycle Our Technical and Business
Java Card. Smartcards. Demos. . p.1/30
. p.1/30 Java Card Smartcards Java Card Demos Smart Cards. p.2/30 . p.3/30 Smartcards Credit-card size piece of plastic with embedded chip, for storing & processing data Standard applications bank cards
jcardsim Java Card is simple!
JavaOne Moscow, 2013 jcardsim Java Card is simple! Mikhail Dudarev, CTO of jcardsim.org Brief history of Java Card Basics standards How is that works? Developer Tools Writing our first real life Java Card
Smart Card. Smart Card applications
Smart Card Chip Plastic card A very secure way of storing a small amount of sensitive data 1 Smart Card applications Retail Sale of goods using Electronic Purses, Credit / Debit Vending machines Loyalty
Smart Card Technology Capabilities
Smart Card Technology Capabilities Won J. Jun Giesecke & Devrient (G&D) July 8, 2003 Smart Card Technology Capabilities 1 Table of Contents Smart Card Basics Current Technology Requirements and Standards
C Compiler Targeting the Java Virtual Machine
C Compiler Targeting the Java Virtual Machine Jack Pien Senior Honors Thesis (Advisor: Javed A. Aslam) Dartmouth College Computer Science Technical Report PCS-TR98-334 May 30, 1998 Abstract One of the
Smart Card- An Alternative to Password Authentication By Ahmad Ismadi Yazid B. Sukaimi
Smart Card- An Alternative to Password Authentication By Ahmad Ismadi Yazid B. Sukaimi Purpose This paper is intended to describe the benefits of smart card implementation and it combination with Public
MUSCLE Cryptographic Card Edge Definition for Java 1 Enabled Smartcards
MUSCLE Cryptographic Card Edge Definition for Java 1 Enabled Smartcards David Corcoran Tommaso Cucinotta This document is provided on an as-is basis. Neither the authors nor the MUSCLE project are responsible
CS 111 Classes I 1. Software Organization View to this point:
CS 111 Classes I 1 Software Organization View to this point: Data Objects and primitive types Primitive types operators (+, /,,*, %). int, float, double, char, boolean Memory location holds the data Objects
Java Card TM Open Platform for Smart Cards
Java Card TM Open Platform for Smart Cards Wolfgang Effing Giesecke & Devrient GmbH C:\Presentations - JavaCard_OpenPlatform.ppt - ef - 29.04.04 - page 1 What happened in the past? Every company created
Open Mobile API Test Specification for Transport API
Open Mobile Test Specification for Transport V1 Copyright 2014 SIMalliance ltd. The information contained in this document may be used, disclosed and reproduced without the prior written authorization
Application-Specific Biometric Templates
Application-Specific Biometric s Michael Braithwaite, Ulf Cahn von Seelen, James Cambier, John Daugman, Randy Glass, Russ Moore, Ian Scott, Iridian Technologies Inc. Introduction Biometric technologies
Security & Chip Card ICs SLE 44R35S / Mifare
Security & Chip Card ICs SLE 44R35S / Mifare Intelligent 1 Kbyte EEPROM with Interface for Contactless Transmission, Security Logic and Anticollision according to the MIFARE -System Short Product Info
SIM CARD PROTOCOLS. This paper attempts in broad strokes to outline the construction of these protocols and how they are used.
SIM CARD PROTOCOLS Though rarely thought about by most users their mobile phone contains a remarkable computing device that enables them to go about their business of making calls, text messaging or playing
MDG. MULTOS Developer's Guide. MAO-DOC-TEC-005 v1.40. 2015 MAOSCO Limited. MULTOS is a registered trademark of MULTOS Limited.
MDG MULTOS Developer's Guide MAO-DOC-TEC-005 v1.40 2015 MAOSCO Limited. MULTOS is a registered trademark of MULTOS Limited. MULTOS Developer s Guide Copyright Copyright 1999 2015 MAOSCO Limited. This document
Secure Authentication and Session. State Management for Web Services
Lehman 0 Secure Authentication and Session State Management for Web Services Clay Lehman CSC 499: Honors Thesis Supervised by: Dr. R. Michael Young Lehman 1 1. Introduction Web services are a relatively
ARM Thumb Microcontrollers. Application Note. Software ISO 7816 I/O Line Implementation. Features. Introduction
Software ISO 7816 I/O Line Implementation Features ISO 7816-3 compliant (direct convention) Byte reception and transmission with parity check Retransmission on error detection Automatic reception at the
AN2598 Application note
AN2598 Application note Smartcard interface with the STM32F101xx and STM32F103xx Introduction This document describes a firmware and hardware Smartcard interface solution based on the STM32F10xxx USART
PUF Physical Unclonable Functions
Physical Unclonable Functions Protecting next-generation Smart Card ICs with SRAM-based s The use of Smart Card ICs has become more widespread, having expanded from historical banking and telecommunication
Smart Card Application Standard Draft
Smart Card Application Standard Draft Contents 1 SCOPE... 6 1.1 DEFINITIONS / DOCUMENT CONVENTIONS... 6 2 KEY DATA ELEMENTS AND CONCEPTS... 7 2.1 STATIC CARD INFORMATION... 7 2.1.1 Card ID (CdID)... 7
VIRTUAL LABORATORY: MULTI-STYLE CODE EDITOR
VIRTUAL LABORATORY: MULTI-STYLE CODE EDITOR Andrey V.Lyamin, State University of IT, Mechanics and Optics St. Petersburg, Russia Oleg E.Vashenkov, State University of IT, Mechanics and Optics, St.Petersburg,
Exercise 1: Set up the Environment
RFID Lab Gildas Avoine, 2014 Contact: [email protected] Objective: Learn how much it is easy to read contactless tags, possibly simulate/clone. Requirement: Hardware: Reader SCL3711 or ACR122, Reader
Communicating with a Barco projector over network. Technical note
Communicating with a Barco projector over network Technical note MED20080612/00 12/06/2008 Barco nv Media & Entertainment Division Noordlaan 5, B-8520 Kuurne Phone: +32 56.36.89.70 Fax: +32 56.36.883.86
CHAPTER 5 SMART CARD TECHNOLOGY
56 CHAPTER 5 SMART CARD TECHNOLOGY 5.1 INTRODUCTION Today's society is often illustrated as an information society. Technological developments, particularly in the areas of computers and telecommunications
Java Card 2.1.1 Application Programming Interface
Java Card 211 Application Programming Interface Sun Microsystems, Inc 901 San Antonio Road Palo Alto, CA 94303 USA 650 960-1300 Revision 10, May 18, 2000 Copyright 2000 Sun Microsystems, Inc 901 San Antonio
[MS-RDPESC]: Remote Desktop Protocol: Smart Card Virtual Channel Extension
[MS-RDPESC]: Remote Desktop Protocol: Smart Card Virtual Channel Extension Intellectual Property Rights Notice for Open Specifications Documentation Technical Documentation. Microsoft publishes Open Specifications
Java Application Developer Certificate Program Competencies
Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle
AN2284 APPLICATION NOTE
APPLICATION NOTE Smart Card Interface with the STR71xx Introduction This document describes a software and hardware smart card interface for the STR71x Smart Card peripheral. The main purpose of this software
CHAPTER 4 DEPLOYMENT OF ESGC-PKC IN NON-COMMERCIAL E-COMMERCE APPLICATIONS
70 CHAPTER 4 DEPLOYMENT OF ESGC-PKC IN NON-COMMERCIAL E-COMMERCE APPLICATIONS 4.1 INTRODUCTION In this research work, a new enhanced SGC-PKC has been proposed for improving the electronic commerce and
Developing secure Java Card applications
Developing secure Java Card applications Jan Vossaert Jorn Lapon Vincent Naessens June 9, 2010 1 Introduction This tutorial covers the basic steps towards secure smart card application development with
The Feasibility and Application of using a Zero-knowledge Protocol Authentication Systems
The Feasibility and Application of using a Zero-knowledge Protocol Authentication Systems Becky Cutler [email protected] Mentor: Professor Chris Gregg Abstract Modern day authentication systems
WHITE PAPER. Smart Card Authentication for J2EE Applications Using Vintela SSO for Java (VSJ)
WHITE PAPER Smart Card Authentication for J2EE Applications Using Vintela SSO for Java (VSJ) SEPTEMBER 2004 Overview Password-based authentication is weak and smart cards offer a way to address this weakness,
Chapter 7D The Java Virtual Machine
This sub chapter discusses another architecture, that of the JVM (Java Virtual Machine). In general, a VM (Virtual Machine) is a hypothetical machine (implemented in either hardware or software) that directly
Summer Project Report. Fingerprint Based Attendance System
Summer Project Report On Fingerprint Based Attendance System Advisor Prof Amey Karkare Submitted by- Rajat Chaudhary Priyaranjan Deepak Kumar Durgesh Deep (Group 02) Introduction The most common means
Paillier Threshold Encryption Toolbox
Paillier Threshold Encryption Toolbox October 23, 2010 1 Introduction Following a desire for secure (encrypted) multiparty computation, the University of Texas at Dallas Data Security and Privacy Lab created
Smart Cards and their Operating Systems
Smart Cards and their Operating Systems Heng Guo HUT, Telecommunications Software and Multimedia Laboratory [email protected] ABSTRACT This paper presents smart cards and their operating systems. First smart
Smart Card Evolution
Smart Card Evolution Fernando Ferreira Departamento de Informática, Universidade do Minho 4710-057 Braga, Portugal [email protected] Abstract. This comunnication describes the state of
Securing Card-Not-Present Transactions through EMV Authentication. Matthew Carter and Brienne Douglas December 18, 2015
Securing Card-Not-Present Transactions through EMV Authentication Matthew Carter and Brienne Douglas December 18, 2015 Outline Problem Card-Not-Present (CNP) vs. PayPal EMV Technology EMV CNP Experiment
bbc Developing Service Providers Adobe Flash Media Rights Management Server November 2008 Version 1.5
bbc Developing Service Providers Adobe Flash Media Rights Management Server November 2008 Version 1.5 2008 Adobe Systems Incorporated. All rights reserved. Adobe Flash Media Rights Management Server 1.5
Frequently Asked Questions (FAQs) SIPRNet Hardware Token
Air Force Public Key Infrastructure System Program Office (ESC/HNCDP) Phone: 210-925-2562 / DSN: 945-2562 Web: https://afpki.lackland.af.mil Frequently Asked Questions (FAQs) SIPRNet Hardware Token Updated:
Chapter 10. Cloud Security Mechanisms
Chapter 10. Cloud Security Mechanisms 10.1 Encryption 10.2 Hashing 10.3 Digital Signature 10.4 Public Key Infrastructure (PKI) 10.5 Identity and Access Management (IAM) 10.6 Single Sign-On (SSO) 10.7 Cloud-Based
User s Guide [Security Operations]
User s Guide [Security Operations] 010. 6 Ver. 1.01 Contents 1 Security 1.1 Introduction... 1- Compliance with the ISO15408 Standard... 1- Operating Precautions... 1- INSTALLATION CHECKLIST... 1-3 1. Security
APPLICATION PROGRAMMING INTERFACE
APPLICATION PROGRAMMING INTERFACE Advanced Card Systems Ltd. Website: www.acs.com.hk Email: [email protected] Table of Contents 1.0. Introduction... 4 2.0.... 5 2.1. Overview... 5 2.2. Communication Speed...
An evaluation of the Java Card environment
An evaluation of the Java Card environment Christophe Rippert, Daniel Hagimont Contact: Christophe Rippert, Sirac Laboratory INRIA Rhône-Alpes, 655 avenue de l Europe Montbonnot 38334 St Ismier Cedex,
Network FAX Driver. Operation Guide
Network FAX Driver Operation Guide About this Operation Guide This Operation Guide explains the settings for the Network FAX driver as well as the procedures that are required in order to use the Network
Creating a Simple, Multithreaded Chat System with Java
Creating a Simple, Multithreaded Chat System with Java Introduction by George Crawford III In this edition of Objective Viewpoint, you will learn how to develop a simple chat system. The program will demonstrate
RFID MODULE Mifare Reader / Writer SL030 User Manual Version 2.6 Nov 2012 StrongLink
RFID MODULE Mifare Reader / Writer User Manual Version 2.6 Nov 2012 StrongLink CONTENT 1. MAIN FEATURES... 3 2. PINNING INFORMATION... 4 3. DEVICE OPERATION... 5 3-1. Clock and Data Transitions:... 5 3-2.
Using Altera MAX Series as Microcontroller I/O Expanders
2014.09.22 Using Altera MAX Series as Microcontroller I/O Expanders AN-265 Subscribe Many microcontroller and microprocessor chips limit the available I/O ports and pins to conserve pin counts and reduce
The Programming Interface
: In-System Programming Features Program any AVR MCU In-System Reprogram both data Flash and parameter EEPROM memories Eliminate sockets Simple -wire SPI programming interface Introduction In-System programming
An Overview of Java. overview-1
An Overview of Java overview-1 Contents What is Java Major Java features Java virtual machine Java programming language Java class libraries (API) GUI Support in Java Networking and Threads in Java overview-2
Single Sign-On Secure Authentication Password Mechanism
Single Sign-On Secure Authentication Password Mechanism Deepali M. Devkate, N.D.Kale ME Student, Department of CE, PVPIT, Bavdhan, SavitribaiPhule University Pune, Maharashtra,India. Assistant Professor,
JCB Terminal Requirements
Version 1.0 April, 2008 2008 JCB International Co., Ltd. All rights reserved. All rights regarding this documentation are reserved by JCB Co., Ltd. ( JCB ). This documentation contains confidential and
RF-Enabled Applications and Technology: Comparing and Contrasting RFID and RF-Enabled Smart Cards
RF-Enabled Applications and Technology: Comparing and Contrasting RFID and RF-Enabled Smart Cards January 2007 Developed by: Smart Card Alliance Identity Council RF-Enabled Applications and Technology:
Salesforce1 Mobile Security Guide
Salesforce1 Mobile Security Guide Version 1, 1 @salesforcedocs Last updated: December 8, 2015 Copyright 2000 2015 salesforce.com, inc. All rights reserved. Salesforce is a registered trademark of salesforce.com,
M95 Dual SIM Application Notes
M95 Dual SIM Application Notes GSM/GPRS Module Series Rev. 3.0 Date: 2013-01-29 www.quectel.com Our aim is to provide customers with timely and comprehensive service. For any assistance, please contact
Information Security Basic Concepts
Information Security Basic Concepts 1 What is security in general Security is about protecting assets from damage or harm Focuses on all types of assets Example: your body, possessions, the environment,
Contents. Identity Assurance (Scott Rea Dartmouth College) IdM Workshop, Brisbane Australia, August 19, 2008
Identity Assurance (Scott Rea Dartmouth College) IdM Workshop, Brisbane Australia, August 19, 2008 Contents Authentication and Identity Assurance The Identity Assurance continuum Plain Password Authentication
Dolphin In-Circuit programming Updating Firmware in the field
Dolphin In-Circuit programming Updating Firmware in the field 1 Introduction In systems e.g. gateways, where an external microcontroller is connected to a Dolphin based product like a TCM300 it might be
MIFARE CONTACTLESS CARD TECHNOLOLGY AN HID WHITE PAPER
MIFARE CONTACTLESS CARD TECHNOLOLGY AN HID WHITE PAPER GENERAL The MIFARE contactless smart card and MIFARE card reader/writer were developed to handle payment transactions for public transportation systems.
Dashlane Security Whitepaper
Dashlane Security Whitepaper November 2014 Protection of User Data in Dashlane Protection of User Data in Dashlane relies on 3 separate secrets: The User Master Password Never stored locally nor remotely.
Smart Card HOWTO. Tolga KILIÇLI. [email protected]. Copyright 2001 by Tolga KILIÇLI
Smart Card HOWTO Tolga KILIÇLI [email protected] Copyright 2001 by Tolga KILIÇLI Revision History Revision 1.0.4 2001 09 19 Revised by: tk This is the first release of Smart Card HOWTO. This document
Chapter 15 User Authentication
Chapter 15 User Authentication 2015. 04. 06 Jae Woong Joo SeoulTech ([email protected]) Table of Contents 15.1 Remote User-Authentication Principles 15.2 Remote User-Authentication Using Symmetric
AP Computer Science Java Subset
APPENDIX A AP Computer Science Java Subset The AP Java subset is intended to outline the features of Java that may appear on the AP Computer Science A Exam. The AP Java subset is NOT intended as an overall
RMI Client Application Programming Interface
RMI Client Application Programming Interface Java Card 2.2 Java 2 Platform, Micro Edition Sun Microsystems, Inc. 901 San Antonio Road Palo Alto, CA 94303 U.S.A. 650-960-1300 June, 2002 Copyright 2002 Sun
ETSI TR 102 071 V1.2.1 (2002-10)
TR 102 071 V1.2.1 (2002-10) Technical Report Mobile Commerce (M-COMM); Requirements for Payment Methods for Mobile Commerce 2 TR 102 071 V1.2.1 (2002-10) Reference RTR/M-COMM-007 Keywords commerce, mobile,
Chapter 1: Introduction
Chapter 1 Introduction 1 Chapter 1: Introduction 1.1 Inspiration Cloud Computing Inspired by the cloud computing characteristics like pay per use, rapid elasticity, scalable, on demand self service, secure
HP Service Manager. Software Version: 9.40 For the supported Windows and Linux operating systems. Application Setup help topics for printing
HP Service Manager Software Version: 9.40 For the supported Windows and Linux operating systems Application Setup help topics for printing Document Release Date: December 2014 Software Release Date: December
Government Smart Card Interoperability Specification
Interagency Report 6887-2003 Edition Government Smart Card Interoperability Specification Version 2.1 Teresa Schwarzhoff Jim Dray John Wack Eric Dalci Alan Goldfine Michaela Iorga July 16, 2003 NIST Interagency
Lesson-3 CASE STUDY OF AN EMBEDDED SYSTEM FOR SMART CARD
Design Examples and Case Studies of Program Modeling and Programming with RTOS-2: Lesson-3 CASE STUDY OF AN EMBEDDED SYSTEM FOR SMART CARD 1 1. Smart Card System Requirements 2 Purpose Enabling authentication
Java Programming Fundamentals
Lecture 1 Part I Java Programming Fundamentals Topics in Quantitative Finance: Numerical Solutions of Partial Differential Equations Instructor: Iraj Kani Introduction to Java We start by making a few
Memory Systems. Static Random Access Memory (SRAM) Cell
Memory Systems This chapter begins the discussion of memory systems from the implementation of a single bit. The architecture of memory chips is then constructed using arrays of bit implementations coupled
Technical Notes TN 1 - ETG 3000. FactoryCast Gateway TSX ETG 3021 / 3022 modules. How to Setup a GPRS Connection?
FactoryCast Gateway TSX ETG 3021 / 3022 modules How to Setup a GPRS Connection? 1 2 Table of Contents 1- GPRS Overview... 4 Introduction... 4 GPRS overview... 4 GPRS communications... 4 GPRS connections...
Contactless Smart Cards vs. EPC Gen 2 RFID Tags: Frequently Asked Questions. July, 2006. Developed by: Smart Card Alliance Identity Council
Contactless Smart Cards vs. EPC Gen 2 RFID Tags: Frequently Asked Questions July, 2006 Developed by: Smart Card Alliance Identity Council Contactless Smart Cards vs. EPC Gen 2 RFID Tags: Frequently Asked
Intel Retail Client Manager Audience Analytics
Intel Retail Client Manager Audience Analytics By using this document, in addition to any agreements you have with Intel, you accept the terms set forth below. You may not use or facilitate the use of
Evaluating Elliptic Curve Cryptography for Use on Java Card
Evaluating Elliptic Curve Cryptography for Use on Java Card Nadejda Pachtchenko Master o f Science (M.Sc) Letterkenny Institute o f Technology Dr. Mark Leeney Submitted to the Higher Education and Training
365 Cloud Storage. Security Brief
365 Cloud Storage Security Brief Overview Surveys reveal time and again that security and data protection concerns are the top barriers to Cloud adoption. At, we take these concerns seriously and have
Secure Data Exchange Solution
Secure Data Exchange Solution I. CONTENTS I. CONTENTS... 1 II. INTRODUCTION... 2 OVERVIEW... 2 COPYRIGHTS AND TRADEMARKS... 2 III. SECURE DOCUMENT EXCHANGE SOLUTIONS... 3 INTRODUCTION... 3 Certificates
ADVANCED PROCESSOR ARCHITECTURES AND MEMORY ORGANISATION Lesson-17: Memory organisation, and types of memory
ADVANCED PROCESSOR ARCHITECTURES AND MEMORY ORGANISATION Lesson-17: Memory organisation, and types of memory 1 1. Memory Organisation 2 Random access model A memory-, a data byte, or a word, or a double
2 System Requirements and Authentication
2 System Requirements and Authentication 2.1 System Requirements Getting started in BOCNET (Corp.) is quick and easy. We strongly recommend that the operating computers of BOCNET (Corp.) users should satisfy
CSC 551: Web Programming. Spring 2004
CSC 551: Web Programming Spring 2004 Java Overview Design goals & features platform independence, portable, secure, simple, object-oriented, Programming models applications vs. applets vs. servlets intro
User s Guide. Security Operations. 2013. 5 Ver. 1.02
User s Guide Security Operations 013. 5 Ver. 1.0 Contents 1 Security 1.1 Introduction... 1- Compliance with the ISO15408 Standard... 1- Operating Precautions... 1- INSTALLATION CHECKLIST... 1-3 1. Security
OPENID AUTHENTICATION SECURITY
OPENID AUTHENTICATION SECURITY Erik Lagercrantz and Patrik Sternudd Uppsala, May 17 2009 1 ABSTRACT This documents gives an introduction to OpenID, which is a system for centralised online authentication.
OpenCard Framework 1.2 Programmer s Guide
OpenCard Framework 1.2 Programmer s Guide BOEB-OCFP-00 OpenCard Framework 1.2 Programmer s Guide BOEB-OCFP-00 OpenCard Framework 1.2 Programmer s Guide Fourth Edition December, 1999 Copyright OPENCARD
CIS 6930 Emerging Topics in Network Security. Topic 2. Network Security Primitives
CIS 6930 Emerging Topics in Network Security Topic 2. Network Security Primitives 1 Outline Absolute basics Encryption/Decryption; Digital signatures; D-H key exchange; Hash functions; Application of hash
RFID MODULE Mifare Reader / Writer SL032 User Manual Version 1.5 Nov 2012 StrongLink
RFID MODULE Mifare Reader / Writer User Manual Version 1.5 Nov 2012 StrongLink CONTENT 1. MAIN FEATURES... 3 2. PINNING INFORMATION... 4 3. BAUD RATE SETTING... 5 4. COMMUNICATION PROTOCOL... 5 4-1. Communication
Musina Local Municipality. Information and Communication Technology User Account Management Policy -Draft-
Musina Local Municipality Information and Communication Technology User Account Management Policy -Draft- Version Control Version Date Author(s) Details V1.0 June2013 Perry Eccleston Draft Policy Page
Chip Card & Security ICs Mifare NRG SLE 66R35
Chip Card & Security ICs Mifare NRG Intelligent 1 Kbyte Memory Chip with Interface for Contactless Transmission according to the Mifare -System Short Product Information April 2007 Short Product Information
mcard CPK Supported Solutions
mcard CPK Supported Solutions Century Longmai White Paper All rights reserved Contents 1. MTOKEN CPK CARD INTRODUCTION... 2 PRODUCT INTRODUCTION... 2 Product appearance... 3 Hardware parameters... 4 2.
ETSI TS 102 176-2 V1.2.1 (2005-07)
TS 102 176-2 V1.2.1 (2005-07) Technical Specification Electronic Signatures and Infrastructures (ESI); Algorithms and Parameters for Secure Electronic Signatures; Part 2: Secure channel protocols and algorithms
ICT USER ACCOUNT MANAGEMENT POLICY
ICT USER ACCOUNT MANAGEMENT POLICY Version Control Version Date Author(s) Details 1.1 23/03/2015 Yaw New Policy ICT User Account Management Policy 2 Contents 1. Preamble... 4 2. Terms and definitions...
RFID MODULE Mifare Reader / Writer SL025B User Manual Version 1.4 Nov 2012 StrongLink
RFID MODULE Mifare Reader / Writer User Manual Version 1.4 Nov 2012 StrongLink CONTENT 1. MAIN FEATURES... 3 2. PINNING INFORMATION... 4 3. BAUD RATE SETTING... 5 4. COMMUNICATION PROTOCOL... 5 4-1. COMMUNICATION
Netop Remote Control Security Server
A d m i n i s t r a t i o n Netop Remote Control Security Server Product Whitepaper ABSTRACT Security is an important factor when choosing a remote support solution for any enterprise. Gone are the days
