Skip to content

Commit

Permalink
Added banner and updated base readme
Browse files Browse the repository at this point in the history
  • Loading branch information
JelleMillenaar authored and JelleMillenaar committed Aug 21, 2020
1 parent ce99390 commit fecbb73
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 63 deletions.
Binary file added .meta/identity_banner.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
111 changes: 48 additions & 63 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
<h1 align="center">
IOTA IDENTITY
</h1>
![banner](./.meta/identity_banner.png)

<h2 align="center">A framework for dezentralized identity applications on IOTA.</h2>

Expand All @@ -11,88 +9,75 @@
</p>

<p align="center">
<a href="#about">About</a> ◈
<a href="#design">Design</a> ◈
<a href="#supporting-the-project">Supporting the project</a> ◈
<a href="#introduction">Introduction</a> ◈
<a href="#warning">Warning</a> ◈
<a href="#planned-milestones">Planned Milestones</a> ◈
<a href="#roadmap">Roadmap</a> ◈
<a href="#joining-the-discussion">Joining the discussion</a>
</p>

---

## About
This is a work-in-progress library for Digital Identity on IOTA written in [Rust](https://www.rust-lang.org/). It follows the Decentralized Identifiers (DIDs) and Verifiable Credentials standards created by the W3C. The concept of digital identity allows people, businesses, devices and anything else to identify themselves online, while remaining fully in control of this process. Bindings to other programming languages like Javascript, C, Python and more can u find in the [./libraries] directory.
## Introduction

IOTA Identity is an implementation of decentralized digital identity also known as Self Sovereign Identity (SSI). It implements standards such as [DID](https://www.w3.org/TR/did-core/) and [Verifiable Credentials](https://www.w3.org/TR/vc-data-model/) from W3C and other related (proposed) standards. This framework can be utilized to create and authenticate digital identities, creating a trusted connection and sharing verifiable information, establishing trust in the digital world.

> 🚧 **WARNING: THE CURRENT VERSION IS FEATURE INCOMPLETE AND WILL STILL UNDERGO MASSIVE CHANGES** 🚧
The individual libraries are developed to be agnostic of Distributed Ledger Technology (DLT), with the exception of the IOTA integration and higher level libraries. Written in stable rust, it has strong guarantees of memory safety, process integrity while maintaining performance.

If you are interested in using this project or contributing, join our [Discord](https://discord.iota.org) and visit the channel #identity-dev.
## Warning

This library is currently under development and is not yet ready to be used for anything. It is currently feature incomplete and cannot be considered alpha. Use at your own peril. Until a formal third-party security audit has taken place, the IOTA Foundation makes no guarantees to the fitness of this library for any purposes.

### Unified Identity Protocol Whitepaper
Our Vision for a Unified Identity Protocol on the Tangle for Things, Organizations, and Individuals.
As such they are to be seen as **experimental** and not ready for real-world applications.

[Our Whitepaper](https://files.iota.org/comms/IOTA_The_Case_for_a_Unified_Identity.pdf) (High level overview of concepts):
Nevertheless, we are very interested in feedback about the design and implementation, and encourage you to reach out with any concerns or suggestions you may have.

## Planned Milestones

## Design
At the current state, the framework is not fit for any projects, however as the framework matures we expect to support more and more type of applications. We recommend no use in real-world applications until the consumed libraries are audited, but experimentation and Proof-of-Concept projects are encouraged at the different stages.

### Decentralized Identifers (DID)
**Current Stage: 0**

This DID implementation is based on [v0.13 of the DID specification from W3C](https://w3c-ccg.github.io/did-spec/).
DID's are authenticated using the [DID-Authentication protocol](https://github.com/WebOfTrustInfo/rwot6-santabarbara/blob/master/final-documents/did-auth.md), which proves to an inspection party that they are communicating with the owner of the DID.
[According to the DID specification](https://w3c-ccg.github.io/did-spec/#did-documents) a DID Document is outputted when a DID is resolved.
This DID Document may be stored on IOTA, however this is immutabily stored and **might** contain personal data according to the GDPR.
It is therefore recommended that any DID's that represent people, will not be published on the Tangle, while issueing entities and devices should publish these to IOTA.
**Stage 1: DID (Q4 2020)**
As the DID standard is implemented and the IOTA ledger is integrated the first experimentations are possible. DIDs can be created, updated and ownership can be proven. This allows simple experimentations where ownership of an identity is the main requirement.

To create, retrieve and manage DID Documents look at the [DID Documention](src/DID/README.md).
**Stage 2: Verifiable Credentials (Q4 2020)**
With the Verifiable Credentials standard implemented, not only ownership can be proven, but also other attributes. At this stage PoCs are possible similarly to [Selv](https://selv.iota.org). However, the communications between actors are not yet implemented, identities are not easily recognized nor are credential layouts standardized. Real-world applications are possible at this stage (after audit), but require extra effort.

### Verifiable Credentials
**Stage 3: Communication Standardization (Q1 2021)**
Once the communications between DID actors have been implemented, any application using identity can communicate out-of-the-box in an interoperable manner. This makes applications easier to develop, yet as mentioned in Stage 2, identities are still not easily recognized nor are the credential layouts standarized. Real-world applications are therefore easier to develop (after audit), but scaling the application outside of a consortium is difficult.

Verifiable Credentials are implemented according to the [Verifiable Credentials Data Model 1.0 by W3C Community Group](https://www.w3.org/TR/vc-data-model/) standard.
Verifiable Credentials works closely together with the DID standard. Where a DID can just be authenticated, Verifiable Credentials can add verifiable attributes to the identifier.
The acquisition, communication, management and storage of Verifiable Credentials are out of the scope of this implementation.
For a general introduction to the concept, please [read the explanation on the specification page](https://www.w3.org/TR/vc-data-model/#what-is-a-verifiable-credential).
Stage 4: TBD

To create and verify Verifiable Credentials look at the [Verifiable Credentials Documentation](src/VC/README.md).
## Roadmap

### Verifiable Presentations
### Documentation and Specification
- [ ] Examples
- [ ] Specification Documentation

To prevent a replay-attack where another party can also pass on the credential as if it is talking about their DID, Verifiable Presentation are introduced.
The [Verifiable Presentation data model](https://www.w3.org/TR/vc-data-model/#presentations) groups a set of excisting Verifiable Credentials of the subject together for the inspecting party and adds a signature, including a challenge from the inspecting party. It is therefore recommended to not communicate credentials directly, but rather presentations.
### Basic Framework
- [ ] DID Document Manager (Under active development)
- [ ] IOTA Integration (Under active development)
- [ ] Resolver (Under active development)
- [ ] Stronghold Integration
- [ ] DID Comms
- [ ] Verifiable Credentials
- [ ] VC Comms
- [ ] Schema Validation
- [ ] C FFI Bindings
- [ ] Javascript FFI Bindings

### Schematics of Credentials

TODO: Describe schematics

### Encryption techniques

TODO: Describe current Encryption techniques and wanted / planned techniques.

### Future of this project

Identity will be used for:
- Replace physical documents
- Improved KYC
- Replace passwords
- IoT Security
- Access Control
- Trust
- Smart Cities
- Vehicle Identities (VID)

### API Reference

TODO: Add Module overview


## Supporting the project

If you want to discuss Identity or have some questions about it, join us on the
[IOTA Discord server](https://discord.iota.org/) in the `#identity-dev` and
`#identity-discussion` channels.

If you want to be a part of development, please see the [contributing guidelines](.github/CONTRIBUTING.md) for information on how to contribute.
### Extended Features (2021+)
- [ ] Mobile App Wrapper
- [ ] Credential standardization
- [ ] Identity Agent
- [ ] Pairwise DIDs
- [ ] Zero Knowledge Proofs
- [ ] Trust Fabric
- [ ] eId Integrations
- [ ] IoT reputation system
- [ ] Identity for Objects

## Joining the discussion

If you want to get involved in the community, need help getting started, have any issues related to the repository or just want to discuss blockchain, distributed ledgers, and IoT with other people, feel free to join our [Discord](https://discord.iota.org/).
If you want to get involved in discussions about this framework, or you're looking for support, go to the #identity-discussion channel on [Discord](http://discord.iota.org).

0 comments on commit fecbb73

Please sign in to comment.