remove old code
This commit is contained in:
@@ -1,51 +0,0 @@
|
|||||||
{
|
|
||||||
"cells": [
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": 1,
|
|
||||||
"metadata": {
|
|
||||||
"collapsed": true,
|
|
||||||
"ExecuteTime": {
|
|
||||||
"end_time": "2024-04-26T18:17:33.998346Z",
|
|
||||||
"start_time": "2024-04-26T18:17:33.995935Z"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"import random"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"random"
|
|
||||||
],
|
|
||||||
"metadata": {
|
|
||||||
"collapsed": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"metadata": {
|
|
||||||
"kernelspec": {
|
|
||||||
"display_name": "Python 3",
|
|
||||||
"language": "python",
|
|
||||||
"name": "python3"
|
|
||||||
},
|
|
||||||
"language_info": {
|
|
||||||
"codemirror_mode": {
|
|
||||||
"name": "ipython",
|
|
||||||
"version": 2
|
|
||||||
},
|
|
||||||
"file_extension": ".py",
|
|
||||||
"mimetype": "text/x-python",
|
|
||||||
"name": "python",
|
|
||||||
"nbconvert_exporter": "python",
|
|
||||||
"pygments_lexer": "ipython2",
|
|
||||||
"version": "2.7.6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nbformat": 4,
|
|
||||||
"nbformat_minor": 0
|
|
||||||
}
|
|
||||||
360
src/darc_key.py
360
src/darc_key.py
@@ -1,360 +0,0 @@
|
|||||||
from src.models import AlphabetKey, OuterShuffleKey, InnerShuffleKey, PersistentKeys, EphemeralKeys, DarcKey, Phase1Session, Session, TxData, Medium
|
|
||||||
import json
|
|
||||||
|
|
||||||
|
|
||||||
def get_test_keys():
|
|
||||||
with open("../testDarcKeys.json", 'r') as fp:
|
|
||||||
test_data = json.load(fp)
|
|
||||||
|
|
||||||
persistent_keys = PersistentKeys(
|
|
||||||
serverKey=AlphabetKey(
|
|
||||||
matrix=test_data["persistentKeys"]["serverKey"]
|
|
||||||
),
|
|
||||||
functionKey=InnerShuffleKey(
|
|
||||||
matrix=test_data["persistentKeys"]["functionKey"]
|
|
||||||
),
|
|
||||||
serverShuffleKey=InnerShuffleKey(
|
|
||||||
matrix=test_data["persistentKeys"]["serverShuffleKey"]
|
|
||||||
),
|
|
||||||
outerFunctionKey=OuterShuffleKey(
|
|
||||||
matrix=[test_data["persistentKeys"]["outerFunctionKey"]]
|
|
||||||
),
|
|
||||||
outerFunctionFunctionKey=OuterShuffleKey(
|
|
||||||
matrix=[test_data["persistentKeys"]["outerFunctionFunctionKey"]]
|
|
||||||
),
|
|
||||||
outerServerShuffleKey=OuterShuffleKey(
|
|
||||||
matrix=[test_data["persistentKeys"]["outerServerShuffleKey"]]
|
|
||||||
),
|
|
||||||
outerServerShuffleFunctionKey=OuterShuffleKey(
|
|
||||||
matrix=[test_data["persistentKeys"]["outerServerShuffleFunctionKey"]]
|
|
||||||
),
|
|
||||||
clientKey=AlphabetKey(
|
|
||||||
matrix=test_data["persistentKeys"]["clientKey"]
|
|
||||||
),
|
|
||||||
sharedKey=AlphabetKey(
|
|
||||||
matrix=test_data["persistentKeys"]["sharedKey"]
|
|
||||||
),
|
|
||||||
clientShuffleKeyX=InnerShuffleKey(
|
|
||||||
matrix=test_data["persistentKeys"]["clientShuffleKeyX"]
|
|
||||||
),
|
|
||||||
clientShuffleKeyA=InnerShuffleKey(
|
|
||||||
matrix=test_data["persistentKeys"]["clientShuffleKeyA"]
|
|
||||||
),
|
|
||||||
functionMediumKey=InnerShuffleKey(
|
|
||||||
matrix=test_data["persistentKeys"]["functionMediumKey"]
|
|
||||||
),
|
|
||||||
clientShuffleMediumKeyX=InnerShuffleKey(
|
|
||||||
matrix=test_data["persistentKeys"]["clientShuffleMediumKeyX"]
|
|
||||||
),
|
|
||||||
inputMediumData=AlphabetKey(
|
|
||||||
matrix=test_data["persistentKeys"]["inputMediumData"]
|
|
||||||
),
|
|
||||||
serverMediumKey=InnerShuffleKey(
|
|
||||||
matrix=test_data["persistentKeys"]["serverMediumKey"]
|
|
||||||
),
|
|
||||||
outerFunctionMediumKey=OuterShuffleKey(
|
|
||||||
matrix=[test_data["persistentKeys"]["outerFunctionMediumKey"]]
|
|
||||||
),
|
|
||||||
outerFunctionFunctionMediumKey=OuterShuffleKey(
|
|
||||||
matrix=[test_data["persistentKeys"]["outerFunctionFunctionMediumKey"]]
|
|
||||||
),
|
|
||||||
outerServerShuffleMediumKey=OuterShuffleKey(
|
|
||||||
matrix=[test_data["persistentKeys"]["outerServerShuffleMediumKey"]]
|
|
||||||
),
|
|
||||||
outerServerShuffleFunctionMediumKey=OuterShuffleKey(
|
|
||||||
matrix=[test_data["persistentKeys"]["outerServerShuffleFunctionMediumKey"]]
|
|
||||||
),
|
|
||||||
sharedMediumKey=AlphabetKey(
|
|
||||||
matrix=test_data["persistentKeys"]["sharedMediumKey"]
|
|
||||||
),
|
|
||||||
outerPositionFunctionMediumKey=OuterShuffleKey(
|
|
||||||
matrix=[test_data["persistentKeys"]["outerPositionFunctionMediumKey"]]
|
|
||||||
),
|
|
||||||
outerPositionShuffleMediumKey=OuterShuffleKey(
|
|
||||||
matrix=[test_data["persistentKeys"]["outerPositionShuffleMediumKey"]]
|
|
||||||
),
|
|
||||||
clientMediumKey=AlphabetKey(
|
|
||||||
matrix=test_data["persistentKeys"]["clientMediumKey"]
|
|
||||||
),
|
|
||||||
positionFunctionMediumKey=InnerShuffleKey(
|
|
||||||
matrix=test_data["persistentKeys"]["positionFunctionMediumKey"]
|
|
||||||
),
|
|
||||||
clientShuffleMediumKeyA=InnerShuffleKey(
|
|
||||||
matrix=test_data["persistentKeys"]["clientShuffleMediumKeyA"]
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
ephemeral_keys = EphemeralKeys(
|
|
||||||
serverEphemeralKey=AlphabetKey(
|
|
||||||
matrix=test_data["ephemeralKeys"]["serverEphemeralKey"]
|
|
||||||
),
|
|
||||||
sharedEphemeralKey=AlphabetKey(
|
|
||||||
matrix=test_data["ephemeralKeys"]["sharedEphemeralKey"]
|
|
||||||
),
|
|
||||||
functionEphemeralKey=InnerShuffleKey(
|
|
||||||
matrix=test_data["ephemeralKeys"]["functionEphemeralKey"]
|
|
||||||
),
|
|
||||||
outerFunctionEphemeralKey=OuterShuffleKey(
|
|
||||||
matrix=[test_data["ephemeralKeys"]["outerFunctionEphemeralKey"]]
|
|
||||||
),
|
|
||||||
outerFunctionFunctionEphemeralKey=OuterShuffleKey(
|
|
||||||
matrix=[test_data["ephemeralKeys"]["outerFunctionFunctionEphemeralKey"]]
|
|
||||||
),
|
|
||||||
outerServerShuffleFunctionEphemeralKey=OuterShuffleKey(
|
|
||||||
matrix=[test_data["ephemeralKeys"]["outerServerShuffleFunctionEphemeralKey"]]
|
|
||||||
),
|
|
||||||
serverShuffleEphemeralKey=InnerShuffleKey(
|
|
||||||
matrix=test_data["ephemeralKeys"]["serverShuffleEphemeralKey"]
|
|
||||||
),
|
|
||||||
outerServerShuffleEphemeralKey=OuterShuffleKey(
|
|
||||||
matrix=[test_data["ephemeralKeys"]["outerServerShuffleEphemeralKey"]]
|
|
||||||
),
|
|
||||||
serverMediumEphemeralKey=AlphabetKey(
|
|
||||||
matrix=test_data["ephemeralKeys"]["serverMediumEphemeralKey"]
|
|
||||||
),
|
|
||||||
sharedMediumEphemeralKey=AlphabetKey(
|
|
||||||
matrix=test_data["ephemeralKeys"]["sharedMediumEphemeralKey"]
|
|
||||||
),
|
|
||||||
functionMediumEphemeralKey=InnerShuffleKey(
|
|
||||||
matrix=test_data["ephemeralKeys"]["functionMediumEphemeralKey"]
|
|
||||||
),
|
|
||||||
positionFunctionMediumEphemeralKey=InnerShuffleKey(
|
|
||||||
matrix=test_data["ephemeralKeys"]["positionFunctionMediumEphemeralKey"]
|
|
||||||
),
|
|
||||||
outerFunctionMediumEphemeralKey=OuterShuffleKey(
|
|
||||||
matrix=[test_data["ephemeralKeys"]["outerFunctionMediumEphemeralKey"]]
|
|
||||||
),
|
|
||||||
outerFunctionFunctionMediumEphemeralKey=OuterShuffleKey(
|
|
||||||
matrix=[test_data["ephemeralKeys"]["outerFunctionFunctionMediumEphemeralKey"]]
|
|
||||||
),
|
|
||||||
outerPositionFunctionMediumEphemeralKey=OuterShuffleKey(
|
|
||||||
matrix=[test_data["ephemeralKeys"]["outerPositionFunctionMediumEphemeralKey"]]
|
|
||||||
),
|
|
||||||
outerServerShuffleFunctionMediumEphemeralKey=OuterShuffleKey(
|
|
||||||
matrix=[test_data["ephemeralKeys"]["outerServerShuffleFunctionMediumEphemeralKey"]]
|
|
||||||
),
|
|
||||||
outerServerShuffleMediumEphemeralKey=OuterShuffleKey(
|
|
||||||
matrix=[test_data["ephemeralKeys"]["outerServerShuffleMediumEphemeralKey"]]
|
|
||||||
),
|
|
||||||
outerPositionShuffleMediumEphemeralKey=OuterShuffleKey(
|
|
||||||
matrix=[test_data["ephemeralKeys"]["outerPositionShuffleMediumEphemeralKey"]]
|
|
||||||
),
|
|
||||||
interfaceConfig=AlphabetKey(
|
|
||||||
matrix=test_data["ephemeralKeys"]["interfaceConfig"]
|
|
||||||
),
|
|
||||||
outerClientShuffleKey=OuterShuffleKey(
|
|
||||||
matrix=[test_data["ephemeralKeys"]["outerClientShuffleKey"]]
|
|
||||||
),
|
|
||||||
outerClientShuffleMediumKey=OuterShuffleKey(
|
|
||||||
matrix=[test_data["ephemeralKeys"]["outerClientShuffleMediumKey"]]
|
|
||||||
),
|
|
||||||
outerClientShuffleFunctionKey=OuterShuffleKey(
|
|
||||||
matrix=[test_data["ephemeralKeys"]["outerClientShuffleFunctionKey"]]
|
|
||||||
),
|
|
||||||
outerClientShuffleFunctionMediumKey=OuterShuffleKey(
|
|
||||||
matrix=[test_data["ephemeralKeys"]["outerClientShuffleFunctionMediumKey"]]
|
|
||||||
),
|
|
||||||
clientEphemeral=AlphabetKey(
|
|
||||||
matrix=test_data["ephemeralKeys"]["clientEphemeral"]
|
|
||||||
),
|
|
||||||
clientEphemeralMedium=AlphabetKey(
|
|
||||||
matrix=test_data["ephemeralKeys"]["clientEphemeralMedium"]
|
|
||||||
),
|
|
||||||
clientShuffleEphemeralA=InnerShuffleKey(
|
|
||||||
matrix=test_data["ephemeralKeys"]["clientShuffleEphemeralA"]
|
|
||||||
),
|
|
||||||
clientShuffleEphemeralMediumA=InnerShuffleKey(
|
|
||||||
matrix=test_data["ephemeralKeys"]["clientShuffleEphemeralMediumA"]
|
|
||||||
)
|
|
||||||
)
|
|
||||||
return persistent_keys, ephemeral_keys
|
|
||||||
|
|
||||||
|
|
||||||
def test1():
|
|
||||||
with open("../darc.json", 'r') as fp:
|
|
||||||
darc = json.load(fp)
|
|
||||||
|
|
||||||
serverEphemeralKey = AlphabetKey(matrix=darc["serverEphemeralKey"])
|
|
||||||
serverKey = AlphabetKey(matrix=darc["serverKey"])
|
|
||||||
|
|
||||||
functionEphemeralKey = InnerShuffleKey(matrix=darc["functionEphemeralKey"])
|
|
||||||
functionKey = InnerShuffleKey(matrix=darc["functionKey"])
|
|
||||||
|
|
||||||
outerFunctionEphemeralKey = OuterShuffleKey(matrix=[darc["outerFunctionEphemeralKey"]])
|
|
||||||
outerFunctionFunctionEphemeralKey = OuterShuffleKey(matrix=[darc["outerFunctionFunctionEphemeralKey"]])
|
|
||||||
outerFunctionFunctionKey = OuterShuffleKey(matrix=[darc["outerFunctionFunctionKey"]])
|
|
||||||
|
|
||||||
outerServerShuffleEphemeralKey = OuterShuffleKey(matrix=[darc["outerServerShuffleEphemeralKey"]])
|
|
||||||
outerServerShuffleKey = OuterShuffleKey(matrix=[darc["outerServerShuffleKey"]])
|
|
||||||
interfaceConfig = AlphabetKey(matrix=darc["interfaceConfig"])
|
|
||||||
|
|
||||||
outerFunctionFunctionKeyApplied = outerFunctionFunctionKey << outerFunctionFunctionEphemeralKey
|
|
||||||
outerFunctionKeyApplied = outerFunctionFunctionKey << outerFunctionEphemeralKey
|
|
||||||
functionKeyApplied = functionKey << functionEphemeralKey
|
|
||||||
outerServerShuffleKeyApplied = outerServerShuffleKey << outerServerShuffleEphemeralKey
|
|
||||||
inputData = interfaceConfig < outerServerShuffleKeyApplied
|
|
||||||
|
|
||||||
serverKeyShuffled = serverKey < outerFunctionKeyApplied
|
|
||||||
serverEphemeralKeyShuffled = serverEphemeralKey < outerFunctionKeyApplied
|
|
||||||
functionEphemeralKeyAppliedShuffled = functionKeyApplied < outerFunctionFunctionKeyApplied
|
|
||||||
incoming = ((inputData ^ (serverKeyShuffled << functionEphemeralKeyAppliedShuffled)) ^
|
|
||||||
(serverEphemeralKeyShuffled << functionEphemeralKeyAppliedShuffled))
|
|
||||||
|
|
||||||
|
|
||||||
def translate(outerFunctionFunction: DarcKey, innerFunction: DarcKey, outerFunction: DarcKey, inputData: DarcKey, repeatKeys: list[DarcKey]):
|
|
||||||
innerFunctionShuffled = innerFunction < outerFunctionFunction
|
|
||||||
repeatKeysShuffled = [(darc_key < outerFunction) << innerFunctionShuffled for darc_key in repeatKeys]
|
|
||||||
result = inputData
|
|
||||||
for darc_key in repeatKeysShuffled:
|
|
||||||
result = result ^ darc_key
|
|
||||||
return result
|
|
||||||
|
|
||||||
|
|
||||||
def compute_incoming(persistent_keys, ephemeral_keys):
|
|
||||||
functionEphemeralKeyApplied = persistent_keys.functionKey << ephemeral_keys.functionEphemeralKey
|
|
||||||
outerFunctionEphemeralKeyApplied = persistent_keys.outerFunctionKey << ephemeral_keys.outerFunctionEphemeralKey
|
|
||||||
outerFunctionFunctionEphemeralKeyApplied = persistent_keys.outerFunctionFunctionKey << ephemeral_keys.outerFunctionFunctionEphemeralKey
|
|
||||||
outerServerShuffleEphemeralKeyApplied = persistent_keys.outerServerShuffleKey << ephemeral_keys.outerServerShuffleEphemeralKey
|
|
||||||
outerServerShuffleFunctionEphemeralKeyApplied = persistent_keys.outerServerShuffleFunctionKey << ephemeral_keys.outerServerShuffleFunctionEphemeralKey
|
|
||||||
inputData = ephemeral_keys.interfaceConfig < outerServerShuffleEphemeralKeyApplied
|
|
||||||
serverShuffleEphemeralKeyApplied = ephemeral_keys.serverShuffleEphemeralKey << persistent_keys.serverShuffleKey
|
|
||||||
serverShuffleEphemeralKeyApplied = serverShuffleEphemeralKeyApplied < outerServerShuffleFunctionEphemeralKeyApplied
|
|
||||||
inputData = inputData << serverShuffleEphemeralKeyApplied
|
|
||||||
|
|
||||||
incoming = translate(outerFunctionFunctionEphemeralKeyApplied, functionEphemeralKeyApplied, outerFunctionEphemeralKeyApplied, inputData, [persistent_keys.serverKey, ephemeral_keys.serverEphemeralKey])
|
|
||||||
return incoming
|
|
||||||
|
|
||||||
|
|
||||||
def compute_medium_temp(persistent_keys, ephemeral_keys):
|
|
||||||
|
|
||||||
functionMediumKey = persistent_keys.functionMediumKey
|
|
||||||
inputMediumData = persistent_keys.inputMediumData
|
|
||||||
outerFunctionMediumKey = persistent_keys.outerFunctionMediumKey
|
|
||||||
outerFunctionFunctionMediumKey = persistent_keys.outerFunctionFunctionMediumKey
|
|
||||||
functionEphemeralKeyApplied = functionMediumKey << ephemeral_keys.functionMediumEphemeralKey
|
|
||||||
outerFunctionEphemeralKeyApplied = outerFunctionMediumKey << ephemeral_keys.outerFunctionMediumEphemeralKey
|
|
||||||
outerFunctionFunctionEphemeralKeyApplied = outerFunctionFunctionMediumKey << ephemeral_keys.outerFunctionFunctionMediumEphemeralKey
|
|
||||||
mediumTemp = translate(outerFunctionFunctionEphemeralKeyApplied, functionEphemeralKeyApplied, outerFunctionEphemeralKeyApplied, inputMediumData, [ephemeral_keys.serverMediumEphemeralKey])
|
|
||||||
return mediumTemp
|
|
||||||
|
|
||||||
def medium_translation(persistent_keys: PersistentKeys, ephemeral_keys: EphemeralKeys, mediumTemp: DarcKey):
|
|
||||||
|
|
||||||
clientKey = persistent_keys.clientMediumKey
|
|
||||||
sharedKey = persistent_keys.sharedMediumKey
|
|
||||||
functionKey = persistent_keys.functionMediumKey
|
|
||||||
outerFunctionFunctionKey = persistent_keys.outerFunctionFunctionMediumKey
|
|
||||||
outerFunctionKey = persistent_keys.outerFunctionMediumKey
|
|
||||||
outerServerShuffleFunctionKey = persistent_keys.outerServerShuffleFunctionMediumKey
|
|
||||||
clientShuffleKeyA = persistent_keys.clientShuffleMediumKeyA
|
|
||||||
outerClientShuffleKey = ephemeral_keys.outerClientShuffleMediumKey
|
|
||||||
outerClientShuffleFunctionKey = ephemeral_keys.outerClientShuffleFunctionMediumKey
|
|
||||||
clientEphemeral = ephemeral_keys.clientEphemeralMedium
|
|
||||||
clientShuffleEphemeralA = ephemeral_keys.clientShuffleEphemeralMediumA
|
|
||||||
|
|
||||||
outerFunctionFunctionEphemeral = ephemeral_keys.outerFunctionFunctionMediumEphemeralKey
|
|
||||||
functionEphemeral = ephemeral_keys.functionMediumEphemeralKey
|
|
||||||
outerFunctionEphemeral = ephemeral_keys.outerFunctionMediumEphemeralKey
|
|
||||||
outerServerShuffleFunctionEphemeral = ephemeral_keys.outerServerShuffleFunctionMediumEphemeralKey
|
|
||||||
appliedOuterServerShuffleFunctionKey = outerServerShuffleFunctionKey << outerServerShuffleFunctionEphemeral
|
|
||||||
functionSalt = functionKey << functionEphemeral
|
|
||||||
appliedClientShuffleKeyA = clientShuffleKeyA << clientShuffleEphemeralA
|
|
||||||
appliedOuterFunctionKey = outerFunctionKey << outerFunctionEphemeral
|
|
||||||
appliedOuterFunctionFunctionKey = outerFunctionFunctionKey << outerFunctionFunctionEphemeral
|
|
||||||
valuesArray = mediumTemp
|
|
||||||
|
|
||||||
preResult = translate(appliedOuterFunctionFunctionKey, functionSalt, appliedOuterFunctionKey, valuesArray, [clientEphemeral, clientKey, sharedKey])
|
|
||||||
|
|
||||||
result = preResult << (appliedClientShuffleKeyA < appliedOuterServerShuffleFunctionKey)
|
|
||||||
outerClientShuffleKeyShuffled = outerClientShuffleKey << outerClientShuffleFunctionKey
|
|
||||||
result = result < outerClientShuffleKeyShuffled
|
|
||||||
return result
|
|
||||||
|
|
||||||
|
|
||||||
def phase1(persistent_keys: PersistentKeys, ephemeral_keys: EphemeralKeys) -> Phase1Session:
|
|
||||||
incoming = compute_incoming(persistent_keys, ephemeral_keys)
|
|
||||||
mediumTemp = compute_medium_temp(persistent_keys, ephemeral_keys)
|
|
||||||
medium_translated = medium_translation(persistent_keys, ephemeral_keys, mediumTemp)
|
|
||||||
|
|
||||||
session = Session(
|
|
||||||
guid="",
|
|
||||||
interfaceConfig=ephemeral_keys.interfaceConfig,
|
|
||||||
serverEphemeralKey=ephemeral_keys.serverEphemeralKey,
|
|
||||||
functionEphemeralKey=ephemeral_keys.functionEphemeralKey,
|
|
||||||
serverShuffleEphemeralKey=ephemeral_keys.serverShuffleEphemeralKey,
|
|
||||||
outerServerShuffleEphemeralKey=ephemeral_keys.outerServerShuffleEphemeralKey,
|
|
||||||
outerFunctionEphemeralKey=ephemeral_keys.outerFunctionEphemeralKey,
|
|
||||||
outerFunctionFunctionEphemeralKey=ephemeral_keys.outerFunctionFunctionEphemeralKey,
|
|
||||||
outerServerShuffleFunctionEphemeralKey=ephemeral_keys.outerServerShuffleFunctionEphemeralKey,
|
|
||||||
serverMediumEphemeralKey=ephemeral_keys.serverMediumEphemeralKey,
|
|
||||||
functionMediumEphemeralKey=ephemeral_keys.functionMediumEphemeralKey,
|
|
||||||
outerServerShuffleMediumEphemeralKey=ephemeral_keys.outerServerShuffleMediumEphemeralKey,
|
|
||||||
outerFunctionMediumEphemeralKey=ephemeral_keys.outerFunctionMediumEphemeralKey,
|
|
||||||
outerFunctionFunctionMediumEphemeralKey=ephemeral_keys.outerFunctionFunctionMediumEphemeralKey,
|
|
||||||
outerServerShuffleFunctionMediumEphemeralKey=ephemeral_keys.outerServerShuffleFunctionMediumEphemeralKey,
|
|
||||||
positionFunctionMediumEphemeralKey=ephemeral_keys.positionFunctionMediumEphemeralKey,
|
|
||||||
outerPositionFunctionMediumEphemeralKey=ephemeral_keys.outerPositionFunctionMediumEphemeralKey,
|
|
||||||
sharedEphemeralKey=ephemeral_keys.sharedEphemeralKey,
|
|
||||||
sharedMediumEphemeralKey=ephemeral_keys.sharedMediumEphemeralKey,
|
|
||||||
outerPositionShuffleMediumEphemeralKey=ephemeral_keys.outerPositionShuffleMediumEphemeralKey
|
|
||||||
)
|
|
||||||
|
|
||||||
txData = TxData(
|
|
||||||
data=incoming,
|
|
||||||
functionEphemeralKey=ephemeral_keys.functionEphemeralKey,
|
|
||||||
outerServerShuffleEphemeralKey=ephemeral_keys.outerServerShuffleEphemeralKey,
|
|
||||||
outerFunctionFunctionEphemeralKey=ephemeral_keys.outerFunctionFunctionEphemeralKey,
|
|
||||||
outerFunctionEphemeralKey=ephemeral_keys.outerFunctionEphemeralKey,
|
|
||||||
outerServerShuffleFunctionEphemeralKey=ephemeral_keys.outerServerShuffleFunctionEphemeralKey,
|
|
||||||
sharedEphemeralKey=ephemeral_keys.sharedEphemeralKey,
|
|
||||||
outerClientShuffleKey=ephemeral_keys.outerClientShuffleKey,
|
|
||||||
outerClientShuffleFunctionKey=ephemeral_keys.outerClientShuffleFunctionKey,
|
|
||||||
clientEphemeral=ephemeral_keys.clientEphemeral,
|
|
||||||
clientShuffleEphemeralA=ephemeral_keys.clientShuffleEphemeralA,
|
|
||||||
clientShuffleEphemeralB=~ephemeral_keys.clientShuffleEphemeralA
|
|
||||||
)
|
|
||||||
|
|
||||||
medium = Medium(
|
|
||||||
data=medium_translated,
|
|
||||||
functionEphemeralKey=ephemeral_keys.functionMediumEphemeralKey,
|
|
||||||
outerServerShuffleEphemeralKey=ephemeral_keys.outerServerShuffleMediumEphemeralKey,
|
|
||||||
outerFunctionFunctionEphemeralKey=ephemeral_keys.outerFunctionFunctionMediumEphemeralKey,
|
|
||||||
outerFunctionEphemeralKey=ephemeral_keys.outerFunctionMediumEphemeralKey,
|
|
||||||
outerServerShuffleFunctionEphemeralKey=ephemeral_keys.outerServerShuffleFunctionMediumEphemeralKey,
|
|
||||||
sharedEphemeralKey=ephemeral_keys.sharedMediumEphemeralKey,
|
|
||||||
positionFunctionMediumEphemeralKey=ephemeral_keys.positionFunctionMediumEphemeralKey,
|
|
||||||
outerPositionFunctionMediumEphemeralKey=ephemeral_keys.outerPositionFunctionMediumEphemeralKey,
|
|
||||||
outerPositionShuffleMediumEphemeralKey=ephemeral_keys.outerPositionShuffleMediumEphemeralKey,
|
|
||||||
outerClientShuffleMediumKey=ephemeral_keys.outerClientShuffleMediumKey,
|
|
||||||
outerClientShuffleFunctionMediumKey=ephemeral_keys.outerClientShuffleFunctionMediumKey,
|
|
||||||
clientEphemeralMedium=ephemeral_keys.clientEphemeralMedium,
|
|
||||||
clientShuffleEphemeralMediumA=ephemeral_keys.clientShuffleEphemeralMediumA,
|
|
||||||
clientShuffleEphemeralMediumB=~ephemeral_keys.clientShuffleEphemeralMediumA
|
|
||||||
)
|
|
||||||
return Phase1Session(session=session, tx_data=txData, medium=medium)
|
|
||||||
|
|
||||||
|
|
||||||
def encrypted_alphabet(persistent_keys: PersistentKeys, txdata: TxData) -> AlphabetKey:
|
|
||||||
""" generateDataTranslationFixedKeys = function (persistantKeys, inputData) """
|
|
||||||
appliedOuterServerShuffleFunctionKey = persistent_keys.outerServerShuffleFunctionKey << txdata.outerServerShuffleFunctionEphemeralKey
|
|
||||||
functionSalt = persistent_keys.functionKey << txdata.functionEphemeralKey
|
|
||||||
appliedClientShuffleKeyA = persistent_keys.clientShuffleKeyA << txdata.clientShuffleEphemeralA
|
|
||||||
appliedOuterFunctionKey = persistent_keys.outerFunctionKey << txdata.outerFunctionEphemeralKey
|
|
||||||
appliedOuterFunctionFunctionKey = persistent_keys.outerFunctionFunctionKey << txdata.outerFunctionFunctionEphemeralKey
|
|
||||||
appliedClientShuffleKeyAShuffled = appliedClientShuffleKeyA < appliedOuterServerShuffleFunctionKey
|
|
||||||
outerClientShuffleKeyShuffled = txdata.outerClientShuffleKey << txdata.outerClientShuffleFunctionKey
|
|
||||||
result = translate(appliedOuterFunctionFunctionKey, functionSalt, appliedOuterFunctionKey, txdata.data, [txdata.clientEphemeral, persistent_keys.clientKey, persistent_keys.sharedKey])
|
|
||||||
result = result << appliedClientShuffleKeyAShuffled
|
|
||||||
result = result < outerClientShuffleKeyShuffled
|
|
||||||
return result
|
|
||||||
|
|
||||||
|
|
||||||
def compute_outgoing(persistent_keys: PersistentKeys, txdata: TxData, message: str, session: Session) -> AlphabetKey:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
persistent_keys, ephemeral_keys = get_test_keys()
|
|
||||||
|
|
||||||
phase1_output = phase1(persistent_keys, ephemeral_keys)
|
|
||||||
alphabet = encrypted_alphabet(persistent_keys, phase1_output.tx_data)
|
|
||||||
|
|
||||||
121
src/models.py
121
src/models.py
@@ -145,127 +145,6 @@ class AlphabetKey(DarcKey):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class EphemeralKeys(BaseModel):
|
|
||||||
serverEphemeralKey: AlphabetKey
|
|
||||||
sharedEphemeralKey: AlphabetKey
|
|
||||||
functionEphemeralKey: InnerShuffleKey
|
|
||||||
outerFunctionEphemeralKey: OuterShuffleKey
|
|
||||||
outerFunctionFunctionEphemeralKey: OuterShuffleKey
|
|
||||||
outerServerShuffleFunctionEphemeralKey: OuterShuffleKey
|
|
||||||
serverShuffleEphemeralKey: InnerShuffleKey
|
|
||||||
outerServerShuffleEphemeralKey: OuterShuffleKey
|
|
||||||
serverMediumEphemeralKey: AlphabetKey
|
|
||||||
sharedMediumEphemeralKey: AlphabetKey
|
|
||||||
functionMediumEphemeralKey: InnerShuffleKey
|
|
||||||
positionFunctionMediumEphemeralKey: InnerShuffleKey
|
|
||||||
outerFunctionMediumEphemeralKey: OuterShuffleKey
|
|
||||||
outerFunctionFunctionMediumEphemeralKey: OuterShuffleKey
|
|
||||||
outerPositionFunctionMediumEphemeralKey: OuterShuffleKey
|
|
||||||
outerServerShuffleFunctionMediumEphemeralKey: OuterShuffleKey
|
|
||||||
outerServerShuffleMediumEphemeralKey: OuterShuffleKey
|
|
||||||
outerPositionShuffleMediumEphemeralKey: OuterShuffleKey
|
|
||||||
interfaceConfig: AlphabetKey
|
|
||||||
outerClientShuffleKey: OuterShuffleKey
|
|
||||||
outerClientShuffleMediumKey: OuterShuffleKey
|
|
||||||
outerClientShuffleFunctionKey: OuterShuffleKey
|
|
||||||
outerClientShuffleFunctionMediumKey: OuterShuffleKey
|
|
||||||
clientEphemeral: AlphabetKey
|
|
||||||
clientEphemeralMedium: AlphabetKey
|
|
||||||
clientShuffleEphemeralA: InnerShuffleKey
|
|
||||||
clientShuffleEphemeralMediumA: InnerShuffleKey
|
|
||||||
|
|
||||||
|
|
||||||
class PersistentKeys(BaseModel):
|
|
||||||
serverKey: AlphabetKey
|
|
||||||
functionKey: InnerShuffleKey
|
|
||||||
serverShuffleKey: InnerShuffleKey
|
|
||||||
outerFunctionKey: OuterShuffleKey
|
|
||||||
outerFunctionFunctionKey: OuterShuffleKey
|
|
||||||
outerServerShuffleKey: OuterShuffleKey
|
|
||||||
outerServerShuffleFunctionKey: OuterShuffleKey
|
|
||||||
clientKey: AlphabetKey
|
|
||||||
sharedKey: AlphabetKey
|
|
||||||
clientShuffleKeyX: InnerShuffleKey
|
|
||||||
clientShuffleKeyA: InnerShuffleKey
|
|
||||||
functionMediumKey: InnerShuffleKey
|
|
||||||
clientShuffleMediumKeyX: InnerShuffleKey
|
|
||||||
inputMediumData: AlphabetKey
|
|
||||||
serverMediumKey: OuterShuffleKey
|
|
||||||
outerFunctionMediumKey: OuterShuffleKey
|
|
||||||
outerFunctionFunctionMediumKey: OuterShuffleKey
|
|
||||||
outerServerShuffleMediumKey: OuterShuffleKey
|
|
||||||
outerServerShuffleFunctionMediumKey: OuterShuffleKey
|
|
||||||
sharedMediumKey: AlphabetKey
|
|
||||||
outerPositionFunctionMediumKey: OuterShuffleKey
|
|
||||||
outerPositionShuffleMediumKey: OuterShuffleKey
|
|
||||||
clientMediumKey: AlphabetKey
|
|
||||||
positionFunctionMediumKey: InnerShuffleKey
|
|
||||||
clientShuffleMediumKeyA: InnerShuffleKey
|
|
||||||
|
|
||||||
|
|
||||||
class Session(BaseModel):
|
|
||||||
guid: str
|
|
||||||
interfaceConfig: AlphabetKey
|
|
||||||
serverEphemeralKey: AlphabetKey
|
|
||||||
functionEphemeralKey: InnerShuffleKey
|
|
||||||
serverShuffleEphemeralKey: InnerShuffleKey
|
|
||||||
outerServerShuffleEphemeralKey: OuterShuffleKey
|
|
||||||
outerFunctionEphemeralKey: OuterShuffleKey
|
|
||||||
outerFunctionFunctionEphemeralKey: OuterShuffleKey
|
|
||||||
outerServerShuffleFunctionEphemeralKey: OuterShuffleKey
|
|
||||||
serverMediumEphemeralKey: AlphabetKey
|
|
||||||
functionMediumEphemeralKey: InnerShuffleKey
|
|
||||||
outerServerShuffleMediumEphemeralKey: OuterShuffleKey
|
|
||||||
outerFunctionMediumEphemeralKey: OuterShuffleKey
|
|
||||||
outerFunctionFunctionMediumEphemeralKey: OuterShuffleKey
|
|
||||||
outerServerShuffleFunctionMediumEphemeralKey: OuterShuffleKey
|
|
||||||
positionFunctionMediumEphemeralKey: InnerShuffleKey
|
|
||||||
outerPositionFunctionMediumEphemeralKey: OuterShuffleKey
|
|
||||||
sharedEphemeralKey: AlphabetKey
|
|
||||||
sharedMediumEphemeralKey: AlphabetKey
|
|
||||||
outerPositionShuffleMediumEphemeralKey: OuterShuffleKey
|
|
||||||
|
|
||||||
|
|
||||||
class TxData(BaseModel):
|
|
||||||
data: AlphabetKey
|
|
||||||
functionEphemeralKey: InnerShuffleKey
|
|
||||||
outerServerShuffleEphemeralKey: OuterShuffleKey
|
|
||||||
outerFunctionFunctionEphemeralKey: OuterShuffleKey
|
|
||||||
outerFunctionEphemeralKey: OuterShuffleKey
|
|
||||||
outerServerShuffleFunctionEphemeralKey: OuterShuffleKey
|
|
||||||
sharedEphemeralKey: AlphabetKey
|
|
||||||
outerClientShuffleKey: OuterShuffleKey
|
|
||||||
outerClientShuffleFunctionKey: OuterShuffleKey
|
|
||||||
clientEphemeral: AlphabetKey
|
|
||||||
clientShuffleEphemeralA: InnerShuffleKey
|
|
||||||
clientShuffleEphemeralB: InnerShuffleKey
|
|
||||||
|
|
||||||
|
|
||||||
class Medium(BaseModel):
|
|
||||||
data: AlphabetKey
|
|
||||||
functionEphemeralKey: InnerShuffleKey
|
|
||||||
outerServerShuffleEphemeralKey: OuterShuffleKey
|
|
||||||
outerFunctionFunctionEphemeralKey: OuterShuffleKey
|
|
||||||
outerFunctionEphemeralKey: OuterShuffleKey
|
|
||||||
outerServerShuffleFunctionEphemeralKey: OuterShuffleKey
|
|
||||||
sharedEphemeralKey: AlphabetKey
|
|
||||||
positionFunctionMediumEphemeralKey: InnerShuffleKey
|
|
||||||
outerPositionFunctionMediumEphemeralKey: OuterShuffleKey
|
|
||||||
outerPositionShuffleMediumEphemeralKey: OuterShuffleKey
|
|
||||||
outerClientShuffleMediumKey: OuterShuffleKey
|
|
||||||
outerClientShuffleFunctionMediumKey: OuterShuffleKey
|
|
||||||
clientEphemeralMedium: AlphabetKey
|
|
||||||
clientShuffleEphemeralMediumA: InnerShuffleKey
|
|
||||||
clientShuffleEphemeralMediumB: InnerShuffleKey
|
|
||||||
|
|
||||||
|
|
||||||
class Phase1Session(BaseModel):
|
|
||||||
session: Session
|
|
||||||
tx_data: TxData
|
|
||||||
medium: Medium
|
|
||||||
alphabet: list[list[int]] | None = None
|
|
||||||
|
|
||||||
|
|
||||||
class ServerPersistentKeys(BaseModel):
|
class ServerPersistentKeys(BaseModel):
|
||||||
OuterFunctionKey: OuterShuffleKey
|
OuterFunctionKey: OuterShuffleKey
|
||||||
OuterFunctionFunctionKey: OuterShuffleKey
|
OuterFunctionFunctionKey: OuterShuffleKey
|
||||||
|
|||||||
10020
testDarcKeys.json
10020
testDarcKeys.json
File diff suppressed because it is too large
Load Diff
120
utils_test.ipynb
120
utils_test.ipynb
@@ -1,120 +0,0 @@
|
|||||||
{
|
|
||||||
"cells": [
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": 1,
|
|
||||||
"metadata": {
|
|
||||||
"collapsed": true,
|
|
||||||
"ExecuteTime": {
|
|
||||||
"end_time": "2023-12-27T16:48:00.857374Z",
|
|
||||||
"start_time": "2023-12-27T16:48:00.827545Z"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"from src.darc_key import DarcKey"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": 2,
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"rows = 4\n",
|
|
||||||
"columns = 26\n",
|
|
||||||
"input_block_length = 10"
|
|
||||||
],
|
|
||||||
"metadata": {
|
|
||||||
"collapsed": false,
|
|
||||||
"ExecuteTime": {
|
|
||||||
"end_time": "2023-12-27T16:48:01.105305Z",
|
|
||||||
"start_time": "2023-12-27T16:48:01.097428Z"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": 3,
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"serverEphemeralKey = DarcKey.init_mask_matrix(rows, columns, 255)"
|
|
||||||
],
|
|
||||||
"metadata": {
|
|
||||||
"collapsed": false,
|
|
||||||
"ExecuteTime": {
|
|
||||||
"end_time": "2023-12-27T16:48:02.630012Z",
|
|
||||||
"start_time": "2023-12-27T16:48:02.626613Z"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": 3,
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"a = \"8\t\t\t\t\t\t\t\t\t1\t\t\t\t\t\t\t\t\t4\t\t\t\t\t\t\t\t\t5\t\t\t\t\t\t\t\t\t2\t\t\t\t\t\t\t\t\t3\t\t\t\t\t\t\t\t\t7\t\t\t\t\t\t\t\t\t6\t\t\t\t\t\t\t\t\t0\t\t\t\t\t\t\t\t\t9\t\t\t\t\t\t\t\t\""
|
|
||||||
],
|
|
||||||
"metadata": {
|
|
||||||
"collapsed": false,
|
|
||||||
"ExecuteTime": {
|
|
||||||
"end_time": "2024-01-16T01:13:13.747045Z",
|
|
||||||
"start_time": "2024-01-16T01:13:13.739449Z"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": 4,
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"data": {
|
|
||||||
"text/plain": "['8', '1', '4', '5', '2', '3', '7', '6', '0', '9']"
|
|
||||||
},
|
|
||||||
"execution_count": 4,
|
|
||||||
"metadata": {},
|
|
||||||
"output_type": "execute_result"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"source": [
|
|
||||||
"a.split()"
|
|
||||||
],
|
|
||||||
"metadata": {
|
|
||||||
"collapsed": false,
|
|
||||||
"ExecuteTime": {
|
|
||||||
"end_time": "2024-01-16T01:13:14.470781Z",
|
|
||||||
"start_time": "2024-01-16T01:13:14.467313Z"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"outputs": [],
|
|
||||||
"source": [],
|
|
||||||
"metadata": {
|
|
||||||
"collapsed": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"metadata": {
|
|
||||||
"kernelspec": {
|
|
||||||
"display_name": "Python 3",
|
|
||||||
"language": "python",
|
|
||||||
"name": "python3"
|
|
||||||
},
|
|
||||||
"language_info": {
|
|
||||||
"codemirror_mode": {
|
|
||||||
"name": "ipython",
|
|
||||||
"version": 2
|
|
||||||
},
|
|
||||||
"file_extension": ".py",
|
|
||||||
"mimetype": "text/x-python",
|
|
||||||
"name": "python",
|
|
||||||
"nbconvert_exporter": "python",
|
|
||||||
"pygments_lexer": "ipython2",
|
|
||||||
"version": "2.7.6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nbformat": 4,
|
|
||||||
"nbformat_minor": 0
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user