CashID is a Cryptographic Identity protocol designed by Jonathan Silverblood inspired by an earlier spec known as BitID.
Essentially, it allows you to use your BCH Cryptographic Keys as a way to authorize actions against services - as well as send additional metadata to these services.
One of the most common use-cases for this would be Registering or Signing into a service. The below is an example of how this might look in practice (if using an OIDC flow).
If you would like to try out the OIDC flow, the following link 'should' work (choose "Use WebApp" if you do not have an Identity Manager installed).
Why CashID?
CashID offers a few advantages over traditional Social Login services:
All your information is stored on your Device(s). There is no need for Social Intermediaries - thus mitigating some of the concerns around services like Facebook mining your data.
It allows Password-less Authentication into services and quick Registration.
CashID ultimately returns a BCH Address (this is your ID).
In future services that support it could allow users to receive payments and/or communications directly to the user's CashID Address.
(In my opinion, this also provides a very good foundation for decentralised Media Services, but I'll delve more into that in a future post when I have more time.)All payloads are cryptographically signed by your Private Key - another user (unless they have your Private Key) cannot pretend to be you.
A single CashID Account 'can' be used across several services (one consistent identifier across services).
(This is optional - a user could create a new Identity per service if desired.)
Adoption
Support for CashID in both Wallets and Services is still lacking. For the past few weeks, I've been working on a few projects to try to ease integration of CashID into services as well as make it easier to integrate into existing Wallet Applications.
As a stop-gap while we wait for Wallet Support, I've also been working on an Identity Manager WebApp.
Links to the projects along with a short description are below:
cashid-js
This is a NodeJS/Javascript Library that contains three classes:
1. CashId (Common Utility Functions for CashID)
2. CashIdServer (To ease implementation for Services)
3. CashIdClient (To ease implementation into Wallets)
https://github.com/developers-cash/cashid-js
cashid-gateway
This is a Node App that provides an OIDC Gateway for CashId. This leverages the above and is intended to provide an easy bridge for existing Services that already support OIDC to easily integrate CashId.
https://github.com/developers-cash/cashid-gateway
cashid-webapp
An Identity Manager Web Application that can be used until we have better native Wallet Support for CashID.
(Please backup your mnemonics if not used for testing purposes. All keys are stored in your browser's Local Storage so they will not be recoverable if something goes wrong.)
https://cashid.app
https://github.com/developers-cash/cashid-webapp
NOTE THAT ALL OF THE ABOVE ARE UNSTABLE AND LACK PROPER DOCUMENTATION. ADDITIONALLY, THE API'S ARE LIKELY TO CHANGE SO PLEASE DO NOT TRY TO USE THESE YET. WILL COMMIT LATEST FOR PROJECTS NEXT WEEK.
I plan on doing a write-up on the above when I get back next week to get some feedback on the sensibility of the API's and what else would be required to ease adoption/integration of CashID into both wallets and services.
For now, as I'm short on time, I'm just going to leave these placeholders here:
cashid-js
LINK NEXT WEEKcashid-gateway
LINK NEXT WEEKcashid-webapp
LINK NEXT WEEK
If anyone has any thoughts/ideas/suggestions in the meantime, please feel free to reach out on Telegram.
https://t.me/jimtendo
References
CashID Protocol Spec:
https://gitlab.com/cashid/protocol-specification
Thanks Jim! Will definitely try this out!