Blockchain authentication and authorization

Idea: Create easy and secure way of identification, authentication and authorization on the internet, without relying on central services (for example Google or Facebook)

Functioning: Each user is identified with his ethereum (or some other) public address. This address is connected with a private key, which only user is holding (key can be stored in a browser extension, in browser itself or in a special piece of hardware - "hardware wallet"). Using this private key to sign messages (create "digital signatures") user authenticates himself as an owner of particular public address. To this public address ("account") specific rights can be assigned, and therefore access to these rights is cryptographically secured only to the owner of a private key.

Advantages: Using this form of authorization doesn't need any transactions, creating and checking digital signatures (authenticating the user) can be done fully offchain. Private keys used in assymetric cryptography have much bigger resistance to being hacked or brute-forced than passwords generated by humans ("1234"), and each private key is different.

Disadvantages: Storing and securing private keys is nowadays quite a challenge for most users. The best method is to use a hardware wallet, but even the research of thee devices is at the very beginning.