Browse Source

README.md documentation

master
arnaucode 6 years ago
parent
commit
c83cbc0ec2
5 changed files with 58 additions and 11 deletions
  1. +55
    -10
      README.md
  2. BIN
      documentation/blockchainIDsystem-network.png
  3. +1
    -0
      documentation/blockchainIDsystem-network.xml
  4. +1
    -0
      peer/.gitignore
  5. +1
    -1
      peer/blockchain.data

+ 55
- 10
README.md

@ -1,19 +1,64 @@
# blockchainIDsystem
A blockchain based anonymous login system
A blockchain based anonymous distributed login system
### Main concept
The objective is to guarantee a decentralized login system, but making sure that registered users are real ones and there are no bots generating large amounts of accounts. Only the verified (by email or phone) users can generate an anonymous ID (the Public-Key blind signed).
- p2p
- blockchain
- rsa
- blind signature
## How it works?
---
#### Network infrastructure
Different nodes:
![network](https://raw.githubusercontent.com/arnaucode/blockchainIDsystem/master/documentation/blockchainIDsystem-network.png "network")
There are different types of nodes:
- peers
- the peers of the p2p network that runs the blockchain
- serverCA
- Have the webapp to validate peers
- serverIDsigner
- The server where the user creates an account
- Is a REST server that has been certified (is the Certified Authority) to validate the peers that will be able to participate of the blockchain.
- Have the webapp (frontend) to validate peers through a GUI interface
- server-ID-signer
- The server where the user creates a non anonymous account
- Also is the server that blind signs the Anonymous ID of the users
- Have the webapp (frontend) to interact through a GUI interface
#### Step by step process
1. Once all the nodes of the network are running, a new user can connect to the server-ID-signer.
- The user registers a non anonymous user (using email, phone, password, etc), and performs the login with that user
- The user, locally, generates a RSA key pair (private key & public key)
- The user blinds his Public-Key with the server-ID-signer Public-Key
- The user's Public-Key blinded, is sent to the server-ID-signer
- The server-ID-signer Blind Signs the Public-Key blinded from the user, and returns it to the user
- The user unblinds the Public-Key signed by the server-ID-signer, and now has the Public-Key Blind Signed by the server-ID-signer
- The user sends the Public-Key blind signed to the p2p network
- The peers verify that the Public-Key Blind Signed is correctly signed by the server-ID-signer, if it is, they add the Public-Key to the Blockchain, inside a new block
- Then, when the user wants to login into a platform, just needs to put his Public-Key
- The platform goes to the Blockchain, to check if this Public-Key is registered in the blockchain
- The platform sends a message encrypted with the user Public-Key, and the user returns the message decrypted with the Private-Key, to verify that is the owner of that Public-Key
##### RSA encryption system
https://en.wikipedia.org/wiki/RSA_cryptosystem
- Public parameters: (e, n)
- Private parameters: (d, p, q, phi, sigma)
- Public-Key = (e, n)
- Private-Key = (d, n)
- Encryption:
![rsa](https://wikimedia.org/api/rest_v1/media/math/render/svg/fbfc70524a1ad983e6f3aac51226b9ca92fefb10 "rsa")
- Decryption:
![rsa](https://wikimedia.org/api/rest_v1/media/math/render/svg/10227461ee5f4784484f082d744ba5b8c468668c "rsa")
##### Blind signature process
https://en.wikipedia.org/wiki/Blind_signature
- m is the message (in our case, is the Public-Key of the user to be blinded)
![rsa](https://wikimedia.org/api/rest_v1/media/math/render/svg/a59b57fa153c8b327605672caadb0ecf59e5795a "rsa")
- server-ID-signer blind signs m'
![rsa](https://wikimedia.org/api/rest_v1/media/math/render/svg/e726b003ff1649f9254032cffae42d80577da787 "rsa")
- user can unblind m, to get m signed
![rsa](https://wikimedia.org/api/rest_v1/media/math/render/svg/e96fad0e1d46ec4c55986d1c8fc84e8c44259ecc "rsa")
- This works because RSA keys satisfy this equation
![rsa](https://wikimedia.org/api/rest_v1/media/math/render/svg/d6bd21fb4e25c311df07b50c313a248d978c3212 "rsa") and this ![rsa](https://wikimedia.org/api/rest_v1/media/math/render/svg/c13170a26e031125b417f22644fb64384c04eea7 "rsa")

BIN
documentation/blockchainIDsystem-network.png

Before After
Width: 694  |  Height: 441  |  Size: 87 KiB

+ 1
- 0
documentation/blockchainIDsystem-network.xml
File diff suppressed because it is too large
View File


+ 1
- 0
peer/.gitignore

@ -0,0 +1 @@
blockchain.data

+ 1
- 1
peer/blockchain.data

@ -1 +1 @@
{"genesisblock":"YKWAWY6GM5xrLhYrfi6hAmPmsECUH83n7xVcgaguLF4=","lastupdate":"0001-01-01T00:00:00Z","blocks":[{"hash":"YKWAWY6GM5xrLhYrfi6hAmPmsECUH83n7xVcgaguLF4=","height":0,"date":"2017-11-29T10:42:55.112675187+01:00","previoushash":"","nexthash":"","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="}]}
{"genesisblock":"YKWAWY6GM5xrLhYrfi6hAmPmsECUH83n7xVcgaguLF4=","lastupdate":"0001-01-01T00:00:00Z","blocks":[{"hash":"YKWAWY6GM5xrLhYrfi6hAmPmsECUH83n7xVcgaguLF4=","height":0,"date":"2017-11-29T10:42:55.112675187+01:00","previoushash":"","nexthash":"cSN48a9BwgJQZdz2NwBRPJqCtC4Qtv-l-RYeGl9eBZs=","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="},{"hash":"cSN48a9BwgJQZdz2NwBRPJqCtC4Qtv-l-RYeGl9eBZs=","height":1,"date":"2017-11-29T23:07:43.169204719+01:00","previoushash":"YKWAWY6GM5xrLhYrfi6hAmPmsECUH83n7xVcgaguLF4=","nexthash":"","data":[{"address":"firstaddress"}],"emitter":"VOnL-15rFsUiCnRoyGFksKvWKcwNBRz5iarRem0Ilvo="}]}

Loading…
Cancel
Save