250 likes | 670 Views
Spécification des protocoles de communication en MAUDE. Application au protocole d’authentification “ N eedham S chroeder P ublic K ey”. Plan. Introduction Logique de réécriture Maude : Motivations, caractéristiques, syntaxe… Spécification orientée objet en Maude
E N D
Spécification des protocoles de communication en MAUDE Application au protocole d’authentification “Needham Schroeder Public Key”
Plan • Introduction • Logique de réécriture • Maude : • Motivations, caractéristiques, syntaxe… • Spécification orientée objet en Maude • Exemple de spécification avec Maude : le protocole NSPK • Conclusion
Introduction • Les approches informelles • Non flexibles pour l’optimisation de l’effort de conception, d’implémentation ... • Peuvent conduire à de sérieux problèmes d’intégration • Les méthodes formelles - Conception peut être corrigée très tôt - Automatisation (vérification, passage) • Différents formalismes (réseaux de Petri, logique de réécriture ,…)
La logique de réécriture • Logique réécriture : décrit un système concurrent qui a des états et qui évolue en termes de transitions, celui-ci est représenté par une théorie de réécriture T=(Σ,E,L,R). • La structure statique du système est décrite par la signature (Σ,E) qui représente les états d’un système. • La structure dynamique est décrite par les règles de réécriture rl [l]: tt’ ces règles représentent les transitions.
MAUDE : un outil de spécification formelle http://maude.csl.sri.com/ • Le choix de Maude est motivé par : • Cadre sémantique de la concurrence • Formalisation des systèmes orientés objets concurrents
Caractéristiques de Maude : • basé sur la logique de réécriture : exprime la concurrence et le changement d’états du système. • Large spectre : les spécifications, le prototypape, la transformation des spécifications. • Multi-paradigme : combine les programmations fonctionnelle et orientée objet. • Stratégies internes : les stratégies servent à guider le processus de réécriture. La nature réflexive de la logique de réécriture permet au langage Maude d’exprimer ces stratégies en Maude.
Syntaxe de Maude Regroupe trois types de modules : • Modules fonctionnels • Modules systèmes • Modules objets
Modules fonctionnels fmod nat is sorts nat nznat. subsort nznat < nat. op 0 : —> nat. op s- : nat —> nat. op p- : nat —> nat. op -+- : nat nat —> nat. vars n m : nat. eq p(s(n)) = n. eq n+0=n. eq s(n) +s(m )=ss(n+m). endfm.
mod ticket is sorts place marking. subsort place <marking. ops $,q,t1,t2 : place. op - - : marking marking marking. [ass,com,id] rl [b-t1] : $ t1qq. rl [b-t2] : $ t2q. rl [change] : $ qqqq. rl [b’-t1] : qq t1. rl [b’-t1] : qqq t2. endm. Modules Systèmes $ change b-t1 b-t2 2 2 4 t1 t2 q b’-t1 b’-t2 3 2
Spécification orientée objet en Maude • Configuration : état d’un système orienté objets concurrents sorts object msg configuration. subsort object msg < configuration. op --: configuration configuration configuration.[ass,com,id] • Définition d’une classe d’objets class c | att1: s1, att2: s2,……………..attn: sn. • État d’un objet <o; c | att1: v1, att2:v2,……………….attn: vn>. • Message msg m : p1…………………pn message.
Spécification orientée objet en Maude : exemple omod accnt is protecting nat. class accnt | bal: nat. msg credit debit : oid nat message. msg transfer- from - to - : nat oid oid message. vars a, b :oid. vars m,n,n’: nat. rl [crdt] credit(a,m) <a; accnt | bal:n><a;accnt | bal : n+m>. crl [dbt] debit (a,m) <a; accnt | bal : n> <a; accnt | bal : n-m> if n >=m. crl [trsf] transfer(m) from(a) to(b) <a; accnt | bal : N> <b; accnt | bal : n’> <a; accnt | bal : n-m> <b; accnt | bal : n+m> if n>= m. endom.
Spécifications du protocole NSPK • Spécification informelle • Spécification formelle
Spécification informelle de NSPK • NSPK est un protocole d’authentification des paires d’agents dans un système distribué • Agent possède une paire de clés public et secrète • Nonce: identificateur de sessions ( nombre aléatoire) La spécification informelle simplifiée A B Message1 Message2 Message3 {Na}Pk(B) {Na.Nb} Pk(A) {Nb}Pk(B)
Spécification formelle de NSPK : partie données fmod datatypes is sorts key field fieldset nonce principal run role estabcom. subsort nonce principal key < field. subsort field< fieldset. op keypair : key key boolean. [com] op mtfield : field. op n : principal nat nonce. op ped : key field field. op cat : nonce nonce field. op (-,-,-) : nonce principal field run. op (-,-,-,-) : role nonce principal nonce estabcom. ops i,r : role. vars sk, pk : key. var f: field. ceq ped(sk, ped(pk, f)=f if keypair(sk, pk). endf.
Spécification formelle de NSPK :Partie dynamique (1) • Classe de l’objet agent class agent | e-com : estabcom, sec-key : key, role-i : run , role-r : run , d-com: fieldset, cnt: nat. • Déclaration du message msg from – to – send - : principal principal field message.
Spécification formelle de NSPK Partie dynamique (2) Message 1: est décrit par les règles de réécriture suivantes : rl [beginrun] <A; agent | role-i : RI, d-com: B U S, cnt: j> <A; agent | role-i : RI U (n(A, j), B, mtfield), cnt: j+1> from(A) to(B) send ped(Pk(B), n(A,j)). crl [message1 rec] : <B; agent | sec-key : SKB, role-i : RI, role-r : RR, cnt: J> from(A) to(B) send (ped (PKB, F)) <B; agent | role-r : RR U (n(b, j) , A,F), cnt: J+1> from(B) to(A) send (ped( pk(A), cat(F, n(B,j)))) if keypair (SKB, PKB) and not (F in RR)
Spécification formelle de NSPK Partie dynamique (3) • Message2 est décrit par les règles suivantes : crl [m2recorct]: <A; agent | sec-key:SKA, role-i :RI U (NI, P, mtfield), e-com:C> from(B) to(A)send( ped(PKA, F)) <A; agent | role-i : RI, e-com: C U (I, NI, B, rest(F))> from(A) to (B) send(ped( pk(B), rest(F))) if keypair (SKA, PKA) and (B==P) and NI ==first(F). crl [m2recinct]: <A; agent | sec-key:SKA, role-i :RI U (NI, P, mtfield), e-com:C> from(B) to(A)send( ped(PKA, F) <A; agent | role-i : RI> if keypair (SKA, PKA) and (B= |=P) and NI ==first(F).
Conclusion • Maude est approprié pour la spécification formelle des systèmes distribués • Utilisation de Maude pour spécification et vérification formelle des protocoles de communication (multicast …)