diff --git a/src/mimick_csharp_test.py b/src/mimick_csharp_test.py index cc218e3..5a5b51b 100644 --- a/src/mimick_csharp_test.py +++ b/src/mimick_csharp_test.py @@ -69,7 +69,7 @@ def darc_phase2(alphabet: AlphabetKey, medium: AlphabetKey, client_keys: ClientK 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 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 @@ -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 result = ( - alphabet ^ + alphabet_phase1 ^ 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) - 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): 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 -def darc_phase3(alphabet: AlphabetKey, medium: 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) - medium = transmit_medium(medium, client_keys.persistent.medium, client_keys.ephemeral.medium, mutual_keys.persistent.medium, mutual_keys.ephemeral.medium) - return alphabet_phase3, medium +def darc_phase3(alphabet_phase2: AlphabetKey, medium_phase2: AlphabetKey, client_keys: ClientKeys, mutual_keys: MutualKeys): + alphabet_phase3 = transmit_alphabet(alphabet_phase2, client_keys.persistent.data, client_keys.ephemeral.data, mutual_keys.persistent.data, mutual_keys.ephemeral.data) + 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_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 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__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 @@ -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 client_func_2 = outer_inner(mo1, mi1_mo2_mpi2_mo3) - result = result ^ (client_func_2(substitution) < co1_co2) - return result + alphabet_phase3 = result ^ (client_func_2(substitution) < co1_co2) + return alphabet_phase3 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 -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 - 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 - 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) - - 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 + co1_co2 = co1 << co2 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 - result = ( - darc_phase2 ^ - mutual_func_1(substitution) - ) - - 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) + mi1_mo2 = (mutual_persistent_keys.inner_key_1 << mutual_ephemeral_keys.inner_key_1) < mo2 + mpa_mea_mo1_mi1_mo2 = (ma < mo1) << mi1_mo2 + result = (alphabet_phase1 ^ mpa_mea_mo1_mi1_mo2) << (mutual_persistent_keys.inner_key_2 < mo3) + alphabet_phase3 = result < co1_co2 + return alphabet_phase3 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"] # ), - # medium=ClientPersistentMediumKeys( + # medium_phase2=ClientPersistentMediumKeys( # outer_key_1=client_persistent_keys["outer_key_1"], # outer_key_2=client_persistent_keys["outer_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"], # 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_2=client_ephemeral_keys["outer_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"], # inner_key_2=server_persistent_keys["inner_key_2"] # ), - # medium=ServerPersistentMediumKeys( + # medium_phase2=ServerPersistentMediumKeys( # alpha_key=server_persistent_keys["alpha_key"], # ) # ), @@ -441,7 +406,7 @@ if __name__ == "__main__": # alpha_key=server_ephemeral_keys["alpha_key"], # inner_key_2=server_ephemeral_keys["inner_key_2"] # ), - # medium=ServerEphemeralMediumKeys( + # medium_phase2=ServerEphemeralMediumKeys( # alpha_key=server_ephemeral_keys["alpha_key"], # ) # ) @@ -457,7 +422,7 @@ if __name__ == "__main__": # inner_key_2=server_persistent_keys["FunctionKey"], # inner_key_1=server_persistent_keys["inner_key_1"], # ), - # medium=MutualPersistentMediumKeys( + # medium_phase2=MutualPersistentMediumKeys( # alpha_key=server_persistent_keys["alpha_key"], # outer_key_1=server_persistent_keys["outer_key_1"], # 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_6=mutual_ephemeral_keys["OuterServerShuffleFunctionEphemeralKey"] # ), - # medium=MutualEphemeralMediumKeys( + # medium_phase2=MutualEphemeralMediumKeys( # alpha_key=mutual_ephemeral_keys["MutualMediumEphemeralKey"], # inner_key_2=mutual_ephemeral_keys["FunctionMediumEphemeralKey"], # 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.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) - (phase1_alphabet, phase1_medium) = darc_phase1(alphabet, server_keys, mutual_keys) - (phase2_alphabet, phase2_medium) = darc_phase2(phase1_alphabet, phase1_medium, client_keys, mutual_keys) - (phase3_alphabet, phase3_medium) = darc_phase3(phase2_alphabet, phase2_medium, client_keys, mutual_keys) + (alphabet_phase1, medium_phase1) = darc_phase1(alphabet, server_keys, mutual_keys) + (alphabet_phase2, medium_phase2) = darc_phase2(alphabet_phase1, medium_phase1, client_keys, mutual_keys) + (_, phase3_medium) = darc_phase3(alphabet_phase2, medium_phase2, 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] darc_message = merge_message(phase3_alphabet, phase3_medium, client_keys, mutual_keys, original_message)