This application is a continuation-in-part of application Ser. No. 11/501,305, filed Aug. 9, 2006, and of application Ser. No. 11/890,966, filed Aug. 8, 2007, both entitled STANDARD CELL FOR ARITHMETIC LOGIC UNIT AND CHIP CARD CONTROLLER, the entirety of which is hereby incorporated by reference.
The present invention relates generally to processors and controllers and standard cells for arithmetic logic units (ALUs) in such processors and controllers.
A standard cell for ALUs in microcontrollers may be implemented using a semi-custom design style. Chip card controllers have to meet high requirements in terms of resistance to invasive probing and/or non-invasive differential power analysis (DPA) of security-critical information. One prior art device uses bitwise XOR masking of all data using time-variant masks, so-called “one-time pad (OTP)” masks.
co
—
n=
s_n=a⊕b⊕ci (2).
The mirror adder thus logically combines the two operand bits a and b and the carry-in bit ci in order to obtain the inverted carry-out bit co_n and the inverted sum bit s_n. In a standard-cell implementation of the mirror adder, co_n and s_n are usually additionally inverted by two inverters, respectively, one per output, such that the outputs of the mirror adder cell are usually the carry bit co and the sum bit s.
When output signals produced by a conventional full adder are supplied with masked input data, the equations
y=a·b+b·c+c·a (3)
z=a⊕b⊕c (4)
are transformed under the “masking operation”, that is, the XOR combination
{circumflex over (x)}=x⊕k (5)
of x=a, b and c with an OTP bit k.
One then obtains
â·{circumflex over (b)}+{circumflex over (b)}·ĉ+ĉ·â=(a·b+b·c+c·a)⊕k=y⊕k=ŷ
and â⊕{circumflex over (b)}⊕ĉ=a⊕b⊕c⊕k=z⊕k={circumflex over (z)}. The “full adder equations” are form-invariant (covariant) under the “masking operation”: from input data masked with k, the full adder computes output data which is also obtained when output data from unmasked input data is masked with k.
The present invention will be described with respect to a preferred embodiment, in which:
Attempts to implement OTP masked ALU's using conventional standard cells have led to unacceptable values for the computing speed and energy expenditure. Because of this, commercial implementation of OTP-masked computation has been difficult.
In one embodiment the present disclosure provides a cell for arithmetic logic unit comprising a base unit operable to generate a masked inverted carry out bit co*_n and an inverted masked sum bit s*_n based on a first masked output a*, a second masked output b*, and a re-masked carry bit input ci*; a transformation unit coupled to the base unit, the transformation unit having a first masked input bit aka, a second masked input bit bkb, a first mask input bit ka, a second mask input bit kb, a third mask input bit ks, and a fourth mask input bit kp, wherein the transformation unit is operable to generate the first masked output a* based on the first masked input bit aka, the first mask input bit ka, and the fourth mask input bit kp; the second masked output b* based on the second masked input bit bkb, the second mask input bit kb, and fourth mask input bit kp; and a masked sum bit sk, based on the third mask input bit ks, the inverted masked sum bit s*_n, and the fourth mask input bit kp.
In another embodiment, the present disclosure provides a transformation unit in an arithmetic logic unit cell comprising a first logic unit logically combining a first masked input bit aka with a mask input bit ka for the first masked input bit and a mask input bit for a certain bit position kp to form a first masked output a*; a second logic unit logically combining a second masked input bit bkb with the mask input bit for a certain bit position kp and a mask input bit kb for the second masked input bit to form a second masked output b*; and a third logic unit logically combining an inverted masked sum bit s*_n with the mask input bit kp for a certain bit position and a mask input bit ks for the masked sum bit to form a masked sum bit sks
In yet another embodiment, the present disclosure provides a cell of an arithmetic logic unit of a certain bit position p comprising a control circuit being operable to receive a re-masked carry bit input ci*, a set of control inputs xe0, xe1 generated based on a mask input bit kp for a certain bit position, a mask input bit kp-1 for a previous bit position, a masked carry input bit ci*, a set of control signals n0, n1; a base circuit coupled to the control circuit, the base circuit being operable to receive a set of masked outputs a*, b*, and the re-masked carry bit input ci* and to generate an inverted masked carry out bit co*_n and an inverted masked sum bit s*_n; and a transformation circuit coupled to the base circuit, the transformation circuit logically combining a set of masked inputs aka, bkb and the inverted masked sum bit s*_n with a corresponding set of mask input bits ka, kb, ks and the mask input bit kp for a certain bit position.
From this, it follows that the relationship between co*_n and a*, b* and ci* in
co*
—
n=
and, secondly, that the equation for s*_n in
s*_n=
when xe1=xe0=ci*,
and, respectively,
s*
—
n=
for xe1=1, xe0=0
Other values for xe1 and xe0 are not needed in this embodiment.
With the definition
y*=y⊕kp, (9)
(where kp denotes the mask bit for bit position p) for masked data, it follows from the covariance of the full adder equations under the masking operation, first of all, that the circuit specified in
As for the inverted sum bit s*_n, i.e., the equations (7) and (8), (7) represents the conventional (covariant) full adder equation for the inverted sum bit if ci* denotes the carry bit masked with kp of bit position p. However, if it is provided that the carry-in bit ci* for bit position p is set to the inverse to mask bit kp (
s*_n=
for ci*=
Alternatively to equation (7), or to the ADD, and XNOR operations, as described above, the operations NAND and NOR can be implemented by (8). To this end, in addition to the conditions xe1=1, xe0=0 for the validity of (8), it should again be provided that the carry-in bit ci* for bit position p is equal to mask bit kp or to its inverse
for ci*=kp, and, respectively,
for ci*=
The following table summarizes the generation of xe1, xe0 and ci*:
a*=kp⊕ka⊕aka=a⊕kp
b*=kp⊕kb⊕bkb=b⊕kp
sks=
where it is assumed that, as mentioned above
aka=a⊕ka
bkb=b⊕kb
sks=s⊕ks
the plain text values masked with independent masks ka, kb and ks stand for a, b and s.
All circuit elements included in
Number | Date | Country | |
---|---|---|---|
Parent | 11501305 | Aug 2006 | US |
Child | 12770833 | US | |
Parent | 11890966 | Aug 2007 | US |
Child | 11501305 | US |