<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta>
      <journal-title-group>
        <journal-title>Symposium on Software Performance, November</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Continuous Secure Software Development and Analysis</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Sophie Schulz</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Frederik Reiche</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Sebastian Hahner</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jonas Schifl</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>KASTEL - Institute of Information Security and Dependability, Karlsruhe Institute of Technology</institution>
          ,
          <addr-line>Karlsruhe</addr-line>
          ,
          <country country="DE">Germany -</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2021</year>
      </pub-date>
      <volume>0</volume>
      <fpage>9</fpage>
      <lpage>10</lpage>
      <abstract>
        <p>Software security becomes increasingly important nowadays. Security should be considered as early as possible in the software development. However, considering diferent aspects of security is a complex task. In this paper, we propose an extendable framework for continuous secure software development and evolution. The framework provides interconnected analyses on diferent stages of development. Explicit assumption management helps to verify the security requirements more properly. Thus, the security of the system under development can be estimated more accurately. Finally, the concrete assumptions also help to identify and close security gaps that arise during the software's lifetime.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Continuous Security</kwd>
        <kwd>Security by Design</kwd>
        <kwd>Access Control</kwd>
        <kwd>Security Analysis</kwd>
        <kwd>Palladio Component Model</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        In a world of interconnected networks, security becomes increasingly important. Personal data,
corporate secrets, or system operations have to be protected from unauthorized access. Thereby,
“security should be explicitly at the requirements level” [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Appropriately formulated security
requirements (i.e., abuse cases) are falsifiable and therefore form the foundation for secure
system development. For security, as well as for all requirements, the rule applies: The later a
violation is detected, the more expensive the repair gets [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Security requirements should be
considered and reviewed from the beginning of the software development. However, this is often
not the case [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. If security is not considered in the design stage, then less context is transmitted
to the next stages. Security analyses in the implementation stage miss some security aspects and
run independently from previous decisions, limitations, and assumptions. However, security
is often not treated as an intrinsically dependent construct. The underlying security models
often contain only few security aspects [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Thereby, diferent security models and analyses
need to be combined to provide an appropriate coverage. This also increases the complexity
and efort for the developers to keep track of used mechanisms, covered requirements, and
the interrelationships between diferent security aspects or assumptions. Another problem
regarding secure software development is that security is an evolving risk. Thus, assumptions
on parts of the system, security mechanisms, and attacker can change during the development
or the system’s lifetime. Therefore, it is important to check constantly whether assumptions
are still valid and whether the system still fulfills its requirements.
In this paper, we propose a holistic framework for secure software development and evolution.
Such frameworks can be classified based on diferent characteristics: Alkussayer and Allen [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]
state that there are four bases to perform security analyses on architectural level: Mathematical
modeling, simulation-based, scenario-based, and experience-based analyses. Ryoo et al. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]
state that there are three orientations of architectural security analyses: Vulnerability-oriented,
pattern-oriented, and tactic-oriented approaches. Alkussayer and Allen [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] present a
scenariobased framework built from diferent vulnerability-oriented approaches.
      </p>
      <p>
        Ryoo et al. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] state that a combination of all orientations should be preferred: At first, they run
a vulnerability-oriented approach based on an expert interview. The results are transmitted to a
pattern-oriented analysis that analyses design patterns regarding the identified vulnerabilities.
Finally, they use a tactic-oriented approach to investigate the handling of attacks.
      </p>
      <p>
        Khan [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] explicitly checks the security aspects of every development stage before the next
stage begins. If the current stage leads to problems, they have to be revised. Khan begins with
the requirement phase. It contains a misuse case analysis that is used to verify the previously
defined requirements. In the design phase, these misuse cases and a vulnerability analysis are
used to perform threat modeling. Regarding the results of this stage (i.e., identified threats) the
design can be adapted. The coding phase is closed by a testing phase, including static analyses
and code reviews.
      </p>
      <p>However, these frameworks focus on the development, but not the evolution.</p>
      <p>
        The framework we suggest can be applied over time and react to changing requirements or
contexts. In contrast to the related work, the interchange of the analyses uses the blackboard
principle: All information is managed in a single model, the Palladio Component Model (PCM) [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]
which is an established metamodel for software architectures. By extending the model with
security information, the exchange of analyses is simplified. At the same time, the complexity
for the software architect is lowered. Through the single source, the framework is extendable
and has exchangeable analyses. Moreover, analyses can benefit from each other’s results.
      </p>
    </sec>
    <sec id="sec-2">
      <title>2. Vision</title>
      <p>
        Our framework begins with the definition of the software system in the form of requirements
(c.f. Figure 1) and context information. This contains, e.g., information about data localization,
law, and areas of application. Since the architecture is not designed in this stage, this information
cannot be linked to specific components. Therefore, given goals and other information are
refined to a description as explicitly as possible. In our work, we follow the idea of Broadnax et al.
[
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]: Refine such goals as much as possible, so that only black box mechanisms and underlying
assumptions remain. Thereby, the soft goals of the stakeholders become hard goals that relate
to a functional requirement.
      </p>
      <p>
        During the design phase, an architecture is created and specified as a PCM. By linking these
hard goals to components of the architecture, software architects already obtain an overview of
the required security. This can reduce complexity and simplify purchasing external components.
Based on the architecture, the hard goals of the previous stage can be refined to black box
mechanisms. These black boxes (e.g., a VPN protocol) with underlying assumptions (e.g., the
correctness of the VPN protocol) can then be linked to specific components. Furthermore,
additional assumptions can be annotated based on the work of Taspolatoglu and Heinrich [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
Based on this extended PCM, multiple analyses can be executed, and the assumptions are
falsified. For example, regarding the confidentiality &amp; uncertainty analysis multiple outcomes
could occur: On the one hand, the assumption could be verified, because the component has no
confidentiality problems. On the other hand, it could also be that this statement depends on
another component. Therefore, the existing assumption should be refined to two assumptions
(one for the component and one for the dependency). Finally, it could be possible that the given
assumption is not met and therefore, the design has to be changed. When all approaches of the
design stage have been run, the architecture can be implemented. Thereby, static code analyses
or formal verification could check whether the assumptions are met (e.g., by verification whether
a security mechanism works correctly). The results of them are transmitted back to the PCM.
However, the interrelationship and composition of the architecture and code-based security
analyses have to be clarified. The PCM stays consistent as an overview of the current state
of the software’s security. As mentioned previously, there are some assumptions that cannot
be verified automatically (for example the localization of the servers). The PCM would also
contain these assumptions which helps in documentation and manual verification.
      </p>
      <p>This principle does not change over time. If, for example, a server location becomes insecure
the concerned assumptions could be changed. Since the interdependencies are modeled in
the PCM, the impact of the change can be comprehended by executing the framework on the
updated model. Accordingly, this works during software evolution and design changes.</p>
      <p>Requirements</p>
      <p>Security Catalogues</p>
      <p>System Context
Definition
Design
Implementation</p>
      <p>Design Decisions
refine</p>
      <p>Assumptions
link</p>
      <p>refine assumptions &amp; design
Architecture
specify Palladio Component</p>
      <p>Model</p>
      <p>Architecture-based</p>
      <p>Analyses
implement</p>
      <p>Code</p>
      <p>Code-based</p>
      <p>Analyses
2.1. Approaches
In this section, we propose first approaches for our framework. This includes uncertainty-aware
confidentiality analysis, combining code and architecture-based security analyses, and the
analysis of assumptions based on formal verification.</p>
      <sec id="sec-2-1">
        <title>2.1.1. Architecture-based Confidentiality Analysis under Uncertainty</title>
        <p>
          Especially in the early phases of the software architecture, design decisions are heavily afected
by the subject of uncertainty [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ]. While this can have negative impact on many quality
attributes like performance and reliability, it becomes increasingly critical regarding
securityrelated properties like confidentiality. Confidentiality demands that “information is not made
available or disclosed to unauthorized individuals” [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] and is often ensured by access control.
        </p>
        <p>
          The problem of uncertainty in software design has already been discussed in a multitude of
works, especially in the domain of self-adaptive systems [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]. Uncertainty-aware approaches
have been proposed on architectural abstraction [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] as well as in the context of access
control [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ]. However, these approaches lack the continuity from the requirements phase to the
implementation and existing approaches to deal with the requirements-based refinement of
access control policies do not explicitly consider uncertainty [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ].
        </p>
        <p>
          We envision a continuous process from high-level confidentiality requirements to low-level
access control policies based on their uncertainty-aware refinement and verification against the
modeled software architecture [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ]. Based on the Palladio modeling approach [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] and existing
taxonomies of uncertainty [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ], we plan to identify the impact of diferent sources of uncertainty
on the system’s confidentiality. The resulting policies are verified, e.g., by formulating them as
constraints for data flow analyses [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ] or by leveraging code-based analyses.
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>2.1.2. Composition of Architecture and Source Code View Static Security Analyses</title>
        <p>
          Most security modeling and analyses approaches use models of the system consisting of a
certain view, e.g., architecture or source code, as well as security-relevant information. However,
most of these models contain information of a single or small number of security aspects [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ].
We argue that one reason for such limitation is, that security aspects are better analyzable
on a certain view. For instance, the application of secure protocols can be declared in the
architectural model, but their correctness and security can only be analyzed by model checkers
or other methods [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ]. Thus, an architectural analysis that takes the application of protocols
into account has to assume their security. Because of the focus on a small number of security
aspects in a analysis, the results have to be calculated based on assumptions about other aspects
that are not analysed (e.g., because they cannot be represented on the applied view). When
these assumptions do not hold, the result of the analysis may contain false results.
        </p>
        <p>
          We research how the combination (hereafter called composition) of static security analyses of
the system views architecture and source code can be used to reduce failures arising through
assumptions of analyzable aspects. The need for composition of analyses and verification
techniques is already stated by Dwyer and Elbaum [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ]. Through composition we expect to
achieve more comprehensive results by evaluating the assumed aspects on the architectural
level through the utilization of source code analyses results. To achieve a composition, the
transfer of information between two analyses has to be enabled. For this purpose, we propose a
blackbox approach, where only the models and the results are used for the connection and thus,
no modification of the underlying analyses have to be performed. Furthermore, we research
how it can be determined if the composition of two or more analyses is valid.
        </p>
      </sec>
      <sec id="sec-2-3">
        <title>2.1.3. Source-level Specification and Verification of Security</title>
        <p>Which security properties must be specified and/or verified on the source code level? To answer
this question, we aim to identify patterns for security specification and verification. This
encompasses recurring formal specification of security properties and building blocks of code
that have been proven to fulfil a given security property. While some properties depend on the
concrete programming language, others are language-independent, or they can be formalized
on a language-independent level and instantiated for concrete applications.</p>
        <p>On the architecture level, security properties are assumed or required, and linked to specific
components. In order to justify an assumption or show that a security requirement is met, it
has to be proven that a component works as expected. Here, formal methods can be used: If a
security requirement of a component can be translated into a formal specification of its source
code, theorem provers can show that the code fulfills its specification, and thereby that the
component fullfils its security requirement. Furthermore, protocol verification mechanisms can
prove that a protocol—within or between components—fulfills given security properties.</p>
        <p>
          One concrete recurring security pattern is access control. In a first step, we analyzed how
access control policies for Solidity smart contracts can be modelled on an architecture level,
and how adherence to the policy can be forced through generation of code and formal
specification [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ]. We aim to generalize our existing approach to other applications and programming
languages.
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Conclusion</title>
      <p>In this paper, we suggest a holistic framework for secure software development and evolution.
In the definition phase, requirements and information about contexts or security mechanisms
are specified as assumptions. In the design phase, the architecture is specified as PCM, and the
assumptions are linked to related components. Based on the PCM, security analyses can run,
use the assumptions to evaluate their aspects more specifically, and refine the assumptions they
relate to. Accordingly, in the implementation phase, code-based analyses can run and update
the information in the PCM. Thereby, software architects can get feedback about the security of
the design as early as possible, as well as an overview of the underlying assumptions. This shall
reduce complexity and provide an explicit security management.</p>
    </sec>
    <sec id="sec-4">
      <title>Acknowledgments</title>
      <p>This work was supported by funding from the topic Engineering Secure Systems of the Helmholtz
Association (HGF) and by KASTEL Security Research Labs (46.23.01 Methods for Engineering
Secure Systems).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>G.</given-names>
            <surname>McGraw</surname>
          </string-name>
          ,
          <article-title>Software security</article-title>
          ,
          <source>IEEE Security &amp; Privacy</source>
          <volume>2</volume>
          (
          <year>2004</year>
          )
          <fpage>80</fpage>
          -
          <lpage>83</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>B.</given-names>
            <surname>Boehm</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Basili</surname>
          </string-name>
          ,
          <source>Software defect reduction top 10 list, Computer</source>
          <volume>34</volume>
          (
          <year>2001</year>
          )
          <fpage>135</fpage>
          -
          <lpage>137</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>R.</given-names>
            <surname>Cope</surname>
          </string-name>
          ,
          <article-title>Strong security starts with software development, Network Security (</article-title>
          <year>2020</year>
          )
          <fpage>6</fpage>
          -
          <lpage>9</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>A. van den Berghe</surname>
          </string-name>
          , et al.,
          <article-title>Design notations for secure software: a systematic literature review</article-title>
          ,
          <source>Software &amp; Systems Modeling</source>
          <volume>16</volume>
          (
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>A.</given-names>
            <surname>Alkussayer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W. H.</given-names>
            <surname>Allen</surname>
          </string-name>
          ,
          <article-title>A scenario-based framework for the security evaluation of software architecture</article-title>
          ,
          <source>in: ICCSIT</source>
          , volume
          <volume>5</volume>
          ,
          <year>2010</year>
          , pp.
          <fpage>687</fpage>
          -
          <lpage>695</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>J.</given-names>
            <surname>Ryoo</surname>
          </string-name>
          , et al.,
          <article-title>Architectural analysis for security</article-title>
          ,
          <source>IEEE Security &amp; Privacy</source>
          <volume>13</volume>
          (
          <year>2015</year>
          )
          <fpage>52</fpage>
          -
          <lpage>59</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>R.</given-names>
            <surname>Khan</surname>
          </string-name>
          ,
          <article-title>Secure software development: a prescriptive framework</article-title>
          ,
          <source>Computer Fraud &amp; Security</source>
          <year>2011</year>
          (
          <year>2011</year>
          )
          <fpage>12</fpage>
          -
          <lpage>20</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>R. H.</given-names>
            <surname>Reussner</surname>
          </string-name>
          , et al.,
          <article-title>Modeling and Simulating Software Architectures: The Palladio Approach</article-title>
          , The MIT Press,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>B.</given-names>
            <surname>Broadnax</surname>
          </string-name>
          , et al.,
          <article-title>Eliciting and refining requirements for comprehensible security</article-title>
          ,
          <source>in: 11th Security Research Conference</source>
          , Fraunhofer Verlag, Berlin,
          <year>2016</year>
          , pp.
          <fpage>323</fpage>
          -
          <lpage>330</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>E.</given-names>
            <surname>Taspolatoglu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Heinrich</surname>
          </string-name>
          ,
          <article-title>Context-based architectural security analysis</article-title>
          ,
          <source>in: WICSA</source>
          ,
          <year>2016</year>
          , pp.
          <fpage>281</fpage>
          -
          <lpage>282</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>S.</given-names>
            <surname>Hahner</surname>
          </string-name>
          ,
          <article-title>Dealing with uncertainty in architectural confidentiality analysis</article-title>
          ,
          <source>in: Proceedings of the Software Engineering 2021 Satellite Events</source>
          ,
          <year>2021</year>
          , p.
          <fpage>1</fpage>
          -
          <lpage>6</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>ISO</surname>
          </string-name>
          , ISO/IEC 27000:
          <string-name>
            <surname>2018(E) Information</surname>
          </string-name>
          technology
          <article-title>- Security techniques - Information security management systems - Overview and vocabulary</article-title>
          , Standard,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>S.</given-names>
            <surname>Mahdavi-Hezavehi</surname>
          </string-name>
          , et al.,
          <article-title>Uncertainty in self-adaptive systems: A research community perspective</article-title>
          ,
          <source>ACM Transactions on Adaptive and Autonomous Systems</source>
          (
          <year>2021</year>
          ). To appear.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>N.</given-names>
            <surname>Esfahani</surname>
          </string-name>
          , et al.,
          <article-title>GuideArch: Guiding the exploration of architectural solution space under uncertainty</article-title>
          ,
          <source>in: ICSE</source>
          ,
          <year>2013</year>
          , pp.
          <fpage>43</fpage>
          -
          <lpage>52</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>T.</given-names>
            <surname>Bures</surname>
          </string-name>
          , et al.,
          <article-title>Capturing Dynamicity and Uncertainty in Security and Trust via Situational Patterns</article-title>
          , in: ISoLA,
          <year>2020</year>
          , pp.
          <fpage>295</fpage>
          -
          <lpage>310</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>Q.</given-names>
            <surname>He</surname>
          </string-name>
          ,
          <string-name>
            <surname>A. I. Antón</surname>
          </string-name>
          ,
          <article-title>Requirements-based Access Control Analysis and Policy Specification (ReCAPS)</article-title>
          ,
          <source>Information and Software Technology</source>
          <volume>51</volume>
          (
          <year>2009</year>
          )
          <fpage>993</fpage>
          -
          <lpage>1009</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>S.</given-names>
            <surname>Hahner</surname>
          </string-name>
          ,
          <article-title>Architectural access control policy refinement and verification under uncertainty</article-title>
          ,
          <source>in: ECSA</source>
          ,
          <year>2021</year>
          . Accepted, to appear.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>D.</given-names>
            <surname>Perez-Palacin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Mirandola</surname>
          </string-name>
          ,
          <article-title>Uncertainties in the modeling of self-adaptive systems</article-title>
          , in: ICPE,
          <year>2014</year>
          , pp.
          <fpage>3</fpage>
          -
          <lpage>14</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>S.</given-names>
            <surname>Hahner</surname>
          </string-name>
          , et al.,
          <article-title>Modeling data flow constraints for design-time confidentiality analyses</article-title>
          , in: ICSA-C,
          <year>2021</year>
          , p.
          <fpage>15</fpage>
          -
          <lpage>21</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>C.</given-names>
            <surname>Hochreiner</surname>
          </string-name>
          , et al.,
          <article-title>Genie in a model? why model driven security will not secure your web application</article-title>
          .,
          <source>JoWUA</source>
          <volume>5</volume>
          (
          <year>2014</year>
          )
          <fpage>44</fpage>
          -
          <lpage>62</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <surname>M. B. Dwyer</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Elbaum</surname>
          </string-name>
          ,
          <article-title>Unifying verification and validation techniques: Relating behavior and properties through partial evidence</article-title>
          , in: FoSER,
          <year>2010</year>
          , p.
          <fpage>93</fpage>
          -
          <lpage>98</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>F.</given-names>
            <surname>Reiche</surname>
          </string-name>
          , et al.,
          <article-title>Modeling and Verifying Access Control for Ethereum Smart Contracts</article-title>
          ,
          <source>Technical Report, Karlsruher Institut für Technologie (KIT)</source>
          ,
          <year>2021</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>