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):
|
||||
OuterFunctionKey: 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