<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Architecture-Driven Reduction of Specification Overhead for Verifying Confidentiality in Component-Based Software Systems</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Kateryna</forename><surname>Yurchenko</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Institute for Program Structures and Data Organization</orgName>
								<orgName type="institution">Karlsruhe Institute of Technology Karlsruhe</orgName>
								<address>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Moritz</forename><surname>Behr</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Institute for Program Structures and Data Organization</orgName>
								<orgName type="institution">Karlsruhe Institute of Technology Karlsruhe</orgName>
								<address>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Heiko</forename><surname>Klare</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Institute for Program Structures and Data Organization</orgName>
								<orgName type="institution">Karlsruhe Institute of Technology Karlsruhe</orgName>
								<address>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Max</forename><surname>Kramer</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Institute for Program Structures and Data Organization</orgName>
								<orgName type="institution">Karlsruhe Institute of Technology Karlsruhe</orgName>
								<address>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Ralf</forename><surname>Reussner</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Institute for Program Structures and Data Organization</orgName>
								<orgName type="institution">Karlsruhe Institute of Technology Karlsruhe</orgName>
								<address>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Architecture-Driven Reduction of Specification Overhead for Verifying Confidentiality in Component-Based Software Systems</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">F237C575A398DB0BE43D6EAF1D1BAC8F</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T01:14+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract/>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Abstract-Code verification techniques can be used to guarantee that some of the information processed in software systems remains confidential. For this, allowed information flows have to be specified for the system under analysis. Reducing the specification overhead could render code verification feasible where verification was considered too complex or costly so far. In this paper, we introduce a model-driven approach to reduce the overhead for creating and maintaining such specifications. Independent of the verification input format, developers can specify confidentiality for componentbased architecture models, which are kept consistent with object-oriented code. They are supported in adapting the specifications to evolving systems in order to detect information leaks with less effort and in earlier development stages.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>I . I n t ro d u c t i o n a n d M o t i vat i o n</head><p>For many software systems, the confidentiality of processed data is important. To guarantee this non-functional property, it is possible to verify the flow of information in the code. For this, confidentiality requirements have to be specified for every system under analysis. The effort required to specify and verify confidentiality represents a design and development overhead. A part of this effort is inevitable, and another part is due to accidental complexity. As a result, it is either more costly than necessary to develop secure software, or the software is less secure than required.</p><p>In this paper, we present an approach for reducing the overhead for creating and maintaining confidentiality specifications using the component-based development paradigm and model-driven techniques. With this approach 1.) confidentiality can be specified for services that are defined for component interfaces, 2.) architectural specifications for the component architecture are automatically translated into proof obligations for code verification, and 3.) evolving architectures, confidentiality specifications as well as code are kept semi-automatically consistent with each other. As a result, developers do not need to consider the internal realization of components or details of verification techniques. Furthermore, they can read and modify confidentiality specifications on their level of abstraction because specifications in the architecture and in the code are kept consistent with each other. Finally, by specifying confidentiality for architectural designs, developers can account for these requirements when developing or selecting components for reuse in a particular system. This can prevent late errors that are costly to fix.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>I I . B ac kg ro u n d a n d Fo u n dat i o n s</head><p>Before we present our approach to architecture-driven confidentiality specifications, we briefly discuss the fundamental techniques that we use.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>A. Component-Based Software Design</head><p>Our approach supports confidentiality specifications for component-based software. Components are reusable software units that provide and require services, for which signatures are defined in interfaces. We use the Palladio Component Model (PCM) <ref type="bibr" target="#b0">[1]</ref> as architectural description language. With the PCM, service signatures are modeled with a return type, a name, and parameters, which have a name and a type. Confidentiality is specified based on these service signatures in line with the central idea of componentbased software development: the internal realization of components is hidden behind interface contracts, which specify properties of the input and output for provided and required services.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>B. Code Generation and Consistency</head><p>Techniques to automatically derive code from models are called code generation or model-to-text transformation techniques. Software is, however, often not developed in a strict forward engineering process where models are not changed after they have been used to produce code. Therefore, techniques for preserving consistency between code and models were developed. We use the Vitruvius framework <ref type="bibr" target="#b1">[2]</ref> and its reactions language to keep Java code consistent with PCM instances based on monitored changes.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>C. Specification and Verification of Confidentiality using Non-Interference</head><p>Confidentiality is specified and verified with our approach based on the notion of non-interference. The intuition for preventing information leaks is that confidential information may not have any direct or indirect influence on non-confidential information. For this, it has to be specified which input data of a component's service shall not interfere. The observable behavior of the component and output of the service has to be equivalent for all calls that are equivalent with respect to this specification <ref type="bibr" target="#b2">[3]</ref>. If information is classified as "high" (confidential) and "low" (non-confidential), then high inputs may not have any observable influence on low outputs. Low inputs, however, may influence high outputs. In general, information can be classified based on arbitrary lattices, i.e. partially ordered sets with unique supremum and infimum for any two elements.</p><p>From architectural specifications we derive proof obligations that can be verified using the theorem prover KeY <ref type="bibr" target="#b3">[4]</ref>. KeY can be used for automated and interactive proofs of requirements that are expressed using dynamic logic and specified with the Java Modeling Language (JML) <ref type="bibr" target="#b4">[5]</ref>. Non-interference is verified with KeY using two symbolic executions that only differ in terms of a confidential input <ref type="bibr" target="#b5">[6]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>I I I . A rc h i t e c t u r e -D r i v e n C o n f i d e n t i a l i t y</head><p>We will explain how confidentiality can be specified, verified and co-evolved in an architecture-driven way based on a simple groupware example.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>A. Groupware Calendar Example</head><p>In Figure <ref type="figure" target="#fig_0">1</ref>, we show three snippets for a groupware calendar system. The first snippet shows an architectural model for a groupware component with a confidentiality specification. The component provides a service yielding all periods that are blocked by calendar entries and that are scheduled between two given timestamps. The second service yields all details for a specific calendar entry, such as the location and participants.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>B. Confidentiality Specification</head><p>Confidentiality is not directly specified on the code level but on the level of component-based architectures. This way, developers do not need to know the verification input format and information flow only needs to be specified for inter-but not for intra-component communication.</p><p>First, so-called data sets have to be defined. They group data that may interfere with each other but not with other data sets. If information may flow from and to these data sets, it is specified for service signatures of architectural interfaces. Other flows are not permitted.</p><p>In our example in Figure <ref type="figure" target="#fig_0">1</ref>, confidentiality specifications are shown as notes with the keyword includes. For the service getBlockedPeriods, a star yields two allowed information flows: 1.) non-confidential information (low) may influence all inputs, 2.) returned values may influence low information. For the service getFullCalendarEntry, it is specified that 1.) low information may influence the provided ID, 2.) returned values may only influence confidential information (high).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>C. Code Generation and Verification</head><p>To obtain a fully functional and verified system, we generate, complete, and verify code in four steps. First, Java code and confidentiality annotations are generated from PCM instances and the architectural specifications. Then, the empty method stubs for component services are manually completed. Next, the completed code with confidentiality annotations is copied and the annotations are translated into JML proof obligations. In this step, the generator produces all required JML proof obligations for cases that do not need to be distinguished by developers in architectural specifications, such as different obligations for inputs and outputs to service calls. Finally, the code copy is verified by proving the JML obligations using KeY (subsection II-C). Figure <ref type="figure" target="#fig_0">1</ref> illustrates these two code representations of confidentiality specifications as Java annotations (middle), and as JML proof obligations (right). The purpose of the annotations is to reduce the complexity for developers by providing them a code representation of the architectural specifications. These two representations only have syntactic differences: data set definitions are turned into Java enums and stereotype applications are turned into annotation usages. The level of abstraction with data sets and information flow permissions only for inputs and outputs of component services is the same.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>D. Consistency across Models and Code</head><p>We introduce the intermediate annotation representation for confidentiality specifications not only to reduce specification complexity, but also to ease automated consistency preservation for it. The goal is to support development processes in which code, architectural models and confidentiality specifications may co-evolve. To this end, we reuse a mechanism that keeps component-based architectures (PCM instances) and Java code consistent with each other by reacting to monitored changes (subsection II-B). We are currently extending this mechanism to keep confidentiality specifications on the architectural level consistent with specifications in code. The JML input for KeY is, however, always regenerated and therefore no consistency preservation is needed for it.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>I V . R e a l i z at i o n a n d E va l u at i o n</head><p>In our prototypical implementation<ref type="foot" target="#foot_0">1</ref> , data set definitions and pairs that link data sets and parameters or return values are persisted in a confidentiality specification model that is kept separate from the architectural models. Stereotypes of a confidentiality profile for PCM can be applied to service signatures of architectural interfaces in order to refer to these pairs as tagged values. By using this noninvasive profile mechanism the architecture models remain compatible to all Palladio tooling.</p><p>To obtain Java code and confidentiality annotations from PCM instances and specifications, we have created a generator based on Xtend. An additional generator for JML enum DataSets {APPOINTMENT(),METADATA();} enum IFPairs { METADATA _ STAR(DataSets.METADATA," * "), METADATA _ ID(DataSets.METADATA,"id"), APP _ RETURN(DataSets.APPOINTMENT,"\return"); } interface Calendar { @NISPEC({IFPairs.METADATA _ STAR}) BP[] getBlockedPeriods(TS from, TS to); @NISPEC({IFPairs.METADATA _ ID, IFPairs.APP _ RETURN}) CE getFullCalendarEntry(ID id); } //@ model \seq metadata; //@ \determines this.getBlockedPeriods(\result) //@ \by this.getBlockedPeriods(from), //@ this.getBlockedPeriods(to) //@ \preserving metadata; BP[] getBlockedPeriods(TS from, TS to) {...} //@ model \seq metadata; //@ \by this.getFullCalendarEntry(id) //@ \preserving metadata; //@ model \seq appointment; //@ \determines this.getFullCalendarEntry(\result) //@ \preserving appointment; CE getFullCalendarEntry(ID id) {...} proof obligations is under development. Both generators process the complete input in batch mode and overwrite previous output. We are currently developing consistency preservation reactions, which update annotations after changes in architectural specifications. Java code and architectural models are already kept consistent based on previous work <ref type="bibr" target="#b1">[2]</ref>.</p><p>To ensure the quality of both batch generators and of the incremental reactions, we create unit tests that compare the obtained output with expected outputs for all types of specification possibilities and changes. Furthermore, we will perform cross-validation by always comparing the result of incremental consistency preservation with that of a batch generation of code and annotations.</p><p>We will evaluate how confidentiality can be specified and maintained in an architecture-driven way using three systems: a simple web shop, a cloud-based file sharing platform, and a common case study realizing a trading system for retail shops.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>V . R e l at e d Wo r k</head><p>Jürjens presents a model-driven approach where securityrelevant information is specified on the system design level using the UMLsec extension for the Unified Modeling Language (UML) <ref type="bibr" target="#b6">[7]</ref>. This approach does, however, not support automatic proof obligations generation for code.</p><p>The IFlow approach <ref type="bibr" target="#b7">[8]</ref> allows the model-driven development of distributed systems consisting of mobile apps and web services which are secure w.r.t. information flow. Using the system's UML model, IFlow automatically generates code and a formal model of the system based on abstract state machines, which is used to verify information-flow properties. IFlow does not support automatic consistency preservation on both design and code levels during the system evolution.</p><p>To the best of our knowledge, there is no other approach for verifying component-based software against architectural confidentiality requirements or for preserving consistency between confidentiality specifications in software architecture descriptions and code.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>V I . C o n c l u s i o n s</head><p>In this paper, we have presented a model-driven approach that facilitates the creation and maintenance of confi-dentiality specifications for the verification of componentbased software. We have presented architecture-driven confidentiality specifications for which JML proof obligations can be automatically derived so that developers do not need to know the verification input. Furthermore, we have proposed a mechanism for keeping evolving architectures, confidentiality specifications and code consistent with each other. With it, developers can design and realize software with confidential data in an incremental way and on their level of abstraction. The goal of the approach is to help developers in finding confidentiality leaks with less overhead and in earlier development stages.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 1 .</head><label>1</label><figDesc>Figure 1. Architectural model and specification (left), Java code with annotations (middle), and JML comments (right) for a groupware calendar example</figDesc><graphic coords="3,40.60,57.85,138.56,112.00" type="bitmap" /></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">github.com/KASTEL-SCBS/PCM2Java4Key</note>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<title level="m" type="main">Modeling and Simulating Software Architectures -The Palladio Approach</title>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">H</forename><surname>Reussner</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Becker</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Happe</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Heinrich</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Koziolek</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Koziolek</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Kramer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Krogmann</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2016">2016</date>
			<publisher>MIT Press</publisher>
			<biblScope unit="page">408</biblScope>
			<pubPlace>Cambridge, MA</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Change-driven consistency for component code, architectural models, and contracts</title>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">E</forename><surname>Kramer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Langhammer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Messinger</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Seifermann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Burger</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">18th International Symposium on Component-Based Software Engineering, ser. CBSE &apos;15</title>
				<meeting><address><addrLine>Montréal, QC, Canada</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2015">2015</date>
			<biblScope unit="page" from="21" to="26" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Non-interference with whatdeclassification in component-based systems</title>
		<author>
			<persName><forename type="first">S</forename><surname>Greiner</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Grahl</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE 29th Computer Security Foundations Symposium (CSF)</title>
				<imprint>
			<date type="published" when="2016">2016. 2016</date>
			<biblScope unit="page" from="253" to="267" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Verification of Object-Oriented Software: The KeY Approach</title>
	</analytic>
	<monogr>
		<title level="s">ser. LNCS</title>
		<editor>B. Beckert, R. Hähnle, and P. H. Schmitt</editor>
		<imprint>
			<biblScope unit="volume">4334</biblScope>
			<date type="published" when="2007">2007</date>
			<publisher>Springer-Verlag</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Preliminary design of jml: A behavioral interface specification language for java</title>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">T</forename><surname>Leavens</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">L</forename><surname>Baker</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Ruby</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM SIGSOFT Software Engineering Notes</title>
		<imprint>
			<biblScope unit="volume">31</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="1" to="38" />
			<date type="published" when="2006">2006</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<monogr>
		<title level="m" type="main">Deductive Software Verification -The KeY Book: From Theory to Practice</title>
		<author>
			<persName><forename type="first">C</forename><surname>Scheben</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Greiner</surname></persName>
		</author>
		<editor>W. Ahrendt, B. Beckert, R. Bubel, R. Hähnle, P. H. Schmitt, and M. Ulbrich</editor>
		<imprint>
			<date type="published" when="2016">2016</date>
			<publisher>Springer International Publishing</publisher>
			<biblScope unit="page" from="453" to="471" />
			<pubPlace>Cham</pubPlace>
		</imprint>
	</monogr>
	<note>Information flow analysis</note>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Umlsec: Extending uml for secure systems development</title>
		<author>
			<persName><forename type="first">J</forename><surname>Jürjens</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">International Conference on The Unified Modeling Language</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2002">2002</date>
			<biblScope unit="page" from="412" to="425" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Modeldriven development of information flow-secure systems with iflow</title>
		<author>
			<persName><forename type="first">K</forename><surname>Katkalov</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Stenzel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Borek</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Reif</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Social Computing (SocialCom), 2013 International Conference on</title>
				<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2013">2013</date>
			<biblScope unit="page" from="51" to="56" />
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
