Closed synctext closed 2 years ago
If you're into crypto: another fun, open and very difficult problem in the space of Self-Sovereign Identities is that of credential revocation. You can get a taste of the problem space in these papers: paper1, paper2. You'll have to make sure revocation data propagates decentrally and that the revocation lists/sets are anonymized.
Are we interleaving requirement analysis and prototyping? Sounds like the good thing todo in this unexplored field. Hardware expertise level: no soldering iron, custom firmware-only. Discussed "Member States"+EC co-author objective.
EU digital ID scheme for online transactions across Europe
An EU digital ID scheme (EUid) will:
- make it safer and easier to use online services anywhere in Europe
(e.g. enrolling in a foreign university, opening a bank account, accessing public services)
- give people more control over their personal data and privacy while respecting user anonymity.
Type of act: Proposal for a regulation
Sicco's assignment request:
Today is the first thesis day! Goal: determine direction in 3 weeks. Draft problem description. Firmware project or algorithm work? Related work on SSI: https://repository.tudelft.nl/islandora/object/uuid%3A200f1df0-adda-47a1-894c-baf54133035a plus obviously prior thesis from our Lab: https://repository.tudelft.nl/islandora/object/uuid%3Aaab1f3ff-da54-47f7-8998-847cb78322c8
Initial thesis ideas: Thesis_Ideas-2.pdf
WIP proposal: Thesis_Proposal.pdf
Currently have a few possible directions:
Understand prior work
If you plan on investigating revocation, you may also want to take note of this recent MSc thesis (from the crypto group) regarding a credential revocation scheme: http://resolver.tudelft.nl/uuid:871e17aa-a023-461f-88b1-80d83c21de92
I have written the following Thesis proposal with the Industry-Strength SSI in mind. I plan to submit this to Sicco.
Nice! Seems ready for submission to Sicco. Minor comments:
realised, there is still much to gain.
Still much left to investigate.
(4) interoperability is another key challenge. This needs to be an open standard and have an open reference implementation. But somehow the Spanish wallet provider needs to be able to talk fluently to Polish verifiable claim providers. So, a German/Dutch international SSI trail would be a key milestone to achieve.
The main knowledge gap currently existing in the research area of SSI is the gap between the theoretical frameworks and the practicality of an implementation of these theoretical frameworks.
The main knowledge gap currently existing in the research area of SSI is the gap between the theoretical frameworks and the feasibility these theories. For instance, strict processing latency requirements on mobile devices. Governments would be reluctant to ask many of the European Union citizens to upgrade their phones. Governance requirements by nation-states, complexity, communication overhead, and fault-tolerance are other gaps.
we can derive the following sub-questions that can be used to substantiate an answer to this research question
Too generic. We know prior work, functional requirements and its limits. This deviates from what is really needed. As scientists we can ignore the eIDAS and GDPR legal constraints somewhat. The next stage in the maturing of the SSI theoretical concepts is to go beyond mock-up trails. We need to devise the most simple as possible SSI architecture which integrates the following required elements in a technology neutral manner:
Great feedback. I've updated the research questions and added a minor section on interoperability. The research questions could still use a little refinement, however, are sufficient for the assignment description submission in my opinion.
Update: Stjepan called it "more than enough".
Update:
Had a great talk with @qstokkink. Got an introduction to the Python code and pointers to interesting authors and what literature to stay away from.
Also my literature list for now (will be growing after the pointers from Quinten):
- Stokkink, Q., Epema, D., & Pouwelse, J. (2020). A Truly Self-Sovereign Identity SystemarXiv preprint arXiv:2007.00415. - Dong, C., Wang, Z., Chen, S., & Xiang, Y. (2020). BBM: A Blockchain-Based Model for Open Banking via Self-sovereign Identity. In International Conference on Blockchain (pp. 61–75). - Stokkink, Q., & Pouwelse, J. (2018). Deployment of a blockchain-based self-sovereign identity. In 2018 IEEE International Conference on Internet of Things (iThings) and IEEE Green Computing and Communications (GreenCom) and IEEE Cyber, Physical and Social Computing (CPSCom) and IEEE Smart Data (SmartData) (pp. 1336–1342). - Zwitter, A., Gstrein, O., & Yap, E. (2020). Digital Identity and the Blockchain: Universal Identity Management and the Concept of the “Self-Sovereign” Individual Frontiers in Blockchain, 3. - Van Bruggen, C.. (2020). Forward-looking consistency inAttribute-Based Credentials. - Ferdous, M., Chowdhury, F., & Alassafi, M. (2019). In search of self-sovereign identity leveraging blockchain technology IEEE Access, 7, 103059–103079. - Tobin, A., & Reed, D. (2016). The inevitable rise of self-sovereign identity The Sovrin Foundation, 29(2016). - Cameron, K. (2005). The laws of identity Microsoft Corp, 5, 8–11. - Allen, C.. (2016). The Path to Self-Sovereign Identity. - Mühle, A., Grüner, A., Gayvoronskaya, T., & Meinel, C.. (2018). A survey on essential components of a self-sovereign identity. - Zhou, T., Li, X., & Zhao, H. (2019). EverSSDI: Blockchain-based framework for verification, authorisation and recovery of self-sovereign identity using smart contractsInternational Journal of Computer Applications in Technology, 60(3), 281–295. - Coelho, P., Z'uquete, A., & Gomes, H. (2018). Federation of Attribute Providers for User Self-Sovereign Identity Journal of Information Systems Engineering & Management, 3(4). - Helmy, N.. (2020). Overview of Decentralized Identity Standards. - Der, U., Jähnichen, S., & Sürmeli, J. (2017). Self-sovereign identity - opportunities and challenges for the digital revolutionar Xiv preprint arXiv:1712.01767. - Wang, F., & De Filippi, P. (2020). Self-Sovereign Identity in a Globalized World: Credentials-Based Identity Systems as a Driver for Economic InclusionFrontiers in Blockchain, 2, 28. - Othman, A., & Callahan, J. (2018). The Horcrux Protocol: A Method for Decentralized Biometric-based Self-sovereign Identity. In Proceedings of the International Joint Conference on Neural Networks. Institute of Electrical and Electronics Engineers Inc.. - Speelman, T. (2020). Self-Sovereign Identity: Proving Power over Legal Entities. (Master Thesis, TU Delft). - Baars, D. (2016). Towards self-sovereign identity using blockchain technology. (Master Thesis, UTwente) - Otte, P., de Vos, M., & Pouwelse, J. (2020). TrustChain: A Sybil-resistant scalable blockchain. Future Generation Computer Systems, 107, 770-780. - Abraham, A., Hörandner, F., Omolola, O., & Ramacher, S. (2019, December). Privacy-Preserving eID Derivation for Self-Sovereign Identity Systems. In International Conference on Information and Communications Security (pp. 307-323). Springer, Cham.
Some updates:
Here is my very (!) rough draft. Thought I'd include it for completeness sake.
Lots of lost or stolen ID documents: 900 documents per day Note that we use Tor-like stack to offer proper privacy when using your digital identity at passport-grade level. Now we could also utilise our distributed technology for secure dynamic data exchange. Multiple times per day the government could publish revoked (lost/stolen) passports in their channel. A channel is a collection of signed data blobs, each blob is a swarm (sort of P2P RSS feed which can scale without bounds) (DDos protected, like attack on mijnoverheid.nl).
Quinten advise: just start; translated? : dive into Superapp stack with Kotlin IPv8
I have made a design on how the Hybrid-Revocation Model could work:
Also a design how it can be integrated in the regular verification flow:
Update
present
claimverify
claimstore
claimUpdate:
irmaexact
attestation algorithm --> is also not fully implemented in Py-IPv8pengbaorange
(not much work, builds on Bonehexact which is 100% implemented)ctrl+c ctrl+v
to get it up and running
pengboarange
algorithm: tomorrowProgress update:
Related work by Evernym from Sovrin which uses central identity resolver architecture. Big 54MByte .APK on Android. "Connect.Me also includes an integration with the identity verification company Onfido." "Using Connect.Me, individuals can:
Quick review..Nice and polished app, but totally unclear why I want this. Offers no compelling features. That is actually a general problem for any stand-alone wallet. 'Empty vessel problem'. You can't do anything without recognition by the state or convincing your friends to join. Bootstrapping without a killer usage is probably impossible :thinking:. Do we need a wallet as universal Android background service? (beyond CredentialsClient object
) Credential store which can be controlled by user, if they dive into settings. Clearly this "empty vessel" approach is flawed for mass uptake. Background-wallet paradigm: a identity wallet is never exposed to the user, it is always bundled with the app for opening a bank account, app for buying a house or app for government services.
Full walk-through:
(click for more details)
The basic functionality for the demo is done! ssi-debug-apk-v0.1.zip The app can be used as follows:
The home screen shows a QR code of your public key. This can be scanned using the scanner to add this key to your trusted authorities. Secondly, the screen shows your attestations (currently only the Peng & Bao attestation). You can press on any of the attestations to display the QR code. This looks as follows:
This QR code can also be scanned using the scanner.
The scanner has two functionalities: it can scan attestations and public keys. When scanning an attestation, the user is prompted the following:
If the user chooses to verify, the attestation is verified locally through the signature of the signee.
The results in one of the following results:
When scanning a public key, the user is prompted by the following and can add a new trusted authority:
On the users screen, attestations can be requested. When pressing on a valid peer, a prompt opens for an attribute name:
On the other client's end, the following prompt launched for entering a value (for now only numerical for the 18 plus check):
A Peng Bao attestation is subsequently send to the requesting party and added to his wallet. This can then be presented and scanned as explained prior.
APK (file size too big for direct upload): https://1drv.ms/u/s!AiR7NDwNQapx_BXQ6nHMspyUGo0e?e=J5TB1t
Kotlin-IPv8
merged in MasterSuper-app
PR openJust had a quick glance at your source code: you may want to look into porting the CommunicationManager for a clean programmatic pseudonym management API, instead of accessing all of the primitives and database data directly. This class also includes rendezvous logic so you can find your counterparty on the Internet if more than 30 people join your community.
Side note: this is how we map user interactions to the CommunicationManager in Python.
Just had a quick glance at your source code: you may want to look into porting the CommunicationManager for a clean programmatic pseudonym management API, instead of accessing all of the primitives and database data directly. This class also includes rendezvous logic so you can find your counterparty on the Internet if more than 30 people join your community.
Side note: this is how we map user interactions to the CommunicationManager in Python.
Thanks for the pointers, @qstokkink! The communication manager was definitely on my TODO list, however, I made the decision that, merely, the WalletCommunity is sufficient for the upcoming field trial of ~15 people.
This class also includes rendezvous logic so you can find your counterparty on the Internet if more than 30 people join your community.
This I did not know and was something that already crossed my mind. This will definitely be necessary, I will port these. Thanks!
I just made a release for the 18 plus SSI app for the field trial this Thursday. Download link.
The dashboard only contains two apps:
Plus, I changed the icon background color for distinguishability:
Nifty functionality: got attestation requesting and signing (and also the QR local verification) fully functional "offline" through Bluetooth! It's a bit slower, due to lower MTU, and unstable, but it does work.
Implemented CommunicationManager
& IdentityCommunity
:
Implementing REST API in Kotlin:
{
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://essif.europa.eu/schemas/vc/2019/v1",
"https://essif.europa.eu/schemas/eidas/2019/v1"],
"id": "did:ebsi-eth:00000001/credentials/1872",
"type": ["VerifiableCredential", "EssifVerifiableID"],
"issuer": "did:ebsi-eth:00000001",
"issuanceDate": "2019-06-22T14:11:44Z",
"credentialSubject": {
"id": "did:ebsi-eth:00000002",
"currentFamilyName": "Franz",
"currentGivenName": "Hinterberger",
"dateOfBirth": "1999-03-22T00:00:00Z",
"placeOfBirth": "Salzburg, Austria"
},
"proof": [ {
"type": "EcdsaSecp256k1Signature2019",
"created": "2019-06-22T14:11:44Z",
"proofPurpose": "assertionMethod",
"verificationMethod": "did:ebsi-eth:00000001#key-1",
"jws": "eyJhbGciOiJSUzI1NiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..TCYt5X
sITJX1CxPCT8yAV-TvkIEq_PbChOMqsLfRoPsnsgw5WEuts01mq-pQy7UJiN5mgRxD-Wuc"
} ]
}
$ curl http://localhost:14411/identity/pseudonym1/outstanding/verifications
{"requests": [{"peer": "TGliTmFDTFBLOg/rrouc7qXT1ZKxHFvzxb4IVRYDPdbN4n7eFFuaT385YNW4aoh3Mruv+hSjbssLYmps+jlh9rb250LYD7gEH20=", "attribute_name": "my_attribute"}
$ curl -X PUT -H "Content-Type: application/json" -d '{"name":"my_attribute"}' "http://localhost:14411/identity/pseudonym1/allow/TGliTmFDTFBLOg%2Frrouc7qXT1ZKxHFvzxb4IVRYDPdbN4n7eFFuaT385YNW4aoh3Mruv%2BhSjbssLYmps%2Bjlh9rb250LYD7gEH20%3D"
{"success": true}
Will be working on SSI blogpost for RvIG: general SSI information, albeit can be useful as practice for thesis.
Keeping track of developments
In case you care about IRMA: I recently fixed the script that pulls BRP attributes from the Nijmegen IRMA server. I'm not sure if I'd recommend supporting this, as you need to go through a DigiD portal.. but it works again.
Progress update:
GossipCommunity
PreviewPayloads
:UpdateRequestPayload
:UpdateRequestPayloads
: Contain key-value pairs of requested updates and the lowest version the requesting peer knows.UpdateChunkPayloads
:UpdateChunkPayloads
:eventually consistent
fashion: i.e., the next PreviewPayload
will give the client another chance at gaining the packages in order. This choice was made as otherwise clients have to request missing versions instead of simply sending their last known versions.x
, however, the other party meanwhile learned of versions [x+1, x+y]
, the other party also sends these along as it has no true notion of the requested versions (requesting party only sends their lowest known version along). The receiving party now drops any of the versions newer than x
as it did not request these --> countermeasure against possible misuse of sending more data than a client requested.Month | Task |
---|---|
April | Core research and draft text article/thesis |
May | Scientific results beyond state-of-the-art |
June | Polish thesis + article |
July | Done |
Every time an App or website asks us to create a new digital identity or to easily log
on via a big platform, we have no idea what happens to our data in reality.
That is why the Commission will soon propose a secure European e-identity.
One that we trust and that any citizen can use anywhere in Europe to do anything from
paying your taxes to renting a bicycle. A technology where we can control ourselves what
data and how data is used.
- State of the Union Address by President von der Leyen
https://ec.europa.eu/commission/presscorner/detail/en/SPEECH_20_1655
Another paper by Sovrin on revocation: https://sovrin.org/wp-content/uploads/AnonCred-RWC.pdf
Just had an idea for the secondary issue of loss recovery:
You could check out the results of #3245 and #3246. Both groups used Shamir shares for recovery.
WEF authors to contact: https://www.weforum.org/agenda/2021/04/trust-is-fraying-how-trust-anchors-could-help-gtgs/
Code base:
CommunicationManager
:Revocation:
Possible novelty in revocation:
O(n)
search. This O(n)
search can also be optimized by using a smart search algorithm (e.g Heapsort worst case O(n log n)
.Article:
For bonus, I've written the first version of the SSI blog:
Progress update:
Self reflection:
Proposed roadmap (next two weeks):
Secure communication primitive
"Von Der Leyen"-Trial (Although name is revealed, 18 plus also works)
Current status: