Che cos'è esattamente il controllo simbolico dei modelli?


8

So che il Symbolic Model Checking è un attraversamento dello spazio degli stati basato su rappresentazioni di insiemi di stati e relazioni di transizione come formule come in CTL usando modelli come Kripke Model. Conosco la teoria. Ma trovo difficile capire l'applicazione reale. Dove si usa esattamente? Cosa fa esattamente e come funziona?

Qualcuno può spiegare con un esempio reale e mettere in relazione la teoria con la pratica?


1
Questo mi sembra ampio. Il "che cosa fa?" la parte può essere ragionevole (o no), ma "dove viene utilizzata?" è a) un'altra domanda interamente eb) probabilmente troppo ampia.
Raffaello

Ma un esempio può essere preso e spiegato in base a quello. Non è troppo ampio.
Xpleria,

2
Perché non sei soddisfatto della descrizione di Verifica simbolica dei modelli nel manuale standard, ad esempio "Principi di verifica dei modelli" di Christel Baier e Joost-Pieter Katoen? Di quali parti sei confuso?
hengxin,

Parlano di "come dovrebbe essere fatto" ma non di "come si fa esattamente". Sto cercando di mettere in relazione la teoria e l'implementazione pratica. Sono ancora nuovo in questo e ho bisogno di un esempio.
Xpleria,

1
Allora potresti essere sul sito sbagliato. Computer science è sui concetti ( "come dovrebbe essere fatto"), dovrete chiedere operatori circa la parte "come si fa".
Raffaello

Risposte:


4

La verifica del modello simbolico è la verifica del modello che funziona su stati simbolici. Cioè, codificano gli stati in rappresentazioni simboliche, in genere diagrammi di decisione binaria ordinati (OBDD).

La domanda è: cosa fanno e come funzionano.

Per prima cosa hai il tuo codice sorgente per alcune applicazioni. Quindi trasformi il tuo codice sorgente in un grafico di transizione di stato come una struttura di Kripke. Gli stati sono pieni di proposizioni atomiche che descrivono ciò che è vero in quel particolare stato. Nel modello simbolico Il controllo delle proposizioni atomiche è codificato come OBDD per risparmiare spazio e migliorare le prestazioni.

Il Model Checker inizia quindi in uno stato iniziale ed esplora gli stati, cercando errori nel grafico di transizione di stato. Se trova un errore, genererà spesso un caso di prova che dimostra l'errore. Utilizza gli OBDD simbolici per navigare in qualche modo in modo ottimale nello spazio degli stati. Vorrei poter spiegare di più lì, ma ancora imparando.

Ma è praticamente tutto. Un programma viene convertito in un modello formale (grafico di transizione di stato) e quindi si utilizzano ottimizzazioni simboliche per navigare nello spazio degli stati per cercare errori (confrontandolo con una specifica LTL / CTL). E se viene rilevato un errore, Model Checker ti fornisce alcune informazioni utili per documentare e risolverlo.


5

Il controllo simbolico dei modelli può essere molto utile per verificare la correttezza delle comunicazioni e dei protocolli di sicurezza. Per esempio:

  • Un modello simbolico di un'implementazione OAUTH2 potrebbe aiutare a verificare conseguenze indesiderate in cui un avversario ottiene token di autenticazione segreti o dati circostanziali correlati che potrebbero aiutarli a contravvenire al processo.
  • Un modello simbolico di un protocollo crittografico, come una stretta di mano TLS, potrebbe aiutare a verificare che il progetto crittografico non abbia conseguenze indesiderate.

Funziona scrivendo una descrizione simbolica di tutte le funzioni primitive e degli algoritmi di protocollo, e quindi avendo un controllo simbolico del modello, come ProVerif , attraversa lo spazio degli stati e tenta di rilevare combinazioni di stati che producono risultati sfavorevoli. Nel caso di ProVerif, i modelli simbolici sono descritti usando il calcolo Pi applicato come linguaggio di modellazione. Ciò consente la descrizione dei protocolli in una sintassi funzionale simile a ML.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.