Closed synctext closed 4 years ago
We achieve zero-knowledge proof agnosticity by using a plugin system.
The focus of this thesis need not be on (crypto)currencies, but a system that encompasses all-in-one (attestations, identity, currency) would be much more innovative.
Summary of work until now.
What's next:
Meeting minutes:
scientific objective: explore if Distributed Apps are a viable alternative to the uPort smart contract architecture.
As discussed, there seems to be a universal law for the push towards centralisation.
Related work for digital ownership and self-sovereignty:
Any decentralized system that is more efficient if centralized, eventually gets centralized by efficiencies of scale.
From HN threadI want my home directory to be where all my data is. Not just my local files, not just my source code, not just my photos, not just my mail. All my data. My "phone" should be able to access the same data as my laptop, which should be able to access the same data as the servers.
A solution is that we generalise the viral nature of the GPL software license for data and that you are bound to preserve and honor self-sovereignty. A data GPL. Thus banishing centralisation by principle.
Possible use-case to focus thesis on:
Define an API for a unified Ethereum, Ripple and Bitcoin wallet. Implement.
Our decentralized market already has primitives for a universal cryptocurrency wallet, see here. However, the interface declaration is most likely not complete and it requires more work. It could be a nice starting point for this project however.
How does a person know that another person is authorized to sign on a companies' behalf?
The latter is a centralized repository which needs to be maintained by companies themselves. The verifying party then needs to purchase one-time access to this repository. This provides a (rather small) revenue stream for the CoC. As the repository is not always used and may be out of date, the verification is not required by law. Hence, these "credentials" only work one way: if they are present, the person is certainly authorized. If not, the person may still be authorized. Especially in high value transactions, the verifier is inclined to ascertain that the signer is authorized.
Self-Sovereign Identity: the top-level employees receive a signature from the CoC, stating that those individuals are authorized on the company's behalf. These individuals can subsequently authorize other personnel, bypassing the CoC, by providing them with signed statements. This requires:
Concerns:
Benefits:
Personnel authorization becomes a "certificate hierarchy", whereby the company's root certificates are issued by the CoC.
thesis direction and storyline meeting notes:
This weeks sprint: create clickable demo GUI in @egbertbouman selected GUI framework
Focusing a lot on understanding IPv8 and getting TLSWitness to work, I failed to notice early on that the KvK APIs do not offer the information we need: who owns the company. Alternatively, we could fetch it by downloading an extract ("uittreksel") in PDF and scanning it, but that would be really weak. I have contacted them regarding this issue.
Furthermore, another interesting case popped up, inspecting the extract of an actual company: a company may be owned by another company. This requires a little propagation which should not be too hard to implement, but we'll leave that case for later.
A little breakthrough today! The TLSWitness adapter for KvK is working (mostly).
Hence, we can request a kvknumber credential by logging in with a KvK username/password combination:
This results in successful attestation and a credential in our wallet:
It took a little while, because the KvK login process is cluttered with a lot of redirects, cookies, SAML request/response and other tokens which need to be propagated througout the session. Hence the procedure currently counts 6 GET/POST calls, not counting the logout procedure.
I could not verify the resulting QR code with the android-app, but I don't think this is an issue with my code.
solid progress! Access to the HandelsRegister-data-services is key. Plus Docker image for official signatures by Chamber of Commerce would be another significant step forward.
Tuesday July 2nd, I have a few meetings at the KvK in Utrecht.
Furthermore, we discussed the next milestone, set for July 12:
Questions for later:
Made quite some progress these weeks.
Built an OpenWallet app based on the RegieOpGegevens app. The views are near finished, but it still needs some work:
Got an attestation server and client working (see repo) with the following features:
kvk-nr
, kvk-entry-date
)bsn
)./init
and /data
I have currently programmed three procedures:
bsn
(no credentials needed). The server gives out BSN numbers, so we can use these later for the KVK procedure.kvknr
based on bsn
. The server has a lookup table from bsn
to kvknr
.The implemented procedure is as follows:
Client
invokes api/init
over HTTPS with its mid
and procedure_id
and optional credential data (sent over secure HTTP, never over IPv8)Server
starts the procedure , (optionally) requesting verification of the credentials over IPv8.Client
automatically accepts the IPv8 verification requests (if they match the conditions).Server
fetches the attributes from some data source;Server
"stages" the attestation of these attributes (they wait for incoming IPv8 attestation request).Client
requests api/data
which lists all staged attestations for that peer (the actual attribute values, again not sent over IPv8).Client
sends an attestation request for each staged attribute over IPv8 (not in parallel, since IPv8 currently does not allow that).Server
continuously monitors for attestation requests. Upon request it checks if the attestation has been staged and if so makes the attestation.Client
verifies the incoming attestations.Remaining
Scientific storyline buzz draft: universal attestation architecture. btw please check these regulations
('Starting peer', 1)
('port', 14411)
('mid_b64', '9zEYoM+84qa89iPfe5yEIZ6JhgY=')
('mid_hex', 'f73118a0cfbce2a6bcf623df7b9c84219e898606')
('Starting peer', 2)
('port', 14412)
('mid_b64', 'Y4OuY4JmnMKmNdkB5Wo2IyqTheE=')
('mid_hex', '6383ae6382669cc2a635d901e56a36232a9385e1')
Had my first meetings with the Kamer van Koophandel today. Two key points came out of this:
Pubkey -> Kvknr
while their "only" duty is to maintain the link BSN -> Kvknr
. Hence the KvK is not as interested in the current offer. We need to find a way to remove this risk. I can think of two solutions:
Pubkey -> BSN
and BSN -> Kvknr
into one proof: Pubkey -> KvKnr
. This is probably very interesting to many organizations that root their facts on the BSN. I must check whether this is feasible within my thesis as it is not something IPv8 currently supports.23 July 2019 meeting. Thesis core idea:
I have written a small piece that presents an alternative protocol that allows the KVK to commit to a mathematical equivalent of the BSN -> KVKNR
relation since they may not be legally allowed to attest to PK -> KVKNR
. The idea in short:
BLINDED_BSN
(ElGamal commitm.)f: BLINDED_BSN -> KVKNR
. (ElGamal commitm.)f
, KVKNR
and BLINDED_BSN
with the verifier.f(BLINDED_BSN) ?= KVKNR
It uses an ElGamal based commitment scheme which is information-theoretically binding, however slighly adapted. I am aware that this may screw up the entire security, so I still need to prove that the properties hold. This scheme should be computationally-hiding, which I believe is sufficient protection for the BSN.
DRAFT: Attesting-To-BSN-Using-ElGamal-Commitment-Schemes-DRAFT.pdf
I realised that I only needed one commitment (on BSN), so I could simplify the protocol. Now the math no longer needs proving as it is a straightforward ElGamal commitment. The new idea in short:
BSN'
(Blinded BSN, ElGamal commitm.)BSN'
, BSN
and blinding value r
with the KVKBSN'
(BSN', KVKNR)
if a relation BSN -> KVKNR
exists(BSN', KVKNR)
with the verifier.BSN'
attestation and the (BSN', KVKNR)
attestation.I have updated my draft accordingly.
Attesting-To-BSN-Using-ElGamal-Commitment-Schemes-DRAFT-V2.pdf
After quite a bit of searching, I found the cause for the flaky behaviour of the Attestation flow. The dummy flow I wrote tossed a coin and shared either '2168897456' or '3598846111' with type: id_metadata
. It turns out that the attestation for '2168897456' resulted in a "bad hash" according to Quinten which led to a verification probability of 0.666656494140625, insufficient. The other value results in a 0.9999847412109375 probability, thus verification succeeds. After changing the type to id_metadata_big
the issue for these values was resolved.
id_metadata/big/huge
can carry, other than 'bad luck'.Read you document, nice and fancy crypto! "Given a finite abelian group G of prime order q which is generated by g and h (h 6= g) where discrete logarithm of h to the base of g is unknown by any user in the system." However, please consider the following reliable and simple approach (government OKed):
public key, BSN
BSN, KvK number
attestationThe issue with your approach is that a proof of KVK number is required in the private sector which, in most cases, is not allowed to process BSN
. Hence, a private company cannot request the attribute BSN, KvK number
.
In contrast, my solution allows a private company to request the attributes BSN'
issued by government and BSN', KvK number
issued by KVK and compare the values of BSN'
. I believe it more likely that the private sector would be allowed to use a pseudo-BSN because it is a non-deterministic encryption.
Therefore, many can be derived of the original BSN, reducing linkability. Next steps would be:
BSN'
.Both steps require that I first:
I'm working on the latter now.
Check! GDPR compliance and personal data processing...
Figured out the .66
matching issue. Turns out that the (3 dimensional) hash vector describing your specific attribute value has a 0
component. This is throwing off the matching calculation.
For no good reason, here is a moving image of the resulting vectors of several values:
This will be fixed in https://github.com/Tribler/py-ipv8/pull/543
Good news! Thanks for looking into that.
Real BSN pilot unlikely Joost unfortunately does not think it likely that the KVK will run a pilot with real data using BSN. We may however run a pilot based on first and last name, either signed by TU Delft or KVK. We could run a test with BSN but only on fake data.
Validate legal possibilities for Pseudo BSN As mentioned before, I would like to evaluate the legal implications of using a Pseudo BSN. In a few weeks, I will speak to the KVK legal department about this issue. However, it may also be interesting to ask the AP (Autoriteit Persoonsgegevens). We may also be able to consult with an expert in this field, initiated either by the KVK or the TU Delft.
Preliminary Scope (I'm not sure if "preliminary" is correct, four months in.) Build a Self-Sovereign Identity solution that:
Also:
Possible extension: inter- and intraorganizational authorization management The prelim scope already sounds like quite a bit, and hopefully enough for a decent Masters' Thesis. If time permits, I could take a look at the authorizations ("machtigingen") domain. An SSI solution may help resolve some of the problems in the authorizations domain, such as eased interoperability, low maintenance systems, strong digital identity, preserving organizational sovereignty, etc. However, this is quite a big case. I don't believe that I have sufficient time to put the core focus on this application, but I might be able to create a start and pitch the rest of the idea in the "future work" section.
I do believe that such an extension could really show some of the strengths that an SSI solution such as this one can provide.
authorised representative as key use-case. Simply bypass BSN issue for now with last-name. Demonstrate the verifiable claim principle and authorized representative. Avoid ontology complexity matters at all cost! Focus on the linkage and portable digital claims: natural person plus legal entity.
Discussion outcome:
A short explanation of one use case, foreign authorization certificates (volmachten), that is of special interest to ING which our technology may contribute to:
ING authorizes employees or third parties such as notaries to close deals in their name. In the Netherlands, these authorization certificates (volmacht) are issued at and signed by the Chamber of Commerce. When deals occur in other countries, such authorization certificate needs to be "legalised", as is the case with many public documents that (must) have legal consequences.
Note that this process is two-fold:
Legalisation agreements differ per country, but usually involve the following:
To speed up this process, 108 countries including the Netherlands have signed the Apostille Convention, stating that the second check is no longer necessary as they trust the first stamp is sufficiently qualified. Within the EU, this Apostille is not even necessary anymore for certain documents as of 2016.
The eletronic Apostille Program (e-APP) is an attempt improve and secure this process even further. It involves two stages: (1) the source country issues an e-Apostille (PDF with optional XML layer) and (2) it operates an e-Register, a simple database allowing lookup of e-Apostilles issued by that country given a number and date. This is an important step in combating fraud which is much easier with paper-based procedures. Over 25 countries work with e-APP like the UK, US, Belgium. Remarkably, although Apostille is founded in The Hague, the Netherlands does not yet provide it.
When a representative from country A signs a deal in country B, a legalised authorization certificate is required. The notary must hence receive the legalised document, either on paper or digitally, verify the stamp(s) on it by the proper authorities (or check the e-Register), make sure that the represented party is correct and authenticate the representing party. Only then can they sign the deal.
In business, and society, one party's success often relies on the honesty and competence of another. Those who are able to distinguish the good from the bad apples have the best chance of survival. To tell the difference, the relying party needs to gather the relevant knowledge about the subject, i.e. the apple. Depending on the kind of business, it may be relevant whether the subject meets a minimum age, knows a certain language, or is experienced as a programmer. The relying party may acquire confidence in these traits before business proceeds. However, if it is the benevolence or honesty of the subject that matters, the parties will first have to establish trust.
In general, the subject cannot be trusted to deliver the relevant facts that enable the business, i.e. do not trust the teenager to honestly tell her age when buying a drink. This example clearly shows the problem: the subject is at a conflict of interest. One solution is for the relying party to assess certain traits by itself. For an employer, questioning an applicant about the work specific knowledge, may be a reasonably cheap and effective way of doing so. In contrast, a home owner is likely unqualified to quiz a contractor about bolts and screws. The irony is that trust and confidence are usually products from a history of (risky) transactions, while they are also supposed to be a precondition. Again, the employer can risk a trial period with the employee, but for the home owner this is not feasible. As risk comes with failure and failure comes with cost, building trust or confidence first hand may be expensive.
When one recommends a restaurant to a friend, we see the transfer of trust. For the friend, the risk (and cost) of visiting that restaurant is now lower. It follows that trust has value, both for the friend as well as the restaurant. Reputation, an age-old mechanism for sharing of trust, is still considered the one of the most prized posessions of people and organisations. Friends are inclined not to lie about restaurants and restaurants are inclined to keep up their quality. This illustrates that reputation has a self-preserving effect; it keep one on the straight-and-narrow.
Reputation, and trust, are not generic qualities. We trust the friend to be honest about this restaurant, assuming there is no conflict of interest, and we deem him capable of making such assessment. But for a hygiene-check we'd rather trust the health inspection. The attestation from a friend is valuable because the source is trusted regarding that attestation. The same mechanisms work a macroscopic scale: modern-day society is built of all sorts of institutions that have their own expertise and aim to preserve a good reputation specific to that expertise. Hence, we trust the bank with our money but not with our darkest secrets. We trust consumers to review shops, taxi drivers and service providers and the products and services they offer. We trust schools to assess knowledge and skill of individuals, but only trust doctors to assess their health.
Zooming out reveals a complex network of entities, each contributing their honorable word to make the next transaction a little safer. Identity information about individuals and organisations is exchanged through all sorts of networks, channels and media. It is at this complex infrastructure, the storage and exchange of possibly vulnerable information, where issues arise. These issues, regarding the privacy and autonomy of individuals and the risks of identity fraud or theft, have led to numerous laws and security measures which increase complexity and cost of the identity exchange. One prominent example is the amount of effort and money banks currently put into Know You Customer (KYC) and Anti Money-Laundering (AML) procedures. The current infrastructure does not suffice, but if these issues were to be relieved, we can tap into a wealth of potential.
The latest development in this area is coined Self-Sovereign Identity and it is looking very promising. By a series of technologies involving smart phones, cryptography and distributed ledgers this new concept proposes to put the control of identity information back into the hands of the individual, the subject, whom the information concerns. By putting a secure and persistent digital identity in the hands of the individual, the rightful owner can make a strong claim on that identity at all times. Providing such a very secure and universal means of authentication combats identity fraud. Moreover, as this technology resides at the subject, it is available to all trusted sources and relying parties, which saves even more cost.
Self-Sovereign Identity could be the new infrastructure that carries the identity exchange. By sharing the infrastructure, these solutions could become very cheap and accessible. By providing all sources and all relying parties with the tools to issue and verify a subject's credentials using strong identities and signatures, the limiting issues could be relieved and the promised potential unlocked. But while this technology is next to ready, it is not yet adopted at large scale. One open challenge is how to coordinate the exchange of information, now that the source no longer controls the medium of disclosure, nor who receives the information.
What is required is a standardized communication of identity information that meets the needs of all parties involved. This standardization must occur at the right level of abstraction, so it does not limit the possibilities, yet enables parties to quickly and affordably reap the benefits of this new channel. It must facilitate sources and relying parties to establish a mutual understanding of the meaning and (legal) implications of the identity information being shared. But also, as the main intent of SSI, the subject must be involved in this play as well. It must unequivocally understand the value of the information it receives and is being asked for, in order to be fully autonomous. However, this infrastructure concerns all levels of society, even those without an affinity to technology or elevated conscience about identity information and its implications. As it requires the individual to play along, the technology must also be really accessible.
This thesis will focus on a Semantic Layer, making the interplay between source, subject and relying party accessible and meaningful in a way that suits the multi-stakeholder requirements of the real world and preserves the qualities that Self-Sovereign Identity promises.
wild idea: write thesis in DID W3C specification style and submit proposal with implementation experience
This thesis is focused on a problem at the intersection of computer science, business, legal, and social science. identity is a broad topics with political sensitivity. Proving your identity goes beyond traditional computer science. Every day citizens authenticate themselves to government officials. Creating less friction, cheaper, and more secure alternative has high impact on society. The Internet lacks an identity and authentication framework. This thesis takes a practical approach and small step to filling this void. Our ambition level is creating a primitive prototype which could form the foundation for a Internet-wide identity framework.
Numerous identity frameworks have been created in the past 28 years since the invention of PGP. No of these frameworks have proved to be viable. Most effort in this this has been spend to understand the requirements, expectations, and business opportunities to make the first identity framework which is both viable and self-sovereign.
Effort has been focused on real-world deployment and legal grounding.
Great insight of yours: remove party with any stake. Net neutrality defines the freedom of communication, "identity&trust technology neutrality" is a novel concept we define here. In a more general scientific formulation: an identity and trust system MUST be neutral and self-governing. It is REQUIRED to be stripped of all conflicts of interest from stakeholders, return-on-investment influence, veto power of technology providers, ownership of source code. It also SHALL be self-sustainable with self-goverance, similar to Bitcoin, DAO, and Bittorrent ecosystems. ToDo: create "Tim Triples", which are the running code equivalance of the philosophical commandments of Allan. ToDo: landscaped information-overloaded architecture PNG of your thesis prototype (PUSH,Revoke,semantic module,..).
I have drafted a picture illustrating the relevant technical components that shape the context.
SSI Core is not the appropriate term I think. It may be the core of my thesis, but not the core of SSI, which should include IPv8.
Note that I aim to design a uniform Peer that is capable of playing all roles (issuer, holder, verifier). That's why it is both controllable from a GUI (Wallet-application on end-user device) via (b) or from a programmed "Controller" via (c). Both (b) and (c) have administrative/ownership rights.
The stack uses IPv8 obviously to connect with other peers via (g). The core may also communicate directly to the core of another peer via (h). Keys and encrypted credentials may be stored in an on-device Vault (e). A camera and other peripherals may also be used to communicate.
Integration with custom logic is appropriate via two channels:
Note that I have left out a direct connection from the core to external systems. This means all third party systems have to integrate with this SSI solution, instead of being compatible out of the box. One nice feature would be if the wallet could connect via OAuth, because existing systems would not need to be adapted. As far as I know, OAuth requires an authorization server, so that does not seem a viable option.
Meeting minutes:
perfect, Jan sprint on attestation for representing a company, Feb possible field trail with a few test subjects.
Schedule:
Thesis feedback:
I propose to phrase the main research question of my thesis as follows:
How can one practically verify an actor's qualifications using a scalable Self-Sovereign Identity infrastructure?
I will elaborate using the following subquestions:
I will use the case of Authorizations/Machtigingen as formulated together with the KVK as the running example througout my thesis. At the end of my thesis, I describe the app I built (ZekereZaken) which is the embodiment of this example, and how this performed in a field test.
Note that the overarching goal is to create a shared Self-Sovereign Identity infrastructure that supports many more identity use cases than the one covered by my app. However, as I will argue in my introduction, it is infeasable to create this from scratch. Therefore, the approach is to take a (still quite generic) function of digital identity and design a system for it from theory to practice and then present the findings of this design exercise in such a way that it could be extended to other applications.
At the last meeting, we discussed the outline of my thesis needed some more work. I propose the following rearrangement. Note that the fundamental problem is explained in (2) Problem Description, and its practical manifestation in (3) Example Problem: Extended Power of Attorney. Then chapter 4 thoroughly explores the concept of Self-Sovereignty (which is still poorly covered in academic literature) and proposes a model for framing it. Chapters 5 through 7 describe my contributions, the solutions to the problems mentioned in (2). We then implement in chapter 8, test that in the field in chapter 9 and finally conclude and propose directions for future work.
I have added estimated page count per chapter, and the Research Questions that sections address.
very good. Last 2 points are security. Can these specific partial issues be captured into 1 end-to-end "guaranteed integrity" research question?
Comments on progress:
Conclusion from our discussion:
Irreducible complexity and messiness of reality which can't be captured in beautiful simplistic Alice and Bob models.
Who owns it? Expand the Internet ownership model: owned by both nobody and everybody. Attempts to address the last remaining open problem of the governance risk: "An efficient distributed PKI for structured P2P networks", also "Chord-PKI: A distributed trust infrastructure based on P2P networks", etc.
plus loss recovery and theft locking. One paper quote "The proposed solution does not handle certificate revocation and expiration since the employed trust model does not deal with these aspects.
"
To summarize our existential crisis meeting of today @synctext :
closing the reality gap
will that be sufficient scientific contribution, and sufficient to graduate?
I think exploring (and closing) the gap between theory and practice is a strong (and unique) scientific contribution 👍
Go ahead with your work. Definitely needed as banking is imploding and new trust paradigm will need to emerge in the emergency
The past two weeks have not been as productive as I had hoped, primarily due to the Corona virus. Also, I have had difficulties with balancing the ambition of closing the reality gap, with the reality of closing my thesis project.
The result is the following problem description, which is still a bit rough, but should completely describe the problem and scope of my project. Note that chapter 2 is the generic problem description (mostly theory) and chapter 3 is an in depth description of the practical problem I will be solving (with KVK): representing (or acting on behalf of) legal entities. Feedback is very welcome.
Did a quick review. Overall the storyline is pretty good. In detail:
General:
Chapter 2:
Chapter 3:
Overall the storyline is pretty good
Good stuff indeed! Solid progress for your thesis, no need to deviate from this path anymore. Sprint remarks:
I have drafted most of chapter 5, the analysis of the TrustChain/IPv8 stack upon which I build the semantic layer. There is one more small section left to write, but I would already like to share this work for feedback. Specifically:
Note that solving metadata leakage is out of scope for my thesis.
Looking good. I liked the remark about the DHT anonymization: @egbertbouman do you want to combine both of your babies into one?
Regarding the metadata: metadata visibility is one of three things that critically need to be changed before we can deploy for real (though metadata should not include private values -- metadata leakage is indeed a thing), but I have left these out for ease of use. We spend/spent most of our time testing anyway. However, given the fact that other people are starting to use our implementation, we should probably make these changes on the main branch soon.
Given the direction Trustchain is heading in (with the noodle protocol), I may have to do a hard protocol break soon anyway. Trustchain will then turn into something different: a DAG with no consensus, bilateral agreements and selective visibility of attributes (@synctext we need a new name 😃). At that point, it may also be wise to move the identity part of IPv8 to its own repository (possibly the noodle Trustchain would also move -- into AnyDex or the Tribler repo?).
Several wallets exist, but they are rarely extendable and are never truly universal. Storing Bitcoins and Ethereum is always seen as different from storing self-sovereign identity attestations. With the European Union PSD2 legislations it is even possible to mix real IBAN Euros with Bitcoins. Unifying these 3 isolated wallet infrastructures has never been achieved.
This Master thesis project will put a unique wallet on the Google App store: a wallet that, in principle, can contain a wealth of digital identities, a life-time collection of attestations, and your (pension) savings plus other types of (cyber)money.
This project has a high ambition level. Hence it is split into concrete feasible steps. We start with cybercurrency and then merge identity into the running code. Concrete steps with increasing ambition level and complexity: