ฉันมีปัญหา ProVerif ที่ง่ายมาก
รหัสพิสูจน์ปัจจุบันของฉันมีลักษณะดังนี้:
(*ช่องทางการติดต่อ*)
ฟรี c:channel.
(* กำลังพยายามสร้างโครงร่าง mac *)
พิมพ์ mkey
Mac แสนสนุก (bitstring , mkey): bitstring.
(* การเข้ารหัสแบบสมมาตร *)
คีย์ประเภท
พิมพ์เหรียญ.
internal_senc(bitstring , skey , coins): bitstring.
ลดสำหรับทั้งหมด m:bitstring , k:skey , r:coins;
sdec(internal_senc(m,k,r),k) = ม.
ให้ ED(AppKey :skey, NwkKey :mkey, JoinEUI :bitstring,DevEUI :bitstring, DevNonce : bitstring) =
ออก (c, (JoinEUI, DevEUI, DevNonce, mac (( JoinEUI , DevEUI , DevNonce), NwkKey) ))
ให้ JS(AppKey :skey, NwkKey :mkey,DevEUI :bitstring, JoinEUI :bitstring, DevAddr : bitstring) =
ใน (c, x: bitstring);
ปล่อยให้ (= JoinEUI, = DevEUI, DevNonce ใหม่: bitstring, = mac (( JoinEUI, DevEUI, DevNonce), NwkKey)) = x ใน
ใหม่ JoinNonce : bitstring;
ใหม่ Home_NetID : bitstring;
ให้ MIC2 : bitstring = mac(NwkKey, (JoinNonce, Home_NetID, DevAddr)) ใน
ออก (c,เข้าร่วม EUI)
ดังนั้นใน luine 25 จะมีลักษณะดังนี้:
ให้(=เข้าร่วม EUI, =DevEUI, DevNonce: bitstring, =mac((เข้าร่วม EUI,DevEUI,DevNonce), NwkKey)) = x ใน
มันล้มเหลวใน DevNonce
ส่วนที่ฉันไม่เข้าใจเลย ดูที่หน้า 71 ของคู่มือ ตัวแปรใหม่ถูกสร้างขึ้นด้วยวิธีนั้น
ฉันจะประกาศค่านี้ในกระบวนการ JS ได้อย่างไร