Replies: 3 comments
-
Hey, first, thanks a lot for this detailed write-up, generally it sounds like interesting technology. However, I struggle to understand what particular problem this attempts to solve. EDC's current security model is aimed at and designed for employing industry standards like HTTPS and did:web to guarantee not only high levels of security but also the utmost level of interoperability (libraries, clients, etc.) and compatibility with other dataspace participants. If the goal is to further secure communication, it needs to be opaque for EDC runtime instances. Are there any specific requirements/use-cases for this? |
Beta Was this translation helpful? Give feedback.
-
Hey, thanks for your reply. "High levels of security" is exactly my cue. I don't know precisely what the meaning of and the vision for this "high levels of security" is. Now here is the point: As far as I can see it, the typical EDC deployment happens without any real (technical) guarantees about the correct enforcement of UC whatsoever. Any non-honest actor could easily bypass UC by performing changes to the EDC codebase. There is only a contractual promise that participants will behave honestly. Whether that is convincing for use cases with really sensitive data seems questionable to me. Trusted Execution Environment (TEE) technologies combined with remote attestation (RA) solve the issue to some extend, but I don't see how this can be done in a way that is opaque to the applications exchanging data. In order to protect sensitive data, RA requires the transport channel (its cryptography, more precisely) to be "bound" to the remote attestation of the communicating parties. Furthermore, there is still the separation of control plane and data plane, where the actual data transfer is delegated to some protocol after the contract negotiation has been done. Is there any further control over the transfer after that point? How would e.g. an ongoing, continuous data transfer be interrupted if a "stop condition" is met in UC enforcment? I believe that at least some of these issues can be solved by a transparent layer 3 overlay similar to what we are proposing here. Is that something worth discussing about? Maybe use cases requiring "hard" technical enforcement guarantees are out of scope for EDC? |
Beta Was this translation helpful? Give feedback.
-
Running EDC in some sort of trusted enclave (e.g. Intel SGX) is something that has surfaced in the past and we will have to look at down the road. Not a priority rn though. One way to do this would be deploying an EDC runtime (or a part of it) in - say - a signed docker image in a VM and have it communicate through VPN, which is handled by the VM. You'd have to solve the issue of a) distributing the image and b) allowing the counter party to verify the image, but that's outside the scope of EDC, at least for the forseeable future. I might not have said this explicitly, but people are free to develop an extension that implements some application-layer-terminated VPN connection that even might require a particular kernel etc. and do all kinds of weird stuff. Nothing stops you from doing so. We just won't adopt this into EDC directly because I believe it is architecturally unsound. Lastly, implementing a stop condition can be done e.g. through a contract's expiration, either "naturally", or through an external event (e.g. an API call). The latter is not trivial, and probably not even possible all the time, because from a legal perspective it's doubtful if a single party can unilaterally "cancel" a contract. I will close this discussion now, because it attempts to solve a problem we don't have (at the moment), and in a way that does not comply with EDC architecture. But most importantly, a valid, real-life use case has not been presented. |
Beta Was this translation helpful? Give feedback.
-
I want to explain an approach that we (Fraunhofer AISEC) are currently developing for a research project called "Platform Material Digital (PMD)". The objective of this discussion is to
Potential Value for EDC
The proposed WireGuard-based approach could be seen as an VPN-like extension of the EDC control plane.
It would allow direct communication between services on Connector instances, featuring transparent encryption and excellent performance for any IP-based (e.g. TCP/UDP) protocol, all whilst avoiding exposure of server interfaces to the web.
Further integration of related technologies (i.e.
iptables
) would allow to restrict access to certain services based on source IPs within the VPN.Background
WireGuard is a VPN technology that has recently gained a lot of popularity, also due to its inclusion in the Linux kernel since version 5.6+.
By using low level implementations (i.e. Linux kernel or similar), it avoids the costly context switches known from technologies like OpenVPN, tinc, etc.
The identities used for encryption are created using ECDH on Curve25519 (For details, see https://www.wireguard.com/protocol/), which yields very concise public keys (32 bytes, represented as 44 characters, base64-encoded).
PMD Requirements and Current Overall Approach
We started the development of this approach as a (yet non-official) extension of IDS technologies, based on the following requirements:
Our current prototype looks roughly like this (further details on request):
fdXX::/112
in our case)./64
subnets). This subnet is used locally to "publish" services for other participants. We use a IPv6 docker network here, where published services are containers added to the network./64
) subnet. (This solution could easily be replaced by another suitable technology which can act as a root of trust!)The typical connection setup works as follows (simplified, we assume that Alice and Bob know each others public IPs/domains and corresponding WireGuard UDP ports, a.k.a. endpoints):
wg set
command, using the public key and subnet of Alice, to setup the WireGuard connection on his side.wg set
command, using the information of Bob's JWT.Limitations
Beta Was this translation helpful? Give feedback.
All reactions