
VerifHub
VerifHub allows Verifpal® users to easily share and discuss Verifpal models of cryptographic protocols. The VerifHub service provides unique URIs for each shared model which includes a syntax-highlighted model, an automatically generated diagram and a summary of the analysis results.
my_protocol.vp
Submitted on 13 Aug 25 01:54 UTC.attacker[active]
principal Ta[
]
principal Alice[
]
principal Bob[
]
principal Blockchain[
]
principal Ta[
knows private sk_ta
pk_ta = G^sk_ta
generates vc_a
signed_vc_a = SIGN(sk_ta, vc_a)
]
Ta -> Alice: [pk_ta], [vc_a], [signed_vc_a]
Ta -> Bob: [pk_ta]
principal Alice[
knows private sk_auth_a
_ = SIGNVERIF(pk_ta, vc_a, signed_vc_a)?
pk_auth_a = G^sk_auth_a
knows public dida
knows public didb
]
principal Bob[
knows private sk_sig_b
pk_sig_b = G^sk_sig_b
knows public didb
knows public dida
]
Alice -> Blockchain: [pk_auth_a]
Bob -> Blockchain: [pk_sig_b]
phase[1]
Blockchain -> Bob: [pk_auth_a]
principal Alice[
generates ts1
h_a_1 = HASH(CONCAT(dida, ts1))
sign_a_1 = SIGN(sk_auth_a, h_a_1)
]
Alice -> Bob: ts1, sign_a_1
phase[2]
principal Bob[
h_a_1_loc = HASH(CONCAT(dida, ts1))
_ = SIGNVERIF(pk_auth_a, h_a_1_loc, sign_a_1)?
generates ts2
h_b_1 = HASH(CONCAT(didb, ts2, h_a_1_loc))
sign_b_1 = SIGN(sk_sig_b, h_b_1)
]
Bob -> Alice: ts2, sign_b_1
phase[3]
Blockchain -> Alice: [pk_sig_b]
principal Alice[
h_b_chk = HASH(CONCAT(didb, ts2, h_a_1))
_ = SIGNVERIF(pk_sig_b, h_b_chk, sign_b_1)?
generates sk_auth_a_new
pk_auth_a_new = G^sk_auth_a_new
generates ts3
payload = CONCAT(signed_vc_a, vc_a, pk_auth_a_new)
m_enc = PKE_ENC(pk_sig_b, payload)
h_a_2 = HASH(CONCAT(m_enc, ts3, h_b_chk))
sign_a_2 = SIGN(sk_auth_a, h_a_2)
]
Alice -> Bob: ts3, m_enc, sign_a_2
phase[4]
principal Bob[
h_a_2_chk = HASH(CONCAT(m_enc, ts3, h_b_1))
_ = SIGNVERIF(pk_auth_a, h_a_2_chk, sign_a_2)?
payload_dec = PKE_DEC(sk_sig_b, m_enc)
signed_vc_a_, vc_a_, pk_auth_a_new_ = SPLIT(payload_dec)
_ = SIGNVERIF(pk_ta, vc_a_, signed_vc_a_)?
generates ts4
h_b_2 = HASH(CONCAT(h_a_2_chk, ts4, didb))
sign_b_2 = SIGN(sk_sig_b, h_b_2)
]
Bob -> Alice: ts4, sign_b_2
phase[5]
principal Alice[
h_b_2_chk = HASH(CONCAT(h_a_2, ts4, didb))
_ = SIGNVERIF(pk_sig_b, h_b_2_chk, sign_b_2)?
]
Alice -> Blockchain: [pk_auth_a_new]
phase[6]
principal Alice[
generates ts5
h_a_3 = HASH(CONCAT(ts5, dida, h_b_2_chk))
sign_a_3 = SIGN(sk_auth_a_new, h_a_3)
]
Alice -> Bob: ts5, sign_a_3
Blockchain -> Bob: [pk_auth_a_new]
principal Bob[
_ = SIGNVERIF(pk_auth_a_new, HASH(CONCAT(ts5, dida, HASH(CONCAT(h_a_2_chk, ts4, didb)))), sign_a_3)?
msg_b = CONCAT(dida, didb, pk_auth_a_new)
sign_b_3 = SIGN(sk_sig_b, msg_b)
]
Bob -> Blockchain: [msg_b], [sign_b_3]
queries[
confidentiality? sk_auth_a
confidentiality? sk_auth_a_new
confidentiality? sk_sig_b
authentication? Bob -> Alice: sign_b_1
authentication? Bob -> Alice: sign_b_2
authentication? Alice -> Bob: sign_a_2
authentication? Alice -> Bob: sign_a_3
authentication? Alice -> Bob: sign_a_1
freshness? sign_b_1
freshness? sign_b_2
freshness? sign_a_1
freshness? sign_a_2
freshness? sign_a_3
freshness? m_enc
]
Analysis Results
The model submitter provided the following analysis results:
- Query 1 (Confidentiality): PASS
- Query 2 (Confidentiality): PASS
- Query 3 (Confidentiality): PASS
- Query 4 (Authentication): PASS
- Query 5 (Authentication): PASS
- Query 6 (Authentication): PASS
- Query 7 (Authentication): PASS
- Query 8 (Authentication): PASS
- Query 9 (Freshness): PASS
- Query 10 (Freshness): PASS
- Query 11 (Freshness): PASS
- Query 12 (Freshness): PASS
- Query 13 (Freshness): PASS
- Query 14 (Freshness): PASS
Please note that these results are not verified to be accurate. The model submitter may choose to provide false analysis results if they so desire. It is strongly recommended that you re-run the analysis of this model locally if you wish to verify the authenticity of the analysis results above.

© Copyright 2019- Nadim Kobeissi. All Rights Reserved. “Verifpal” and the “Verifpal” logo/mascot are registered trademarks of Nadim Kobeissi. Verifpal software is provided as free and open source software, licensed under the GPLv3. Verifpal User Manual, as well as this website, are provided under the CC BY-NC-ND 4.0 license. Published by Symbolic Software.