diff --git a/src/mimick_csharp_test.py b/src/mimick_csharp_test.py index e87d122..3f5a670 100644 --- a/src/mimick_csharp_test.py +++ b/src/mimick_csharp_test.py @@ -173,20 +173,19 @@ def transmit_medium(medium: DarcKey, client_persistent_keys: ClientPersistentMed inner_key_1 = mutual_inner_key_1 << mutual_inner_key_2 - client_shuffle_key_b = (~client_persistent_keys.inner_key_1) << mutual_persistent_keys.inner_key_2 - input_client_shuffle_key_b = client_inner_key_1 << client_shuffle_key_b - input_client_shuffle_key_b = input_client_shuffle_key_b < outer_key_2 - shuffled_items = medium << input_client_shuffle_key_b - outer_function_key_applied = mutual_persistent_keys.outer_key_1 << mutual_ephemeral_keys.outer_key_1 - input_outer_function_key = outer_function_key_applied << outer_key_1 + inner_key_2 = (~client_persistent_keys.inner_key_1) << mutual_persistent_keys.inner_key_2 + inner_key_3 = client_inner_key_1 << inner_key_2 + inner_key_3 = inner_key_3 < outer_key_2 - inner_function_key_applied = inner_key_1 - operand = shuffled_items - operand1 = client_ephemeral_keys.alpha_key_1 < input_outer_function_key - operand2 = client_persistent_keys.alpha_key_1 < input_outer_function_key - operand3 = mutual_ephemeral_keys.alpha_key_1 < input_outer_function_key + medium = medium << inner_key_3 + mutual_outer_key_1 = mutual_persistent_keys.outer_key_1 << mutual_ephemeral_keys.outer_key_1 + outer_key_3 = mutual_outer_key_1 << outer_key_1 - result = operand ^ (operand1 << inner_function_key_applied) ^ (operand2 << inner_function_key_applied) ^ (operand3 << inner_function_key_applied) + operand1 = client_ephemeral_keys.alpha_key_1 < outer_key_3 + operand2 = client_persistent_keys.alpha_key_1 < outer_key_3 + operand3 = mutual_ephemeral_keys.alpha_key_1 < outer_key_3 + + result = medium ^ (operand1 << inner_key_1) ^ (operand2 << inner_key_1) ^ (operand3 << inner_key_1) return result @@ -244,69 +243,65 @@ def merge_message(alphabet: DarcKey, medium: DarcKey, client_keys: ClientKeys, m def darc_phase_4(alphabet: AlphabetKey, darc_message: AlphabetKey, server_keys: ServerKeys, mutual_keys: MutualKeys): - outer_position_function_ephemeral_key_applied = mutual_keys.persistent.medium.outer_key_6 << mutual_keys.ephemeral.medium.outer_key_6 - outer_position_shuffle_ephemeral_key_applied = mutual_keys.persistent.medium.outer_key_4 << mutual_keys.ephemeral.medium.outer_key_4 + mutual_med_outer_key_6 = 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 - outer_position_function_ephemeral_key_applied = ~(outer_position_shuffle_ephemeral_key_applied << outer_position_function_ephemeral_key_applied) - outer_position_shuffle_ephemeral_key_applied = ~outer_position_shuffle_ephemeral_key_applied + outer_key_1 = ~(mutual_med_outer_key_4 << mutual_med_outer_key_6) + mutual_med_outer_key_4 = ~mutual_med_outer_key_4 - outer_position_shuffle_function_ephemeral_key_applied = mutual_keys.persistent.medium.outer_key_5 << mutual_keys.ephemeral.medium.outer_key_5 - outer_position_shuffle_function_ephemeral_key_applied = outer_position_shuffle_function_ephemeral_key_applied << outer_position_function_ephemeral_key_applied + mutual_med_outer_key_5 = 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 - outer_function_function_medium_ephemeral_key_applied = mutual_keys.persistent.medium.outer_key_2 << mutual_keys.ephemeral.medium.outer_key_2 - outer_server_shuffle_function_ephemeral_key_applied = mutual_keys.persistent.data.outer_key_3 << mutual_keys.ephemeral.data.outer_key_3 + mutual_med_outer_key_2 = 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 - outer_server_shuffle_function_medium_ephemeral_key_applied = mutual_keys.persistent.medium.outer_key_3 << mutual_keys.ephemeral.medium.outer_key_3 + mutual_med_outer_key_3 = mutual_keys.persistent.medium.outer_key_3 << mutual_keys.ephemeral.medium.outer_key_3 - function_medium_ephemeral_key_applied = mutual_keys.persistent.medium.inner_key_1 << mutual_keys.ephemeral.medium.inner_key_1 + mutual_med_inner_key_1 = mutual_keys.persistent.medium.inner_key_1 << mutual_keys.ephemeral.medium.inner_key_1 - client_shuffle_medium_key_x = mutual_keys.persistent.medium.inner_key_2 < outer_server_shuffle_function_medium_ephemeral_key_applied - client_shuffle_medium_key_x = (function_medium_ephemeral_key_applied < outer_function_function_medium_ephemeral_key_applied) << client_shuffle_medium_key_x + mutual_med_inner_key_2 = mutual_keys.persistent.medium.inner_key_2 < mutual_med_outer_key_3 + inner_key_1 = (mutual_med_inner_key_1 < mutual_med_outer_key_2) << mutual_med_inner_key_2 - position_shuffle_ephemeral_key_applied = mutual_keys.persistent.medium.inner_key_4 << mutual_keys.ephemeral.medium.inner_key_2 + inner_key_2 = mutual_keys.persistent.medium.inner_key_4 << mutual_keys.ephemeral.medium.inner_key_2 - position_shuffle_ephemeral_key_applied = position_shuffle_ephemeral_key_applied < outer_position_shuffle_function_ephemeral_key_applied - client_shuffle_medium_key_x = client_shuffle_medium_key_x << position_shuffle_ephemeral_key_applied + inner_key_2 = inner_key_2 < mutual_med_outer_key_5 + inner_key_3 = inner_key_1 << inner_key_2 - outer_function_medium_ephemeral_key_applied = mutual_keys.persistent.medium.outer_key_1 << mutual_keys.ephemeral.medium.outer_key_1 + mutual_med_outer_key_1 = mutual_keys.persistent.medium.outer_key_1 << mutual_keys.ephemeral.medium.outer_key_1 - rx_data = darc_message < outer_position_shuffle_ephemeral_key_applied + message = darc_message < mutual_med_outer_key_4 - inner_key = client_shuffle_medium_key_x - operand = rx_data - operand1 = server_keys.persistent.medium.alpha_key_1 < outer_function_medium_ephemeral_key_applied - operand2 = server_keys.ephemeral.medium.alpha_key_1 < outer_function_medium_ephemeral_key_applied - operand3 = mutual_keys.persistent.medium.alpha_key_1 < outer_function_medium_ephemeral_key_applied - operand4 = mutual_keys.ephemeral.medium.alpha_key_1 < outer_function_medium_ephemeral_key_applied + operand1 = server_keys.persistent.medium.alpha_key_1 < mutual_med_outer_key_1 + operand2 = server_keys.ephemeral.medium.alpha_key_1 < mutual_med_outer_key_1 + operand3 = mutual_keys.persistent.medium.alpha_key_1 < mutual_med_outer_key_1 + operand4 = mutual_keys.ephemeral.medium.alpha_key_1 < mutual_med_outer_key_1 - rx_data = operand ^ (operand1 << inner_key) ^ (operand2 << inner_key) ^ (operand3 << inner_key) ^ (operand4 << inner_key) + message = message ^ (operand1 << inner_key_3) ^ (operand2 << inner_key_3) ^ (operand3 << inner_key_3) ^ (operand4 << inner_key_3) - position_function_ephemeral_key_applied = mutual_keys.persistent.medium.inner_key_3 << mutual_keys.ephemeral.medium.inner_key_3 - rx_data = rx_data << (~(position_shuffle_ephemeral_key_applied) << (~position_function_ephemeral_key_applied < outer_position_function_ephemeral_key_applied)) + mutual_med_inner_key_3 = mutual_keys.persistent.medium.inner_key_3 << mutual_keys.ephemeral.medium.inner_key_3 + message = message << (~inner_key_2 << (~mutual_med_inner_key_3 < outer_key_1)) - client_shuffle_key_x = mutual_keys.persistent.data.inner_key_2 < outer_server_shuffle_function_ephemeral_key_applied - outer_function_function_ephemeral_key_applied = mutual_keys.persistent.data.outer_key_2 << mutual_keys.ephemeral.data.outer_key_2 + mutual_inner_key_2 = mutual_keys.persistent.data.inner_key_2 < mutual_outer_key_3 + mutual_outer_key_2 = mutual_keys.persistent.data.outer_key_2 << mutual_keys.ephemeral.data.outer_key_2 - function_ephemeral_key_applied = mutual_keys.persistent.data.inner_key_1 << mutual_keys.ephemeral.data.inner_key_1 - function_ephemeral_key_applied = (function_ephemeral_key_applied < outer_function_function_ephemeral_key_applied) << client_shuffle_key_x - server_shuffle_ephemeral_key_applied = ~(server_keys.persistent.data.inner_key_1 << mutual_keys.persistent.data.inner_key_2) << ~(server_keys.ephemeral.data.inner_key_1) - server_shuffle_ephemeral_key_applied = ~(server_shuffle_ephemeral_key_applied < outer_server_shuffle_function_ephemeral_key_applied) + 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.persistent.data.inner_key_1 << mutual_keys.persistent.data.inner_key_2) << ~(server_keys.ephemeral.data.inner_key_1) + inner_key_5 = ~(inner_key_5 < mutual_outer_key_3) - outer_server_shuffle_ephemeral_key_applied = server_keys.persistent.data.outer_key_1 << server_keys.ephemeral.data.outer_key_1 - alpha_prep = (alphabet < outer_server_shuffle_ephemeral_key_applied) << server_shuffle_ephemeral_key_applied + 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 - outer_function_ephemeral_key_applied = mutual_keys.persistent.data.outer_key_1 << mutual_keys.ephemeral.data.outer_key_1 + mutual_outer_key_1 = mutual_keys.persistent.data.outer_key_1 << mutual_keys.ephemeral.data.outer_key_1 - inner_key = function_ephemeral_key_applied - operand = alpha_prep - operand1 = server_keys.persistent.data.alpha_key_1 < outer_function_ephemeral_key_applied - operand2 = server_keys.ephemeral.data.alpha_key_1 < outer_function_ephemeral_key_applied - operand3 = mutual_keys.persistent.data.alpha_key_1 < outer_function_ephemeral_key_applied - operand4 = mutual_keys.ephemeral.data.alpha_key_1 < outer_function_ephemeral_key_applied - alpha_prep = operand ^ (operand1 << inner_key) ^ (operand2 << inner_key) ^ (operand3 << inner_key) ^ (operand4 << inner_key) + operand1 = server_keys.persistent.data.alpha_key_1 < mutual_outer_key_1 + operand2 = server_keys.ephemeral.data.alpha_key_1 < mutual_outer_key_1 + operand3 = mutual_keys.persistent.data.alpha_key_1 < mutual_outer_key_1 + operand4 = mutual_keys.ephemeral.data.alpha_key_1 < 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(alpha_prep.matrix, rx_data.matrix) + return resolve_message(translated_alpha.matrix, message.matrix) def resolve_message(translated_alphabet, translated_messasge): @@ -319,6 +314,7 @@ def resolve_message(translated_alphabet, translated_messasge): message.append(alphabet_map[alpha]) else: break + return message @@ -448,7 +444,6 @@ if __name__ == "__main__": #) #alphabet = AlphabetKey(**server_ephemeral_keys["Alphabet"]) - server_keys = ServerKeys.random_init(height, width) mutual_keys = MutualKeys.random_init(height, width) client_keys = ClientKeys.random_init(height, width)