527 lines
30 KiB
Markdown
527 lines
30 KiB
Markdown
# PIN Cracking - UCAM-CL-TR-560
|
||
|
||
|
||
---
|
||
|
||
Technical Report
|
||
UCAM-CL-TR-560
|
||
ISSN 1476-2986
|
||
Number 560
|
||
Computer Laboratory
|
||
Decimalisation table attacks for PIN
|
||
cracking
|
||
Mike Bond, Piotr Zielin·ski
|
||
February 2003
|
||
15 JJ Thomson Avenue
|
||
Cambridge CB3 0FD
|
||
United Kingdom
|
||
phone +44 1223 763500
|
||
http://www.cl.cam.ac.uk/
|
||
|
||
c 2003 Mike Bond, Piotr Zielin·ski
|
||
(cid:13)
|
||
Technical reports published by the University of Cambridge
|
||
Computer Laboratory are freely available via the Internet:
|
||
http://www.cl.cam.ac.uk/TechReports/
|
||
Series editor: Markus Kuhn
|
||
ISSN 1476-2986
|
||
|
||
Decimalisation table attacks for PIN cracking
|
||
Mike Bond, Piotr Zielin(cid:19)ski
|
||
Abstract
|
||
We present an attack on hardware security modules used by retail banks for the
|
||
secure storage and veri(cid:12)cation of customer PINs in ATM (cash machine) infrastruc-
|
||
tures. By using adaptive decimalisation tables and guesses, the maximum amount
|
||
of information is learnt about the true PIN upon each guess. It takes an average of
|
||
15 guesses to determine a four digit PIN using this technique, instead of the 5000
|
||
guesses intended. In a single 30 minute lunch-break, an attacker can thus discover
|
||
approximately 7000 PINs rather than 24 with the brute force method. With a $300
|
||
withdrawal limitpercard, thepotentialbountyisraisedfrom$7200to$2.1million
|
||
and a single motivated attacker could withdraw $30{50 thousand of this each day.
|
||
This attack thus presents a serious threat to bank security.
|
||
1 Introduction
|
||
Automatic Teller Machines (ATMs) are used by millions of customers every day to make
|
||
cash withdrawals from their accounts. However, the wide deployment and sometimes
|
||
secludedlocationsofATMsmakethemidealtoolsforcriminalstoturntraceableelectronic
|
||
money into clean cash.
|
||
The customer PIN is the primary security measure against fraud; forgery of the mag-
|
||
netic stripe on cards is trivial in comparison to PIN acquisition. A street criminal can
|
||
easily steal a cash card, but unless he observes the customer enter the PIN at an ATM,
|
||
he can only have three guesses to match against a possible 10,000 PINs and would rarely
|
||
strike it lucky. Even when successful, his theft still cannot exceed the daily withdrawal
|
||
limit of around $300 . However, bank programmers have access to the computer systems
|
||
tasked with the secure storage of PINs, which normally consist of a mainframe connected
|
||
to a \Hardware Security Module" (HSM) which is tamper-resistant and has a restricted
|
||
API such that it will only respond to with a YES/NO answer to a customer’s guess.
|
||
A crude method of attack is for a corrupt bank programmer to write a program that
|
||
tries all PINs for a particular account, and with average luck this would require about
|
||
5000 transactions to discover each PIN. A typical HSM can check maybe 60 trial PINs
|
||
per second in addition to its normal load, thus a corrupt employee executing the program
|
||
during a 30 minute lunch break could only make o(cid:11) with about 25 PINs.
|
||
However, HSMs implementing several common PIN generation methods have a (cid:13)aw.
|
||
The (cid:12)rst ATMs were IBM 3624s, introduced widely in the US in around 1980, and most
|
||
PIN generation methods are based upon their approach. They calculate the customer’s
|
||
original PIN by encrypting the account number printed on the front of the customer’s
|
||
card with a secret DES key called a \PIN generation key". The resulting ciphertext
|
||
3
|
||
|
||
is converted into hexadecimal, and the (cid:12)rst four digits taken. Each digit has a range of
|
||
‘0’-‘F’.InordertoconvertthisvalueintoaPINwhichcanbetypedonadecimalkeypad,
|
||
a \decimalisation table" is used, which is a many-to-one mapping between hexadecimal
|
||
digits and numeric digits. The left decimalisation table in Figure 1 is typical.
|
||
0123456789ABCDEF 0123456789ABCDEF
|
||
0123456789012345 0000000100000000
|
||
Figure 1: Normal and attack decimalisation tables
|
||
This table is not considered a sensitive input by many HSMs, so an arbitrary table
|
||
can be provided along with the account number and a trial PIN. But by manipulating
|
||
the contents of the table it becomes possible to learn much more about the value of the
|
||
PIN than simply excluding a single combination. For example, if the right hand table is
|
||
used, a match with a trial pin of 0000 will con(cid:12)rm that the PIN does not contain the
|
||
number 7, thus eliminating over 10% of the possible combinations. We (cid:12)rst present a
|
||
simple scheme that can derive most PINs in around 24 guesses, and then an adaptive
|
||
scheme which maximises the amount of information learned from each guess, and takes
|
||
an average of 15 guesses. Finally, a third scheme is presented which demonstrates that
|
||
the attack is still viable even when the attacker cannot control the guess against which
|
||
the PIN is matched.
|
||
Section 2 of the paper sets the attack in the context of a retail banking environment,
|
||
and explains why it may not be spotted by typical security measures. Section 3 de-
|
||
scribes PIN generation and veri(cid:12)cation methods, and section 4 describes the algorithms
|
||
we have designed in detail. We present our results from genuine trials in section 5, discuss
|
||
preventative measures in section 6, and draw our conclusions in section 7.
|
||
2 Banking Security
|
||
Banks have traditionally led the way in (cid:12)ghting fraud from both insiders and outsiders.
|
||
They have developed protection methods against insider fraud including double-entry
|
||
book-keeping, functional separation, and compulsory holiday periods for sta(cid:11), and they
|
||
recognise the need for regular security audits. These methods successfully reduce fraud
|
||
to an acceptable level for banks, and in conjunction with an appropriate legal framework
|
||
for liability, they can also protect customers against the consequences of fraud.
|
||
However, the increasing complexity of bank computer systems has not been accom-
|
||
panied by su(cid:14)cient development in understanding of fraud prevention methods. The
|
||
introduction of HSMs to protect customer PINs was a step in the right direction, but
|
||
even in 2002 these devices have not been universally adopted, and those that are used
|
||
have been shown time and time again not to be impervious to attack [1, 2, 5]. Typical
|
||
banking practice seeks only to reduce fraud to an acceptable level, but this translates
|
||
poorly into security requirements; it is impossible to accurately assess the security expo-
|
||
sure of a given (cid:13)aw, which could be an isolated incident or the tip of a huge iceberg. This
|
||
sort of risk management con(cid:13)icts directly with modern security design practice where ro-
|
||
bustness is crucial. There are useful analogues in the design of cryptographic algorithms.
|
||
Designers who make \just-strong-enough" algorithms and trade robustness for speed or
|
||
4
|
||
|
||
export approval play a dangerous game. The cracking of the GSM mobile phone cipher
|
||
A5 is but one example [3].
|
||
And as \just-strong-enough" cryptographic algorithms continue to be used, the risk
|
||
of fraud from brute force PIN guessing is still considered acceptable, as it should take
|
||
at least 10 minutes to guess a single PIN at the maximum transaction rate of typical
|
||
modules deployed in the 80s. Customers are expected to notice the phantom withdrawals
|
||
and report them before the attacker could capture enough PINs to generate a signi(cid:12)cant
|
||
liability for the banks. Even with the latest HSMs that support a transaction rate ten
|
||
times higher, the sums of money an attacker could steal are small from the perspective
|
||
of a bank.
|
||
But now that the PIN decimalisation table has been identi(cid:12)ed as an security relevant
|
||
data item, and the attacks described in this paper show how to exploit uncontrolled access
|
||
to it, brute force guessing is over two orders of magnitude faster. Enough PINs to unlock
|
||
access to over $2 million can be stolen in one lunch break!
|
||
A more sinister threat is the perpetration of a smaller theft, where the necessary
|
||
transactions are well camou(cid:13)aged within the banks audit trails. PIN veri(cid:12)cations are
|
||
not necessarily centrally audited at all, and if we assume that they are, the 15 or so
|
||
transactions required will be hard for an auditor to spot amongst a stream of millions.
|
||
Intrusion detection systems do not fare much better { suppose a bank has an extremely
|
||
strict audit system that tracks the number of failed guesses for each account, raising
|
||
an alarm if there are three failures in a row. The attacker can discover a PIN without
|
||
raising the alarm by inserting the attack transactions just before genuine transactions
|
||
from the customer which will reset the count. No matter what the policies of the intrusion
|
||
detection system it is impossible to keep them secret, thus a competent programmer could
|
||
evade them. The very reason that HSMs were introduced into banks was that mainframe
|
||
operating systems only satisfactorily protected data integrity, and could not be trusted
|
||
to keep data con(cid:12)dential from programmers.
|
||
So as the economics of security (cid:13)aws like these develops into a mature (cid:12)eld, it seems
|
||
that banks need to update their risk management strategies to take account of the volatile
|
||
nature of the security industry. They also have a responsibility to their customers to
|
||
reassess liability for fraud in individual cases, as developments in computer security con-
|
||
tinually reshape the landscape over which legal disputes between bank and customer are
|
||
fought.
|
||
3 PIN Generation & Veri(cid:12)cation Techniques
|
||
There are a number of techniques for PIN generation and veri(cid:12)cation, each proprietary
|
||
to a particular consortium of banks who commissioned a PIN processing system from a
|
||
di(cid:11)erent manufacturer. The IBM CCA supports a representative sample, shown in Figure
|
||
2. We IBM 3624-O(cid:11)set method in more detail as it is typical of decimalisation table use.
|
||
3.1 The IBM 3624-O(cid:11)set PIN Derivation Method
|
||
The IBM 3624-O(cid:11)set method was developed to support the (cid:12)rst generation of ATMs and
|
||
has thus been widely adopted and mimicked. The method was designed so that o(cid:15)ine
|
||
ATMs would be able to verify customer PINs without needing the processing power and
|
||
5
|
||
|
||
Method Uses Dectables
|
||
IBM 3624 yes
|
||
IBM 3624-O(cid:11)set yes
|
||
Netherlands PIN-1 yes
|
||
IBM German Bank Pool Institution yes
|
||
VISA PIN-Validation Value
|
||
Interbank PIN
|
||
Figure 2: Common PIN calculation methods
|
||
storage to manipulate an entire database of customer account records. Instead, a scheme
|
||
was developed where the customer’s PIN could be calculated from their account number
|
||
by encryption with a secret key. The account number was made available on the magnetic
|
||
stripe of the card, so the ATM only needed to securely store a single cryptographic key.
|
||
An example PIN calculation is shown in Figure 4.
|
||
The account number is represented using ASCII digits, and then interpreted as a
|
||
hexadecimal input to the DES block cipher. After encryption with the secret \PIN gen-
|
||
eration" key, the output is converted to hexadecimal, and all but the (cid:12)rst four digits
|
||
are discarded. However, these four digits might contain the hexadecimal digits ‘A’-‘F’,
|
||
which are not available on a standard numeric keypad and would be confusing to cus-
|
||
tomers, so they are mapped back to decimal digits using a \decimalisation table" (Figure
|
||
3).
|
||
0123456789ABCDEF
|
||
0123456789012345
|
||
Figure 3: A typical decimalisation table
|
||
Account Number 4556 2385 7753 2239
|
||
Encrypted Accno 3F7C 2201 00CA 8AB3
|
||
Shortened Enc Accno 3F7C
|
||
0123456789ABCDEF
|
||
0123456789012345
|
||
Decimalised PIN 3572
|
||
Public Offset 4344
|
||
Final PIN 7816
|
||
Figure 4: IBM 3624-O(cid:11)set PIN Generation Method
|
||
6
|
||
|
||
The example PIN of 3F7C thus becomes 3572. Finally, to permit the cardholders to
|
||
change their PINs, an o(cid:11)set is added which is stored in the mainframe database along
|
||
with the account number. When an ATM veri(cid:12)es an entered PIN, it simply subtracts
|
||
the o(cid:11)set from the card before checking the value against the decimalised result of the
|
||
encryption.
|
||
3.2 Hardware Security Module APIs
|
||
Bank control centres and ATMs use Hardware Security Modules (HSMs), which are
|
||
charged with protecting PIN derivation keys from corrupt employees and physical at-
|
||
tackers. An HSM is a tamper-resistant coprocessor that runs software providing crypto-
|
||
graphic and security related services. Its API is designed to protect the con(cid:12)dentiality
|
||
and integrity of data while still permitting access according to a con(cid:12)gurable usage policy.
|
||
Typical (cid:12)nancial APIs contain transactions to generate and verify PINs, translate guessed
|
||
PINsbetweendi(cid:11)erentencryptionkeysastheytravelbetweenbanks, andsupportawhole
|
||
host of key management functions.
|
||
The usage policy is typically set to allow anyone with access to the host computer
|
||
to perform everyday commands such as PIN veri(cid:12)cation, but to ensure that sensitive
|
||
functionssuchasloadingnewkeyscanonlybeperformedwithauthorisationfrommultiple
|
||
employees who are trusted not to collude.
|
||
IBM’s \Common Cryptographic Architecture" [6] is a (cid:12)nancial API implemented by a
|
||
range of IBM HSMs, including the 4758, and the CMOS Cryptographic Coprocessor (for
|
||
PCs and mainframes respectively). An example of the code for a CCA PIN veri(cid:12)cation
|
||
is shown in Figure 5.
|
||
Encrypted_PIN_Verify(
|
||
A_RETRES , A_ED , // return codes 0,0=yes 4,19=no
|
||
trial_pin_kek_in , pinver_key , // encryption keys for enc inputs
|
||
(UCHAR*)"3624 " "NONE " // PIN block format
|
||
" F" // PIN block pad digit
|
||
(UCHAR*)" " ,
|
||
trial_pin , // encrypted_PIN_block
|
||
I_LONG(2) ,
|
||
(UCHAR*)"IBM-PINO" "PADDIGIT" , // PIN verification method
|
||
I_LONG(4) , // # of PIN digits = 4
|
||
"0123456789012345" // decimalisation table
|
||
"123456789012 " // PAN_data (account number)
|
||
"0000 " // offset data
|
||
);
|
||
Figure 5: Sample code for PIN veri(cid:12)cation in CCA
|
||
The crucial inputs to Encrypted_PIN_Verify are the decimalisation table, the
|
||
PAN_data, and the encrypted_PIN_block. The (cid:12)rst two are supplied in the clear and are
|
||
straightforward for the attacker to manipulate, but obtaining an encrypted_PIN_block
|
||
that represents a chosen trial PIN is rather harder.
|
||
7
|
||
|
||
3.3 Obtaining chosen encrypted trial PINs
|
||
Some bank systems permit clear entry of trial PINs from the host software. For instance,
|
||
this functionality may be required to input random PINs when generating PIN blocks
|
||
for schemes that do not use decimalisation tables. The appropriate CCA command is
|
||
Clear_PIN_Encrypt, which will prepare an encrypted PIN block from the chosen PIN. It
|
||
should be noted that enabling this command carries other risks as well as permitting our
|
||
attacks. If thereis notrandomisedpaddingof PINs before theyareencrypted, anattacker
|
||
could make a table of known trial encrypted PINs, compare each arriving encrypted PIN
|
||
against this list, and thus easily determine its value. If it is still necessary to enable clear
|
||
PIN entry in the absence of randomised padding, some systems can enforce that the clear
|
||
PINs are only encrypted under a key for transit to another bank { in which case the
|
||
attacker cannot use these guesses as inputs to the local veri(cid:12)cation command.
|
||
So, under the assumption that clear PIN entry is not available to the attacker, his
|
||
second option is to enter the required PIN guesses at a genuine ATM, and intercept the
|
||
encrypted PIN block corresponding to each guess as it arrives at the bank. Our adaptive
|
||
decimalisation table attack only requires (cid:12)ve di(cid:11)erent trial PINs { 0000 , 0001 ,0010 ,
|
||
0100 , 1000. However the attacker might only be able to acquire encrypted PINs under
|
||
a block format such as ISO-0, where the account number is embedded within the block.
|
||
This would require him to manually input the (cid:12)ve trial PINs at an ATM for each account
|
||
that could be attacked { a huge undertaking which totally defeats the strategy.
|
||
A third and more most robust course of action for the attacker is to make use of the
|
||
PIN o(cid:11)set capability to convert a single known PIN into the required guesses. This known
|
||
PIN might be discovered by brute force guessing, or simply opening an account at that
|
||
bank.
|
||
Despite all these options for obtaining encrypted trial PINs it might be argued that
|
||
the decimalisation table attack is not exploitable unless it can be performed without a
|
||
singleknowntrialPIN.Toaddresstheseconcerns, wecreatedathirdalgorithm(described
|
||
in the next section), which is of equivalent speed to the others, and does not require any
|
||
known or chosen trial PINs.
|
||
4 Decimalisation Table Attacks
|
||
In this section, we describe three attacks. First, we present a 2-stage simple static scheme
|
||
which needs only about 24 guesses on average. The shortcoming of this method is that
|
||
it needs almost twice as many guesses in the worst case. We show how to overcome this
|
||
di(cid:14)culty by employing an adaptive approach and reduce the number of necessary guesses
|
||
to 22. Finally, we present an algorithm which uses PIN o(cid:11)sets to deduce a PIN from a
|
||
single correct encrypted guess, as is typically supplied by the customer from an ATM.
|
||
4.1 Initial Scheme
|
||
The initial scheme consists of two stages. The (cid:12)rst stage determines which digits are
|
||
present in the PIN. The second stage consists in trying all the possible pins composed of
|
||
those digits.
|
||
8
|
||
|
||
Let D be the original decimalisation table. For a given digit i, consider a binary
|
||
orig
|
||
decimalisation table D with the following property. The table D has 1 at position x if
|
||
i i
|
||
and only if D has the digit i at that position. In other words,
|
||
orig
|
||
1 if D [x] = i;
|
||
orig
|
||
D [x] =
|
||
i
|
||
(0 otherwise:
|
||
For example, for a standard table D = 0123456789012345, the value of D is
|
||
orig 3
|
||
0001000000000100.
|
||
In the (cid:12)rst phase, for each digit i, we check the original PIN against the decimalisation
|
||
table D with a trial PIN of 0000. It is easy to see that the test fails exactly when the
|
||
i
|
||
original PIN contains thedigit i. Thus, using only at most 10 guesses, we have determined
|
||
all the digits that constitute the original PIN.
|
||
In the second stage we try every possible combination of those digits. Their actual
|
||
number depends on how many di(cid:11)erent digits the PIN contains. The table below gives
|
||
the details.
|
||
Digits Possibilities
|
||
A AAAA(1)
|
||
AB ABBB(4), AABB(6), AAAB(4)
|
||
ABC AABC(12), ABBC(12), ABCC(12)
|
||
ABCD ABCD(24)
|
||
The table shows that the second stage needs at most 36 guesses (when the original
|
||
PIN contains 3 di(cid:11)erent digits), which gives 46 guesses in total. The expected number of
|
||
guesses is, however, as small as about 23:5.
|
||
4.2 Adaptive Scheme
|
||
The process of cracking a PIN can be represented by a binary search tree. Each node v
|
||
contains a guess, i.e., a decimalisation table D and a pin p . We start at the root node
|
||
v v
|
||
and go down the tree along the path that is determined by the results of our guesses. Let
|
||
p be the original PIN. At each node, we check whether D (p ) = p . Then, we move
|
||
orig v orig v
|
||
to the right child if yes and to the left child otherwise.
|
||
Each node v in the tree can be associated with a list of original PINs such that
|
||
v
|
||
P
|
||
p if and only if v is reached in the process described in the previous paragraph if we
|
||
v
|
||
2 P
|
||
take p as the original PIN. In particular, the list associated with the root node contains
|
||
all possible pins and the list of each leaf should contain only one element: an original PIN
|
||
p .
|
||
orig
|
||
Consider the initial scheme described in the previous section as an example. For
|
||
simplicityassumethattheoriginalPINconsistsoftwobinarydigitsandthedecimalisation
|
||
table is trivial and maps 0 0 and 1 1. Figure 6 depicts the search tree for these
|
||
! !
|
||
settings.
|
||
Themaindrawbackoftheinitialschemeisthatthenumberofrequiredguessesdepends
|
||
strongly on the original PIN p . For example, the method needs only 9 guesses for
|
||
orig
|
||
p = 9999 (because after ascertaining that digit 0{8 do not occur in p this is the only
|
||
orig orig
|
||
9
|
||
|
||
D (p)=? 00
|
||
10
|
||
yes no
|
||
p=11 D (p)=? 10
|
||
01
|
||
yes no
|
||
p=10 D (p)=? 01
|
||
01
|
||
yes no
|
||
p=01 p=00
|
||
Figure 6: The search tree for the initial scheme. D denotes the decimalisation table
|
||
xy
|
||
that maps 0 x and 1 y.
|
||
! !
|
||
possibility), but there are cases where 46 guesses are required. As a result, the search tree
|
||
is quite unbalanced and thus not optimal.
|
||
One method of producing a perfect search tree (i.e., the tree that requires the smallest
|
||
possible numbers of guesses in the worst case) is to consider all possible search trees and
|
||
choose the best one. This approach is, however, prohibitively ine(cid:14)cient because of its ex-
|
||
ponential time complexity with respect to the number of possible PINs and decimalisation
|
||
tables.
|
||
It turns out that not much is lost when we replace the exhaustive search with a simple
|
||
heuristics. We will choose the values of D and p for each node v in the following manner.
|
||
v v
|
||
Let be the list associated with node v. Then, we look at all possible pairs of D and
|
||
v v
|
||
P
|
||
p and pick the one for which the probability of D (p) = p for p is as close to 1 as
|
||
v v v 2 P v 2
|
||
possible. This ensures that the left and right subtrees are approximately of the same size
|
||
so the whole tree should be quite balanced.
|
||
This scheme can be further improved using the following observation. Recall that the
|
||
original PIN p is a 4-digit hexadecimal number. However, we do not need to determine
|
||
orig
|
||
it exactly; all we need is to learn the value of p = D (p ). For example, we do not
|
||
orig orig
|
||
need to be able to distinguish between 012D and ABC3 because for both of them p = 0123.
|
||
It can be easily shown that we can build the search tree that is based on the value of p
|
||
instead of p provided that the tables D do not distinguish between 0 and A, 1 and B
|
||
orig v
|
||
and so on. In general, we require each D to satisfy the following property: for any pair
|
||
v
|
||
of hexadecimal digits x, y: D [x] = D [y] must imply D [x] = D [y]. This property
|
||
orig orig v v
|
||
is not di(cid:14)cult to satisfy and in reward we can reduce the number of possible PINs from
|
||
164 = 65536 to 104 = 10000. Figure 7 shows a sample run of the algorithm for the
|
||
original PIN p = 3491.
|
||
orig
|
||
4.3 PIN O(cid:11)set Adaptive Scheme
|
||
When the attacker does not know any encrypted trial PINs, and cannot encrypt his own
|
||
guesses, he can still succeed by manipulating the o(cid:11)set parameter used to compensate for
|
||
customer PIN change. Our (cid:12)nal scheme has the same two stages as the initial scheme, so
|
||
10
|
||
|
||
No Possible pins Decimalisation table D Trial pin p D (p ) p =? D (p )
|
||
v v v orig v v orig
|
||
1 10000 1000001000100000 0000 0000 yes
|
||
2 4096 0100000000010000 0000 1000 no
|
||
3 1695 0111110000011111 1111 1011 no
|
||
4 1326 0000000100000000 0000 0000 yes
|
||
5 736 0000000010000000 0000 0000 yes
|
||
6 302 0010000000001000 0000 0000 yes
|
||
7 194 0001000000000100 0000 0001 no
|
||
8 84 0000110000000011 0000 0010 no
|
||
9 48 0000100000000010 0000 0010 no
|
||
10 24 0100000000010000 1000 1000 yes
|
||
11 6 0001000000000100 0100 0001 no
|
||
12 4 0001000000000100 0010 0001 no
|
||
13 2 0000100000000010 0100 0010 no
|
||
Figure 7: Sample output from adaptive test program
|
||
our (cid:12)rst task is to determine the digits present in the PIN.
|
||
Assume that an encrypted PIN block containing the correct PIN for the account has
|
||
been intercepted (the vast majority of arriving encrypted PIN blocks will satisfy this
|
||
criterion), and for simplicity that the account holder has not changed his PIN and the
|
||
correct o(cid:11)set is 0000. Using the following set of decimalisation tables, the attacker can
|
||
determine which digits are present in the correct PIN.
|
||
D [x]+1 if D [x] = i;
|
||
orig orig
|
||
D [x] =
|
||
i
|
||
(D
|
||
orig
|
||
[x] otherwise:
|
||
For example, for D = 0123456789012345, the value of D is 0124456789012445.
|
||
orig 3
|
||
He supplies the correct encrypted PIN block and the correct o(cid:11)set each time.
|
||
As with the initial scheme, the second phase determines the positions of the digits
|
||
present in the PIN, and is again dependent upon the number of repeated digits in the
|
||
originalPIN.ConsiderthecommoncasewhereallthePINdigitsaredi(cid:11)erent, forexample
|
||
1583. We can try to determine the position of the single 8 digit by applying an o(cid:11)set to
|
||
di(cid:11)erent digits and checking for a match.
|
||
Guess Guess Customer Customer Guess Decimalised Verify
|
||
O(cid:11)set Decimalisation Table Guess + Guess O(cid:11)set Original PIN Result
|
||
0001 0123456799012345 1583 1584 1593 no
|
||
0010 0123456799012345 1583 1593 1593 yes
|
||
0100 0123456799012345 1583 1683 1593 no
|
||
1000 0123456799012345 1583 2583 1593 no
|
||
Each di(cid:11)erent guessed o(cid:11)set maps the customer’s correct guess to a new PIN which
|
||
may or may not match the original PIN after it is decimalised using the modi(cid:12)ed table.
|
||
This procedure is repeated until the position of all digits is known. Cases with all digits
|
||
di(cid:11)erent will require at most 6 transactions to determine all the position data. Three
|
||
11
|
||
|
||
di(cid:11)erent digits will need a maximum of 9 trials, two digits di(cid:11)erent up to 13 trials, and
|
||
if all the digits are the same no trials are required as there are no permutations. When
|
||
the parts of the scheme are assembled, 16.5 guesses are required on average to determine
|
||
a given PIN.
|
||
5 Results
|
||
We (cid:12)rst tested the adaptive algorithm exhaustively on all possible PINs. The distribution
|
||
in Figure 8 was obtained. The worst case has been reduced from 45 guesses to 24 guesses,
|
||
and the average has fallen from 24 to 15 guesses. We then implemented the attacks
|
||
on the IBM Common Cryptographic Architecture (version 2.41, for the IBM 4758), and
|
||
successfully extracted PINs generated using the IBM 3624 method. We also checked the
|
||
attacks against the API speci(cid:12)cations for the VISA Security Module (VSM) , and found
|
||
them to be e(cid:11)ective. The VSM is the forerunner of a whole range of hardware security
|
||
modules for PIN processing, and we believe that the attacks will also be e(cid:11)ective against
|
||
many of its successors.
|
||
2500
|
||
2000
|
||
1500
|
||
1000
|
||
500
|
||
0
|
||
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
||
Number of Attempts
|
||
sNIP
|
||
fo
|
||
rebmuN
|
||
Figure 8: Distribution of guesses required using adaptive algorithm
|
||
12
|
||
|
||
6 Prevention
|
||
It is easy to perform a check upon the validity of the decimalisation table. Several
|
||
PIN veri(cid:12)cation methods that use decimalisation tables require that the table should
|
||
be 0123456789012345 for the algorithm to function correctly, and in these cases the API
|
||
need only enforce this requirement to regain security. However, PIN veri(cid:12)cation methods
|
||
that support proprietary decimalisation tables are harder to (cid:12)x. A checking procedure
|
||
that ensures a mapping of the input combinations to the maximum number of possible
|
||
output combinations will protect against the (cid:12)rst two decimalisation table attacks, but
|
||
not against the attack which exploits the PIN o(cid:11)set and uses only minor modi(cid:12)cations to
|
||
the genuine decimalisation table. To regain full security, the decimalisation table input
|
||
must be cryptographically protected so that only authorised tables can be used.
|
||
The only short-term alternative to the measures above is to use more advanced in-
|
||
trusion detection measures, and it seems that the long term message is clear: continuing
|
||
to support decimalisation tables is not a robust approach to PIN veri(cid:12)cation. Unskewed
|
||
randomly generated PINs stored encrypted in an online database such as are already used
|
||
in some banks are signi(cid:12)cantly more secure.
|
||
7 Conclusions
|
||
WearecurrentlystartingdiscussionswithHSMmanufacturerswithregardtothepractical
|
||
implications of the attacks. It is very costly to modify the software which interacts with
|
||
HSMs, andwhile updateof theHSMsoftware is cheaper, thesystemwill still needtesting,
|
||
and the update may involve a costly re-initialisation phase. Straightforward validity
|
||
checking for decimalisation tables should be easy to implement, but full protection that
|
||
retains compatibility with existing mainframe software will be hard to achieve. It will
|
||
depend upon the intrusion detection capabilities o(cid:11)ered by each particular manufacturer.
|
||
We hope to have a full understanding of the impact of these attacks and of the optimal
|
||
preventative measures in the near future.
|
||
Although HSMs have existed for two decades, formal study of their security APIs is
|
||
still in its infancy. Previous work by one of the authors [5, 4] has uncovered a whole
|
||
host of diverse (cid:13)aws in APIs, some at the protocol level, some exploiting properties of
|
||
the underlying crypto algorithms, and some exploiting poor design of procedural controls.
|
||
The techniques behind the decimalisation table attacks do not just add another string
|
||
to the bow of the attacker { they further con(cid:12)rm that designing security APIs is one
|
||
of the toughest challenges facing the security community. It is hard to see how any
|
||
one methodology for gaining assurance of correctness can provide worthwhile guarantees,
|
||
given the diversity of attacks at the API level. More research is needed into methods
|
||
for API analysis, but for the time being we may have to concede that writing correct
|
||
API speci(cid:12)cations is as hard as writing correct code, and enter the traditional arms race
|
||
between attack and defence that so many software products have to (cid:12)ght.
|
||
13
|
||
|
||
Acknowledgements
|
||
WewouldliketothankRichardClaytonandRossAndersonfortheirhelpfulcontributions
|
||
and advice. Mike Bond was able to conduct the research thanks to the funding received
|
||
fromtheUKEngineeringandPhysicalResearchCouncil(EPSRC)andMarconiplc. Piotr
|
||
Zielin(cid:19)ski was supported by a Cambridge Overseas Trust Scholarship combined with an
|
||
ORS Award, as well as by a Thaddeus Mann Studentship from Trinity Hall College.
|
||
References
|
||
[1] R. Anderson: Why Cryptosystems Fail Communications of the ACM, 37(11), pp32{
|
||
40 (Nov 1994)
|
||
[2] R. Anderson: The Correctness of Crypto Transaction Sets Proc. Cambridge Security
|
||
Protocols Workshop 2000 LNCS 2133, Springer-Verlag, pp 125{127 (2000)
|
||
[3] A. Biryukov, A. Shamir, D. Wagner Real Time Cryptanalysis of A5/1 on a PC
|
||
Proceedings of Fast Software Encryption 2000
|
||
[4] M. Bond, R. Anderson API-Level Attacks on Embedded Systems IEEE Computer
|
||
Magazine, October 2001, pp 67{75
|
||
[5] M. Bond: Attacks on Cryptoprocessor Transaction Sets Proc. Workshop Crypto-
|
||
graphic Hardware and Embedded Systems (CHES 2001),LNCS2162,Springer-Verlag,
|
||
pp 220{234 (2001)
|
||
[6] IBM Inc.: IBM 4758 PCI Cryptographic Coprocessor CCA Basic Services Reference
|
||
and Guide for the IBM 4758-001, Release 1.31. IBM, Armonk, N.Y. (1999)
|
||
http://www.ibm.com/security/cryptocards/bscsvc02.pdf
|
||
14
|