Dear Daniel
Your rule does not do what you want it to do: the public key that you list is just an unrelated one.
rule Receive:
let
signature = <~nonce, sign(~nonce, ~ltk)>
in
[ In(signature)
// , !Pk($A, pub) // comment this: Receive will not have
the public key
]
--[ Received(~nonce) ]->
[]
the "pub" in the !Pk fact is just unrelated. It has to be "pk(~ltk)" to actually model a signature check. So you would rewrite your rule as such:
rule Receive:
let
signature = <~nonce, sign(~nonce, ~ltk)>
in
[ In(signature)
, !Pk($A, pk(~ltk)) // comment this: Receive will not have
the public key
]
--[ Received(~nonce) ]->
[]
for the version that checks the signature.
In the other version,
with that !Pk commented out, you want to model that the
signature verification key is not available from what you write,
however what you have modeled is that simply any input is
accepted and no check whatsoever is done, so this will always
succeed.There is no easy way to model this idea of the key not
being there without going much deeper into 'restrictions' that
disallow this.
Best regards,
Ralf
--
You received this message because you are subscribed to the Google Groups "tamarin-prover" group.
To unsubscribe from this group and stop receiving emails from it, send an email to tamarin-prove...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/tamarin-prover/d28b7f30-2186-4efa-b56f-664ab2a0f3d8n%40googlegroups.com.