Mentions légales du service

Skip to content

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 two fedbiomed.common classes (receive DB path as argument) => split fedbiomed.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 on ALLOW_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
    • add set_secagg_id to researcher SecaggContext ? add 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