Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SIGNVERIF with original value (like proof-of-identity) #4

Open
cobratbq opened this issue Dec 7, 2023 · 0 comments
Open

SIGNVERIF with original value (like proof-of-identity) #4

cobratbq opened this issue Dec 7, 2023 · 0 comments

Comments

@cobratbq
Copy link

cobratbq commented Dec 7, 2023

I want to prove the identity of one party through signing an arbitrary value provided by the other party.

Either:

  • I do not know/have the appropriate query to express this verification, or
  • the SIGN/SIGNVERIF pair of operations does not work with all available guarantees (i.e. n from both parties must be same if SIGNVERIF succeeds), or
  • verification prematurely fails with conclusion that SIGN received malicious n

Furthermore, it isn't clear whether the query authentication? Bob -> Alice: n means "Alice is convinced that the n that Bob sent is authentic", or that it means "the n that Bob sent to Alice remains/arrived unchanged, i.e. is authentic". One takes a particular principal into the equation, while the other takes the perspective of the variable.

Goal: express/prove that n has remained unchanged as confirmed by Bob through signature verification? (Therefore, Bob knows that "Alice" is the Alice of the identity (sk, pk) and that she received the unchanged n.)

Clarification to the script below:

  • assume sending [pk] was done some other time, in another way, some other channel. This is the way I know to model known information between parties.
  • at the end of this sample, Bob has initiative. The sample is a (reduced) part of a larger protocol where Bob next needs to decide whether or not to continue.
attacker[active]
principal Alice[
	knows private sk
	pk = G^sk
]
Alice -> Bob: [pk]
principal Bob[
	generates n
]
Bob -> Alice: n
principal Alice[
	sig = SIGN(sk, n)
]
Alice -> Bob: sig
principal Bob[
	_ = SIGNVERIF(pk, n, sig)?
]

queries[
	confidentiality? sk
	authentication? Alice -> Bob: sig
	// The protocol detects when 'n' is not authentic, because Alice's signature will fail to verify against Bob's (original) 'n'.
	authentication? Bob -> Alice: n
]

See mailinglist conversation for more details and elaboration.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

1 participant