\rsa\rsatk101

advertisement
The Fault-based Attack on Public-key Cryptosystems and Its Countermeasures
The Fault-based Attack on Public-key
Cryptosystems and Its Countermeasures
Chi-Sung Laih, Yung-Cheng Lee and Fu-Kuan Tu
賴溪松、李永振、涂福寬
Department of Electrical Engineering, National Cheng Kung University, Taiwan, R.O.C.
Department of Electrical Engineering, National Huwei Institute of Technology, Taiwan, R.O.C.
Abstract
Based on the fault-based attack, the secret information may be revealed in many public-key
or secret-key cryptosystems. In this paper, we discuss the fault-based attack and propose a faultresistant system to detect any fault existed in the modular exponentiation computation. Through
the proposed fault-resistant system, it is shown that the public-key cryptosystems can efficiently
resist the fault-based attacks.
Index Terms: Fault-based
Cryptosystem.
cryptanalysis,
Modular
multiplication,
Tamperfree
device,
1. Introduction
Due to the development and evolution of communications and security technologies, the
smart cards have been widely used in these years. Since the smart cards play important roles in
electronic commerce, it is very important to design a robust cryptographic system for a
tamperfree device to protect from any kind of secret information leakage.
Conventionally, the success of attacks on public-key cryptosystems totally depends on the
supposed difficulty of factoring an integer into primes, or solving discrete logarithms. In
September 1996, Boneh et al. from Bellcore announced a new type of attack, namely fault-based
cryptanalysis, on public-key cryptosystems such as RSA [6]. They described a fault-based attack,
which breaks various public-key cryptosystems by taking the advantage of random hardware
faults. It is reported that the fault-based attack also works against other public-key cryptosystems
with the same algebraic structure, such as the Schnorr and Fiat-Shamir's scheme [10,16], and
endangers many network security products and systems.
Following the work of Bellcore, Biham and Shamir proposed a new attack called differential
fault analysis (DFA) on secret key cryptosystems such as DES [4]. They claimed that the full
DES key can be extracted from a tamperproof DES device by analyzing fewer than 200 faulty
ciphertexts. Moreover, another attack that requires less than ten faulty ciphertexts was also shown
by Anderson and Kuhn [2]. In addition to Bellcore's work, the fault-based attack on RSA was also
proposed by Bao et al. [3]. It was shown that a few bits of fault at some memory locations in
smart cards may disclose the secret key. They also proposed several methods to resist the faultbased attacks. However, their solutions are not practical due to the huge time and space
complexity as will be shown in Section 3.
In order to detect faults in tamperproof devices during cryptographic computations, we
propose a model of self-checking system such that any fault can be detected with very high
probability. Our method can also be trivially applied to other public-key cryptosystems with the
same algebraic structure.
The organization of this paper is as follows. At first, we introduce the types of faults and the
fault-based cryptanalysis in Section 2. Selective solutions proposed by previous related works are
described in Section 3. In Section 4, a new model of self-checking system to validate the modular
-1-
IICM 第二卷 第三期 民國八十八年九月
exponentiations is proposed. Based on the model, we propose some RSA variants with efficient
checking capability, namely self-checking cryptosystem, to resist the fault-based attacks in
Section 5. Then, in Section 6, we present the computational complexity of the proposed schemes
and their security analysis. Finally, we draw a few conclusions.
2. The Transient Faults and the Fault-based Cryptanalysis
Due to the attacks by applying stress, electromagnetic wave, ionization, etc., to the
tamperproof devices, the information stored in the memory or register may induce random
transient faults. That is the information may be erroneous in cryptographic computation. The
transient faults can be divided into memory faults and computational faults.
2.1 The memory faults
Suppose that the original information stored in the memory or register spontaneously flipped
from 1 to 0, or vice versa, then errors will occur at the corresponding output even if there is no
other error existed in the cryptographic computations. Let C  f ( M , d ) , where C, f, M, d are the
ciphertext, cryptographic function, message and secret key, respectively. Due to the memory
faults, the information such as secret key d stored in memory, ROM or RAM, may be changed to
a faulty secret d' and then outputs a faulty ciphertext C', where C'  f ( M , d ') and C'  C . Some
memory fault-based attacks have been proposed in [5,6].
The memory faults signify that the fetched information for cryptographic computations is
erroneous. These faults can be further divided into two types: (a) The original information in
memory is erroneous; (b) The information turns out to be erroneous immediately after it was
fetched from the memory, even if the stored information is correct.
If the original message M in the memory is erroneous and no other errors occur in the
cryptographic computations, then the output ciphertext is corresponding to another message M',
i.e., C'  f ( M ', d ) . In this case, information obtained from the faulty outputs is not sufficient to
attack the system since a secure cryptosystem must have the ability to resist the chosen plaintext
attack. Similarly, if the original secret key d in the memory is erroneous and no other error occur,
then no additional information is really obtained from the error to attack the cryptosystem. The
reason is that the system now behaves like the one with a different secret key d' without any error.
On the other hand, if the stored secret information is correct, but randomly caused to faulty
immediately after it was fetched from the memory, then some secret information may be revealed
by using the faulty output [3, 6].
The memory faults can be easily detected or corrected by using conventional coding
approaches. If the information is verified immediately after it is fetched from the memory, then
the memory faults will be detected with very high probability. A simple coding approach is using
the Self-Checking Circuit (SCC) [15], which will be described in detail in Section 4. The selfchecking circuit will not produce an erroneous result without an error indication.
2.2 The computational faults
The computational faults include all errors induced during computations. The reasons to find
solutions to resist the computational faults are: (1) the processor must access the memory and
perform a complex cryptographic computation frequently, the computational faults may occur
with higher probability than memory faults; (2) the memory faults can be easily solved by
conventional coding approaches.
A fault-based attack on computational faults for the Chinese Remainder Theorem (CRT)
based RSA signature scheme is described as follows. Let N  pq and e  d  1 (mod  ( N )) ,
where p and q are large primes, N is public information, e and d are public and secret keys,
respectively; and () is the Euler totient function. Considering the efficiency of modular
-2-
The Fault-based Attack on Public-key Cryptosystems and Its Countermeasures
exponentiations, it is usually to implement the RSA by using the CRT method rather than directly
d
obtained from C  M (mod N ) . That is to say, we usually compute the partial signatures with
Cp  M d (mod p) and Cq  M d (mod q) in advance and then obtain the signature C by CRT
method, i.e., C  crt ( N , p , q , C p , Cq ) .
Suppose that a computational fault occurred in the computation of a partial signature. Let
C p ' be a faulty partial signature of C p and Cq be the correct one, then the faulty signature will
be C '  crt ( N , p, q , C p ' , Cq ) . If an attacker obtains the message M and the faulty signature C',
then prime q will be revealed by using q  GCD((C ) e  M , N ) , where GCD denotes the greatest
common divisor. Thus the RSA cryptosystem will be completely broken by using only one
computational fault [11].
2.3 The fault-based cryptanalysis
For ease of illustration, the fault-based cryptanalysis can be described briefly as follows. Let
C  f ( M , d , h) , where d is the secret key, M is the input plaintext, h is a small Hamming weight
error in M or d that is caused by stress, ionizing, microwave or so on, f denotes the
encryption/decryption function and C is the ciphertext.
If there is no error occurred during cryptographic computation, i.e., h  0, then C  C0 ,
where C0 denotes the exact corresponding ciphertext without error. However, if there are some
bits of secret key changed from 1 to 0 or vice versa, then the attacker will disclose the secret key
by using faulty outputs. That is, given C0 and a faulty output Ci , where Ci  f ( M , d , hi ) ,
hi  0 , it is possible for an attacker to obtain some information about secret key d. If the attacker
performs the procedures repeatedly, then the exact secret key will be revealed. Hence the
cryptosystem is not secure under the fault-based cryptanalysis.
3. Previous Results
3.1 A variety of solutions
Based on the fault-based cryptanalysis, Boneh et al. [6] and Bao et al. [3] proposed some
methods to counter these attacks. However, these methods still have some disadvantages as
follows.
(1) "The attack may be avoided by recomputation" [3, 6].
 Since the error may be caused by software or hardware bugs, and the faults that may have
been planted during the design or manufacture processes of the device, it may produce the
same faults by recomputation. Thus this method is still insecure. Moreover, this method is
inefficient since it doubles the computation time.
e
(2) Before outputting the result, "Verifying the result by checking C  M " [3].
 Although this approach can resist the computational fault attacks. However, for security
reasons, it is better not to choose e too small. If e is large enough then the computation
complexity will be increased. Thus it is usually inefficient on verification computation of
some cases.
(3) For RSA, "A random string R is chosen by the smart card and concatenated to a message M
which is to be signed by smart card" [3, 6].
 By random padding, the probability to sign the same message twice can be neglected. Hence
the adversary cannot obtain the correct and corrupted pair of results to successfully attack
the system. However, this method not only enlarges the entropy of the ciphertext but also
decreases the efficiency of computation and transmission. Moreover, it is infeasible to
-3-
IICM 第二卷 第三期 民國八十八年九月
perform random padding in the register during computations due to huge time and space
complexities.
d
d
(4) "The device computes r and ( rM ) with random number r, and then outputs
C  (rM ) d / r d " [3].
 From computation viewpoint, it is usually to compute ( rM )d (mod p ) and ( rM )d (mod q )
d
d
in advance, and then obtain ( rM ) (mod N ) by using CRT. However, if (( rM ) )' is a
corrupted result due to error occurred in the computations mod p or mod q, then by the
method described in Section 2, the prime p or q can be obtained by computing
(( r M ) d )' e
gcd ((
)  M , N ) . Hence this method is still insecure if the system is implemented
rd
with CRT.
3.2 The coding-based fault resistant system (CBFRS)
In 1999, Laih et al. proposed a coding-based fault resistant system (CBFRS) to resist fault
attack [13]. In CBFRS, message space Z N is embedded into Z NR and operated in Z NR . The
Encoder mapped message x in Z N into X in Z NR by X  x RR * (mod NR) , where
GCD( R , N )  1 and R  R *  1(mod N ) .
The message x of CBFRS is sent to the input of the Encoder. The output codeword X, is
verified to make sure that there is no error in encoding process by checking whether
0  X (mod R) is hold or not. After the original message x is encoded into codewords X
successfully, the codeword X is stored in memory or sent to compute.
All computations in CBFRS are operated in Z NR . After addition or multiplication
computations, Z  X  Y (mod NR) or Z  XY (mod NR) , are done, an error-checking should
be made to dectect any possible computational errors. The checking process is checked to see
whether the result is still a codeword in Z NR , i.e. divided by R or not.
The final result shall extract from Z NR . Thus, a decoder is needed to provide the inverse
mapping from Z NR into Z N . The decoder mapped the codeword Z into z by z  Z (mod N ) . The
coding based fault resistant system is shown in Figure 1. For the details, the authors encourage
readers to refer [13].
x
Encoder
Error
yes
X Checking
no
X
Stop
Y
y
Addition
Multiplication
no
Error
Encoder
yes
Y Checking
Z
Error
Checking
z
Z
Decoder
yes
no
Stop
Figure 1. The coding based fault resistant system
The CBFRS can detect memory faults and computational faults, the probability that memory
faults or computational faults cannot be detected is 1/R. The computational overhead is 6.3% for
N and R are 1024 and 32 bit length, respectively.
-4-
The Fault-based Attack on Public-key Cryptosystems and Its Countermeasures
4. The Self-checking System to Resist Fault-based Attack
In this section, we present an efficient model of modular exponentiations with checking
ability, called self-checking system, to resist the fault-based attack. The model includes a
functional system and a checking system which are defined as follows. Based on the selfchecking system, we propose an integral algorithm for modular exponentiation.
4.1 Definitions
Definition 1. A self-checking system is a system which will produce the exact output if there is
no computational fault. This system consists of a functional system and a checking system. The
functional system not only produces the corresponding output by using a specific algorithm, but
also outputs the checking information computed by a predefined algorithm simultaneously. The
checking system efficiently computes and outputs checking information independently by using a
checking algorithm.
4.2 The self-checking circuit to resist memory faults
The memory faults can be solved by using the self-checking circuit (SCC) [15]. The selfchecking circuit is a device to validate the message in memory devices. According to coding
approaches, the message M or secret d is encoded to X before it is stored in the memory. If a
cryptographic computation is performed, X will be decoded and recovered to message M or secret
d by functional circuit. In other path, message M or secret d is recovered and verified in the
checking circuit to see if there is any error occurred before outputs. If the verification is
successful then the SCC will output M or d; otherwise, the SCC activates an alarm I. The selfchecking circuit is shown in Figure 2.
Input
message
M or d
Encoder
Memory
devices
X
Functional
circuit
Output
M or d
Checking
circuit
yes
no
Self-checking circuit
Error indicationI
Figure 2. The self-checking circuit (SCC) to resist memory faults
4.3 The self-checking system
The self-checking system is shown in Figure 3. In the beginning, the message and secret key
are fetched from memory, and hereby verified by a self-checking circuit (SCC) to resist memory
faults attack. If the SCC indicates that is error-free, then the functional system computes and
outputs the corresponding ciphertext CN and the checking information CNR . The checking
system obtains the other checking information CR independently. If CNR is equal to CR then
the computations are error-free and the self-checking system outputs CN . Otherwise, there are
faults in computations, and the self-checking system outputs only an error indication. The selfchecking system have the following properties:
(1) If there is no computational fault then C NR  C R , and the system outputs the correct
ciphertext CN .
(2) If there are computational faults, then the probability to detect CNR  CR is very high.
-5-
IICM 第二卷 第三期 民國八十八年九月
CN
Functional
system
CN
C NR
Encoded
Message
Encoded
Secret key
Yes
Comparison
SCC
M
SCC
No
d
Error
Indication
CR
Checking
system
Figure 3. The model of self-checking system for modular operations
4.4 An algorithm of modular multiplication for the functional system
Modular multipliations are the basic operations of modular exponentiations, which in turn
are the major parts of most cryptosystems. An efficient algorithm of modular multiplication for
functional system is as follows.
Let the modular multipliations be CN  C1  C2 (mod N ). In order to detect computational
faults, the functional system chooses a modulus R, then consistently computes
CN  C1  C2 (mod N ) and CNR  C1  C2 (mod R) such that CN and CNR have very high
correlation in computation. That is if CN is erroneous then CNR will be faulty with very high
probability. On the other hand, the checking system independently computes CR by using an
efficient approach (see Section 4.6). Finally, the self-checking system compares CNR and CR to
determine whether computational faults occurred or not.
In the beginning, we present integer C1 in a general form:
C1  S1  r1 ,
(1)
where r1  C1 (mod N ) and S1  Q1  N , Q1 is the quotient of C1 divided by N. Note that N
divides S1 , and the multiplication of Qi  N needs not to be performed immediately. Both Q1
and r1 come along with the modular operations of C1 (mod N ) . That is when a modular
computation is performed, the residue and quotient can be obtained together.
Similarly, C2 can also be presented by
C2  S 2  r2 ,
(2)
where r2  C2 (mod N ) and S2  Q2  N . Q2 also comes along with modular operations of
C2 (mod N ) . In general, both S1 and S2 are zero initially, and will become nonzero after some
iterations of operations.
The multiplication of C1 and C2 can be expressed by
C1  C2  ( S1  r1 )  ( S2  r2 )
 S1S2  S1r2  S2r1  r1r2
 S1S2  S1r2  S2r1  QN  N  r3 ,
where r3  r1 r2 (mod N ) , QN comes along with modular operations of r1r2 (mod N ) . Hence if
C1 multiplies C2 , the result CN can be presented by
C N  S 3  r3 ,
(3)
-6-
The Fault-based Attack on Public-key Cryptosystems and Its Countermeasures
where S3  S1S2  S1r1  S2r1  QN  N , and N divides S 3 . Note the result of S 3 need not to be
computed immediately. It will be easily computed later in Eq.(5).
Let C NR be the result of C1 multiplies C2 in modulo R, thereby C NR is equal to:
CNR  s3  r3 ,
(4)
s3  ( S1 S 2  S1 r1  S 2 r1  QN  N ) (mod R) .
(5)
where
Thus if input messages Ci , i {1, 2} , can be described as Ci  Si  ri and
Ci  S i (mod R)  ri in modulo N and R, respectively, where S i  Qi  N , then the results of
modular multiplications can also be expressed in the same forms. Moreover, the result in modular
R is consistent with the computation in modular N. Thus these results under two different moduli
have very high correlation.
2
On computational complexity, it needs l bit operations to find CN  C1  C2 (mod N ). In
2
finding CNR  C1  C2 (mod R) , at most 4 k more bit operations will be needed, where l and k
are the logarithm magnitude of N and R, respectively. If we choose k  l then the
computational overhead is very low. The computational overhead is defined as
Oprop  Oorg
100%
Computational overhead =
(6)
Oorg
where O prop is the computational complexity in bit operations of the proposed method and
denotes the bit operations needed in computing both CN and CNR . Oorg denotes the
computational complexity in bit operations of the original scheme which performs computation
2
2
for CN . The computational overhead will less than 4 k l  0. 4% for the proposed algorithm
with l  1024 and k  32 .
4.5 An integral algorithm for functional system on modular exponentiation
Let the moduli be N and R, R  N , the binary representation of secret key be
d  dl dl 1 ...d2d1 and d l  1 . Based on the method in previous section, we propose an efficient
algorithm (Algorithm NR) of modular exponentiation for the functional system. This algorithm
CN  M d (mod N )
consistently
computes
ciphertext
and
checking
information
d
CNR  M (mod R ) to ensure both results are computed by using the same secret message.
The Algorithm NR
Function ( M , d , N , R, C N , C NR )
init q  0; S  0; r  M ; C N  0; C NR  0;
For i  l  1 downto 1 do
{ CN  r 2 ;
C  C N (mod N );
S  S 2  2 Sr  Q N  N (mod R) ;
r  C;
If d i  1 then
*
{ C N  rM ;
C  C N (mod N );
S  SM  QN  N (mod R) ;
r  C;
*
-7-
IICM 第二卷 第三期 民國八十八年九月
};
};
C N  r;
C NR  S  r (mod R);
*
output : C N , C NR
Note that QN comes along with the operation of CN (mod N ) , that is when CN (mod N ) is
computed, a residue and a quotient can be obtained simultaneously. The rows maked by “  ” are
additional computations needed for computing CNR . The computational complexity of the
d
proposed algorithm for modular exponentiation CN  M (mod N ) is 1.5 l 3 bit operations. In
d
finding CNR  M (mod R ) , more 4 k 2 l bit operations will be needed. Thus, the algorithm
needs 1.5 l 3  4 k 2 l bit operations to derive CN and CNR simultaneously. Here we ignor the
time on the computations of modular addition, substraction and reduction. If k  l then it is
very efficient in computation, and the computation will be speeded up further if the CRT method
is applied.
4.6 An efficient approach for modulo R
k
If we choose a specific value for R such as R  2  1, then an efficient algorithm to speed
up the modular operation for C  A (mod R ) is as follows.
For R  2 k  1 , the logarithm magnitude of A be l. Then A can be represented as
A  at 1 2 (t 1) k  at 2 2 ( t  2) k ...  a1 2 k  a0 , for 0  ai  2 k and 0  i  t  1 , (7)
where t  l / k ,
denotes a ceiling function. Then C can be computed by
C  i 0 (1) i ai (mod R) .
t 1
(8)
Thus the computational complexity for the modular computation of C  A (mod R ) can be
significantly reduced. By repeatedly performing the processes, the modular exponentiation such
d
as CR  M (mod R) for checking information can be quickly obtained by the checking system.
5. The Proposed Self-Checking Cryptosystems
Based on the proposed self-checking system, the modular exponentiation based
cryptosystem can be modified to resist the computational fault attacks. The modified
cryptosystem with checking computation capability is called self-checking cryptosystem. For an
ideal self-checking cryptosystem, it must have the following properties:
(1) The computational overhead should be very small.
(2) The checking ability must be independent of computational faults, i.e. they should be able to
detect any computational fault.
(3) The probability that faults cannot be detected should be small.
Based on the above properties, we propose three self-checking cryptosystems for RSA to
resist the computational fault attacks. The proposed self-checking cryptosystem can also be used
on other public-key cryptoschemes which are based on modular exponentiations. Here, we
assume that there is no memory fault existed in the cryptographic computations. Without loss of
generality, we only describe the RSA digital signature cryptosystem. The following schemes will
output the exact corresponding output CN if the computation is error-free, where
CN  M d
(mod N ) .
(9)
-8-
The Fault-based Attack on Public-key Cryptosystems and Its Countermeasures
5.1 Scheme 1
This is a basic self-checking cryptosystem to resist fault-based attack. According to the selfd
d
checking system, the functional system outputs CN  M (mod N ) and CNR  M ( m od R ) by
d
using Algorithm NR. On the other hand, the checking system computes CR  M R R (mod R ) by
using the algorithm proposed in Section 4.6, where d R  d (mod ( R)) and M R  M (mod R ) .
Finally, the system outputs CN if C R is equal to CNR. Otherwise, the system outputs nothing
but an alarm.
Since C R and CNR are computed through different algorithms with the same sealed private
key d, C R must be equal to CNR if the private key d is error-free and no other error occurred
during cryptographic computation.
5.2 Scheme 2 (CRT-based and without checking system)
In CRT, CN is computed through two partial computations with different moduli. Let
C1  M d1 (mod pR ) ,
(10)
C2  M d2 (mod qR),
(11)
where d1  d (mod ( pR)) and d2  d (mod (qR)) .
If
then
the
system
computes
and
outputs
C1 (mod R)  C2 (mod R)
CN  crt ( N , p, q, C1 , C2 ) . Otherwise, the system outputs nothing. Note that in this scheme, the
checking system and the computation of CNR in functional system are omitted.
Theorem 1. In Scheme 2, if no memory fault or computational fault occurred, then
d
C1 (mod R)  C2 (mod R) and CN  crt ( N , p, q, C1 , C2 ) is equal to M (mod N ) .
d
Proof: (1) It is obvious that (a (mod bc)) (mod c)  a (mod c) . Then M (mod R )
 ( M d (mod pR ))(mod R )  ( M d (mod ( pR)) (mod pR ))(mod R )  C1 (mod R )
.
Similarly,
M d (mod R )  C2 (mod R ) . Hence C1 (mod R)  C2 (mod R) . (2) Since C1 (mod p)
mod ( p)
 ( M d1 mod pR)(mod p)  M d1 (mod p) , and d1 mod ( p)  (d (mod ( pR)))
d
d
 d mod ( p) . Hence C1 (mod p)  M (mod p) . Similarly, C2 (mod q)  M (mod q ) .
d
Therefore, CN  crt ( N , p, q, C1 , C2 ) is the exact solution for M (mod N ) .
Q.E.D.
5.3 Scheme 3 (CRT-based and with checking system)
Based on the self-checking system, the functional system computes Cp  M
pR
qR
and C pR  M (mod R ) , Cq  M (mod q) and CqR  M
Where d pR  d mod( ( p)  ( R)) and dqR  d mod( (q)  ( R)) .
d
d
Since
(mod p)
M
d (mod  ( p))  d (mod(  ( p) ( R)))(mod  ( p)
 M d (mod ( ( p) ( R ))) (mod p)  M
d (mod (  ( p )  ( R )))
(mod R )  M
d pR
d pR
(mod p)  C p
(mod R )  C pR
.
dq R
,
and
Similarly,
(mod p)
(mod R ) by Algorithm NR.
M d (mod p)
,
d pR
CR  M d
M d (mod q)
 M d (mod  ( p ))
(mod R)
 Cq
and
CR  M (mod R)  CqR . Hence, if no error existed, then C pR = CR and CqR = CR . Therefore, if
C pR = CqR then the system is error-free, and the system computes and outputs CN by using the
CRT, i.e., CN  crt ( N , p, q , C p , Cq ) . Otherwise, if C pR  CqR then the system outputs nothing
but an alarm.
d
-9-
IICM 第二卷 第三期 民國八十八年九月
6. Discussions
6.1 Probability of fault detection failure and security analysis
If two checking informations in self-checking cryptosystem are the same while errors still
occurred, then the schemes will fail. Obviously, the probability in this case is 1/R. If we choose
R  2 32  1  5  109 then the probability that faults cannot be detected is very small. Moreover, in
this case, the computation can be speed up further.
For Algorithm NR, if error occurred in computation of C N  r 2 or C N  rM then the
results CN and CNR will be faulty. Since the checking system computes C R independently,
there is very high probability for C NR  C R . Therefore, the faulty will be detected. On the other
hand, if there is error occurred in computation of S  S 2  2 Sr  Q N  N (mod R) or
S  SM  QN  N (mod R) , then CNR will be faulty. In this case, the faulty will also be detected
since C NR  C R .
Since the proposed methods only add checking computation in original schemes and the
immediate checking message does not be revealed, the proposed schemes reveal no more
information than the original ones. Thus the attackers cannot obtain more message from the
proposed schemes. Therefore, the security of the proposed schemes is the same as that of original
RSA.
6.2 Computational complexity
1
1
l
Suppose that p  q  N  d 
and R  k , where x denotes the logarithm
2
2
2
magnitude of x. The performance of the above three schemes is shown in Table I, where the
method proposed in Section 4.6 has not been applied. Thus if that method is used then the
computation will be speed up further. The bit operations of the original schemes for Scheme 2
3
and 3 are CRT-based. In general, it needs 0. 375 l bit operations to compute
C  M d (mod N ) with CRT. It is shown that all our proposed schemes have good performance.
Among them, Scheme 1 is the most efficient algorithm on the consideration of computational
overhead. Here, we assume that k  l 32 , which is a reasonable assumption since l  1024
satisfies the general security consideration.
Since the length of public key for the RSA cryptosystem is always as small as 16 bits, the
performance of the proposed schemes seems not very impressive. However, for some
cryptosystems with larger exponentiation such as the Diffie-Hellman key distribution scheme [8]
and the Digital Signature Algorithm (DSA) [14], our methods have high performance in
computation.
Table I. The performance of the proposed schemes
Scheme
1
2
Computation
formula
Complexity
(bit operations)
C N  M d (mod N )
1.5 l 3
C NR  M d (mod R)
4 k 2l
C R  M Rd R (mod R)
1.5 k 3
C1  M d1 (mod pR)
1.5(k  l 2) 3
C2  M (mod qR)
1.5(k  l 2)
Cp  M
1.5(k  l 2)(l 2) 2
d2
d pR
(mod p)
3
- 10 -
Total
Computational
computations
overhead
(bit operations)
1.504 l 3
0.3%
0.450 l 3
20.0%
The Fault-based Attack on Public-key Cryptosystems and Its Countermeasures
3
C pR  M
Cq  M
d pR
d qR
C qR  M
(mod R)
(mod q)
d qR
(mod R)
0.403 l 3
l
(k  )( 4 k 2 )
2
7.5%
1.5(k  l 2)(l 2) 2
l
(k  )( 4 k 2 )
2
7. Conclusions
In some security models such as electronic commerce, the protection for the secret
information in a tamperproof device (e.g., smart card) is very important. However, it is shown
that the secret keys can always be revealed by using transient faults in many public-key
cryptosystems. In this paper, we discuss the classification of faults from the sources of the
security breaches, and propose a model of self-checking system to resist computational faultbased attacks. The proposed methods can also be applied to other public-key cryptosystems
whose algorithm is based on modular multiplication operations such as the Diffie-Hellman, DSA,
ElGamal, Schnorr schemes and so on [8,9,14,16]. The proposed fault-resistant systems have high
performance in computation and error detection.
8. References
[1] R. Anderson, "Why cryptosystems fail," Communication of the ACM, Vol.37, No.11, pp.3240, Nov. 1994.
[2] R. Anderson and M. Kuhn, "Tamper resistance -- a cautionary note," Proceedings of the
second USENIX Workshop on Electronic Commerce, pp.1-11, 1996.
[3] F. Bao, R.H. Deng, Y. Han, A. Jeng, A.D. Narasimhalu and T. Ngair, "Breaking public key
cryptosystems on tamper resistant device in the presence of transient faults," 1997 Security
Protocols Workshop, Springer-Verlag, pp.115-124, Paris, France, April 1997.
[4] E. Biham and A. Shamir, "Differential fault analysis of secret key cryptosystems," CRYPTO
'97, LNCS 1294, Springer-Verlag, pp.513-525, 1997.
[5] M. Blaze, "Protocol failure in the escrowed encryption standard," Proc. of the 2nd ACM
conference on Computer and Communications Security, ACM Press, pp.59-67. 1994.
[6] D. Boneh, R.A. DeMillo and R.J. Lipton, "On the importance of checking cryptographic
protocol for faults," EUROCRYPT '97, LNCS 1233, Springer-Verlag, pp.37-51, 1997.
[7] J. Bos and M. Coster, "Addition chain heuristics," Advances in Cryptography, Crypto'89.
LNCS 435, Springer-Verlag, pp.400-407, 1990.
[8] W. Diffie and M.E. Hellman, "New directions in cryptography," IEEE Transactions on
Information Theory, Vol.IT-22, pp.644-654, 1979.
[9] T. ElGamal, "A public-key cryptosystem and a signature scheme based on discrete
logarithm," IEEE Transactions on Information Theory, Vol.IT-31, No.4, pp.469-472, 1985.
[10]U. Feige, A. Fiat, and A. Shamir, "Zero knowledge proofs of identity," Journal of Cryptology,
Vol.1, No.2, pp.77-94, 1988, .
[11] M. Joye, A.K. Lenstra and J-J Quisquater, "Chinese remaindering based cryptosystems in the
presence of faults," to appear in Journal of Cryptology.
[12] D.E. Knuth, The art of computer programming, Vol. II: Seminumerical algorithms.
Addison-Wesley, 1969.
- 11 -
IICM 第二卷 第三期 民國八十八年九月
[13]Chi-Sung Laih, Fu-Kuan Tu and Yung-Cheng Lee, "On the implementation of public key
cryptosystems against fault-based attack," IEICE Transactions on Fundamental of Electronics,
Communications and Computer Science, Vol.E82-A, No.6, pp.1082-1089, 1999.
[14] National Institute of Standards and Technology, "A proposed federal information processing
standard for digital signature standard (DSS)," Federal Register, Vol.56, No.169, pp.4298042982, August 31, 1991.
[15] T.R.N. Rao and E. Fujiware, Error-control coding for computer systems, Prentice Hall, pp.
389-409, 1989.
[16] C. P. Schnorr, "Efficient signature generation by smart cards," Journal of Cryptology, Vol.4,
No.3, pp.161-174, 1991.
- 12 -
Download