cleanup phase4

This commit is contained in:
2024-05-28 13:00:06 -05:00
parent 9c459536d5
commit c2afb48c39
5 changed files with 51 additions and 65 deletions

0
src/client_darc.py Normal file
View File

View File

@@ -1,8 +1,7 @@
from src.models import ServerEphemeralKeys, ServerPersistentKeys, ClientEphemeralKeys, ClientPersistentKeys, \ from src.models import (AlphabetKey, DarcKey, OuterKey, ClientKeys, ServerKeys,
MutualEphemeralKeys, AlphabetKey, DarcKey, OuterKey, MutualPersistentKeys, ClientKeys, ServerKeys, \ MutualKeys, ServerPersistentDataKeys, ServerEphemeralDataKeys, MutualPersistentDataKeys, MutualEphemeralDataKeys,
MutualKeys, ServerPersistentDataKeys, ServerEphemeralDataKeys, MutualPersistentDataKeys, MutualEphemeralDataKeys, \ ServerPersistentMediumKeys, ServerEphemeralMediumKeys, MutualPersistentMediumKeys, MutualEphemeralMediumKeys,
ServerPersistentMediumKeys, ServerEphemeralMediumKeys, MutualPersistentMediumKeys, MutualEphemeralMediumKeys, \ ClientPersistentDataKeys, ClientEphemeralDataKeys, ClientEphemeralMediumKeys, ClientPersistentMediumKeys, InnerKey)
ClientPersistentDataKeys, ClientEphemeralDataKeys, ClientEphemeralMediumKeys, ClientPersistentMediumKeys, InnerKey
import json import json
height = 256 height = 256
@@ -232,78 +231,65 @@ def merge_message(alphabet: DarcKey, medium: DarcKey, client_keys: ClientKeys, m
mmo6 = mutual_keys.persistent.medium.outer_key_6 << mutual_keys.ephemeral.medium.outer_key_6 mmo6 = mutual_keys.persistent.medium.outer_key_6 << mutual_keys.ephemeral.medium.outer_key_6
mmo4 = mutual_keys.persistent.medium.outer_key_4 << mutual_keys.ephemeral.medium.outer_key_4 mmo4 = mutual_keys.persistent.medium.outer_key_4 << mutual_keys.ephemeral.medium.outer_key_4
mmo5 = mutual_keys.persistent.medium.outer_key_5 << mutual_keys.ephemeral.medium.outer_key_5 mmo5 = mutual_keys.persistent.medium.outer_key_5 << mutual_keys.ephemeral.medium.outer_key_5
mpmi4_memi2 = mutual_keys.persistent.medium.inner_key_4 << mutual_keys.ephemeral.medium.inner_key_2 mmi4 = mutual_keys.persistent.medium.inner_key_4 << mutual_keys.ephemeral.medium.inner_key_4
nmmo6 = ~mmo6 nmmo6 = ~mmo6
message = medium ^ (a_i << (mmi3 < ~(mmo4 << mmo6))) message = medium ^ (a_i << (mmi3 < ~(mmo4 << mmo6)))
mmo5_nmmo6 = mmo5 << nmmo6 mmo5_nmmo6 = mmo5 << nmmo6
message = (message < mmo4) << (mpmi4_memi2 < mmo5_nmmo6) message = (message < mmo4) << (mmi4 < mmo5_nmmo6)
return message return message
def darc_phase_4(alphabet: AlphabetKey, darc_message: AlphabetKey, server_keys: ServerKeys, mutual_keys: MutualKeys) -> DarcKey: def darc_phase_4(alphabet: AlphabetKey, darc_message: AlphabetKey, server_keys: ServerKeys, mutual_keys: MutualKeys) -> DarcKey:
mutual_med_outer_key_6 = mutual_keys.persistent.medium.outer_key_6 << mutual_keys.ephemeral.medium.outer_key_6 mmo6 = mutual_keys.persistent.medium.outer_key_6 << mutual_keys.ephemeral.medium.outer_key_6
mutual_med_outer_key_4 = mutual_keys.persistent.medium.outer_key_4 << mutual_keys.ephemeral.medium.outer_key_4 mmo4 = mutual_keys.persistent.medium.outer_key_4 << mutual_keys.ephemeral.medium.outer_key_4
outer_key_1 = ~(mutual_med_outer_key_4 << mutual_med_outer_key_6) nmmo6_nmmo4 = ~(mmo4 << mmo6)
mutual_med_outer_key_4 = ~mutual_med_outer_key_4
mutual_med_outer_key_5 = mutual_keys.persistent.medium.outer_key_5 << mutual_keys.ephemeral.medium.outer_key_5 mmo5 = mutual_keys.persistent.medium.outer_key_5 << mutual_keys.ephemeral.medium.outer_key_5
mutual_med_outer_key_5 = mutual_med_outer_key_5 << outer_key_1 mmo5_nmmo6_nmmo4 = mmo5 << nmmo6_nmmo4
mutual_med_outer_key_2 = mutual_keys.persistent.medium.outer_key_2 << mutual_keys.ephemeral.medium.outer_key_2 mmo2 = mutual_keys.persistent.medium.outer_key_2 << mutual_keys.ephemeral.medium.outer_key_2
mutual_outer_key_3 = mutual_keys.persistent.data.outer_key_3 << mutual_keys.ephemeral.data.outer_key_3
mutual_med_outer_key_3 = mutual_keys.persistent.medium.outer_key_3 << mutual_keys.ephemeral.medium.outer_key_3 mmo3 = mutual_keys.persistent.medium.outer_key_3 << mutual_keys.ephemeral.medium.outer_key_3
mutual_med_inner_key_1 = mutual_keys.persistent.medium.inner_key_1 << mutual_keys.ephemeral.medium.inner_key_1 mmi3 = mutual_keys.persistent.medium.inner_key_3 << mutual_keys.ephemeral.medium.inner_key_3
mmi1 = mutual_keys.persistent.medium.inner_key_1 << mutual_keys.ephemeral.medium.inner_key_1
mutual_med_inner_key_2 = mutual_keys.persistent.medium.inner_key_2 < mutual_med_outer_key_3 mpmi2 = mutual_keys.persistent.medium.inner_key_2 < mmo3
inner_key_1 = (mutual_med_inner_key_1 < mutual_med_outer_key_2) << mutual_med_inner_key_2
inner_key_2 = mutual_keys.persistent.medium.inner_key_4 << mutual_keys.ephemeral.medium.inner_key_2 mmi4 = mutual_keys.persistent.medium.inner_key_4 << mutual_keys.ephemeral.medium.inner_key_4
inner_key_2 = inner_key_2 < mutual_med_outer_key_5 mmo1 = mutual_keys.persistent.medium.outer_key_1 << mutual_keys.ephemeral.medium.outer_key_1
inner_key_3 = inner_key_1 << inner_key_2
sub_med_mmo1 = (server_keys.persistent.medium.alpha_key ^ server_keys.ephemeral.medium.alpha_key ^ mutual_keys.persistent.medium.alpha_key ^ mutual_keys.ephemeral.medium.alpha_key) < mmo1
medium_unwrapped = (((darc_message < ~mmo4) << ~(mmi4 < mmo5_nmmo6_nmmo4)) ^ (sub_med_mmo1 << ((mmi1 < mmo2) << mpmi2))) << (~mmi3 < nmmo6_nmmo4)
mutual_med_outer_key_1 = mutual_keys.persistent.medium.outer_key_1 << mutual_keys.ephemeral.medium.outer_key_1 mdo3 = mutual_keys.persistent.data.outer_key_3 << mutual_keys.ephemeral.data.outer_key_3
mpi2_mdo3 = mutual_keys.persistent.data.inner_key_2 < mdo3
mdo2 = mutual_keys.persistent.data.outer_key_2 << mutual_keys.ephemeral.data.outer_key_2
message = darc_message < mutual_med_outer_key_4 mdi1 = mutual_keys.persistent.data.inner_key_1 << mutual_keys.ephemeral.data.inner_key_1
mdi1_mdo2_mpi2_mdo3 = (mdi1 < mdo2) << mpi2_mdo3
sdi1_mpdi2__mdo3 = (server_keys.persistent.data.inner_key_1 << server_keys.ephemeral.data.inner_key_1 << mutual_keys.persistent.data.inner_key_2) < mdo3
operand1 = server_keys.persistent.medium.alpha_key < mutual_med_outer_key_1 sdo1 = server_keys.persistent.data.outer_key_1 << server_keys.ephemeral.data.outer_key_1
operand2 = server_keys.ephemeral.medium.alpha_key < mutual_med_outer_key_1 alpha_sdo1__sdi1_mpdi2__mdo3 = (alphabet < sdo1) << sdi1_mpdi2__mdo3
operand3 = mutual_keys.persistent.medium.alpha_key < mutual_med_outer_key_1
operand4 = mutual_keys.ephemeral.medium.alpha_key < mutual_med_outer_key_1
message = message ^ (operand1 << inner_key_3) ^ (operand2 << inner_key_3) ^ (operand3 << inner_key_3) ^ (operand4 << inner_key_3) mdo1 = mutual_keys.persistent.data.outer_key_1 << mutual_keys.ephemeral.data.outer_key_1
mutual_med_inner_key_3 = mutual_keys.persistent.medium.inner_key_3 << mutual_keys.ephemeral.medium.inner_key_3 sub_mdo1 = (server_keys.persistent.data.alpha_key ^ server_keys.ephemeral.data.alpha_key ^ mutual_keys.persistent.data.alpha_key ^ mutual_keys.ephemeral.data.alpha_key) < mdo1
message = message << (~inner_key_2 << (~mutual_med_inner_key_3 < outer_key_1)) translated_alpha = alpha_sdo1__sdi1_mpdi2__mdo3 ^ (sub_mdo1 << mdi1_mdo2_mpi2_mdo3)
mutual_inner_key_2 = mutual_keys.persistent.data.inner_key_2 < mutual_outer_key_3 return resolve_message(
mutual_outer_key_2 = mutual_keys.persistent.data.outer_key_2 << mutual_keys.ephemeral.data.outer_key_2 translated_alpha.matrix,
medium_unwrapped.matrix
mutual_inner_key_1 = mutual_keys.persistent.data.inner_key_1 << mutual_keys.ephemeral.data.inner_key_1 )
inner_key_4 = (mutual_inner_key_1 < mutual_outer_key_2) << mutual_inner_key_2
inner_key_5 = ~(server_keys.ephemeral.data.inner_key_1 << mutual_keys.persistent.data.inner_key_2) << ~(server_keys.persistent.data.inner_key_1)
inner_key_5 = ~(inner_key_5 < mutual_outer_key_3)
server_outer_key_1 = server_keys.persistent.data.outer_key_1 << server_keys.ephemeral.data.outer_key_1
translated_alpha = (alphabet < server_outer_key_1) << inner_key_5
mutual_outer_key_1 = mutual_keys.persistent.data.outer_key_1 << mutual_keys.ephemeral.data.outer_key_1
operand1 = server_keys.persistent.data.alpha_key < mutual_outer_key_1
operand2 = server_keys.ephemeral.data.alpha_key < mutual_outer_key_1
operand3 = mutual_keys.persistent.data.alpha_key < mutual_outer_key_1
operand4 = mutual_keys.ephemeral.data.alpha_key < mutual_outer_key_1
translated_alpha = translated_alpha ^ (operand1 << inner_key_4) ^ (operand2 << inner_key_4) ^ (operand3 << inner_key_4) ^ (operand4 << inner_key_4)
return resolve_message(translated_alpha.matrix, message.matrix)
def resolve_message(translated_alphabet, translated_messasge): def resolve_message(translated_alphabet, translated_messasge):
@@ -348,13 +334,13 @@ if __name__ == "__main__":
# outer_key_1=client_persistent_keys["outer_key_1"], # outer_key_1=client_persistent_keys["outer_key_1"],
# outer_key_2=client_persistent_keys["outer_key_2"], # outer_key_2=client_persistent_keys["outer_key_2"],
# alpha_key=client_persistent_keys["alpha_key"], # alpha_key=client_persistent_keys["alpha_key"],
# inner_key_2=client_persistent_keys["inner_key_2"] # inner_key_4=client_persistent_keys["inner_key_4"]
# ), # ),
# medium_phase2=ClientPersistentMediumKeys( # medium_phase2=ClientPersistentMediumKeys(
# outer_key_1=client_persistent_keys["outer_key_1"], # outer_key_1=client_persistent_keys["outer_key_1"],
# outer_key_2=client_persistent_keys["outer_key_2"], # outer_key_2=client_persistent_keys["outer_key_2"],
# inner_key_2=client_persistent_keys["inner_key_2"], # inner_key_4=client_persistent_keys["inner_key_4"],
# alpha_key=client_persistent_keys["alpha_key"] # alpha_key=client_persistent_keys["alpha_key"]
# ) # )
# ), # ),
@@ -363,12 +349,12 @@ if __name__ == "__main__":
# outer_key_1=client_ephemeral_keys["outer_key_1"], # outer_key_1=client_ephemeral_keys["outer_key_1"],
# outer_key_2=client_ephemeral_keys["outer_key_2"], # outer_key_2=client_ephemeral_keys["outer_key_2"],
# alpha_key=client_ephemeral_keys["alpha_key"], # alpha_key=client_ephemeral_keys["alpha_key"],
# inner_key_2=client_ephemeral_keys["inner_key_2"] # inner_key_4=client_ephemeral_keys["inner_key_4"]
# ), # ),
# medium_phase2=ClientEphemeralMediumKeys( # medium_phase2=ClientEphemeralMediumKeys(
# outer_key_1=client_ephemeral_keys["outer_key_1"], # outer_key_1=client_ephemeral_keys["outer_key_1"],
# outer_key_2=client_ephemeral_keys["outer_key_2"], # outer_key_2=client_ephemeral_keys["outer_key_2"],
# inner_key_2=client_ephemeral_keys["inner_key_2"], # inner_key_4=client_ephemeral_keys["inner_key_4"],
# alpha_key=client_ephemeral_keys["alpha_key"] # alpha_key=client_ephemeral_keys["alpha_key"]
# ) # )
# ) # )
@@ -379,7 +365,7 @@ if __name__ == "__main__":
# data=ServerPersistentDataKeys( # data=ServerPersistentDataKeys(
# outer_key_1=server_persistent_keys["outer_key_1"], # outer_key_1=server_persistent_keys["outer_key_1"],
# alpha_key=server_persistent_keys["alpha_key"], # alpha_key=server_persistent_keys["alpha_key"],
# inner_key_2=server_persistent_keys["inner_key_2"] # inner_key_4=server_persistent_keys["inner_key_4"]
# ), # ),
# medium_phase2=ServerPersistentMediumKeys( # medium_phase2=ServerPersistentMediumKeys(
# alpha_key=server_persistent_keys["alpha_key"], # alpha_key=server_persistent_keys["alpha_key"],
@@ -389,7 +375,7 @@ if __name__ == "__main__":
# data=ServerEphemeralDataKeys( # data=ServerEphemeralDataKeys(
# outer_key_1=server_ephemeral_keys["outer_key_1"], # outer_key_1=server_ephemeral_keys["outer_key_1"],
# alpha_key=server_ephemeral_keys["alpha_key"], # alpha_key=server_ephemeral_keys["alpha_key"],
# inner_key_2=server_ephemeral_keys["inner_key_2"] # inner_key_4=server_ephemeral_keys["inner_key_4"]
# ), # ),
# medium_phase2=ServerEphemeralMediumKeys( # medium_phase2=ServerEphemeralMediumKeys(
# alpha_key=server_ephemeral_keys["alpha_key"], # alpha_key=server_ephemeral_keys["alpha_key"],
@@ -404,7 +390,7 @@ if __name__ == "__main__":
# outer_key_2=server_persistent_keys["outer_key_2"], # outer_key_2=server_persistent_keys["outer_key_2"],
# outer_key_6=server_persistent_keys["outer_key_6"], # outer_key_6=server_persistent_keys["outer_key_6"],
# alpha_key=server_persistent_keys["alpha_key"], # alpha_key=server_persistent_keys["alpha_key"],
# inner_key_2=server_persistent_keys["FunctionKey"], # inner_key_4=server_persistent_keys["FunctionKey"],
# inner_key_1=server_persistent_keys["inner_key_1"], # inner_key_1=server_persistent_keys["inner_key_1"],
# ), # ),
# medium_phase2=MutualPersistentMediumKeys( # medium_phase2=MutualPersistentMediumKeys(
@@ -412,7 +398,7 @@ if __name__ == "__main__":
# outer_key_1=server_persistent_keys["outer_key_1"], # outer_key_1=server_persistent_keys["outer_key_1"],
# outer_key_2=server_persistent_keys["outer_key_2"], # outer_key_2=server_persistent_keys["outer_key_2"],
# outer_key_6=server_persistent_keys["outer_key_6"], # outer_key_6=server_persistent_keys["outer_key_6"],
# inner_key_2=server_persistent_keys["inner_key_2"], # inner_key_4=server_persistent_keys["inner_key_4"],
# inner_key_1=server_persistent_keys["inner_key_1"], # inner_key_1=server_persistent_keys["inner_key_1"],
# outer_key_3=server_persistent_keys["outer_key_3"], # outer_key_3=server_persistent_keys["outer_key_3"],
# outer_key_5=server_persistent_keys["outer_key_5"], # outer_key_5=server_persistent_keys["outer_key_5"],
@@ -424,21 +410,21 @@ if __name__ == "__main__":
# ephemeral=MutualEphemeralKeys( # ephemeral=MutualEphemeralKeys(
# data=MutualEphemeralDataKeys( # data=MutualEphemeralDataKeys(
# alpha_key=mutual_ephemeral_keys["MutualEphemeralKey"], # alpha_key=mutual_ephemeral_keys["MutualEphemeralKey"],
# inner_key_2=mutual_ephemeral_keys["FunctionEphemeralKey"], # inner_key_4=mutual_ephemeral_keys["FunctionEphemeralKey"],
# outer_key_1=mutual_ephemeral_keys["OuterFunctionEphemeralKey"], # outer_key_1=mutual_ephemeral_keys["OuterFunctionEphemeralKey"],
# outer_key_2=mutual_ephemeral_keys["OuterFunctionFunctionEphemeralKey"], # outer_key_2=mutual_ephemeral_keys["OuterFunctionFunctionEphemeralKey"],
# outer_key_6=mutual_ephemeral_keys["OuterServerShuffleFunctionEphemeralKey"] # outer_key_6=mutual_ephemeral_keys["OuterServerShuffleFunctionEphemeralKey"]
# ), # ),
# medium_phase2=MutualEphemeralMediumKeys( # medium_phase2=MutualEphemeralMediumKeys(
# alpha_key=mutual_ephemeral_keys["MutualMediumEphemeralKey"], # alpha_key=mutual_ephemeral_keys["MutualMediumEphemeralKey"],
# inner_key_2=mutual_ephemeral_keys["FunctionMediumEphemeralKey"], # inner_key_4=mutual_ephemeral_keys["FunctionMediumEphemeralKey"],
# inner_key_3=mutual_ephemeral_keys["inner_key_3"], # inner_key_3=mutual_ephemeral_keys["inner_key_3"],
# outer_key_1=mutual_ephemeral_keys["outer_key_1"], # outer_key_1=mutual_ephemeral_keys["outer_key_1"],
# outer_key_2=mutual_ephemeral_keys["outer_key_2"], # outer_key_2=mutual_ephemeral_keys["outer_key_2"],
# outer_key_6=mutual_ephemeral_keys["outer_key_6"], # outer_key_6=mutual_ephemeral_keys["outer_key_6"],
# outer_key_3=mutual_ephemeral_keys["outer_key_3"], # outer_key_3=mutual_ephemeral_keys["outer_key_3"],
# outer_key_5=mutual_ephemeral_keys["outer_key_5"], # outer_key_5=mutual_ephemeral_keys["outer_key_5"],
# inner_key_2=mutual_ephemeral_keys["inner_key_2"], # inner_key_4=mutual_ephemeral_keys["inner_key_4"],
# outer_key_4=mutual_ephemeral_keys["outer_key_4"] # outer_key_4=mutual_ephemeral_keys["outer_key_4"]
# ) # )

View File

@@ -303,7 +303,7 @@ class MutualEphemeralMediumKeys(BaseModel):
outer_key_6: OuterKey outer_key_6: OuterKey
inner_key_1: InnerKey inner_key_1: InnerKey
inner_key_2: InnerKey inner_key_4: InnerKey
inner_key_3: InnerKey inner_key_3: InnerKey
@classmethod @classmethod
@@ -317,7 +317,7 @@ class MutualEphemeralMediumKeys(BaseModel):
outer_key_5=OuterKey.init_matrix(height), outer_key_5=OuterKey.init_matrix(height),
outer_key_6=OuterKey.init_matrix(height), outer_key_6=OuterKey.init_matrix(height),
inner_key_1=InnerKey.init_matrix(width, height), inner_key_1=InnerKey.init_matrix(width, height),
inner_key_2=InnerKey.init_matrix(width, height), inner_key_4=InnerKey.init_matrix(width, height),
inner_key_3=InnerKey.init_matrix(width, height), inner_key_3=InnerKey.init_matrix(width, height),
) )

View File

@@ -41,7 +41,7 @@ i0_i1_i2_v2 = (i0 << i1) << i2
print(i0_i1_i2_v0 == i0_i1_i2_v1 == i0_i1_i2_v2) print(i0_i1_i2_v0 == i0_i1_i2_v1 == i0_i1_i2_v2)
i0_i2_i1 = i0 << i2 << i1 i0_i2_i1 = i0 << i2 << i1
print(i0_i2_i1 == i0_i1_i2_v0) #print(i0_i2_i1 == i0_i1_i2_v0)
print(i0 == i0_i2_i1 << ~(i2 << i1)) print(i0 == i0_i2_i1 << ~(i2 << i1))
print(i0 == i0_i2_i1 << ~i1 << ~i2) print(i0 == i0_i2_i1 << ~i1 << ~i2)

0
src/server_darc.py Normal file
View File