secagg setup of biprime with default value
- use MP_SPDZ installation from #353 (closed) and context save/load from #355 (closed)
- use a default hardcoded biprime value included in the library, saved in the database and using the "default_biprime"
secagg_id
Tasks:
- initialize node and researcher components with default biprime in database when issuing a
fedbiomed_run (node|researcher) configuration create
-
make SecaggServkeyManager / SecaggBiprimeManager
twofedbiomed.common
classes (receive DB path as argument) => splitfedbiomed.node.secagg_manager
between common and node -
add default hardcoded biprime from #356 (closed) to DEFAULT_BIPRIMES_DIR
-
modify fedbiomed.comon.cli.CommonCLI._create_component_configuration
to update default biprime(s) to the component database, depending onALLOW_DEFAULT_BIPRIMES
(see comment after)
-
- add payload for secagg biprime negotiation to read biprime from database, if it exists
-
researcher side -
node side
-
-
modify Experiment
to use default biprime-
addaddset_secagg_id
to researcherSecaggContext
?secagg_id
optional param to constructor
-
-
check breakpoint (should not change ?) -
unit tests
Discussion: format of biprime entry in database
{
'secagg_id': ...,
'parties: ...,
'context': {
'biprime': int, # the biprime number
'max_keybits': int # maximum secagg key length that can be used with this biprime. Need to check in JL computation that biprime and key length are compatible.
},
'type': Enum # default (from config file) or dynamic (from `SecaggRequest`. Default cannot be deleted by researcher with `SecaggDelete`
}
Discussion: we could make SecaggServkeyManager
and SecaggBiprimeManager
singletons. This would be nicer design, but is not mandatory. There will be quite some work in rewriting unit tests. After discussion @scansiz / @mvesin => not done as part of this issue.
Edited by VESIN Marc