From 3467118d6c692eeb78a814bb9c7c8e175817fbb3 Mon Sep 17 00:00:00 2001 From: sangge <2251250136@qq.com> Date: Tue, 17 Oct 2023 21:40:15 +0800 Subject: [PATCH 1/5] fix: remove setup function --- src/tpre.py | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/src/tpre.py b/src/tpre.py index a4eacd5..5f19e41 100644 --- a/src/tpre.py +++ b/src/tpre.py @@ -126,27 +126,6 @@ def jacobianMultiply( # 生成元 U = multiply(g, random.randint(0, sm2p256v1.P)) -# def Setup(sec: int) -> Tuple[CurveFp, Tuple[int, int], -# Tuple[int, int]]: -# ''' -# params: -# sec: an init safety param - -# return: -# G: sm2 curve -# g: generator -# U: another generator -# ''' - -# G = sm2p256v1 - -# g = (sm2p256v1.Gx, sm2p256v1.Gy) - -# tmp_u = random.randint(0, sm2p256v1.P) -# U = multiply(g, tmp_u) - -# return G, g, U - def hash2(double_G: Tuple[Tuple[int, int], Tuple[int, int]]) -> int: sm3 = Sm3() #pylint: disable=e0602 for i in double_G: -- 2.47.2 From df16e661f2cfc12300a2474af8f3f2b62b62cb0c Mon Sep 17 00:00:00 2001 From: sangge <2251250136@qq.com> Date: Tue, 17 Oct 2023 21:51:04 +0800 Subject: [PATCH 2/5] fix: rename hash --- src/tpre.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/tpre.py b/src/tpre.py index 5f19e41..8a88f20 100644 --- a/src/tpre.py +++ b/src/tpre.py @@ -234,7 +234,7 @@ def Decrypt(sk_A: int,C:Tuple[Tuple[ return dec_Data # GenerateRekey -def H5(id: int, D: int) -> int: +def hash5(id: int, D: int) -> int: sm3 = Sm3() #pylint: disable=e0602 sm3.update(id.to_bytes(32)) sm3.update(D.to_bytes(32)) @@ -242,7 +242,7 @@ def H5(id: int, D: int) -> int: hash = int.from_bytes(hash,'big') % G.P return hash -def H6(triple_G: Tuple[Tuple[int, int], +def hash6(triple_G: Tuple[Tuple[int, int], Tuple[int, int], Tuple[int, int]]) -> int: sm3 = Sm3() #pylint: disable=e0602 @@ -283,14 +283,14 @@ def GenerateReKey(sk_A, pk_B, N: int, T: int) -> list: f_modulus.append(random.randint(0, G.P - 1)) # 计算D - D = H6((X_A, pk_B, multiply(pk_B, sk_A))) + D = hash6((X_A, pk_B, multiply(pk_B, sk_A))) # 计算KF KF = [] for i in range(N): y = random.randint(0, G.P - 1) Y = multiply(g, y) - s_x = H5(i, D) # id需要设置 + s_x = hash5(i, D) # id需要设置 r_k = f(s_x, f_modulus, T) U1 = multiply(U, r_k) kFrag = (i, r_k, X_A, U1) @@ -379,10 +379,10 @@ def DecapsulateFrags(sk_B:int,pk_A:Tuple[int,int],cFrags:Tuple[Tuple[Tuple[int,i t = t+1 # 总共有t个片段,t为阈值 pkab = multiply(pk_A,sk_B) # pka^b - D = H6((pk_A,pk_B,pkab)) + D = hash6((pk_A,pk_B,pkab)) Sx = [] for id in idlist: # 从1到t - sxi = H5(id,D) # id 节点的编号 + sxi = hash5(id,D) # id 节点的编号 Sx.append(sxi) bis= [] # b ==> λ j = 1 -- 2.47.2 From dff57fc3c6b0d071fef1b453b800c2e98dc6e3c0 Mon Sep 17 00:00:00 2001 From: sangge <2251250136@qq.com> Date: Tue, 17 Oct 2023 21:54:52 +0800 Subject: [PATCH 3/5] fix: fix name error --- src/tpre.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tpre.py b/src/tpre.py index 8a88f20..4374bdb 100644 --- a/src/tpre.py +++ b/src/tpre.py @@ -403,8 +403,8 @@ def DecapsulateFrags(sk_B:int,pk_A:Tuple[int,int],cFrags:Tuple[Tuple[Tuple[int,i Vk = multiply(Vlist[k],bis[k]) E2 = add(Ek,E2) V2 = add(Vk,V2) - X_Ab = multiply(Xalist[0],b) # X_A^b X_A 的值是随机生成的xa,通过椭圆曲线上的倍点运算生成的固定的值 - d = hash3((Xalist[0],pk_B,X_Ab)) + X_Ab = multiply(X_Alist[0],sk_B) # X_A^b X_A 的值是随机生成的xa,通过椭圆曲线上的倍点运算生成的固定的值 + d = hash3((X_Alist[0],pk_B,X_Ab)) EV = add(E2,V2) # E2 + V2 EVd = multiply(EV,d) # (E2 + V2)^d K = KDF(EVd) -- 2.47.2 From 5278a1fc64256a339e7fa5e6c6d36b90f0f3f03d Mon Sep 17 00:00:00 2001 From: sangge <2251250136@qq.com> Date: Tue, 17 Oct 2023 22:04:49 +0800 Subject: [PATCH 4/5] fix: remove pk sk --- src/tpre.py | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/tpre.py b/src/tpre.py index 4374bdb..739847f 100644 --- a/src/tpre.py +++ b/src/tpre.py @@ -193,8 +193,8 @@ def GenerateKeyPair( return public_key, secret_key # 生成A和B的公钥和私钥 -pk_A, sk_A = GenerateKeyPair(0, ()) -pk_B, sk_B = GenerateKeyPair(0, ()) +#pk_A, sk_A = GenerateKeyPair(0, ()) +#pk_B, sk_B = GenerateKeyPair(0, ()) def Encrypt(pk: Tuple[int, int], m: int) -> Tuple[Tuple[ Tuple[int, int],Tuple[int, int], int], int]: @@ -254,6 +254,9 @@ def hash6(triple_G: Tuple[Tuple[int, int], return hash def f(x: int, f_modulus: list, T: int) -> int: + ''' + + ''' res = 0 for i in range(T): res += f_modulus[i] * pow(x, i) @@ -346,7 +349,8 @@ def ReEncrypt(kFrag:list, # N 是加密节点的数量,t是阈值 -def mergecfrag(N:int,t:int)->tuple[Tuple[Tuple[int,int],Tuple[int,int] +def mergecfrag(sk_A: int, pk_A: Tuple[int, int], pk_B: Tuple[int, int], + N: int, t: int)->tuple[Tuple[Tuple[int,int],Tuple[int,int] ,int,Tuple[int,int]], ...]: cfrags = () kfrags = GenerateReKey(sk_A,pk_B,N,t) @@ -360,8 +364,11 @@ def mergecfrag(N:int,t:int)->tuple[Tuple[Tuple[int,int],Tuple[int,int] -def DecapsulateFrags(sk_B:int,pk_A:Tuple[int,int],cFrags:Tuple[Tuple[Tuple[int,int],Tuple[int,int],int,Tuple[int,int]]] - ,capsule:Tuple[Tuple[int,int],Tuple[int,int],int]) -> int: +def DecapsulateFrags(sk_B:int, + pk_B: Tuple[int, int], + pk_A:Tuple[int,int], + cFrags:Tuple[Tuple[Tuple[int,int],Tuple[int,int],int,Tuple[int,int]]] + ) -> int: ''' return: K: sm4 key @@ -413,13 +420,14 @@ def DecapsulateFrags(sk_B:int,pk_A:Tuple[int,int],cFrags:Tuple[Tuple[Tuple[int,i # M = IAEAM(K,enc_Data) -def DecryptFrags(sk_B:int, - pk_A:Tuple[int,int], - cFrags:Tuple[Tuple[Tuple[int,int],Tuple[int,int],int,Tuple[int,int]]], - C:Tuple[Tuple[Tuple[int,int],Tuple[int,int],int],int] - )->int: +def DecryptFrags(sk_B: int, + pk_B: Tuple[int, int], + pk_A: Tuple[int,int], + cFrags: Tuple[Tuple[Tuple[int,int],Tuple[int,int],int,Tuple[int,int]]], + C: Tuple[Tuple[Tuple[int,int],Tuple[int,int],int],int] + ) -> int: capsule,enc_Data = C # 加密后的密文 - K = DecapsulateFrags(sk_B,pk_A,cFrags,capsule) + K = DecapsulateFrags(sk_B, pk_B, pk_A,cFrags) iv = b'tpretpretpretpre' sm4_dec = Sm4Cbc(K, iv, DO_DECRYPT) #pylint: disable= e0602 -- 2.47.2 From f9e22fa39ce8e90a70d0f613fe179304d031aa4d Mon Sep 17 00:00:00 2001 From: sangge <2251250136@qq.com> Date: Tue, 17 Oct 2023 22:06:04 +0800 Subject: [PATCH 5/5] feat: start trace demo --- .gitignore | 1 - src/demo.py | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 src/demo.py diff --git a/.gitignore b/.gitignore index c8705f0..80d5f5f 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,3 @@ test.py example.py ReEncrypt.py -src/demo.py diff --git a/src/demo.py b/src/demo.py new file mode 100644 index 0000000..ad5f059 --- /dev/null +++ b/src/demo.py @@ -0,0 +1,3 @@ +from tpre import * + + -- 2.47.2