Closed synctext closed 3 months ago
@synctext you mentioned the groundwork laid by Rowdy for digital identity. Is there something I can start looking into?
SSI Pull request
https://github.com/Tribler/trustchain-superapp/pull/60/files
2 week pause due to circumstances. Code compiles locally, EBSI reading first pass done, pull request Rowdy review on ToDo list. Recent find: Self-Sovereign Identity (SSI) en Attribute Based Credentials (ABC)
For more context, in 2017 we talked about the "decentralised economy". Identity is the foundation. Others are now also doing this in a token hype manner: https://fetch.ai/wp-content/uploads/2019/10/Fetch.AI-Economics-white-paper.pdf This team actually deployed an IPv8 clone: http://www.ifaamas.org/Proceedings/aamas2021/pdfs/p1037.pdf More work to read, solid data pods from MIT and web founder.
The current generation of thesis students in the lab. | Student | Thesis focus |
---|---|---|
@InvictusRMC | Working SSI. operational attestations. Revocation problem and QR codes. #5576 | |
@jwbambacht | Reliable enough for money. Effortless EuroToken transfer in chats. UDP packets always arrive. #6029 | |
@awrgold | production-ready DAO. Shared ownership of BTC. Democratic decision making process. #5313 |
Promising thesis direction: Create an architecture in which Big Tech alternatives can emerge, market failure can be corrected, anti-competitive practices are addressed and consumers win their privacy back. Protecting privacy of users in the age of AI and digital IDs.
ToDo sprint: compiling new Superapp code, revocation of Rowdy code, read litarature. Future sprint: first draft of problem description, EBSI enrolment
Start on the problem description: Self-Sovereign Shared Identity
Use case is SSI for group subscriptions which includes data sharing and some key management.
Inspiration for another tangent: fair compensation scheme for personal data in personal vault https://cordis.europa.eu/event/id/148435-bdve-webinar-bringing-back-personal-data-value-to-the-rightful-owners https://cordis.europa.eu/project/id/871755
Good readable first version of problem description. Just replace "family plan" with "legal entity", then it becomes economic relevant and key for SSI. Authorisation within huge companies or hierarchical government is unexplored. Still good to keep in mind we can go in any direction, like ask Schiphol for real on-site tests. Another direction is deep alignment with @jwbambacht his work. Your thesis would focus entirely on getting an encrypted address book (e.g. social graph, friend list) into the Superapp SSI part. Scientifically this is a validated public key infrastructure that would be actually operational and fully decentralised. Signal messaging app has central servers, no such DPKI system exists. btw about selling your own data. The idea of mixing capitalism of selling data with social value such as data sovereignty is old. The first to publish this, conclude that its a bad idea was these smart people: https://blog.oceanprotocol.com/on-selling-data-in-ocean-market-9afcfa1e6e43 Conclusion, nobody wants that data. This model can't compete against Big Tech who owns you (Mark Zuckerberg called early Facebook users dumb f***s for sharing data when he was just 19 years old).
ToDo idea for coming 2 week, align at the source code branch level with Joost and Rowdy. Get an rvig.nl email; get account for EU EBSI; get a working cmdline Python script working or directly integrate with Superapp.
Possible sprint idea for coming 2+ weeks. Goal: get operational coding experience. Make first Pull Request on the Superapp. For instance, add address book sharing in PeerChat. Any contact entry you have locally (nickname+public key) becomes available to share with your friends. Status: emulator works, next step is old S4 hardware attempt. Search for good thesis focus.
Possible goal: - Future sprint: EBSI integration, https://api.ebsi.xyz/docs/ - Live test, beyond Beta code; international .DE? - Expand upon @jwbambacht of "waardeoverdracht" into a _Secure Data Sharing_ primitive. With personal data vaults + exchange.Preview contact sharing
Uploading IMG_4267_MED_1_1.mp4…
get a working cmdline Python script working or directly integrate with Superapp.
Live test, beyond Beta code; international .DE?
Preview contact sharing in gif form:
To do in contact sharing feature:
Share contacts PR: https://github.com/Tribler/trustchain-superapp/pull/77/commits
Small feature that allows you to send one of your contacts as an attachment in a conversation. Recipient can click on the contact and add it to his/her list.
Next steps:
Current vision/goal
Because of electricity/internet problems, no video call on 23/07/2021.
Updates:
Report from last month:
In the process of connecting the SuperApp with EBSI.
V1 api is implemented in the code but EBSI has already moved on to V2. V2 has turned several REST APIs into libraries to be used locally. Mobile libraries are not yet available, so I have implemented a CLI in TypeScript with the available EBSI api with some key functionalities (including getting access tokens to write) to the public test environment. Working tree: https://github.com/sjacobino/trustchain-superapp/tree/ebsi
Roadmap for translation between IG-SSI and EBSI is in the works including working on the translation code. See notes: https://drive.google.com/drive/folders/1OBEOV7G1Pb1ZbakTTg6Y42Vu1K_uX-ha?usp=sharing
Probably 1 more week to work on translating between IG-SSI attestations/presentation to EBSI Verifiable Credential/Presentation. But because mobile libraries are not available, it will not be possible to test in-app.
So likely to shelf this part for the time being and start on Data Vault.
EBSI docs, api and libraries currently not in sync. Conflicting information on the different platforms which is making it impossible to make a working connection.
E.g.
So let's fix that:
Discrepancy in information, in this case the parameters of a DidAuthResponseCall.
Sample code on NPM site: https://www.npmjs.com/package/@cef-ebsi/did-auth
Sample code on EBSI Doc: https://ec.europa.eu/cefdigital/wiki/display/EBSIDOC/DID+Authentication+Library
Function definition in DIDAuth.ts
Status | EBSI v1 | EBSI v2 |
---|---|---|
Read access | :heavy_check_mark: | :heavy_check_mark: |
Write access | :heavy_check_mark: | :x: |
Personal Data Vault (brainstorm thesis direction):
Progress on bug report:
Storytelling: immediately reveal the plot and don't write it as a slow tutorial: Secure sharing of personal data is an unsolved problem.
Switch now to thesis format, style, and thesis wording. Grand Problem Solving: we give control back to users and erode the power of Big Tech with their $7.6 trillion market cap.
More professors like Bart Jacobs are now interested in fighting Big Tech through deployed alternative technology. Academics going beyond rhetoric! Like tobacco industry, social media is not going to fix itself: More than 30% of teen girls who 'felt bad about their bodies' said Instagram made it worse according to Fox News. This is a pretty angry motivation, but I believe the observed facts warrant this.
Is there any difference between an open wallet and the personal data vault? unlimited smartphones, please exclusively apply zero-cloud infrastructure! Support REST api?
Personal information is always encrypted and protected
from: https://github.com/Tribler/tribler/issues/6029#issuecomment-908993337Data Vault Demo Apk: https://drive.google.com/file/d/1qPcO9RoSYthnZXOy6q82dVZlihtIFeji/view?usp=sharing
What's going on in the demo apk:
Initial data vault directory on the device that is accessible by other devices via the DataVaultCommunity. Simple access control that takes any verifiable attestation.
The problem now is that messages including attestations don't seem to get to the other side. Solution is likely to copy peer chat's attestation chunk approach, and reassemble back at the other endpoint.
Defining access policy at file or directory level is viable. Files with undefined access policy inherits policy from parent directory.
Biggest challenge seems to be structuring the filesystem to reflect graph-like nature of the linked data.
please add this public key: 4c69624e61434c504b3a52904df841596dff8149fc41623b91b1149f92fe37f2c1c40c5ffb2867b7a75438e2694ab58b3c280578b80f348ca62fda10372581e3365cbd87c0551f3bc007
The problem now is that messages including attestations don't seem to get to the other side.
Progress: UDP packet drop is an issue. Large packets always drop? Scientific side: infrastructure of sharing data requires trustworthy data exchange primitive which is robust.
We have incoming UDP packets inside IPv8. Do we have a Diffie-Hellman key exchange, session establishment, signed UDP packets, and a 'connection'? Transmit & store encrypted?
e-IDAS high compliance: :x: Personal information is always encrypted and protected
See new 2021 update of eIDAS: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=COM%3A2021%3A281%3AFIN
Note that "Electronic ledgers" is mentioned 23 times in official upcoming European Commission text. Pull request on "Joost code", no private icon.
Report on progress before leaving on the 13th Further updates via ticket.
example for thesis? Secure sharing of personal data is an unsolved problem. Store in your data vault, facilitate sharing and test revocation: diploma.
Data vault prototype for DNA data around eye melanoma (severe cancer), https://github.com/LedgerProject/GeneCoop/blob/a759c0368c1e2c3740a84c23db4ce1cb1e8a5db1/Demonstrator/Documentation/Technical_Design/demonstrator_tech_design.md
Fresh related EU work: https://europa.eu/europass/en/european-digital-credentials-learning-interoperability
No real productivity in last 2 months.
Some further improvements on the EBSI CLI using updated libraries. Problems are still difficult to iron out because error messages from the API are sometimes unclear.
What works:
Not managed to get working:
In the end we need the mobile (Android) libraries from EBSI to integrate it into the SuperApp, but those are not planned for EBSI v2 ( https://ec.europa.eu/cefdigital/wiki/display/EBSIDOC/Users+Onboarding+API#UsersOnboardingAPI-MobileWallet(NotYetforEBSIV2.0) , there is a roadmap somewhere that states it clearly but I cannot find it now)
Personal course adjustment necessary, turning focus to Data Vault using verifiable credentials for access control.
Last progress meeting was 2 months ago. Running code :clap:
EBSI v1 was everything server-side. EBSI v2 is typscript based. Progress of recent week is that EBSI team did some changes, updates, and repairs. More is operational now, JSON web tokens now appears functional. EU EBSI Mobile roadmap for mobile :zap: : EBSI compliant data model is not available
Upcoming day: file a bug report with EBSI team on you latest error. Prior DidAuthResponseCall
bug is now fixed :heavy_check_mark:
Detail: EBSI W3C did model versus the Rowdy/Quinten verifiable credentials.
Master thesis content: The first SSI data vault deployment.
First description draft: Our architecture, called HardGlass, gives users back control. Everything that happens with your data becomes visible. Data read permission can be granted securely using encrypted communication to selected parties. Revocation is executed in real-time. At a fine-grained level the user sees all access to his/her data in real-time. Something, something, more is needed: scalability to 1 TByte, magnet&music usage, diploma works, friend certificates, distributed social, friend-of-friend access, etc.
Upcoming sprint: improve prototype, think more about your beyond state-of-the-art.
ToDo: poster outline.
Brief description of my experience working with European Commission EBSI code:
Working with EBSI code has been a bit cumbersome at times. In some cases example code provided on the npm page is incomplete. If the code is copied and pasted some parameters might be missing. For instance, the sample code for creating SIOP authentication responses (https://www.npmjs.com/package/@cef-ebsi/siop-auth) does not show how to structure include claims/verifiable credentials/verifiable presentations. You have to combine information from the documentation page to get a complete picture. This is the case with most of the EBSI libraries available on npm.
Some information however is nowhere to be found. E.g how to construct a json-rpc request to insert a new DID document (https://ec.europa.eu/cefdigital/wiki/display/EBSIDOC/DID+Registry+API). The parameters used: identifier, didVersionInfo, timestampData, and didVersionMetadata are not explained anywhere leaving you to guess what they are.
As mentioned before, API error messages are often non descriptive and do not state very clear what the error is or what has to be changed.
perfect info! please post a reproducible error to EBSI and provide details. Then we can escalate them upwards.
EBSI+TrustVault poster draft to be discussed.
Main questions: Too abstract/not technical enough? More (specific) technical illustrations? Does it get the message across (especially if orally presented)?
:+1:
Trustvault + Essif final poster for meeting AFM
DataVault prototyped advanced in the last 2 weeks:
The process now goes as follows
The advancements are
See Slack for apk file.
Very productive sprint !! :tada: Real productive software development inside superapp: 6 weeks. EBSI: 6 weeks. Key selling point? data sovereignty?? Current state-of-the-art is MIT solid. random test sample of this prototypes; horrific user on-boarding experience, but good luck trying to do this better :hourglass_flowing_sand: Connecting a PC browser to storage will never bootstrap (critically requires support from the monopoly browser). For Android its also hard to create automatic background cloud storage. You first need an identity and (free??) storage. Fragile... MIT Solid is server-based and has a high probability to re-centralise all data at new players (Big Tech 2.0).
This image shows the policy editor page, when you click on an image/file in your data vault. You see the different policies, in this case a read policy and a read+write policy with the rules defined for required credentials for access.
These two images show how you can edit a rule for credentials
To get to the core of the thesis: giving users full control to define how 3rd parties can retrieve files in his/her vault. This is done by defining what is basically a decision tree for required combination of credentials. This is done granularly at file and folder lever. Credentials can be self-issued by the user (akin to accepting a friend request) or by trusted 3rd parties (IG-SSI SuperApp credentials, and if the stars align, even from EBSI). The goal is to combine sovereignty over identity with sovereignty over data in general. No more giving your phone to someone to see some pictures and hoping they don't swipe left too many times. No more pictures on the servers of Facebook and Instagram but all on your own device.
Solid prototyping progress
maturing of thesis direction; however, please make it more scientific. In 2013 it was asked: "do we need another photos sharing app? no
Suggested thesis title: "Enhancing the EU EBSI wallet into a privacy-first data vault"
See: EU EBSI wallet conformance testing" and this https://www.itu.int/en/ITU-T/webinars/20211013/Documents/Daniel%20Du%20Seuil.pdf
Goal is to get approved: "Be listed on the EBSI website and benefit from a strong visibility."
{repeating} e-IDAS high compliance: :x: Personal information is always encrypted and protected
Text storyline like: "European Commission is creating the critical societal infrastructure to reduce our reliance on Big Tech. This thesis enhances EU EBSI. Citizens can now also issue credentials within the EBSI framework. Self-issued credential are used as the foundation for data sovereignty, users can set policies and enforce those. We constructed a privacy-first data vault which uses the self-issued credentials for access control. Our architecture uses a pure non-custodian wallet and generalises everything into a EBSI-compatible data vault. Our work offers superior security and privacy when compared to the EU EBSI reference wallet. The viability of our system architecture is shown with a full implementation and Internet-deployment. We show that a privacy-first approach to the sharing of VAT identification numbers and family photos. Our systems offers data sharing with full self-sovereignty and we only rely on the EBSI critical infrastructure to prevent spoofing of identities. Our system offers fine-grained access control for both read and write access for selected files and directories."
Read the new thesis format example by Joost: https://github.com/Tribler/tribler/files/7992882/Thesis_3_2_22.pdf Delft blue + arXiv 2-column IEEE format.
Let's try to find out more about the wallet conformance testing https://ec.europa.eu/cefdigital/wiki/pages/viewpage.action?pageId=455606439
This sprint in the end was all about UI/UX taking a lot of time. The browser now looks like a proper file system and has file system functionalities. Files can now inherit access control rules from their parent folder. Having some issues still with loading remote files. So EBSI conformance testing is still on the to-do list.
https://user-images.githubusercontent.com/5730521/155093185-20054916-e12a-4e80-92a7-8b964f07e6fd.mov
curl -X 'POST' 'https://api.conformance.intebsi.xyz/users-onboarding/v1/sessions' -H 'accept: application/json'
approach?EDIT: Managed to complete this one. Needed to include a one time token from https://app.preprod.ebsi.eu/users-onboarding/ in the request
Similar error messages as a while back. Not really clear what the issue is:
EBSI is using ECDSA with the secp256k1 curve which is being deprecated by most libraries. The trend is to switch to either 256r1 or to EdDSA. Not really future proof. See https://jwt.io/libraries
Last sprint:
Lots of time spend upgrading project to Java 11, necessary to use packages for signing VCs. Lots of refactoring our own code and library Java code to work in Android.
Some progress made with EBSI conformance (~50%-60%) depending on what coverage we want (only synchronous flows or also asynchronous flows)
-Authentication and so finally succeeded. Current stumbling block is interacting with smart contract end-points. Documentation and examples still very difficult to navigate:
or
Is it it hex or base64????
With 57 Million :euro: in funding for EBSI Large Scale Trails. The EU wallet is only growing in importance as critical infrastructure for next year :astonished: Terms for selling your work: "EBSI-compatible data vault" or "Secure EBSI data sharing". The latter indicates more the access authorisation and generic framework that you provide. Focus on https://EBSI.readthedocs.io/ and pioneering foundations for others? Your thesis sells "accelerating the EU ID movement by providing the first EBSI-certified wallet and secure data sharing. Our work is targeted to be the reference implementations for others to build upon or improve (open source).", not just another photo+data sharing app.
Currently hotels all are by law required to copy your paper-based passport. What will EBSI give them? It is like the infamous Corona scanner, it remembers how many identities are checked? Or is the verifiable credential proof stored permanently?
Again some headaches in the conformance testing process. Unable to do significant testing for over a week. It seems one issue is resolved and another is created.
EBSI conformance scenario 2 (Requesting verifiable attestations) of the Conformance program is almost complete. Again, without blocking issues on the EBSI side, scenario 3 (presenting attestations) should not be too difficult (1 week max).
Made some improvements on the data vault during the EBSI down time:
On the data vault, mostly usability/UI improvements needed. Performance improvements (higher transfer rate) would be nice but might be too big a task.
Shifting focus towards writing to have a rough draft in 2 weeks.
Topic is determined: Digital Basic identity, see https://www.tweedekamer.nl/kamerstukken/brieven_regering/detail?id=2021Z02985&did=2021D06488
Estimated timeline (tentative)
First sprint target of 2 weeks: see above