易中守恒、信达天下 | 热线：010-68873631 |
Nanxh2001@163.com
(Sep. 2011)
CPK is a combined public key based on identity. It is constructed on ECC over field Fp, E: y^{2} =x^{3} + ax + b mod p, the parameters are denoted as (a, b,G, n, p), in which a, b is coefficient, a,b,x,y∈Fp, p is prime, G is the base point of the addition group, n is the order of group generated by base point G. Let an arbitrary integer r∈Fn be a private key. Then the point, rG=R, is the corresponding public key. The ECC has a compounding feature: the sum of public keys and the sum of corresponding private keys are still the valid key pair. For example, if the sum of private keys is: r = (r_{1} + r_{2} + ┄ + r_{m}) mod n. The sum of corresponding public keys will be R = R_{1} + R_{2} + ┄ + R_{m}. Then (r, R) will be a new valid key pair. This is because R = R_{1} +R_{2} + ┄ +R_{m} = r
Combining-Matrix is divided into private matrix and public matrix, and is denoted as (r_{i,j}) and (R_{i,j}) respectively, r is random number less than n. Matrix (r_{i,j}) is kept only in KDC, and is used to produce private keys. The public matrix (R_{i,j}) is derived from private matrix (r_{i,j}), and used to compute public key.
r_{i,j}×G=R_{i,j}.
Public matrix is distributed to every entity and is used to compute public keys.
Identity-key is derived from Combining-matrix A. the size of matrix A is (h_{1},32). Private matrix and public matrix is denoted as (r_{i,j}) and (R_{i,j}) respectively. The mapping from identity to the coordinates of the matrix is implemented through a Hash function under a certain key.
The output is an integer string.
YS = Hash_{key}(ID) = w_{0},w_{1}, … ,w_{32};_{ }v_{0},…, v_{8};_{ }u_{0,}u_{1}
Where w_{0} is a 6-bit character used to determine the permutation disk(3-bit), and starting point(3-bit), and w_{1,}…,w_{32} is used to indicate the raw coordinate of matrix A, w is k_{1}-bit character, h_{1} is the raw length of matrix A and h_{1}=.
The first 8 columns of matrix A is not published, and the column coordinates are given by permutation table. The rest 24 column coordinates are used in natural order.
Permutation Table
(0) (1) (2) (3) (4) (5) (6) (7)
[0] 7 4 2 3 5 1 6 7
[1] 4 6 3 5 0 7 2 3
[2] 6 0 7 6 4 3 7 5
[3] 1 2 6 1 7 0 5 6
[4] 2 7 0 2 3 5 1 0
[5] 0 1 3 7 6 2 4 4
[6] 5 3 1 0 2 4 3 2
[7] 3 5 5 4 1 6 0 1
The column indicates the permutation disk and the row indicates the starting point. For an example, let the number of disk be 3, starting point of disk be 1, the permutation is as follows.
Input h g f e d c b a
span style='mso-ignore:vglayout; ;z-index:251657728;left:0px;margin-left:197px;margin-top:3px; width:141px;height:44px'
Permutation Table 3 4 0 7 2 1 6 5
0 7 6 5 4 3 2 1
Output f e b a g h d c
The output is the new coordinates of the first 8 column, and the rest 24 columns are denoted as t_{i}.
The private Identity-key isk is generated in the KMC through the addition on finite field Fn.
isk_{Alice }= .
The public key is computed by relying party through point addition on elliptic curve E
IPK_{Alice }= .
Particular-key is defined by district and generated by Combining-matrix B. The size of matrix B is (h_{2}, 8), and the private and public matrix are denoted as (q_{i,j}) and (Q_{i,j}), respectively. The raw coordinates are indicated by v_{i}_{ }in YS sequence.
v_{0} is a 6-bit character used to determine the permutation disk(3-bit), and starting point(3-bit). The output is denoted as t_{i} (i=1,…,8).
v_{1},…,v_{8} is k_{2}-bit character, h_{2} is the raw length of matrix B and h_{2}=.
The matrix B can provide (h_{2})^{8} different Separating-keys. Separating-key can be used repeatedly, i.e., different users can share the same Separating-key. Therefore, the number of Separating-keys can be much less than the number of users.
ssk_{Alice}= mod n
The corresponding public key is calculated by individuals
SPK_{Alice}=
General-key is a compound of Identity-key and Separating-key. Private General-key gsk is calculated by KMC for
gsk_{Alice}=(isk_{Alice} +ssk_{Alice}) mod n=
Private General-key
The corresponding public General-key is calculated by relying party
GPK_{Alice}=IPK_{Alice}+SPK_{Alice}
If a closed district network has the need to connect with outside, then users must have the General-key and District-key at the same time.
Particular-key is defined by district and generated by Combining-matrix C. The size of matrix C is (h_{3}, 2), and the private and public matrix are denoted as (p_{i,j}) and (P_{i,j}), respectively. The raw coordinates are indicated by u_{i} in YS sequence and the column coordinates are used in natural order.
u_{1,…,}u_{2 }is k_{3}-bit character, h_{3} is the raw length of matrix C and h_{3}=. The matrix C can provide (h_{3})^{2} different Particular-keys.
psk_{Alice}＝mod n
The corresponding public key is
PPK_{Alice}＝
DPK_{Alice}=GPK_{Alice}+PPK_{Alice}_{r}
The signing function is as follows.
SIG_{alice}(h)=(s, c)
Where
kG = (x_{1}, y_{1}) (1)
c = x_{1}^{2} mod 2^{m} (2)
s=k^{-1 }{h +
Where 2^{m} is used to select the length of checking code, if m=40, then the probability of wrong judgment will only be 1/2^{40}, while the sign length will be shortened greatly.
The verification function is as follows.
VER_{ALICE}(s)=c’
Where
Bob calculate the public key according to identity.
GPK_{Alice}=IPK_{Alice}+SPK_{Alice}=
Bob verifies the sign according to sign=(s, c)
s^{-1 }h G + s^{-1 }c
c’ = (x_{1}’)^{2} mod 2^{m} (3)
If c= c’, the sign can be accepted.
The encrypting function is as follows.
ENC_{BOB}(r)=β
E_{key}(data)=code
Where ENC means encryption with asymmetric key, BOB is public key, r is a random number, E means encryption with symmetric key.
GPK_{Bob}= IPK_{Bob}+SPK_{Bob}=BOB (1)
r·BOB=β (2)
r G=(x_{1}, y_{1}) (3)
key = x_{1}^{2} mod 2^{64(or 128)} (4)
E_{key }(data) = code (5)
The encrypting function is as follows.
DEC_{bob}(β)=r
D_{key}(code)=data
Where DEC means decryption with asymmetric key, bob is private key, D means decryption with symmetric key.
Bob calculates β with his privat key bob in the ID-card
bob^{-1 }β = bob^{-1 }(r BOB)= r G =(x_{1}, y_{1}) (1)
key = x_{1}^{2} mod ^{264(or 128)} (2)
D_{key }(code) = data (3).
CPK-chip provides 32K E^{2}ROM for the security of key variables. The security is related to two main aspects: the security of system keys and the security of individual keys.
1. The Security of System Keys
Let the dimension of matrix A be n_{1}, matrix B be n_{2}, the number of known private key be m_{1}, and the number of user be m_{2}, If m_{1} < (n_{1}+n_{2}), then the system keys will be secure. However, following measures must be added to assure the security.
1) It will be hard to obtain the private keys. The private key in ID-card is protected by E^{2}ROM. It cannot be read from outside, and will be disappeared automatically when someone attempts to anatomize the chip.
2) It will be hard to describe the equations. The mapping procedure is kept private so that the linear equation can not be described.
3) It will be hard to solve the equations. The false cards will be used normally in the system, which will result in no solution for the equation.
2. The Security of Individual Keys
Whole or parts of public Combining-matrix are kept secret in E^{2}ROM of ID-card. The public key generating procedure and public keys are not exposed to outside. The works with private key such as signature and decryption must be done inside the chip, and the private key can never be exposed. In the same way, the works with public key such as verification and encryption can be done inside the chip, and the public key can never be exposed. Individual keys are mainly used in signature function and key delivery function. If the functions are secure, then the individual keys are secure, too.
1) Individual keys in the signature function
Only Hash code h, sign code s and check code c are open factors in the process of signature function, where
s = k^{-1 }(h +
c = x_{1}^{2} mod 2^{m} (2)
And x_{1}comes from
k G=(x_{1}, y_{1}) (3)
In the item (1), there are two unknown factors included, the random number k and private key alice, and they can not be separated form each other. Therefore there is no unique solution.
In the item (2), there is only one unknown factor x_{1}, and the exhaustion may be available. Let the key length n=192, check code length m=40, then there will be 2^{192}/2^{40}=2^{152 }possible results that accord with c.
It will cause 2^{152} possible k in item (3). Back to item (1), there still is 2^{152} possible private key
In addition, in this case, the probability of wrong judgment made in verification is only 1/2^{40}, but it will greatly shorten the length of sign code (shortened to 32 Byte from 48 Byte).
2) Individual keys in key the key delivery function
In the process of key delivery function, only the factors {β, code} are exposed, where
β = r BOB (1)
code = E_{key} (data) (2)
And the key comes from
r G = (x_{1}, y_{1}) (3)
key = x_{1}^{2} mod 2^{64 (or128)} (4)
In item (1), s is a product of random number r and public key BOB.
β = r BOB = r bob G = v G
Because v is a product of two factors, they can not be separated from each other.
In item (2), the key can be exhausted if the decrypted data provides distinguishing base. In this case, the key is a known factor. How to make the decrypted data not to be a distinguishing base is of another topic, and beyond the scope of this paper.
In item (4), if key is known, then x_{1} can be exhausted. Suppose that ECC modular n is 192-bit, the key length of bloc cipher is 64 or 128-bit, then there will be 2^{192}/2^{64}=2^{128 }or 2^{192}/2^{128}=2^{64 }possible x_{1} that accord with the key.
In item (3), one can find 2^{128 }or 2^{64} possible r on the base of the possible keys.
In item (1), one can find 2^{128}or 2^{64} possible public key BOB on the base of the possible r. Therefore, the public key BOB is secure.
In view of this, it is suggested that the width of bloc cipher could not be too wide, because a long data can provide a more high level of distinguishing base.
In CPK functional module, the input and output elements are as follows.
Functional module |
Input |
Output |
Signing module |
M |
(s, c) |
Verifying module |
ID, s |
c’ |
Encrypting module |
ID，data |
β, code |
Decrypting module |
β，code |
data |
CPK is an Identity-based cryptosystem. It integrates the key generation and distribution, and greatly reduces the complexity of the key management. The security of system key is ensured by a large group of main keys. It can be used in signature and authentication, encryption and decryption without any outside support.
Quantum computation makes the exhaustion search possible that was impossible in the past. The main way to cope with quantum computation is to make the exhausting search meaningless. If an equation has no distinguishing base, then the exhaustion turns to be meaningless. In such a case, it is nothing to do with the computing speed. In the existing ECC equation, aG=A, once the public key A is open, the private key a can be exhausted, because the public key A provides the distinguishing basis. Therefore, the public key must be kept secret. Under existing public key system, only the identity-based key system has the capacity to keep the public keys secret.