working version of darc
This commit is contained in:
@@ -237,7 +237,6 @@ def merge_message(alphabet: DarcKey, medium: DarcKey, client_peristent_keys: Cli
|
||||
|
||||
message = operand ^ (operand1 << inner_function_key_applied)
|
||||
|
||||
|
||||
outer_position_shuffle_function_key_applied = client_peristent_keys.OuterPositionShuffleFunctionMediumKey << mutual_ephemeral_keys.OuterPositionShuffleFunctionMediumEphemeralKey
|
||||
position_shuffle_key_applied = client_peristent_keys.PositionShuffleMediumKey << mutual_ephemeral_keys.PositionShuffleMediumEphemeralKey
|
||||
|
||||
@@ -288,26 +287,6 @@ def darc_phase_4(darc_message: DarcKey, server_persistent_keys: ServerPersistent
|
||||
|
||||
rx_data = operand ^ (operand1 << inner_key) ^ (operand2 << inner_key) ^ (operand3 << inner_key) ^ (operand4 << inner_key)
|
||||
|
||||
|
||||
"""
|
||||
|
||||
FunctionTranslation PositionFunctionKey = ServerPersistentKeys.PositionFunctionMediumKey;
|
||||
FunctionTranslation PositionFunctionEphemeralKey = MutualEphemeralKeys.PositionFunctionMediumEphemeralKey;
|
||||
FunctionTranslation PositionFunctionEphemeralKeyApplied = new FunctionTranslation { Data = Transform.TransformationCompliment(Transform.PermuteInnerTransformation(PositionFunctionKey.Data, PositionFunctionEphemeralKey.Data)) };
|
||||
|
||||
|
||||
#region Inner Shuffle
|
||||
|
||||
RxData = Transform.PermuteInnerTransformation(
|
||||
RxData.Convert<int>(),
|
||||
Transform.PermuteInnerTransformation(
|
||||
Transform.TransformationCompliment(
|
||||
PositionShuffleEphemeralKeyApplied.Data
|
||||
),
|
||||
Transform.PermuteOuterTransformation(
|
||||
PositionFunctionEphemeralKeyApplied.Data.Convert<byte>(),
|
||||
OuterPositionFunctionEphemeralKeyApplied.Data).Convert<int>())).Convert<byte>();
|
||||
"""
|
||||
position_function_ephemeral_key_applied = server_persistent_keys.PositionFunctionMediumKey << mutual_ephemeral_keys.PositionFunctionMediumEphemeralKey
|
||||
rx_data = rx_data << (~(position_shuffle_ephemeral_key_applied) << (~position_function_ephemeral_key_applied < outer_position_function_ephemeral_key_applied))
|
||||
|
||||
@@ -370,20 +349,52 @@ if __name__ == "__main__":
|
||||
server_ephemeral_keys = {k: {"matrix": v} for k, v in server_ephemeral_keys.items()}
|
||||
mutual_ephemeral_keys = {k: {"matrix": v} for k, v in mutual_ephemeral_keys.items()}
|
||||
|
||||
client_persistent_keys = ClientPersistentKeys(**client_persistent_keys)
|
||||
client_ephemeral_keys = ClientEphemeralKeys(**client_ephemeral_keys)
|
||||
server_persistent_keys = ServerPersistentKeys(**server_persistent_keys)
|
||||
server_ephemeral_keys = ServerEphemeralKeys(**server_ephemeral_keys)
|
||||
mutual_ephemeral_keys = MutualEphemeralKeys(**mutual_ephemeral_keys)
|
||||
# client_persistent_keys = ClientPersistentKeys(**client_persistent_keys)
|
||||
# client_ephemeral_keys = ClientEphemeralKeys(**client_ephemeral_keys)
|
||||
# server_persistent_keys = ServerPersistentKeys(**server_persistent_keys)
|
||||
# server_ephemeral_keys = ServerEphemeralKeys(**server_ephemeral_keys)
|
||||
# mutual_ephemeral_keys = MutualEphemeralKeys(**mutual_ephemeral_keys)
|
||||
|
||||
client_persistent_keys = ClientPersistentKeys.random_init(height, width)
|
||||
client_ephemeral_keys = ClientEphemeralKeys.random_init(height, width)
|
||||
server_persistent_keys = ServerPersistentKeys.random_init(height, width)
|
||||
server_ephemeral_keys = ServerEphemeralKeys.random_init(height, width)
|
||||
mutual_ephemeral_keys = MutualEphemeralKeys.random_init(height, width)
|
||||
|
||||
server_persistent_keys.ServerKey = server_persistent_keys.ServerKey ^ client_persistent_keys.MutualKey
|
||||
server_persistent_keys.ServerMediumKey = server_persistent_keys.ServerMediumKey ^ client_persistent_keys.MutualMediumKey
|
||||
|
||||
client_persistent_keys.MutualKey = client_persistent_keys.MutualKey ^ client_persistent_keys.ClientKey
|
||||
client_persistent_keys.MutualMediumKey = client_persistent_keys.MutualMediumKey ^ client_persistent_keys.ClientMediumKey
|
||||
|
||||
server_persistent_keys.MutualKey = client_persistent_keys.MutualKey
|
||||
server_persistent_keys.MutualMediumKey = client_persistent_keys.MutualMediumKey
|
||||
|
||||
server_persistent_keys.OuterFunctionKey = client_persistent_keys.OuterFunctionKey
|
||||
server_persistent_keys.OuterFunctionFunctionKey = client_persistent_keys.OuterFunctionFunctionKey
|
||||
server_persistent_keys.OuterServerShuffleFunctionKey = client_persistent_keys.OuterServerShuffleFunctionKey
|
||||
server_persistent_keys.FunctionKey = client_persistent_keys.FunctionKey
|
||||
server_persistent_keys.ClientShuffleKeyX = client_persistent_keys.ClientShuffleKeyX
|
||||
server_persistent_keys.OuterFunctionMediumKey = client_persistent_keys.OuterFunctionMediumKey
|
||||
server_persistent_keys.OuterFunctionFunctionMediumKey = client_persistent_keys.OuterFunctionFunctionMediumKey
|
||||
server_persistent_keys.OuterServerShuffleFunctionMediumKey = client_persistent_keys.OuterServerShuffleFunctionMediumKey
|
||||
server_persistent_keys.FunctionMediumKey = client_persistent_keys.FunctionMediumKey
|
||||
server_persistent_keys.ClientShuffleMediumKeyX = client_persistent_keys.ClientShuffleMediumKeyX
|
||||
server_persistent_keys.OuterPositionShuffleMediumKey = client_persistent_keys.OuterPositionShuffleMediumKey
|
||||
server_persistent_keys.OuterPositionShuffleFunctionMediumKey = client_persistent_keys.OuterPositionShuffleFunctionMediumKey
|
||||
server_persistent_keys.OuterPositionFunctionMediumKey = client_persistent_keys.OuterPositionFunctionMediumKey
|
||||
server_persistent_keys.PositionFunctionMediumKey = client_persistent_keys.PositionFunctionMediumKey
|
||||
server_persistent_keys.PositionShuffleMediumKey = client_persistent_keys.PositionShuffleMediumKey
|
||||
|
||||
|
||||
(phase1_alphabet, phase1_medium) = darc_phase1(server_persistent_keys, server_ephemeral_keys, mutual_ephemeral_keys)
|
||||
(phase2_alphabet, phase2_medium) = darc_phase2(phase1_alphabet, phase1_medium, client_persistent_keys, client_ephemeral_keys, mutual_ephemeral_keys)
|
||||
(phase3_alphabet, phase3_medium) = darc_phase3(phase2_alphabet, phase2_medium, client_persistent_keys, client_ephemeral_keys, mutual_ephemeral_keys)
|
||||
# original_message = [0, 2, 4, 6, 0, 5, 9, 9, 1, 7]
|
||||
|
||||
original_message = [0, 2, 4, 6]
|
||||
original_message = [0, 2, 4, 6, 7, 8, 9]
|
||||
darc_message = merge_message(phase3_alphabet, phase3_medium, client_persistent_keys, client_ephemeral_keys, mutual_ephemeral_keys, original_message)
|
||||
|
||||
message = darc_phase_4(darc_message, server_persistent_keys, server_ephemeral_keys, mutual_ephemeral_keys)
|
||||
|
||||
print(original_message)
|
||||
print(message)
|
||||
|
||||
Reference in New Issue
Block a user