-
Notifications
You must be signed in to change notification settings - Fork 8
Community Meeting Minutes
- SAP has joined the Carbyne Stack initiative as a user and contributor.
The first topics planned for contributions are:- adding support for the deployment of Carbyne Stack on AWS
- the secure and convenient interaction with Carbyne Stack Services via a browser.
- CarbyneStackCon'23 - the second edition of our annual community gathering - will take place on November 30 in Renningen, Germany.
Do not miss your chance to register here.❗ Important
Please use the eventcode CSC23 to register on the EventXP platform. On the desktop version of the EventXP website, you must enter it in the the upper right corner of the UI. For the iOS mobile version, you will find a button at the very top. For Android use the hamburger menu button (≡).
- Carbyne Stack blog is live
- First blog posts have been published (see https://blog.carbynestack.io/)
- Spotlight on Carbyne Stack: Fantastic Three — The Rise of Open MPC
- Citation instructions: Ahoy, my Carbyne Stack DOI! Carbynestack#75
- more to follow: Get yourself seated for the ‘Awesome Cloud Native MPC’ Series
- First blog posts have been published (see https://blog.carbynestack.io/)
- Release Process implemented (https://github.com/carbynestack/carbynestack/issues/65)
- from long, randomish tags to Semantic Versioning
0.1-SNAPSHOT-4741225899-24-4a99be8 -> v0.1.0
- from long, randomish tags to Semantic Versioning
- Carbyne Stack to be presented at
- CC Mini Summit at LF OSSEU on Sept, 18
- Bosch Privacy Engineering Summit '23 (internal)
- Ephemeral #31: computations forcibly terminated with
DeadlineExeeded
✔️- Implementation (Reviewed and Merged) ✔️
- Services ✔️ (service-v0.1.13)
- Chart ✔️ (chart-v0.1.3)
- Website ✔️
- Update SDK ✔️
- Manual deployment ✔️ (sdk-v0.3.0)
- IaC ✔️ (sdk-v0.4.0)
- Implementation (Reviewed and Merged) ✔️
- Amphora #45: Use Damgård et al.'s Input Supply Protocol ✔️
- Update implementation
- Service ✔️ (service-v0.1.1)
- Chart ✔️ (chart-v0.1.1)
- Java Client ✔️ (java-client-v0.1.1)
- CLI ✔️ (cli-v0.4.0)
- SDK ✔️
- Manual deployment ✔️ (sdk-v0.2.0)
- IaC ✔️ (sdk-v0.4.0)
- Update implementation
- SDK
- Separate redis deployment from Castor and enable persistence for MinIO and Redis ✔️ (sdk-v0.3.0)
- Infrastructure as Code (IaC)
- Local Kind Deployment ✔️ (sdk-v0.4.0)
- Azure Deployment ❌
- Klyshko
- Klyshko secure CRG implementation ✔️
- Support for generator pod customization (see https://github.com/carbynestack/klyshko/issues/95)
- Implementation ✔️
- Examples: Generator, Scheduler
- ToDo:
- Update SDK
- Manual deployment ✔️
- IaC ❌ - pending carbynestack#74)
- Update SDK
- Authorization (see https://github.com/carbynestack/carbynestack/issues/68)
- Work on CSEP has started
- Nettle has been released as PoC / WIP (see https://github.com/carbynestack/nettle)
-
Ephemeral #31: computations forcibly terminated with
DeadlineExeeded
- ✔️ Updates and Improvements:
- The state machine now distinguishes between initialization and computation phases, with two separate timeouts that can be configured
- The computation is no longer interrupted after 60s, but instead terminates after a user-defined timeout, defined either
- Globally via the discovery service configuration
- Locally, but Discovery requires local configuration
- Local computations are now terminated on external events, e.g.
- Global computation timeout published by discovery service (shared game state).
- Game errors at other parties propagated through the discovery service.
- Knative activation timeout is now configurable per ephemeral instance
- Previously set to default (300s).
- The CS Getting started guide describes how to configure the maximum activation time allowed for Knative
- Previously set to default (600s)
- Fixed TupleStreamer panic on broken pipe due to bad log formatting.
- ✔️ Test with computation time of 29min 55s successful (total execution time including setup and compilation ~32min 50s)
2 Parties,700000 input values each, computing modulo on the sum of the individual values
Test performed on a local, 2 Kind cluster setting
Time = 1773.06 seconds, Data sent = 324.802 MB in ~7000085 rounds (party 0), Global data sent = 649.604 MB (all parties) - ❗ PR to be available soon
- ✔️ Updates and Improvements:
-
Klyshko Secure Offline Phase #65:
- Networking
- CRG network endpoints to be exposed as Service with LB type (see https://github.com/carbynestack/klyshko/pull/65)
- All endpoints will be made available via KII environment variables
- MP-SPDZ secure CRG
- Cowgear-based CRG has been implemented
- Networking
-
1st versions of Caliper has been open sourced
-
IaC (kind/Azure) currently under review / OSS release process
- Jonas Eppard is new student team member at Bosch working on combining TEEs with MPC (details to be pusblished in the coming weeks) for his bachelor thesis
- Couple of things to land in master in the coming weeks
- Nettle PoC (Flower-based FL w/ secure aggregation based on CS) (R: Sven)
- Iac for local kind-based deployment of Carbyne Stack (whole stack including kind clusters) (R: Alessandro)
- Caliper LTaC based on Gatling with first set of tests (R: Julian)
- Also in the pipeline
- Thymus PoC for authentication based on Ory Kratos, Hydra, and Istio
- Nettle to be presented at Flower Summit end of May in Cambridge (https://flower.dev/conf/flower-summit-2023/)
- Secrecy (MPC-based DBMS from Boston University to be integrated with CS) will be open sourced soon
-
Amphora
- Add implementation to use Output Delivery Protocol from Damgård et al. for tuple provisioning
(see amphora#45 reported by iko4)- ✔️ Implementation finished and ready for review amphora#46
- Costs for sharing secrets increased from 1 input mask per secret (word) to 3 input masks and 2 multiplication triples
- ❌ Update CLI to use latest Amphora Client version
- ❌ Update carbynestack/carbynestack Amphora service helmfile
- ✔️ Implementation finished and ready for review amphora#46
- Add implementation to use Output Delivery Protocol from Damgård et al. for tuple provisioning
-
Klyshko
- Bugfixes
- ✔️ klyshko#60 - Scheduler fails generating new TupleGenerationJobs
- Bugfixes
- Working student to start mid April; will focus on Azure IaC first
- First Bosch-internal Thymus PoC for authentication based on Ory Kratos, Hydra, and Istio available, under internal review currently
- Klyshko has been released (LinkIn Post) and is now available as part of the SDK
- Will be extended by secure CRGs (MP-SPDZ, CC-based, Silent MPC) throughout the year
- Two new (private for now) repositories for Thymus (Authn & Authz) and Caliper (Load Testing)
- Working on a Castor Mock that allows for easy testing of CS without using Klyshko for tuple generation
- Submission of Carbyne Stack to Stuttgarter Innovationspreis 2023
- Submission of Nettle to Flower Summit 2023 and Bosch AI Days 2023
- New student team members at Bosch
- Julian Grewe will work on scalability/load testing of Carbyne Stack.
- Enrico Sorbera will work with Vincent Rieder on Silent MPC.
-
Klyshko (https://github.com/carbynestack/carbynestack/issues/58, https://github.com/carbynestack/klyshko/pull/1, R: Sven)
- Build automation done ✔️
- Helm chart available and tested ✔️
- Integration and testing with SDK done ✔️
- Open tasks: compliance, website update ✔️
- Final review and merge into master ❌
-
Migration services to use gRPC instead of REST (R: Adel) ❌
- 1st PoC is ready for Castor Upload
- Will be "rolled out" to all Castor functionality and other services
- Castor/Amphora clients will be consolidated
-
Upgraded vulnerable dependencies as classified by Snyk in Java-based services & modules (R: Sebastian) ✔️
- Supports now also later versions of Java (above v8)
- CarbyneStackCon'22 recordings finally published on the CSC22 event page
- Upgraded vulnerable dependencies as classified by Snyk in Java-based services & modules (R: Sebastian) ❌
- PRs generated by Snyk have been closed for all repositories but cli-ng ✔️
- Fixing bugs in ephemeral and castor that cause long running computation to fail (R: Sebastian)
- Nettle PP-FL
- PoC for E2E execution w/ MP-SPDZ-based secure aggregation implemented (R: Sven) ✔️
- End-user authentication (R: Veselin)
- Respective CSEP-0049 has been published ✔️
- Implementation started ❌
- Klyshko (https://github.com/carbynestack/klyshko/pull/1, R: Sven)
- Build automation done ✔️
- Helm chart available and tested ✔️
- Integration and testing with SDK done ✔️
- Open tasks: compliance, website update ❌
- Federated Learning based on Flower framework w/ CS-based secure aggregation PoC is in the making
- Upgrading vulnerable dependencies as classified by Snyk in java based services & modules (R: Sebastian)
- Two new colleagues, Veselin and Adel, joined the Bosch team as developers
- Update to latest K8s/Knative/Istio version (Veselin)
- Update Ephemeral to latest Operator SDK version
- Final touches: Going through the deployment process, updating Getting Started guide.
- Organizing all the changes in PRs to the respected repos.
- Klyshko (https://github.com/carbynestack/klyshko/pull/1, Sven)
- PR mostly revised, some refactoring ongoing
- Testing in 2 party setup done
- Next steps: build automation, compliant images, SDK / website updates
- IaC (Sebastian)
- CDKTF based VC deployment is split into Platform Setup and Stack Deployment as reflected by the Getting Started Guides
- Initial Platform Setup IaC configuration available (not yet shared)
- ✔️ Supports up to 255 parties (VCPs)
- ❌ Investigating a bug where the ingress gateway is regularly not assigned a public cluster IP
- Introduction of triaging process and CSEP processes
- Update on joint demonstrator development
- Carbyne Stack won 3rd prize of the Deutscher IT Sicherheitspreis
- 1st Workshop regarding cross-company joint demonstrator took place on 18/11/22. F/U workshop planned for 02/12/22.
- PhD student started working on MPC-related topics at HRI Europe
- Deployment on some clouds no longer possible to very old version of Kubernetes; will be worked on soon either by HRI or by Bosch.
- CSC22
- CarybeStackCon'22 was a great success with almost 60 participants (20 on site, 40 remote)
- Recordings to be published on the website
- Results from interactive sessions are prepared for presentation
- Invitation to discuss joint demonstrator will follow
- Great feedback (3.6 / 4 overall rating)
- Carbyne Stack is finalist of the Deutscher IT Sicherheitspreis; Officially announced on LinkedIn
- Carbyne Stack is being featured by PD Dr. Hendrik Ballhausen in his nfdi InfraTalk on 07/11/2022 4pm - 5pm
- WebAssembly based Amphora Client implementation using
- Wasm doesn't support complex interfaces and cannot be used out of the box - more info to follow
- CSC22
- Currently 57 registrations - 26 in person, 31 remotely
- In-person registration still open until 23/10/22
- Carbyne Stack is finalist of the Deutscher IT Sicherheitspreis; to be announced officially soon
- Implementation of triage process to streaming issue / PR ingest process (see #44)
- CSC22
- Currently 46 registrations - 22 in person, 24 remotely
- Please
- Spread the word in your networks
- Register if not yet done
- Several open student positions (internship, working student, thesies) at Bosch
- Assessment ongoing
- Carbyne Stack will be featured as a lightning talk at the MPC Alliance's upcoming Data Privacy Summit on October 5, 2022.
- Not much progress due to vacation time
- CSC22
- All talks confirmed (see here)
- To be announced on LinkedIn this week
- Currently 33 registrations from 19 (!!) organizations
- Please
- Spread the word in your networks
- Register if not yet done
- All talks confirmed (see here)
- Collaboration with Boston University will start soon
- More information to be provided at CSC22
- Several open student positions (internship, working student, thesies) at Bosch
- Not much progress due to vacation time
- CSC22
- 1st program draft published online
- LinkedIn update with final program planned for early September
Tuple Streaming (@sbckr)
- PR merged and release published
Deployment Scripts (@sbckr)
- CSC22
- Registrations coming in, 18 registrations so far, many known participants not yet registered
- 1st program draft to be online soon
- LinkedIn update with final program planned for early September
Klyshko (@strieflin)
- Implementation of tests progressing (currently ~ 80% coverage)
- Next steps are additional tests, better documentation, GHA-based build, addition to CS deployment and revision of tutorials
Tuple Streaming (@sbckr)
- Implementation finalized
- 80% test coverage reached
- Based on new, tuple-less, spdz base image
- Test scenarios documented on issue, works as expected
- Ready for final review
Next steps
- update helm chart for deployment carbynestack/carbynestack
- updated tutorial instructions carbynestack/carbynestack.github.io
- Boston University gift from Bosch has been approved, currently finalizing donation process
- Goal for 2022 is fully and secure MVP including
- Tuple Streaming
- Secure offline phase
- Authentication and authorization
- Scalability testing
- Planning for the conference advances. Public announcement planned for July 25th.
- HRI job posting is online - have a look for everyone interested: https://www.honda-ri.de/wp-content/uploads/2022/07/SE_July22_V3.pdf
Tuple Streaming (@sbckr)
General tuple streaming functionality available
- Tested with gfp / gf2n consuming tuples
- Only those tuples are fetched that are actually requested by the computation (MP-SPDZ does connect to those pipes only it wants to fetch tuples from)
- Gfp and gf2n protocol MAC keys can be provided via configuration and are written to respective files
- Several configuration parameters added
- Supports programs compiled to use multiple threads
- Number of threads extracted from program's schedule
- Minor issue in castor discovered
- query parameter
tupletype
forGET
/tuples
endpoint not camel case- Returns 400 if provided as camel case without further error details
- Gf2n tuples can have different storage size depending on
USE_GF2N_LONG
being set to1
or0
when compiling MP-SPDZ. While ephemeral can support gf2n of different storage size when properly configured, castor does support short gf2n tuples only as size of 8 is hardcoded.
- query parameter
ToDo:
- Findings from initial code review addressed, others to follow
- Improve test coverage
- Address Codacy findings
- Further test functionality and provide more details test settings (results and programs used)
- Presentations at OSS-NA on 23/06/22 and Boston University on 21/06/22 took place
- PR for open HRI position still not submitted?
- Will start preparation of CarbyneStackCon (planned to take place end of late Q3 / early Q4)
Klyshko (@strieflin)
- Implementation of tests has been started (currently ~ 10% coverage), will focus on this now
- Most review comments from @kindlich have been addressed
Tuple Streaming (@sbckr)
- Nothing new, currently investigating technical issues
Stale issue handling (@jaredweinfurtner)
- PR landed in org repo (https://github.com/carbynestack/.github/pull/1)
- Still clarifying procedural aspects (e.g., How to deal with roadmap issues? How to reactivate stale issues?)
- Carbyne Stack has been presented at TPMPC with > 150 attendees (single track) with positive feedback from mostly academic audience
- Upcoming presentations at OSS-NA on 23/06/22 and Boston University on 21/06/22
- There is (still) an open position at HRI to work on MPC
- There are lot of mostly done but pending issues that should be finalized / closed ASAP to shorten issue turnaround time
- Status of work on automated closing of stale issues?
- Feedback to be included by HRI to improve PR / current implementation (see https://github.com/carbynestack/ephemeral/pull/17)
Klyshko (@strieflin)
- Basic Klyshko implementation has been pushed using compliant base images; feedback welcome
- Next steps: tests (including E2E)
-
Tuple streaming functionality implemented but to be tested
- Supports all types of Tuples provided by Castor
- Holds a specified number of tuples (default: 1000) and automatically refills them after consumption
- Unconsumed tuples are discarded for the time being
-
TODO
- Provide MAC key (write to file)
- Integration tests (manual)
- Improve test coverage where appropriate
- Update guides and documentation
- HRI EU participation announced (Bosch Research post with 153 reactions, 2 comments, 9 shares)
- Bosch Research made it into the 2nd round of Deutscher IT Sicherheitspreis
- Carbyne Stack to be presented at Bosch Research to larger internal audience on 31/05/22
- PRs often seemingly without having invoked
pre-commit
- Any problems with it?
- Switching Java versions is annoying (migrating to Java 11/17 should have priority)
- Codacy and pre-commit use different linters with different styles (remark seems to be working properly, do a pilot)
New tuple reservation handling code (@sbckr)
- First indications that new implementation works with the upcoming tuple streaming
- Please test, feedback welcome.
Ephemeral on tagged objects (@grafjo)
- Discussion of general approach
- Inconsistencies can occur currently as there is no consensus mechanism implemented that ensures that Ephemeral at all VCPs selects the same objects as inputs. This is an accepted defect and will be documented in the README.
Support for new MP-SPDZ version (@grafjo)
- CLI update pending, @sbckr will have a look into it
- Tuple type support
-
Status quo
- Castor GFp (arithmetic circuits) and GF2N (binary circuits)
- Amphora GFp only
- Ephemeral all tuple types (but only for baked-in tuples, no streaming)
-
Support should be consistent across services eventually
-
Optimized
edabits
to speedup non-linear operations (e.g. comparisons)MP-SPDZ allows to mix computation between arithmetic and binary secret sharing in the same security model. In the compiler, this is used to switch from arithmetic to binary computation for certain non-linear functions such as comparison, bit decomposition, truncation, and modulo power of two, which are use for fixed- and floating-point operations. There are several ways of achieving this as described below.
To use that feature
-Y
must be used when compiling programs. Execution requiresedaBits
(random n-bit arithmetic numbers with their binary bit decomposition, all secret shared). For eachn
there is aedaBit
dedicated tuple type. -
Proposal
- Do not support mixed circuits (i.e.,
edabits
) yet. - Add GF2N support to Amphora in the future but not now.
- Ephemeral will implement streaming for both GFp and GF2N.
- Use e.g.
aes.mpc
(that does not require inputs) from MP-SPDZ to test ephemeral for now.
- Do not support mixed circuits (i.e.,
-
Klyshko (@strieflin)
- Not pushed yet, due to compliance reasons
- Fake tuple generation implemented
- Simple threshold-based job scheduler available
- Next steps: tests (including E2E), compliance, documentation