implement transceive alphabet
This commit is contained in:
@@ -69,7 +69,7 @@ def darc_phase2(alphabet: AlphabetKey, medium: AlphabetKey, client_keys: ClientK
|
|||||||
return alphabet_phase2, medium
|
return alphabet_phase2, medium
|
||||||
|
|
||||||
|
|
||||||
def receive_alphabet(alphabet: AlphabetKey, client_persistent_keys: ClientPersistentDataKeys, client_ephemeral_keys: ClientEphemeralDataKeys, mutual_persistent_keys: MutualPersistentDataKeys, mutual_ephemeral_keys: MutualEphemeralDataKeys):
|
def receive_alphabet(alphabet_phase1: AlphabetKey, client_persistent_keys: ClientPersistentDataKeys, client_ephemeral_keys: ClientEphemeralDataKeys, mutual_persistent_keys: MutualPersistentDataKeys, mutual_ephemeral_keys: MutualEphemeralDataKeys):
|
||||||
mo2 = mutual_persistent_keys.outer_key_2 << mutual_ephemeral_keys.outer_key_2
|
mo2 = mutual_persistent_keys.outer_key_2 << mutual_ephemeral_keys.outer_key_2
|
||||||
mi1_mo2: InnerKey = (mutual_persistent_keys.inner_key_1 << mutual_ephemeral_keys.inner_key_1) < mo2
|
mi1_mo2: InnerKey = (mutual_persistent_keys.inner_key_1 << mutual_ephemeral_keys.inner_key_1) < mo2
|
||||||
mo1 = mutual_persistent_keys.outer_key_1 << mutual_ephemeral_keys.outer_key_1
|
mo1 = mutual_persistent_keys.outer_key_1 << mutual_ephemeral_keys.outer_key_1
|
||||||
@@ -78,7 +78,7 @@ def receive_alphabet(alphabet: AlphabetKey, client_persistent_keys: ClientPersis
|
|||||||
|
|
||||||
substitution = client_ephemeral_keys.alpha_key ^ client_persistent_keys.alpha_key ^ mutual_persistent_keys.alpha_key
|
substitution = client_ephemeral_keys.alpha_key ^ client_persistent_keys.alpha_key ^ mutual_persistent_keys.alpha_key
|
||||||
result = (
|
result = (
|
||||||
alphabet ^
|
alphabet_phase1 ^
|
||||||
mutual_func_1(substitution)
|
mutual_func_1(substitution)
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -94,8 +94,8 @@ def receive_alphabet(alphabet: AlphabetKey, client_persistent_keys: ClientPersis
|
|||||||
|
|
||||||
client_func_1 = inner_outer(ci1, mo3_co1_co2)
|
client_func_1 = inner_outer(ci1, mo3_co1_co2)
|
||||||
|
|
||||||
return client_func_1(result)
|
alphabet_phase2 = client_func_1(result)
|
||||||
|
return alphabet_phase2
|
||||||
|
|
||||||
def receive_medium(medium: AlphabetKey, client_persistent_keys: ClientPersistentMediumKeys, client_ephemeral_keys: ClientEphemeralMediumKeys, mutual_persistent_keys: MutualPersistentMediumKeys, mutual_ephemeral_keys: MutualEphemeralMediumKeys):
|
def receive_medium(medium: AlphabetKey, client_persistent_keys: ClientPersistentMediumKeys, client_ephemeral_keys: ClientEphemeralMediumKeys, mutual_persistent_keys: MutualPersistentMediumKeys, mutual_ephemeral_keys: MutualEphemeralMediumKeys):
|
||||||
mutual_inner_key = mutual_persistent_keys.inner_key_1 << mutual_ephemeral_keys.inner_key_1
|
mutual_inner_key = mutual_persistent_keys.inner_key_1 << mutual_ephemeral_keys.inner_key_1
|
||||||
@@ -123,13 +123,13 @@ def receive_medium(medium: AlphabetKey, client_persistent_keys: ClientPersistent
|
|||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
def darc_phase3(alphabet: AlphabetKey, medium: AlphabetKey, client_keys: ClientKeys, mutual_keys: MutualKeys):
|
def darc_phase3(alphabet_phase2: AlphabetKey, medium_phase2: AlphabetKey, client_keys: ClientKeys, mutual_keys: MutualKeys):
|
||||||
alphabet_phase3 = transmit_alphabet(alphabet, client_keys.persistent.data, client_keys.ephemeral.data, mutual_keys.persistent.data, mutual_keys.ephemeral.data)
|
alphabet_phase3 = transmit_alphabet(alphabet_phase2, client_keys.persistent.data, client_keys.ephemeral.data, mutual_keys.persistent.data, mutual_keys.ephemeral.data)
|
||||||
medium = transmit_medium(medium, client_keys.persistent.medium, client_keys.ephemeral.medium, mutual_keys.persistent.medium, mutual_keys.ephemeral.medium)
|
medium_phase3 = transmit_medium(medium_phase2, client_keys.persistent.medium, client_keys.ephemeral.medium, mutual_keys.persistent.medium, mutual_keys.ephemeral.medium)
|
||||||
return alphabet_phase3, medium
|
return alphabet_phase3, medium_phase3
|
||||||
|
|
||||||
|
|
||||||
def transmit_alphabet(alphabet: DarcKey, client_persistent_keys: ClientPersistentDataKeys, client_ephemeral_keys: ClientEphemeralDataKeys, mutual_persistent_keys: MutualPersistentDataKeys, mutual_ephemeral_keys: MutualEphemeralDataKeys):
|
def transmit_alphabet(alphabet_phase2: DarcKey, client_persistent_keys: ClientPersistentDataKeys, client_ephemeral_keys: ClientEphemeralDataKeys, mutual_persistent_keys: MutualPersistentDataKeys, mutual_ephemeral_keys: MutualEphemeralDataKeys):
|
||||||
mo2 = mutual_persistent_keys.outer_key_2 << mutual_ephemeral_keys.outer_key_2
|
mo2 = mutual_persistent_keys.outer_key_2 << mutual_ephemeral_keys.outer_key_2
|
||||||
mo3 = mutual_persistent_keys.outer_key_3 << mutual_ephemeral_keys.outer_key_3
|
mo3 = mutual_persistent_keys.outer_key_3 << mutual_ephemeral_keys.outer_key_3
|
||||||
|
|
||||||
@@ -141,7 +141,7 @@ def transmit_alphabet(alphabet: DarcKey, client_persistent_keys: ClientPersisten
|
|||||||
|
|
||||||
ncei1_ncpi1_mpi2 = ~client_ephemeral_keys.inner_key_1 << ~client_persistent_keys.inner_key_1 << mutual_persistent_keys.inner_key_2
|
ncei1_ncpi1_mpi2 = ~client_ephemeral_keys.inner_key_1 << ~client_persistent_keys.inner_key_1 << mutual_persistent_keys.inner_key_2
|
||||||
ncei1_ncpi1_mpi2__mo3_co1_co2 = ncei1_ncpi1_mpi2 < mo3_co1_co2
|
ncei1_ncpi1_mpi2__mo3_co1_co2 = ncei1_ncpi1_mpi2 < mo3_co1_co2
|
||||||
result = alphabet << ncei1_ncpi1_mpi2__mo3_co1_co2
|
result = alphabet_phase2 << ncei1_ncpi1_mpi2__mo3_co1_co2
|
||||||
|
|
||||||
mo1 = mutual_persistent_keys.outer_key_1 << mutual_ephemeral_keys.outer_key_1
|
mo1 = mutual_persistent_keys.outer_key_1 << mutual_ephemeral_keys.outer_key_1
|
||||||
|
|
||||||
@@ -149,8 +149,8 @@ def transmit_alphabet(alphabet: DarcKey, client_persistent_keys: ClientPersisten
|
|||||||
|
|
||||||
mi1_mo2_mpi2_mo3 = (((mutual_persistent_keys.inner_key_1 << mutual_ephemeral_keys.inner_key_1) < mo2) << (mutual_persistent_keys.inner_key_2 < mo3)) #< co1_co2
|
mi1_mo2_mpi2_mo3 = (((mutual_persistent_keys.inner_key_1 << mutual_ephemeral_keys.inner_key_1) < mo2) << (mutual_persistent_keys.inner_key_2 < mo3)) #< co1_co2
|
||||||
client_func_2 = outer_inner(mo1, mi1_mo2_mpi2_mo3)
|
client_func_2 = outer_inner(mo1, mi1_mo2_mpi2_mo3)
|
||||||
result = result ^ (client_func_2(substitution) < co1_co2)
|
alphabet_phase3 = result ^ (client_func_2(substitution) < co1_co2)
|
||||||
return result
|
return alphabet_phase3
|
||||||
|
|
||||||
|
|
||||||
def transmit_medium(medium: DarcKey, client_persistent_keys: ClientPersistentMediumKeys, client_ephemeral_keys: ClientEphemeralMediumKeys, mutual_persistent_keys: MutualPersistentMediumKeys, mutual_ephemeral_keys: MutualEphemeralMediumKeys):
|
def transmit_medium(medium: DarcKey, client_persistent_keys: ClientPersistentMediumKeys, client_ephemeral_keys: ClientEphemeralMediumKeys, mutual_persistent_keys: MutualPersistentMediumKeys, mutual_ephemeral_keys: MutualEphemeralMediumKeys):
|
||||||
@@ -188,57 +188,22 @@ def transmit_medium(medium: DarcKey, client_persistent_keys: ClientPersistentMed
|
|||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
def transeive_alphabet(alphabet: DarcKey, client_persistent_keys: ClientPersistentDataKeys, client_ephemeral_keys: ClientEphemeralDataKeys, mutual_persistent_keys: MutualPersistentDataKeys, mutual_ephemeral_keys: MutualEphemeralDataKeys):
|
def transceive_alphabet(alphabet_phase1: DarcKey, client_persistent_keys: ClientPersistentDataKeys, client_ephemeral_keys: ClientEphemeralDataKeys, mutual_persistent_keys: MutualPersistentDataKeys, mutual_ephemeral_keys: MutualEphemeralDataKeys):
|
||||||
mo2 = mutual_persistent_keys.outer_key_2 << mutual_ephemeral_keys.outer_key_2
|
mo2 = mutual_persistent_keys.outer_key_2 << mutual_ephemeral_keys.outer_key_2
|
||||||
mi1_mo2: InnerKey = (mutual_persistent_keys.inner_key_1 << mutual_ephemeral_keys.inner_key_1) < mo2
|
|
||||||
mo1 = mutual_persistent_keys.outer_key_1 << mutual_ephemeral_keys.outer_key_1
|
|
||||||
|
|
||||||
mutual_func_1 = outer_inner(mo1, mi1_mo2)
|
|
||||||
|
|
||||||
substitution = client_ephemeral_keys.alpha_key ^ client_persistent_keys.alpha_key ^ mutual_persistent_keys.alpha_key
|
|
||||||
result = (
|
|
||||||
alphabet ^
|
|
||||||
mutual_func_1(substitution)
|
|
||||||
)
|
|
||||||
|
|
||||||
mo3 = mutual_persistent_keys.outer_key_3 << mutual_ephemeral_keys.outer_key_3
|
mo3 = mutual_persistent_keys.outer_key_3 << mutual_ephemeral_keys.outer_key_3
|
||||||
|
|
||||||
result = result < ~mo3
|
|
||||||
ci1 = client_persistent_keys.inner_key_1 << client_ephemeral_keys.inner_key_1
|
|
||||||
|
|
||||||
co1 = client_persistent_keys.outer_key_1 << client_ephemeral_keys.outer_key_1
|
co1 = client_persistent_keys.outer_key_1 << client_ephemeral_keys.outer_key_1
|
||||||
co2 = client_persistent_keys.outer_key_2 << client_ephemeral_keys.outer_key_2
|
co2 = client_persistent_keys.outer_key_2 << client_ephemeral_keys.outer_key_2
|
||||||
|
co1_co2 = co1 << co2
|
||||||
mo3_co1_co2 = mo3 << co1 << co2
|
|
||||||
|
|
||||||
client_func_1 = inner_outer(ci1, mo3_co1_co2)
|
|
||||||
|
|
||||||
darc_phase2 = client_func_1(result)
|
|
||||||
mo2 = mutual_persistent_keys.outer_key_2 << mutual_ephemeral_keys.outer_key_2
|
|
||||||
mi1_mo2: InnerKey = (mutual_persistent_keys.inner_key_1 << mutual_ephemeral_keys.inner_key_1) < mo2
|
|
||||||
mo1 = mutual_persistent_keys.outer_key_1 << mutual_ephemeral_keys.outer_key_1
|
mo1 = mutual_persistent_keys.outer_key_1 << mutual_ephemeral_keys.outer_key_1
|
||||||
|
|
||||||
mutual_func_1 = outer_inner(mo1, mi1_mo2)
|
ma = mutual_persistent_keys.alpha_key ^ mutual_ephemeral_keys.alpha_key
|
||||||
|
|
||||||
substitution = client_ephemeral_keys.alpha_key ^ client_persistent_keys.alpha_key ^ mutual_persistent_keys.alpha_key
|
mi1_mo2 = (mutual_persistent_keys.inner_key_1 << mutual_ephemeral_keys.inner_key_1) < mo2
|
||||||
result = (
|
mpa_mea_mo1_mi1_mo2 = (ma < mo1) << mi1_mo2
|
||||||
darc_phase2 ^
|
result = (alphabet_phase1 ^ mpa_mea_mo1_mi1_mo2) << (mutual_persistent_keys.inner_key_2 < mo3)
|
||||||
mutual_func_1(substitution)
|
alphabet_phase3 = result < co1_co2
|
||||||
)
|
return alphabet_phase3
|
||||||
|
|
||||||
mo3 = mutual_persistent_keys.outer_key_3 << mutual_ephemeral_keys.outer_key_3
|
|
||||||
|
|
||||||
result = result < ~mo3
|
|
||||||
ci1 = client_persistent_keys.inner_key_1 << client_ephemeral_keys.inner_key_1
|
|
||||||
|
|
||||||
co1 = client_persistent_keys.outer_key_1 << client_ephemeral_keys.outer_key_1
|
|
||||||
co2 = client_persistent_keys.outer_key_2 << client_ephemeral_keys.outer_key_2
|
|
||||||
|
|
||||||
mo3_co1_co2 = mo3 << co1 << co2
|
|
||||||
|
|
||||||
client_func_1 = inner_outer(ci1, mo3_co1_co2)
|
|
||||||
|
|
||||||
return client_func_1(result)
|
|
||||||
|
|
||||||
|
|
||||||
def merge_message(alphabet: DarcKey, medium: DarcKey, client_keys: ClientKeys, mutual_keys: MutualKeys, input_sequence: list[int]):
|
def merge_message(alphabet: DarcKey, medium: DarcKey, client_keys: ClientKeys, mutual_keys: MutualKeys, input_sequence: list[int]):
|
||||||
@@ -401,7 +366,7 @@ if __name__ == "__main__":
|
|||||||
# inner_key_2=client_persistent_keys["inner_key_2"]
|
# inner_key_2=client_persistent_keys["inner_key_2"]
|
||||||
|
|
||||||
# ),
|
# ),
|
||||||
# medium=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_2=client_persistent_keys["inner_key_2"],
|
||||||
@@ -415,7 +380,7 @@ if __name__ == "__main__":
|
|||||||
# 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_2=client_ephemeral_keys["inner_key_2"]
|
||||||
# ),
|
# ),
|
||||||
# medium=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_2=client_ephemeral_keys["inner_key_2"],
|
||||||
@@ -431,7 +396,7 @@ if __name__ == "__main__":
|
|||||||
# 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_2=server_persistent_keys["inner_key_2"]
|
||||||
# ),
|
# ),
|
||||||
# medium=ServerPersistentMediumKeys(
|
# medium_phase2=ServerPersistentMediumKeys(
|
||||||
# alpha_key=server_persistent_keys["alpha_key"],
|
# alpha_key=server_persistent_keys["alpha_key"],
|
||||||
# )
|
# )
|
||||||
# ),
|
# ),
|
||||||
@@ -441,7 +406,7 @@ if __name__ == "__main__":
|
|||||||
# 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_2=server_ephemeral_keys["inner_key_2"]
|
||||||
# ),
|
# ),
|
||||||
# medium=ServerEphemeralMediumKeys(
|
# medium_phase2=ServerEphemeralMediumKeys(
|
||||||
# alpha_key=server_ephemeral_keys["alpha_key"],
|
# alpha_key=server_ephemeral_keys["alpha_key"],
|
||||||
# )
|
# )
|
||||||
# )
|
# )
|
||||||
@@ -457,7 +422,7 @@ if __name__ == "__main__":
|
|||||||
# inner_key_2=server_persistent_keys["FunctionKey"],
|
# inner_key_2=server_persistent_keys["FunctionKey"],
|
||||||
# inner_key_1=server_persistent_keys["inner_key_1"],
|
# inner_key_1=server_persistent_keys["inner_key_1"],
|
||||||
# ),
|
# ),
|
||||||
# medium=MutualPersistentMediumKeys(
|
# medium_phase2=MutualPersistentMediumKeys(
|
||||||
# alpha_key=server_persistent_keys["alpha_key"],
|
# alpha_key=server_persistent_keys["alpha_key"],
|
||||||
# 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"],
|
||||||
@@ -479,7 +444,7 @@ if __name__ == "__main__":
|
|||||||
# 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=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_2=mutual_ephemeral_keys["FunctionMediumEphemeralKey"],
|
||||||
# inner_key_3=mutual_ephemeral_keys["inner_key_3"],
|
# inner_key_3=mutual_ephemeral_keys["inner_key_3"],
|
||||||
@@ -507,11 +472,11 @@ if __name__ == "__main__":
|
|||||||
mutual_keys.persistent.data.alpha_key = mutual_keys.persistent.data.alpha_key ^ client_keys.persistent.data.alpha_key
|
mutual_keys.persistent.data.alpha_key = mutual_keys.persistent.data.alpha_key ^ client_keys.persistent.data.alpha_key
|
||||||
mutual_keys.persistent.medium.alpha_key = mutual_keys.persistent.medium.alpha_key ^ client_keys.persistent.medium.alpha_key
|
mutual_keys.persistent.medium.alpha_key = mutual_keys.persistent.medium.alpha_key ^ client_keys.persistent.medium.alpha_key
|
||||||
|
|
||||||
#phase3_alphabet = transeive_alphabet(alphabet, client_keys.persistent.data, client_keys.ephemeral.data, mutual_keys.persistent.data, mutual_keys.ephemeral.data)
|
(alphabet_phase1, medium_phase1) = darc_phase1(alphabet, server_keys, mutual_keys)
|
||||||
(phase1_alphabet, phase1_medium) = darc_phase1(alphabet, server_keys, mutual_keys)
|
(alphabet_phase2, medium_phase2) = darc_phase2(alphabet_phase1, medium_phase1, client_keys, mutual_keys)
|
||||||
(phase2_alphabet, phase2_medium) = darc_phase2(phase1_alphabet, phase1_medium, client_keys, mutual_keys)
|
(_, phase3_medium) = darc_phase3(alphabet_phase2, medium_phase2, client_keys, mutual_keys)
|
||||||
(phase3_alphabet, phase3_medium) = darc_phase3(phase2_alphabet, phase2_medium, client_keys, mutual_keys)
|
|
||||||
|
|
||||||
|
phase3_alphabet = transceive_alphabet(alphabet_phase1, client_keys.persistent.data, client_keys.ephemeral.data, mutual_keys.persistent.data, mutual_keys.ephemeral.data)
|
||||||
original_message = OuterKey.init_matrix(height).matrix[0]
|
original_message = OuterKey.init_matrix(height).matrix[0]
|
||||||
darc_message = merge_message(phase3_alphabet, phase3_medium, client_keys, mutual_keys, original_message)
|
darc_message = merge_message(phase3_alphabet, phase3_medium, client_keys, mutual_keys, original_message)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user