As we are aware that blockchain is a decentralized application and it is tough to implement user identity mechansim in decentralized application so we use digital signature to verify the identity of a user. A digital signature comprise of a public key and encrypted message. A digital signature is issued by a trusted certificate authority and we can verify the digital signature from that authority. My question is so how can it make sure in blockchain network that a digitally signed transaction is done by an authentic blockchain user.
3 Answers
This article can be useful for your study and possibly give an answer for your query:
-
1Hi there. Can you summarise the content of the link, and how it applies to the original question? Currently, if the link goes dead, then your answer becomes obsolete, which is why link-only answers are discouraged: Are answers that just contain links elsewhere really “good answers”?. Also see the guidelines in this site's Help Centre on Answering Questions. Dec 1, 2017 at 12:06
frozeman started a new ERC last month to discuss user identification:
The following describes standard functions for a unique identity for humans, groups, objects and machines. This identity can hold keys to sign actions (transactions, documents, logins, access, etc), and claims, which are attested from third parties (issuers) and self attested, as well as a proxy function to act directly on the blockchain.
And he talked about this during devcon3:
Fabian Vogelsteller (author of ERC20) will be talking about his new work on standard functions for a unique identity for humans and machines. https://www.youtube.com/watch?v=pkwYVagytuA&index=7&list=PLaM7G4Llrb7zOVvbMYqEXSYCFIoRql_vE
how does digital signature functionality in blockchain fulfill the requirement of user identification?
It doesn't.
the requirement of user identification
Who says that is a requirement?
Breaking it down:
Ethereum is a pseudo-anonymous system. I say "pseudo" to dispell possible assumptions about confidentiality on the network. Owing to meta-data leakage and other factors, true anonymity is a challenge to maintain and there is, therefore, no hard assurance that the network maintains anonymity.
However, the network has no requirement to associate signing keys with individuals, organizations or other actors, and doesn't.
an authentic blockchain user
What is an authentic blockchain user? From the perspective of the network, it is anyone or anything with knowledge of a private key. No one is checking "authenticity."
AML/KYC
It is possible to design an business process and an application that addresses the linkage of signing keys to verified people and organizations. Those are not inherent to Ethereum itself.
Generally speaking, one can:
- Restrict access to a contract based on whether or not an approving authority has granted access.
- Develop a process for verifying who's who.
- As part of that process, have the user cryptographically sign a message with their signing key, thereby proving that they have knowledge of it.
- The verifier uses privileged access in the access-controlled contract to flip a bit that admits the ethereum address that the AML/KYC process was concerned with.
Simple example:
pragma solidity 0.7.6;
// SPDX-License-Identifier: UNLICENSED
contract KYCOnly {
address public KYCVerifier;
mapping(address => bool) public isAllowed;
modifier onlyVerifier {
require(msg.sender == KYCVerifier, "403");
_;
}
modifier onlyKYCedAccounts {
require(isAllowed[msg.sender], "You need to KYC first. Talk to the KYC verifier.");
_;
}
constructor() {
KYCVerifier = msg.sender; // contract deployer will have this priviledge
}
function admittanceContract(address user, bool allowed) public onlyVerifier {
isAllowed[user] = allowed;
}
function doSomething() public onlyKYCedAccounts {
// You only get here if the KYC Verifier lets you get here
}
}
Hope it helps.