used to check semantic rules. Universal rules were
checked in the action for the appropriate nonterminal,
with failures causing the parser to immediately exit.
Existential rules were also checked in actions, but set
a flag if a rule passed. The flags can then be checked
at the end of parsing to ensure compliance.
By converting Maia specifications into Flex and
Bison parsers in this way, we were able to create ver-
ifier programs for the password, shadow, and groups
files, which are part of the Linux login system. With
light modification, we were also able to produce a sin-
gle verifier that checked rules which apply across all
three files to enforce constraints like “users with an
entry in the password field must appear in the shadow
file”. The password file verifier was also used to
test integrity protection with the Linux kernel mod-
ule (Bonamy, 2016).
More examples, experimental result, and com-
parative evaluation are available in (Bonamy et al.,
2016) and (Bonamy, 2016). Specifically, we have
developed Maia spcecification for valid hashes by
crypt(), linux password, shadow and group files,
PNG images and ssh configurations.
7 CONCLUSIONS
Most integrity models deal with the trustworthiness
of who accesses the data, or provide a general pro-
tection for a specific data format. We know of no
general-purpose integrity systems capable of protect-
ing the integrity of the data itself. Research on pro-
tecting arbitrary data integrity is limited. In this paper,
we present Maia, a language for general-purpose in-
tegrity protection. We give a formal description of the
structural operational semantics for Maia using rules
with simple mathematical foundations. The seman-
tics leads to a natural interpretation of the meaning of
a Maia specification.
We are currently implementing the full Maia in-
terpreter. Our preliminary implementation has shown
that a Maia specification can be used to protect the in-
tegrity of Linux system configuration files with mini-
mal overhead. In the future, we will build a full imple-
mentation of Maia that requires no hand modification.
REFERENCES
Backus, J. W. (1959). The Syntax and Semantics of the Pro-
posed International Algebraic Language of the Zurich
ACM-GAMM Conference. Proceedings of the In-
ternational Comference on Information Processing,
1959, pages 125–132.
Bonamy, P., Carr, S., and Mayo, J. (2016). Toward a manda-
tory integrity protection system. In Proceedings of
the Thirty-first International Conference on Comput-
ers and Their Applications.
Bonamy, P. J. (2016). Maia and Mandos: Tools for Integrity
Protectionon Arbitrary Files. PhD thesis, Michigan
Technological Univeristy.
Dewar, R. B. K. (1979). The SETL Programming Lan-
gauge. Courant Institute of Mathematical Sciences,
New York University.
Fisher, K., Mandelbaum, Y., and Walker, D. (2010). The
next 700 data description languages. Journal of the
ACM, 57(2):1–51.
Fisher, K., Mandelbaum, Y., Walker, D., Fisher, K., Man-
delbaum, Y., and Walker, D. (2006). The next 700
data description languages, volume 41. ACM.
Fisher, K. and Walker, D. (2011). The PADS project. In the
14th International Conference, page 11, New York,
New York, USA. ACM Press.
ISO (2004). Information technology - Computer graph-
ics and image processing - Portable Network Graph-
ics (PNG): Functional specification. Technical Report
ISO/IEC 15948:2003 (E), Geneva, Switzerland.
Ji, Q., Qing, S., and He, Y. (2006). A formal model for
integrity protection based on dte technique. Science in
China Series F: Information Sciences, (5):545 – 565.
Jim, T., Mandelbaum, Y., and Walker, D. (2010). Semantics
and algorithms for data-dependent grammars. Pro-
ceedings of the 37th annual ACM SIGPLAN-SIGACT
symposium on Principles of programming languages,
45(1):417–430.
Johnson, S. C. (1975). Yacc: Yet Another Compiler-
Compiler. Technical Report Computing Science Tech-
nical Report No. 32, Murray Hill, New Jersey.
Lesk, M. E. and Schmidt, E. (1975). Lex - A Lexical Ana-
lyzer Generator. Technical Report Computer Science
Technical Report No. 39, Murray Hill, New Jersey.
Parr, T. (2015). The Definitive ANTLR 4 Reference. Prag-
matic Bookshelf.
Plotkin, G. D. (1981). A structural approach to operational
semantics.
Polk, W. T. (1993). Approximating Clark-Wilson“Access
Triples” with Basic UNIX Controls. In Proceedings
of the UNIX Security Symposium IV, pages 145–154.
Prasad, S. and Arun-Kumar, S. (2003). An
introduction to operational semantics.
http://www.cse.iitd.ernet.in/ sanjiva/opsem.ps.
Sudkamp, T. A. (2006). Languages and Machines: An In-
troduction to the Theory of Computer Science. Pear-
son Education.
van der Vlist, E. (2003). RELAX NG. O’Reilly Media.
W3C (2008). Extensible Markup Language (XML) 1.0
(Fifth Edition). Technical report.
W3C (2012a). W3C XML Schema Definition Language
(XSD) 1.1 Part 1: Structures. Technical report.
W3C (2012b). W3C XML Schema Definition Language
(XSD) 1.1 Part 2: Datatypes. Technical report.
ICISSP 2019 - 5th International Conference on Information Systems Security and Privacy
264