tno.mpc.protocols.risk-propagation
TNO PET Lab - secure Multi-Party Computation (MPC) - Protocols - Secure Risk Propagation
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (11.9%) to scientific vocabulary
Keywords
Repository
TNO PET Lab - secure Multi-Party Computation (MPC) - Protocols - Secure Risk Propagation
Basic Info
- Host: GitHub
- Owner: TNO-MPC
- License: apache-2.0
- Language: Python
- Default Branch: main
- Homepage: https://docs.pet.tno.nl/mpc/protocols/risk_propagation
- Size: 167 KB
Statistics
- Stars: 9
- Watchers: 4
- Forks: 0
- Open Issues: 0
- Releases: 0
Topics
Metadata Files
README.md
TNO PET Lab - secure Multi-Party Computation (MPC) - Protocols - Risk Propagation
Secure Risk Propagation initially developed within the MPC4AML project.
PET Lab
The TNO PET Lab consists of generic software components, procedures, and functionalities developed and maintained on a regular basis to facilitate and aid in the development of PET solutions. The lab is a cross-project initiative allowing us to integrate and reuse previously developed PET functionalities to boost the development of new protocols and solutions.
The package tno.mpc.protocols.risk_propagation is part of the TNO Python Toolbox.
Limitations in (end-)use: the content of this software package may solely be used for applications that comply with international export control laws.
This implementation of cryptographic software has not been audited. Use at your own risk.
Documentation
Documentation of the tno.mpc.protocols.risk_propagation package can be found
here.
Install
Easily install the tno.mpc.protocols.risk_propagation package using pip:
console
$ python -m pip install tno.mpc.protocols.risk_propagation
Note: If you are cloning the repository and wish to edit the source code, be sure to install the package in editable mode:
console
$ python -m pip install -e 'tno.mpc.protocols.risk_propagation'
If you wish to run the tests you can use:
console
$ python -m pip install 'tno.mpc.protocols.risk_propagation[tests]'
Note: A significant performance improvement can be achieved by installing the GMPY2 library.
console
$ python -m pip install 'tno.mpc.protocols.risk_propagation[gmpy]'
Protocol description
Risk propagation is an algorithm that propagates risk scores through a (transaction) network. Using distributed partial homomorphic encryption, the secure risk propagation implementation performs this algorithm on a network that is distributed among multiple parties. As input of the algorithm, every party possesses a list of nodes (i.e. bank accounts) with initial risk scores and has a list of transactions (weighted, directed edges) from and to its bank accounts. Using encrypted incoming risk scores scores from other parties, every party can securely update its risk scores using the formula for risk propagation. After a set number of iterations, the eventual risk scores are revealed to the parties that own the accounts, using the distributed private key.
In ERCIM News 126 (July 2021), we presented a more elaborate protocol descriptions. Figure 1 demonstrates a high-level overview of the idea behind the protocol. Figure 2 visualizes the decentralized approach.
Usage
The protocol is symmetric. For determining a secure set of parameters for the distributed keygen we refer to protocols.distributed_keygen.
Input
For the input two numpy arrays are expected. The structure and types are given in the tables below:
Input of the accounts:
| id | risk_score | | ------ | ---------- | | string | float 64 |
Input of the transactions:
| idsource | banksource | iddestination | bankdestination | amount | | --------- | ----------- | -------------- | ---------------- | ------ | | string | string | string | string | int32 |
A string is expected to consist out of at most 100 unicode characters.
For an example of how to setup and run the protocol, see scripts/example_usage.py.
Owner
- Name: TNO - MPC Lab
- Login: TNO-MPC
- Kind: organization
- Email: mpclab@tno.nl
- Location: Anna van Buerenplein 1, 2595 DA Den Haag, The Netherlands
- Website: https://mpc.tno.nl
- Repositories: 19
- Profile: https://github.com/TNO-MPC
TNO - MPC Lab
GitHub Events
Total
- Issues event: 2
- Watch event: 1
- Issue comment event: 1
- Push event: 2
Last Year
- Issues event: 2
- Watch event: 1
- Issue comment event: 1
- Push event: 2
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 1
- Total pull requests: 0
- Average time to close issues: 16 days
- Average time to close pull requests: N/A
- Total issue authors: 1
- Total pull request authors: 0
- Average comments per issue: 1.0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 1
- Pull requests: 0
- Average time to close issues: 16 days
- Average time to close pull requests: N/A
- Issue authors: 1
- Pull request authors: 0
- Average comments per issue: 1.0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- franciscobecerra97 (1)
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- pypi 85 last-month
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 8
- Total maintainers: 1
pypi.org: tno.mpc.protocols.risk-propagation
Secure risk propagation using distributed Paillier
- Homepage: https://pet.tno.nl/
- Documentation: https://docs.pet.tno.nl/mpc/protocols/risk_propagation/2.3.4
- License: Apache License, Version 2.0
-
Latest release: 2.3.4
published 11 months ago
Rankings
Maintainers (1)
Dependencies
- numpy >=1.24,<3
- tno.mpc.communication ~=4.8,>=4.8.1
- tno.mpc.encryption_schemes.paillier *
- tno.mpc.protocols.distributed_keygen ~=4.0