<PP xmlns="https://niap-ccevs.org/cc/v1" xmlns:sec="https://niap-ccevs.org/cc/v1/section" xmlns:h="http://www.w3.org/1999/xhtml" target-product="General Purpose Operating Systems" boilerplate="yes">
	

  <PPReference>
    <ReferenceTable>
      <PPTitle>Protection Profile for General Purpose Operating Systems</PPTitle>
      <PPVersion>4.4</PPVersion>
      <PPAuthor>National Information Assurance Partnership</PPAuthor>
      <PPPubDate>2025-03-31</PPPubDate>
      <Keywords>OS; operating system</Keywords>
    </ReferenceTable>
  </PPReference>

  <RevisionHistory>
    <entry>
      <version>4.4</version>
      <date>2024-09-06</date>
      <subject>
        <h:ul>
          <h:li>Updated to conform to CC:2022.</h:li>
          <h:li>Incorporated X.509 package.</h:li>
          <h:li>Incorporated applicable technical decisions.</h:li>
        </h:ul>
      </subject>
    </entry>
    <entry>
      <version>4.3</version>
      <date>2022-09-27</date>
      <subject>
	<h:ul>
	  <h:li>Added compatibility with MDM Agent, Bluetooth, and TLS Modules.</h:li>
	  <h:li>Two factor authentication.</h:li>
	  <h:li>Aligned with CNSA.</h:li>
	</h:ul>
      </subject>
    </entry>
    <entry>
      <version>4.2.1</version>
      <date>2019-04-22</date>
      <subject>Formatting changes as a result of PP evaluation</subject>
    </entry>
    <entry>
      <version>4.2</version>
      <date>2018-05-22</date>
      <subject>Multiple Technical Decisions applied</subject>
    </entry>
    <entry>
      <version>4.1</version>
      <date>2016-03-09</date>
      <subject>Minor updates - cryptographic modes</subject>
    </entry>
    <entry>
      <version>4.0</version>
      <date>2015-08-14</date>
      <subject>Release - significant revision</subject>
    </entry>
  </RevisionHistory>

  <release-notes><h:h3>TDs Applied</h:h3></release-notes><include-pkg id="pkg-ssh">
    <git>
      <url>https://github.com/commoncriteria/ssh</url>
      <branch>release-1.0</branch>
    </git>
    <url>https://www.niap-ccevs.org/static_html/protection-profile/459/459/pkg_ssh_v1.0.htm</url>
    <depends on="s-ftp_ssh" also="s-uau-ssh"/>
  </include-pkg>
  <include-pkg id="pkg-tls">
    <git>
      <url>https://github.com/commoncriteria/tls</url>
      <branch>master</branch>
    </git>
    <url>https://www.niap-ccevs.org/static_html/protection-profile/439/-439-/index.html</url>
  </include-pkg>
  <include-pkg id="pkg-x509">
    <git>
      <url>https://github.com/commoncriteria/X509</url>
      <branch>master</branch>
    </git>
    <url>https://www.niap-ccevs.org/protectionprofiles/511</url>
  </include-pkg>
  <modules>
    <module id="mod-vpnclient">
      <git>
	<url>https://github.com/commoncriteria/vpnclient</url>
	<branch>v2.5</branch>
      </git>
      <url>https://www.niap-ccevs.org/protectionprofiles/487</url>
      <depends on="s-provides-vpnclient"/>
    </module>
    <module id="mod-bluetooth">
      <git>
	<url>https://github.com/commoncriteria/bluetooth</url>
	<branch>v1.0</branch>
      </git>
      <url>https://www.niap-ccevs.org/protectionprofiles/425</url>
    </module>
    <module id="mod-mdmagent">
      <git>
	<url>https://github.com/commoncriteria/mdmagent</url>
	<branch>Release-1.0</branch>
      </git>
      <url>https://www.niap-ccevs.org/protectionprofiles/441</url>
    </module>
    <module id="mod-wlanclient">
      <git>
	<url>https://github.com/commoncriteria/wlanclient</url>
	<branch>release-1.0</branch>
      </git>
      <url>https://www.niap-ccevs.org/protectionprofiles/463</url>
    </module>
    
    <!-- <module id="mod-biometric" version="1.1" name="cPP for Biometrics" product="Biometric Devices" short="BMcPP"> -->
    <!--   <url>https://biometricitc.github.io/v1.1/1.1PRE/MOD-BIO-v1.1.pdf</url> -->
    <!-- </module> -->
</modules> 
  
  <pp-preferences>
     <audit-events-in-sfrs/>    
  </pp-preferences>
	  
  <sec:Introduction>
    <sec:Overview> 
The scope of this Protection Profile (PP) is to
describe the security functionality of operating systems in terms of <xref g="CC"/>
and to define functional and assurance requirements for such products.
An operating system is software that manages computer hardware and software
resources, and provides common services for application programs. The hardware
it manages may be physical or virtual.
    </sec:Overview>
    <tech-terms>
      <term abbr="AES" full="Advanced Encryption Standard"/>
      <term full="Address Space Layout Randomization" abbr="ASLR">
	An anti-exploitation feature which loads memory mappings into unpredictable
	locations. ASLR makes it more difficult for an attacker to redirect control to code
	that they have introduced into the address space of a process.
      </term>
      <term full="Administrator">
	An administrator is responsible for management activities, including setting policies that are 
	applied by the enterprise on the operating system.
	This administrator could be acting remotely through a management server, from which the system
	receives configuration policies.
	An administrator can enforce settings on the system which cannot be overridden by non-administrator users.
      </term>
      <term full="Application" abbr="app">
	Software that runs on a platform and performs tasks on behalf of the user
	or owner of the platform, as well as its supporting documentation. 
      </term>
      <term full="Application Programming Interface" abbr="API">
	A specification of routines, data structures, object classes, and variables
	that allows an application to make use of services provided by another software
	component, such as a library. APIs are often provided for a set of libraries included
	with the platform.
      </term>
      <!-- <term full="Biometric Authentication Factor" abbr="BAF" plural="BAFs"> Authentication factor, which uses -->
      <!--   biometric sample, matched to a biometric authentication template to help establish -->
      <!--   identity.</term> -->
      <term abbr="CESG" full="Communications-Electronics Security Group"/>
      <term abbr="CMC" full="Certificate Management over CMS"/>
      <term abbr="CMS" full="Cryptographic Message Syntax"/>
      <term abbr="CN" full="Common Names"/>
      <term full="Credential">
	Data that establishes the identity of a user, e.g. a cryptographic key or
	password.
      </term>
      <term abbr="CRL" full="Certificate Revocation List"/>
      <term abbr="CSA" full="Computer Security Act"/>
      <term full="Critical Security Parameters" abbr="CSP">
	Information that is either user or system defined and
	is used to operate a cryptographic module in processing encryption functions including
	cryptographic keys and authentication data, such as passwords, the disclosure or modification
	of which can compromise the security of a cryptographic module or the security of the
	information protected by the module.
      </term>
      <term full="Data At Rest" abbr="DAR"/>
      <term full="DAR Protection">
	Countermeasures that prevent attackers, even those with physical access,
	from extracting data from non-volatile storage.
	Common techniques include data encryption and wiping.
      </term>
      <term full="Data Execution Prevention" abbr="DEP">
	An anti-exploitation feature of modern operating systems executing on
	modern computer hardware, which enforces a non-execute permission on pages of memory.
	DEP prevents pages of memory from containing both data and instructions, which makes
	it more difficult for an attacker to introduce and execute code.
      </term>
      <term abbr="DES" full="Data Encryption Standard"/>
      <term full="Developer">
	An entity that writes OS software. For the purposes of this document,
	vendors and developers are the same.
      </term>
      <term abbr="DHE" full="Diffie-Hellman Ephemeral"/>
      <term abbr="DNS" full="Domain Name System"/>
      <term abbr="DRBG" full="Deterministic Random Bit Generator"/>
      <term abbr="DSS" full="Digital Signature Standard"/>
      <term abbr="DT" full="Date/Time Vector"/>
      <term abbr="DTLS" full="Datagram Transport Layer Security"/>
      <term abbr="EAP" full="Extensible Authentication Protocol"/>
      <term abbr="ECDHE" full="Elliptic Curve Diffie-Hellman Ephemeral"/>
      <term abbr="ECDSA" full="Elliptic Curve Digital Signature Algorithm"/>
      <term abbr="EST" full="Enrollment over Secure Transport"/>
      <term abbr="FIPS" full="Federal Information Processing Standards"/>
      <term full="General Purpose Operating System">
	A class of OSes designed to support a wide-variety of workloads consisting of many concurrent applications or services.
	Typical characteristics for OSes in this class include support for third-party applications,
	support for multiple users, and security separation between users and their respective resources.
	General Purpose Operating Systems also lack the real-time constraint that defines Real Time Operating Systems
	which are typically used in routers, switches, and embedded devices.
      </term>
      <term full="Hybrid Authentication">
	A hybrid authentication factor is one where a user has to
	submit a combination of a cryptographic token and a PIN or password and both must pass.
	If either factor fails, the entire attempt fails.
      </term>
      <term abbr="HMAC" full="Hash-based Message Authentication Code"/>
      <term full="Host-based Firewall">
	A software-based firewall implementation running on the OS for filtering inbound and
	outbound network traffic to and from processes running on the OS.
      </term>
      <term abbr="HTTP" full="Hypertext Transfer Protocol"/>
      <term abbr="HTTPS" full="Hypertext Transfer Protocol Secure"/>
      <term abbr="IETF" full="Internet Engineering Task Force"/>
      <term abbr="IP" full="Internet Protocol"/>
      <term abbr="ISO" full="International Organization for Standardization"/>
      <term abbr="IT" full="Information Technology"/>
      <term abbr="ITSEF" full="Information Technology Security Evaluation Facility"/>
      <term abbr="NIAP" full="National Information Assurance Partnership"/>
      <term abbr="NIST" full="National Institute of Standards and Technology"/>
      <term abbr="OCSP" full="Online Certificate Status Protocol"/>
      <term abbr="OID" full="Object Identifier"/>
      <term abbr="OMB" full="Office of Management and Budget"/>
      <term abbr="OS" full="Operating System">
	Software that manages physical and logical resources and provides services
	for applications. The terms <h:i>TOE</h:i> and <h:i>OS</h:i> are interchangeable in this
	document. 
      </term>
      <term abbr="PIN" full="Personal Identification Number">
	An authentication factor that is comprised of a set of numeric or alphabetic characters
	that may be used  in addition to a cryptographic token to provide a hybrid authentication factor.
	At this time it  is not considered as a stand-alone authentication mechanism.
	A PIN is distinct from a password in that the allowed character set and required length of a PIN
	is typically smaller than that of a password as it is designed to be input quickly.
      </term>

      <term abbr="PKI" full="Public Key Infrastructure"/>
      <term abbr="RBG" full="Random Bit Generator"/>
      <term abbr="RFC" full="Request for Comment"/>
      <term abbr="RNG" full="Random Number Generator"/>
      <!-- <term abbr='RNGVS' full="Random Number Generator Validation System"/> -->
      <term full="Personally Identifiable Information" abbr="PII">
	Any information about an individual maintained by an agency, including, but
	not limited to, education, financial transactions, medical history, and criminal or
	employment history and information which can be used to distinguish or trace an
	individual's identity, such as their name, social security number, date and place of
	birth, mother's maiden name, biometric records, etc., including any other personal
	information which is linked or linkable to an individual.<xref to="bibOMB"/>
      </term>
      <term abbr="SAN" full="Subject Alternative Name"/>
      <term abbr="SHA" full="Secure Hash Algorithm"/>
      <term abbr="S/MIME" full="Secure/Multi-purpose Internet Mail Extensions"/>
      <term full="Sensitive Data">
	Sensitive data may include all user or enterprise data or may be specific
	application data such as PII, emails, messaging, documents, calendar items, and contacts.
	Sensitive data must minimally include credentials and keys. Sensitive data shall
	be identified in the OS's TSS by the ST author. 
      </term>
      <term abbr="SIP" full="Session Initiation Protocol"/>
      <term abbr="SWID" full="Software Identification"/>
      <term abbr="TLS" full="Transport Layer Security"/>
      <term abbr="URI" full="Uniform Resource Identifier"/>
      <term abbr="URL" full="Uniform Resource Locator"/>
      <term abbr="USB" full="Universal Serial Bus"/>
      <term full="User">
	A user is subject to configuration policies applied
	to the operating system by administrators.  On some systems under certain
	configurations, a normal user can temporarily elevate privileges to that of an administrator.
	At that time, such a user should be considered an administrator.
      </term>
      <term abbr="VPN" full="Virtual Private Network"/>
      <term abbr="XCCDF" full="eXtensible Configuration Checklist Description Format"/>
      <term abbr="XOR" full="Exclusive Or"/>
    </tech-terms>    
    <sec:Compliant_Targets_of_Evaluation>
      Compliant TOEs will implement security functionality in the following general areas:
      <h:ul>
        <h:li>Accountability: ensuring that information exists to discover unintentional issues with the configuration and operation of the TOE so that the root cause can be determined.</h:li>
        <h:li>Integrity: ensuring the integrity of updates to the TOE and enforcing mechanisms that control the deployment and execution of applications running on it.</h:li>
        <h:li>Management: providing mechanisms for configuration of the TSF and deployment of applications running on the TOE.</h:li>
        <h:li>Protected Storage: ensuring that credentials and file system data are not subject to unauthorized disclosure.</h:li>
        <h:li>Protected Communications: ensuring that sensitive data in transit to and from the TOE is adequately protected from unauthorized modification and disclosure.</h:li>
      </h:ul>
      <sec:TOE_Boundary>
        The TOE boundary encompasses the OS kernel and its drivers, shared
        software libraries, and some application software included with the OS. The applications considered within the TOE
        are those that provide essential security services, many of which run with elevated
        privileges.  Applications which are covered by more-specific Protection Profiles cannot
        claim evaluation as part of the OS evaluation, even when it is necessary to evaluate
        some of their functionality as it relates to their role as part of the OS.
        <figure entity="images/Toe.png" title="General TOE " id="toe"/>
      </sec:TOE_Boundary>
      <sec:TOE_Platform>
	The TOE platform, which consists of the physical or virtual hardware on which the TOE executes,
        is outside the scope of evaluation.  At the same time, the security of the TOE relies upon it.
        Other hardware components which independently run their own software and are
        relevant to overall system security are also outside the scope of evaluation.
      </sec:TOE_Platform>
    </sec:Compliant_Targets_of_Evaluation>
    <sec:Use_Cases>Requirements in this Protection Profile are designed to
      address the security problems in at least the following use cases. These use cases are intentionally
      very broad, as many specific use cases exist for an operating system. These use cases may also
      overlap with one another.  An operating system's functionality may even be effectively extended by
      privileged applications installed onto it.  However, these are out of scope of this PP.
      <usecases>
        <usecase title="End User Devices" id="enduserdevices">
          <description>
	    <h:p>
	    The OS provides a platform for end user devices such as desktops,
	    laptops, convertibles, and tablets.
	    These devices may optionally be bound to a directory server or management server.
	    </h:p>
	    <h:p>
            As this Protection Profile does not address threats against data-at-rest,
            enterprises deploying operating systems in mobile scenarios should ensure that these systems
            include data-at-rest protection spelled out in other
	    Protection Profiles. Specifically, this includes the Protection Profiles for
	    <h:i>Full Drive Encryption - Encryption Engine</h:i>,
	    <h:i>Full Drive Encryption - Authorization Acquisition</h:i>,
	    and <h:i>Software File Encryption</h:i>.  The <h:i>Protection Profile for Mobile
		Device Fundamentals</h:i> includes requirements for data-at-rest protection and is appropriate
		for many mobile devices.
	    </h:p>
          </description>
        </usecase>
        <usecase title="Server Systems" id="serversystems">
          <description>The OS provides a platform for server-side services, either on
            physical or virtual hardware.  Many specific examples exist in which the OS acts
            as a platform for such services, including file servers, mail servers, and web servers.
          </description>
        </usecase>
        <usecase title="Cloud Systems" id="cloudsystems">
          <description>
	    <h:p>
	      The OS provides a platform for providing cloud services running on
              physical or virtual hardware.  An OS is typically part of offerings
              identified as Infrastructure as a Service (IaaS), Software as a Service (SaaS),
              and Platform as a Service (PaaS).
	    </h:p>
	    <h:p>
			This use case typically involves the use
			of virtualization technology which should be evaluated against the
			<h:i>Protection Profile for Server Virtualization</h:i>.
	    </h:p>
	  </description>
        </usecase>
      </usecases>
    </sec:Use_Cases>
  </sec:Introduction>
  
  
    
    
    <sec:Conformance_Claims boilerplate="no">
      
      
      <!-- The new CClaimsInfo construct -->
      <CClaimsInfo cc-version="cc-2022r1" cc-approach="direct-rationale">
        <cc-st-conf>exact</cc-st-conf>       
        <cc-pt2-conf>extended</cc-pt2-conf>
        <cc-pt3-conf>extended</cc-pt3-conf>
        <cc-pp-conf/>
        <cc-pp-config-with>       
          <Mod-cc-ref>PP-Module for Virtual Private Network (VPN) Clients, version 2.4</Mod-cc-ref>
          <Mod-cc-ref>PP-Module for Virtual Private Network (VPN) Clients, version 2.5</Mod-cc-ref>
          <Mod-cc-ref>PP-Module for Bluetooth, version 1.0</Mod-cc-ref>
          <Mod-cc-ref>PP-Module for Mobile Device Management Agent, version 1.0</Mod-cc-ref>
          <Mod-cc-ref>PP-Module for Wireless LAN Clients, version 1.0</Mod-cc-ref>
          <Mod-cc-ref>cPP-Module for Biometric Enrolment and Verification, version 1.1</Mod-cc-ref>  
        </cc-pp-config-with>
        <cc-pkg-claim>
          <FP-cc-ref conf="conformant">Functional Package for Transport Layer Security Version 2.1</FP-cc-ref>
          <FP-cc-ref conf="conformant">Functional Package for Secure Shell Version 1.1</FP-cc-ref>
          <FP-cc-ref conf="conformant">Functional Package for X.509 Version 1.0</FP-cc-ref>
          <AP-cc-ref conf="conformant">Assurance Package for Flaw Remediation Version 1.0</AP-cc-ref>
           <!-- <AP-cc-ref conf="conformant">Assurance Package for Flaw Remediation Version 1.0</AP-cc-ref> -->
        </cc-pkg-claim>
      </CClaimsInfo>	
      <!-- 
      <cclaims>  
        <cclaim name="Conformance Statement">  
          <description>  
            <h:p>
      	  An ST must claim exact conformance to this PP.
            </h:p><h:p>
            The evaluation methods used for evaluating the TOE are a combination of the workunits defined in <xref to="bibCEM"/> as well as the
            Evaluation Activities for ensuring that individual SFRs have sufficient supporting evidence in the Security Target and 
            guidance documentation and have been sufficiently tested by the laboratory as part of completing ATE_IND.1. Any functional packages 
            this PP-Module claims similarly contain their own Evaluation Activities that are used in this same manner.
            </h:p><h:p>  
              <comment>These need to be updated for CC:2022 versions when available. When CC:2022 versions are available, make sure the module tags up top are updated with correct URLs.</comment>
            The following PP-Modules are allowed to be specified in a PP-Configuration with this PP.  
            <h:ul>  
                  <h:li>PP-Module for Virtual Private Network (VPN) Clients, version 2.4</h:li>  
                  <h:li>PP-Module for Bluetooth, version 1.0</h:li>  
                  <h:li>PP-Module for Mobile Device Management Agent, version 1.0</h:li>
                  <h:li>PP-Module for Wireless LAN Clients, version 1.0</h:li>
                  <h:li>cPP-Module for Biometric Enrolment and Verification, version 1.1</h:li>  
                </h:ul>  
      	  </h:p>  
          </description>  
        </cclaim>  
        <cclaim name="CC Conformance Claims">  
          <description>This PP is conformant to Parts 2 (extended) and 3 (extended) of Common  
            Criteria Version CC:2022, Revision 1.</description>  
        </cclaim>  
        <cclaim name="PP Claim">  
          <description>This PP does not claim conformance to any Protection Profile.</description>  
        </cclaim>  
        <cclaim name="Package Claim">  
          <description>
            <comment>Placeholder versions referenced for CC:2022 purposes. When CC:2022 versions are available, make sure the include-pkg tags up top are updated with correct URLs.</comment>
            This PP is Functional Package for Transport Layer Security Version 2.1 Conformant.<h:br/>  
            This PP is Functional Package for Secure Shell Version 1.1 Conformant.<h:br/>
            This PP is Functional Package for X.509 Version 1.0 Conformant.<h:br/>
          This PP is Assurance Package for Flaw Remediation Version 1.0 Conformant.</description>  
        </cclaim>  
      </cclaims>  
      -->
      
    </sec:Conformance_Claims>  
  
  
  <sec:Security_Problem_Definition>The security problem is described in terms
    of the threats that the OS is expected to address, assumptions about the
    operational environment, and any organizational security policies that the OS
    is expected to enforce.
    <sec:Threats>
      <threats>
        <threat name="T.NETWORK_ATTACK">
          <description> An attacker is positioned on a communications channel or elsewhere on the
            network infrastructure. Attackers may engage in communications with applications and
            services running on or part of the OS with the intent of compromise. Engagement may
            consist of altering existing legitimate communications.</description>
          <addressed-by>FAU_GEN.1</addressed-by>
          <rationale>FAU_GEN.1 helps mitigate the threat of a network attack by logging evidence of potential malicious activity.</rationale>
          <addressed-by>FCS_CKM.1</addressed-by>
          <rationale>FCS_CKM.1 helps mitigate the threat of a network attack by ensuring the generation of strong keys used for trusted communications.</rationale>
          <addressed-by>FCS_CKM.2</addressed-by>
          <rationale>FCS_CKM.2 helps mitigate the threat of a network attack by implementing secure methods to perform key establishment for trusted communications.</rationale>
          <addressed-by>FCS_CKM.6</addressed-by>
          <rationale>FCS_CKM.6 helps mitigate the threat of a network attack by ensuring that keys used for trusted communications are destroyed in a secure manner.</rationale>
          <addressed-by>FCS_COP.1/ENCRYPT</addressed-by>
          <rationale>FCS_COP.1/ENCRYPT helps mitigate the threat of a network attack by ensuring that secure symmetric algorithms are used for trusted communications.</rationale>
          <addressed-by>FCS_COP.1/HASH</addressed-by>
          <rationale>FCS_COP.1/HASH helps mitigate the threat of a network attack by ensuring that secure hash algorithms are used for trusted communications.</rationale>
          <addressed-by>FCS_COP.1/KEYHMAC</addressed-by>
          <rationale>FCS_COP.1/KEYHMAC helps mitigate the threat of a network attack by ensuring that secure HMAC algorithms are used for trusted communications.</rationale>
          <addressed-by>FCS_COP.1/SIGN</addressed-by>
          <rationale>FCS_COP.1/SIGN helps mitigate the threat of a network attack by ensuring that secure digital signature algorithms are used for trusted communications.</rationale>
          <addressed-by>FCS_RBG.1</addressed-by>
          <rationale>FCS_RBG.1 helps mitigate the threat of a network attack by ensuring that keys used for trusted communications are generated using a secure DRBG.</rationale>
          <addressed-by>FIA_AFL.1</addressed-by>
          <rationale>FIA_AFL.1 helps mitigate the threat of a network attack by preventing an unprivileged user from logging into a network interface by brute force guessing the credential.</rationale>
          <addressed-by>FIA_UAU.5</addressed-by>
          <rationale>FIA_UAU.5 helps mitigate the threat of a network attack by providing specified authentication mechanisms for network user authentication.</rationale>
          <addressed-by>FMT_MOF_EXT.1</addressed-by>
          <rationale>FMT_MOF_EXT.1 helps mitigate the threat of a network attack by limiting the management functions that are available to a given user.</rationale>
          <addressed-by>FMT_SMF_EXT.1</addressed-by>
          <rationale>FMT_SMF_EXT.1 helps mitigate the threat of a network attack by limiting the management functions that are available to a given user.</rationale>
          <addressed-by>FPT_ACF_EXT.1</addressed-by>
          <rationale>FPT_ACF_EXT.1 helps mitigate the threat of a network attack by limiting the ability of an unprivileged user to modify the behavior of the TSF.</rationale>
          <addressed-by>FPT_ASLR_EXT.1</addressed-by>
          <rationale>helps mitigate the threat of a network attack by limiting the ability to modify the behavior of the TSF via memory overflow.</rationale>
          <addressed-by>FPT_FLS.1</addressed-by>
          <rationale>FPT_FLS.1 helps mitigate the threat of a network attack by ensuring that a malfunctioning DRBG function cannot be used to generate potentially insecure keys.</rationale>
          <addressed-by>FPT_SBOP_EXT.1</addressed-by>
          <rationale>helps mitigate the threat of a network attack by limiting the ability to modify the behavior of the TSF via stack overflow.</rationale>
          <addressed-by>FPT_TST.1</addressed-by>
          <rationale>FPT_TST.1 helps mitigate the threat of a network attack by implementing a mechanism to detect when the DRBG may be failing to generate secure cryptographic keys.</rationale>
          <addressed-by>FTP_ITC_EXT.1</addressed-by>
          <rationale>FTP_ITC_EXT.1 helps mitigate the threat of a network attack by requiring the TSF to implement trusted protocols for network communication.</rationale>
          <addressed-by>FTP_TRP.1</addressed-by>
          <rationale>FTP_TRP.1 helps mitigate the threat of a network attack by requiring the use of a trusted path for any remote administration that can be performed on the TOE.</rationale>
          
          
          <addressed-by>FCS_RBG.6 (optional)</addressed-by>
          <rationale>FCS_RBG.6 helps mitigate the threat of a network attack by providing a secure DRBG service for third-party applications running on the TOE which may use this service to generate their own cryptographic keys for trusted communications.</rationale>
          <addressed-by>FPT_W^X_EXT.1 (optional)</addressed-by>
          <rationale>FPT_W^X_EXT.1 helps mitigate the threat of a network attack by enforcing data execution prevention so that an external interface cannot attempt to write data to executable memory.</rationale>
          <addressed-by>FTA_TAB.1 (optional)</addressed-by>
          <rationale>FTA_TAB.1 helps mitigate the threat of a network attack by providing actionable consequences for misuse of the TSF.</rationale>
          
          <addressed-by>FPT_BLT_EXT.1 (objective)</addressed-by>
          <rationale>FPT_BLT_EXT.1 helps mitigate the threat of a network attack by enforcing least functionality of the TOE's Bluetooth interface.</rationale>
          
          <addressed-by>FCS_RBG.2 (selection-based)</addressed-by>
          <rationale>FCS_RBG.2 helps mitigate the threat of a network attack by ensuring that the TOE's DRBG is seeded with sufficient entropy to ensure the generation of strong cryptographic keys.</rationale>
          <addressed-by>FCS_RBG.3 (selection-based)</addressed-by>
          <rationale>FCS_RBG.3 helps mitigate the threat of a network attack by ensuring that the TOE's DRBG is seeded with sufficient entropy to ensure the generation of strong cryptographic keys.</rationale>
          <addressed-by>FCS_RBG.4 (selection-based)</addressed-by>
          <rationale>FCS_RBG.4 helps mitigate the threat of a network attack by ensuring that the TOE's DRBG is seeded with sufficient entropy to ensure the generation of strong cryptographic keys.</rationale>
          <addressed-by>FCS_RBG.5 (selection-based)</addressed-by>
          <rationale>FCS_RBG.5 helps mitigate the threat of a network attack by ensuring that the TOE's DRBG is seeded with sufficient entropy to ensure the generation of strong cryptographic keys.</rationale>          
          <addressed-by>FDP_IFC_EXT.1 (selection-based)</addressed-by>
          <rationale>FDP_IFC_EXT.1 helps mitigate the threat of a network attack by ensuring that the TOE has the ability to enforce the use of an IPsec VPN for all network traffic.</rationale>
          
          
          <!--
          <addressed-by>FCS_SSH_EXT.1 (SSH Package)</addressed-by><rationale>Helps mitigate the threat of a network attack by defining the TOE's implementation of SSH if this protocol is used for protected communications.</rationale>
          <addressed-by>FCS_SSHC_EXT.1 (SSH Package)</addressed-by><rationale>Helps mitigate the threat of a network attack by defining the TOE's implementation of SSH as a client if this protocol is used for protected communications.</rationale>
          <addressed-by>FCS_SSHS_EXT.1 (SSH Package)</addressed-by><rationale>Helps mitigate the threat of a network attack by defining the TOE's implementation of SSH as a server if this protocol is used for protected communications.</rationale>
          
          <addressed-by>FCS_TLS_EXT.1 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by identifying the TOE's support for TLS or DTLS as trusted communications channels.</rationale>
          <addressed-by>FCS_DTLSC_EXT.1 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSC_EXT.2 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSC_EXT.3 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSC_EXT.4 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSC_EXT.5 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSC_EXT.6 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSS_EXT.1 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSS_EXT.2 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSS_EXT.3 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSS_EXT.4 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSS_EXT.5 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSS_EXT.6 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSC_EXT.1 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSC_EXT.2 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSC_EXT.3 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSC_EXT.4 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSC_EXT.5 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSC_EXT.6 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSS_EXT.1 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSS_EXT.2 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSS_EXT.3 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSS_EXT.4 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSS_EXT.5 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSS_EXT.6 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          
          
          <addressed-by>FIA_XCU_EXT.1 (X.509 Package)</addressed-by>
          <rationale>Helps mitigate the threat of a network attack by requiring the use of X.509 certificates to validate the authenticity of network entities.</rationale>
          <addressed-by>FIA_XCU_EXT.2 (X.509 Package)</addressed-by>
          <rationale>Helps mitigate the threat of a network attack by requiring the use of X.509 certificates to assert its own identity to external entities.</rationale>
          <addressed-by>FIA_X509_EXT.1 (X.509 Package)</addressed-by>
          <rationale>Helps mitigate the threat of a network attack by defining how X.509 certificates are validated.</rationale>
          <addressed-by>FIA_X509_EXT.2 (X.509 Package)</addressed-by>
          <rationale>Helps mitigate the threat of a network attack by defining where X.509 certificates are used.</rationale>
          <addressed-by>FIA_X509_EXT.3 (X.509 Package)</addressed-by>
          <rationale>Helps mitigate the threat of a network attack by providing a secure means for the TOE to obtain certificates for its own use.</rationale>
     -->     
          
          <!--
          <objective-refer ref="O.PROTECTED_COMMS">
            <rationale>The threat T.NETWORK_ATTACK is countered by O.PROTECTED_COMMS as this
              provides for integrity of transmitted data.</rationale>
          </objective-refer>
          <objective-refer ref="O.INTEGRITY">
            <rationale>The threat T.NETWORK_ATTACK is countered by O.INTEGRITY as this provides for
              integrity of software that is installed onto the system from the network.</rationale>
          </objective-refer>
          <objective-refer ref="O.MANAGEMENT">
            <rationale>The threat T.NETWORK_ATTACK is countered by O.MANAGEMENT as this provides for
              the ability to configure the OS to defend against network attack.</rationale>
          </objective-refer>
          <objective-refer ref="O.ACCOUNTABILITY">
            <rationale>The threat T.NETWORK_ATTACK is countered by O.ACCOUNTABILITY as this
              provides a mechanism for the OS to report behavior that may indicate a network
              attack has occurred.</rationale>
          </objective-refer>
          -->
        </threat>
        <threat name="T.NETWORK_EAVESDROP">
          <description> An attacker is positioned on a communications channel or elsewhere on the
            network infrastructure. Attackers may monitor and gain access to data exchanged between
            applications and services that are running on or part of the OS, resulting in
            modification or disclosure of sensitive communications. </description>
          
          <addressed-by>FCS_CKM.1</addressed-by>
          <rationale>FCS_CKM.1 helps mitigate the threat of network eavesdropping by ensuring the generation of strong keys used for trusted communications.</rationale>
          <addressed-by>FCS_CKM.2</addressed-by>
          <rationale>FCS_CKM.2 helps mitigate the threat of network eavesdropping by implementing secure methods to perform key establishment for trusted communications.</rationale>
          <addressed-by>FCS_CKM.6</addressed-by>
          <rationale>FCS_CKM.6 helps mitigate the threat of network eavesdropping by ensuring that keys used for trusted communications are destroyed in a secure manner.</rationale>
          <addressed-by>FCS_COP.1/ENCRYPT</addressed-by>
          <rationale>FCS_COP.1/ENCRYPT helps mitigate the threat of network eavesdropping by ensuring that secure symmetric algorithms are used for trusted communications.</rationale>
          <addressed-by>FCS_COP.1/HASH</addressed-by>
          <rationale>FCS_COP.1/HASH helps mitigate the threat of network eavesdropping by ensuring that secure hash algorithms are used for trusted communications.</rationale>
          <addressed-by>FCS_COP.1/KEYHMAC</addressed-by>
          <rationale>FCS_COP.1/KEYHMAC helps mitigate the threat of network eavesdropping by ensuring that secure HMAC algorithms are used for trusted communications.</rationale>
          <addressed-by>FCS_COP.1/SIGN</addressed-by>
          <rationale>FCS_COP.1/SIGN helps mitigate the threat of network eavesdropping by ensuring that secure digital signature algorithms are used for trusted communications.</rationale>
          <addressed-by>FCS_RBG.1</addressed-by>
          <rationale>FCS_RBG.1 helps mitigate the threat of network eavesdropping by ensuring that keys used for trusted communications are generated using a secure DRBG.</rationale>
          <addressed-by>FPT_FLS.1</addressed-by>
          <rationale>FPT_FLS.1 helps mitigate the threat of network eavesdropping by ensuring that a malfunctioning DRBG function cannot be used to generate potentially insecure keys.</rationale>
          <addressed-by>FPT_TST.1</addressed-by>
          <rationale>FPT_TST.1 helps mitigate the threat of network eavesdropping by implementing a mechanism to detect when the DRBG may be failing to generate secure cryptographic keys.</rationale>
          <addressed-by>FTP_ITC_EXT.1</addressed-by>
          <rationale>FTP_ITC_EXT.1 helps mitigate the threat of network eavesdropping by requiring the TSF to implement trusted protocols for network communication.</rationale>
          <addressed-by>FTP_TRP.1</addressed-by>
          <rationale>FTP_TRP.1 helps mitigate the threat of network eavesdropping by requiring the use of a trusted path for any remote administration that can be performed on the TOE.</rationale>
          
          <addressed-by>FCS_RBG.6 (optional)</addressed-by>
          <rationale>FCS_RBG.6 helps mitigate the threat of network eavesdropping by providing a secure DRBG service for third-party applications running on the TOE which may use this service to generate their own cryptographic keys for trusted communications.</rationale>
          
          <addressed-by>FPT_BLT_EXT.1 (objective)</addressed-by>
          <rationale>FPT_BLT_EXT.1 helps mitigate the threat of network eavesdropping by enforcing least functionality of the TOE's Bluetooth interface.</rationale>
          
          <addressed-by>FCS_RBG.2 (selection-based)</addressed-by>
          <rationale>FCS_RBG.2 helps mitigate the threat of network eavesdropping by ensuring that the TOE's DRBG is seeded with sufficient entropy to ensure the generation of strong cryptographic keys.</rationale>
          <addressed-by>FCS_RBG.3 (selection-based)</addressed-by>
          <rationale>FCS_RBG.3 helps mitigate the threat of network eavesdropping by ensuring that the TOE's DRBG is seeded with sufficient entropy to ensure the generation of strong cryptographic keys.</rationale>
          <addressed-by>FCS_RBG.4 (selection-based)</addressed-by>
          <rationale>FCS_RBG.4 helps mitigate the threat of network eavesdropping by ensuring that the TOE's DRBG is seeded with sufficient entropy to ensure the generation of strong cryptographic keys.</rationale>
          <addressed-by>FCS_RBG.5 (selection-based)</addressed-by>
          <rationale>FCS_RBG.5 helps mitigate the threat of network eavesdropping by ensuring that the TOE's DRBG is seeded with sufficient entropy to ensure the generation of strong cryptographic keys.</rationale>          
          <addressed-by>FDP_IFC_EXT.1 (selection-based)</addressed-by>
          <rationale>FDP_IFC_EXT.1 helps mitigate the threat of network eavesdropping by ensuring that the TOE has the ability to enforce the use of an IPsec VPN for all network traffic.</rationale>
          
          <!--
          <addressed-by>FCS_SSH_EXT.1 (SSH Package)</addressed-by><rationale>Helps mitigate the threat of network eavesdropping by defining the TOE's implementation of SSH if this protocol is used for protected communications.</rationale>
          <addressed-by>FCS_SSHC_EXT.1 (SSH Package)</addressed-by><rationale>Helps mitigate the threat of network eavesdropping by defining the TOE's implementation of SSH as a client if this protocol is used for protected communications.</rationale>
          <addressed-by>FCS_SSHS_EXT.1 (SSH Package)</addressed-by><rationale>Helps mitigate the threat of network eavesdropping by defining the TOE's implementation of SSH as a server if this protocol is used for protected communications.</rationale>
          
          <addressed-by>FCS_TLS_EXT.1 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by identifying the TOE's support for TLS or DTLS as trusted communications channels.</rationale>
          <addressed-by>FCS_DTLSC_EXT.1 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSC_EXT.2 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSC_EXT.3 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSC_EXT.4 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSC_EXT.5 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSC_EXT.6 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSS_EXT.1 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSS_EXT.2 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSS_EXT.3 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSS_EXT.4 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSS_EXT.5 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_DTLSS_EXT.6 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of DTLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSC_EXT.1 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSC_EXT.2 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSC_EXT.3 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSC_EXT.4 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSC_EXT.5 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSC_EXT.6 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSS_EXT.1 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSS_EXT.2 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSS_EXT.3 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSS_EXT.4 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSS_EXT.5 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          <addressed-by>FCS_TLSS_EXT.6 (TLS Package)</addressed-by><rationale>Helps mitigate the threat by defining the use of TLS as a trusted network communications channel.</rationale>
          
          
          <addressed-by>FIA_XCU_EXT.1 (X.509 Package)</addressed-by>
          <rationale>Helps mitigate the threat of network eavesdropping by requiring the use of X.509 certificates to validate the authenticity of network entities.</rationale>
          <addressed-by>FIA_XCU_EXT.2 (X.509 Package)</addressed-by>
          <rationale>Helps mitigate the threat of a network attack by requiring the use of X.509 certificates to assert its own identity to external entities.</rationale>
          <addressed-by>FIA_X509_EXT.1 (X.509 Package)</addressed-by>
          <rationale>Helps mitigate the threat of network eavesdropping by defining how X.509 certificates are validated.</rationale>
          <addressed-by>FIA_X509_EXT.2 (X.509 Package)</addressed-by>
          <rationale>Helps mitigate the threat of network eavesdropping by defining where X.509 certificates are used.</rationale>
          <addressed-by>FIA_X509_EXT.3 (X.509 Package)</addressed-by>
          <rationale>Helps mitigate the threat of a network eavesdrop by providing a secure means for the TOE to obtain certificates for its own use.</rationale>
  -->        
          <!--
          <objective-refer ref="O.PROTECTED_COMMS">
            <rationale>The threat T.NETWORK_EAVESDROP is countered by O.PROTECTED_COMMS as this
              provides for confidentiality of transmitted data.</rationale>
          </objective-refer>
          <objective-refer ref="O.MANAGEMENT">
            <rationale>The threat T.NETWORK_EAVESDROP is countered by O.MANAGEMENT as this provides
              for the ability to configure the OS to protect the confidentiality of its transmitted
              data.</rationale>
          </objective-refer>
          -->
        </threat>
        <threat name="T.LOCAL_ATTACK">
          <description> An attacker may compromise applications running on the OS. The
            compromised application may provide maliciously formatted input to the OS through a
            variety of channels including unprivileged system calls and messaging via the
            file system. </description>
          
          <addressed-by>FAU_GEN.1</addressed-by>
          <rationale>FAU_GEN.1 helps mitigate the threat of a local attack by logging evidence of potential malicious activity.</rationale>
          <addressed-by>FCS_COP.1/HASH</addressed-by>
          <rationale>FCS_COP.1/HASH helps mitigate the threat of a local attack by ensuring that secure hash algorithms are used for trusted updates.</rationale>
          <addressed-by>FCS_COP.1/KEYHMAC</addressed-by>
          <rationale>FCS_COP.1/KEYHMAC helps mitigate the threat of a local attack by ensuring that secure HMAC algorithms are used for trusted updates.</rationale>
          <addressed-by>FCS_COP.1/SIGN</addressed-by>
          <rationale>FCS_COP.1/SIGN helps mitigate the threat of a local attack by ensuring that secure digital signature algorithms are used for trusted updates.</rationale>
          <addressed-by>FCS_STO_EXT.1</addressed-by>
          <rationale>FCS_STO_EXT.1 helps mitigate the threat of a local attack by providing a mechanism to protect sensitive data at rest.</rationale>
          <addressed-by>FDP_ACF_EXT.1</addressed-by>
          <rationale>FDP_ACF_EXT.1 helps mitigate the threat of a local attack by providing a mechanism to restrict the ability of one user account to access data owned by another user.</rationale>
          <addressed-by>FIA_AFL.1</addressed-by>
          <rationale>FIA_AFL.1 helps mitigate the threat of a local attack by preventing an unprivileged user from gaining access to the TSF by brute force guessing the credential.</rationale>
          <addressed-by>FIA_UAU.5</addressed-by>
          <rationale>FIA_UAU.5 helps mitigate the threat of a local attack by providing specified authentication mechanisms for user authentication.</rationale>
          <addressed-by>FMT_MOF_EXT.1</addressed-by>
          <rationale>FMT_MOF_EXT.1 helps mitigate the threat of a local attack by limiting the management functions that are available to a given user.</rationale>
          <addressed-by>FMT_SMF_EXT.1</addressed-by>
          <rationale>FMT_SMF_EXT.1 helps mitigate the threat of a local attack by limiting the management functions that are available to a given user.</rationale>
          <addressed-by>FPT_ACF_EXT.1</addressed-by>
          <rationale>FPT_ACF_EXT.1 helps mitigate the threat of a local attack by limiting the ability of an unprivileged user to modify the behavior of the TSF.</rationale>
          <addressed-by>FPT_ASLR_EXT.1</addressed-by>
          <rationale>helps mitigate the threat of a local attack by limiting the ability of an application to modify the behavior of the TSF via memory overflow.</rationale>
          <addressed-by>FPT_SBOP_EXT.1</addressed-by>
          <rationale>helps mitigate the threat of a local attack by limiting the ability of an application to modify the behavior of the TSF via stack overflow.</rationale>
          <addressed-by>FPT_TST_EXT.1</addressed-by>
          <rationale>helps mitigate the threat of a local attack by ensuring the integrity of the TSF on boot.</rationale>
          <addressed-by>FPT_TUD_EXT.1</addressed-by>
          <rationale>helps mitigate the threat of a local attack by ensuring the authenticity and integrity of updates applied to the TOE.</rationale>
          <addressed-by>FPT_TUD_EXT.2</addressed-by>
          <rationale>helps mitigate the threat of a local attack by ensuring the integrity of updates applied to applications running the TOE.</rationale>
          
          <addressed-by>FPT_W^X_EXT.1 (optional)</addressed-by>
          <rationale>FPT_W^X_EXT.1 helps mitigate the threat of a local attack by enforcing data execution prevention so that an application cannot attempt to write data to executable memory.</rationale>
          <addressed-by>FTA_TAB.1 (optional)</addressed-by>
          <rationale>FTA_TAB.1 helps mitigate the threat of a local attack by providing actionable consequences for misuse of the TSF.</rationale>
          
          <addressed-by>FPT_SRP_EXT.1 (objective)</addressed-by>
          <rationale>FPT_SRP_EXT.1 helps mitigate the threat of a local attack by preventing the execution of unknown or untrusted software.</rationale>
          
          <!-- 
          <addressed-by>FIA_TSM_EXT.1 (X.509 Package)</addressed-by>
          <rationale>FIA_TSM_EXT.1 helps mitigate the threat of a local attack by ensuring that the contents of the trust store are protected against unauthorized modification.</rationale>
          -->
          <!--
          <objective-refer ref="O.INTEGRITY">
            <rationale>The objective O.INTEGRITY protects against the use of mechanisms that weaken
              the TOE with regard to attack by other software on the
              platform.</rationale>
          </objective-refer>
          <objective-refer ref="O.ACCOUNTABILITY">
            <rationale>The objective O.ACCOUNTABILITY protects against local attacks by providing
              a mechanism to report behavior that may indicate a local attack is occurring or
              has occurred.</rationale>
          </objective-refer>
          -->
        </threat>
        <threat name="T.LIMITED_PHYSICAL_ACCESS">
          <description> An attacker may attempt to access data on the OS while having a limited
            amount of time with the physical device, resulting in unauthorized disclosure or
            modification of the TSF's data or behavior. </description>
          
          <addressed-by>FAU_GEN.1</addressed-by>
          <rationale>FAU_GEN.1 helps mitigate the threat of by logging evidence of potential malicious activity should illicit access to the TSF be gained.</rationale>
          <addressed-by>FCS_STO_EXT.1</addressed-by>
          <rationale>FCS_STO_EXT.1 helps mitigate the threat by providing a mechanism to protect sensitive data at rest which prevents exfiltration of sensitive data during a limited access window.</rationale>
          <addressed-by>FIA_AFL.1</addressed-by>
          <rationale>FIA_AFL.1 helps mitigate the threat by preventing an unprivileged user from gaining access to the TSF by brute force guessing the credential in a limited time window.</rationale>
          <addressed-by>FIA_UAU.5</addressed-by>
          <rationale>FIA_UAU.5 helps mitigate the threat by providing specified authentication mechanisms for user authentication to prevent unauthorized access to the TOE.</rationale>
          <addressed-by>FMT_MOF_EXT.1</addressed-by>
          <rationale>FMT_MOF_EXT.1 helps mitigate the threat by limiting the management functions that are available to a given user which minimizes the impact of compromise should illicit access be gained.</rationale>
          <addressed-by>FMT_SMF_EXT.1</addressed-by>
          <rationale>FMT_SMF_EXT.1 helps mitigate the threat by limiting the management functions that are available to a given user which minimizes the impact of compromise should illicit access be gained.</rationale>
          <addressed-by>FPT_ACF_EXT.1</addressed-by>
          <rationale>FPT_ACF_EXT.1 helps mitigate the threat by limiting the ability of an unprivileged user to modify the behavior of the TSF should illicit access be gained.</rationale>
          
          <!--
          <objective-refer ref="O.PROTECTED_STORAGE">
            <rationale>The objective O.PROTECTED_STORAGE protects against unauthorized attempts to
              access physical storage used by the TOE.</rationale>
          </objective-refer>
          -->
        </threat>
      </threats>
    </sec:Threats>
	
	
    <sec:Assumptions>
      <assumptions>
        <assumption name="A.PLATFORM">
          <description> The OS relies upon a trustworthy computing platform for
            its execution. This underlying platform is out of scope of this PP. </description>
          <objective-refer ref="OE.PLATFORM">
            <rationale> The operational environment objective OE.PLATFORM is realized through
              A.PLATFORM. </rationale>
          </objective-refer>
        </assumption>
        <assumption name="A.PROPER_USER">
          <description> The user of the OS is not willfully negligent or hostile, and uses the
            software in compliance with the applied enterprise security policy. At the same time,
            malicious software could act <h:i>as</h:i> the user, so requirements which
            confine malicious subjects are still in scope.</description>
          <objective-refer ref="OE.PROPER_USER">
            <rationale>The operational environment objective OE.PROPER_USER is realized through
              A.PROPER_USER.</rationale>
          </objective-refer>
        </assumption>
        <assumption name="A.PROPER_ADMIN">
          <description> The administrator of the OS is not careless, willfully negligent or hostile,
            and administers the OS within compliance of the applied enterprise security policy. </description>
          <objective-refer ref="OE.PROPER_ADMIN">
            <rationale>The operational environment objective OE.PROPER_ADMIN is realized through
              A.PROPER_ADMIN.</rationale>
          </objective-refer>
        </assumption>
      </assumptions>
    </sec:Assumptions>
<!--    <section title="Organizational Security Policies" id="OSPs">
      <OSPs>
        <OSP id="P.ENTERPRISE">
          <description>If the OS is bound to a directory or management server, the configuration of
            the OS software must be capable of adhering to the enterprise security policies
            distributed by them.</description>
          <objective-refer ref="O.MANAGEMENT">
            <rationale>The organizational security policy P.ENTERPRISE is enforced through the
              objective O.MANAGEMENT as this objective represents how the enterprise and user assert
              management over the OS.</rationale>
          </objective-refer>
        </OSP>
      </OSPs>
    </section> -->
  </sec:Security_Problem_Definition>
  
  
  <sec:Security_Objectives>
    <!--<sec:Security_Objectives_for_the_TOE>
      
      <SOs>
        <SO name="O.ACCOUNTABILITY">
          <description> Conformant OSes ensure that information exists that allows
            administrators to discover unintentional issues with the configuration and operation of
            the operating system and discover its cause.  Gathering event information and immediately
            transmitting it to another system can also enable incident response in the event
            of system compromise.</description>
	    <addressed-by>FAU_GEN.1</addressed-by><rationale>Supports the objective by requiring that critical event information be gathered by the TOE. </rationale>
	    <addressed-by>FTP_ITC_EXT.1</addressed-by><rationale>Supports the objective by ensuring that audit information can be securely transmitted to remote systems for analysis.</rationale>
        </SO>
        <SO name="O.INTEGRITY">
          <description>Conformant OSes ensure the integrity of their update
          packages. OSes are seldom if ever shipped without errors, and the
          ability to deploy patches and updates with integrity is critical to enterprise network
          security. Conformant OSes provide execution environment-based
          mitigations that increase the cost to attackers by adding complexity to the task of
          compromising systems. </description>
	  <addressed-by>FPT_SBOP_EXT.1<h:br/>
	                FPT_ASLR_EXT.1</addressed-by><rationale>Supports the objective by requiring that OS applications be hardened against buffer overflow attacks </rationale>
	  <addressed-by>FPT_TUD_EXT.1    </addressed-by><rationale>Supports the objective by requiring that the OS be able to check for critical updates.</rationale>
	  <addressed-by>FPT_TUD_EXT.2    </addressed-by><rationale>Supports the objective by requiring that the OS verify updates before applying them.</rationale>
	  <addressed-by>FCS_COP.1/HASH   </addressed-by><rationale>Supports the objective by requiring the TSF to implement hash algorithms that are used in support of protected communications.</rationale>
	  <addressed-by>FCS_COP.1/SIGN   </addressed-by><rationale>Supports the objective by requiring the TSF to implement digital signature algorithms that are used in support of protected communications.</rationale>
	  <addressed-by>FCS_COP.1/KEYHMAC</addressed-by><rationale>Supports the objective by requiring the TSF to implement HMAC algorithms that are used in support of protected communications.</rationale>
	  <addressed-by>FPT_ACF_EXT.1    </addressed-by><rationale>Supports the objective by requiring the TSF restrict unprivileged users from changing critical components.</rationale>
	  <addressed-by>FPT_SRP_EXT.1    </addressed-by><rationale>Supports the objective by requiring the TSF to implement a configurable allowlist mechanism.</rationale>
	  <addressed-by>FIA_X509_EXT.1   </addressed-by><rationale>Supports the objective by requiring the TSF to validate certificates using industry standards.</rationale>

	  
	  <addressed-by>FPT_TST_EXT.1    </addressed-by><rationale>Supports the objective by requiring the TSF to verify executable code critical to its operation.</rationale>
	  <addressed-by>FTP_ITC_EXT.1    </addressed-by><rationale>Supports the objective by requiring the OS to provide a trusted channel for critical communication.</rationale>
	  <addressed-by>FPT_W^X_EXT.1 (Optional)</addressed-by><rationale>Supports the objective by requiring the OS to execute only non-writable memory.</rationale>
	  <addressed-by>FIA_AFL.1        </addressed-by><rationale>Supports the objective by requiring the TSF to respond accordingly when the number of failed authentication attempts reaches a specified threshold.</rationale>
	  <addressed-by>FIA_UAU.5        </addressed-by><rationale>Supports the objective by requiring the OS to provide standard authentication mechanisms.</rationale>
	  <addressed-by>FPT_BLT_EXT.1 (Objective)</addressed-by>
	  <rationale>
            FPT_BLT_EXT.1 supports the objective by requiring the TSF to disable certain Bluetooth profiles when they are inactive such that explicit user authorization is required to re-enable them.
	  </rationale>
	  
        </SO>
        <SO name="O.MANAGEMENT">
          <description> To facilitate management by users and the enterprise, conformant OSes
	    provide consistent and supported interfaces for their
            security-relevant configuration and maintenance. This includes the deployment of
            applications and application updates through the use of platform-supported deployment
            mechanisms and formats, as well as providing mechanisms for configuration and
            application execution control. </description>
	    <addressed-by>FMT_MOF_EXT.1</addressed-by><rationale>Supports this objective by requiring the TOE to restrict the ability to perform certain management functions to a privileged user. </rationale>
	    <addressed-by>FMT_SMF_EXT.1</addressed-by><rationale>Supports this objective by requiring the TOE to implement specific management functions.</rationale>
	    <addressed-by>FTA_TAB.1</addressed-by><rationale>Supports this objective by requiring the TOE to implement a trusted path between the itself and users.</rationale>
            <addressed-by>FTP_TRP.1</addressed-by><rationale>Supports this objective by requiring a trusted path between users and the OS.</rationale>
        </SO>
	 <SO id="O.RESILIENCE"> 
	   <description>  
	     To address the issue of exploitation in the event of software vulnerabilities,  
	     conformant OSs employ industry-standard exploitation countermeasures. 
	   </description> 
	 </SO> 
        <SO name="O.PROTECTED_STORAGE">
          <description>
To address the issue of loss of confidentiality of credentials in the event of
loss of physical control of the storage medium, conformant OSes
provide data-at-rest protection for credentials.
Conformant OSes also provide access controls which allow users to keep their files private from other
users of the same system.
          </description>
	  <addressed-by>FCS_STO_EXT.1</addressed-by><rationale>Supports this objective by requiring the OS to provide encrypted storage.</rationale>
	  <addressed-by>FCS_RBG_EXT.1</addressed-by><rationale>Supports this objective by requiring the OS to generate random bits according to industry standards.</rationale>
	  <addressed-by>FCS_COP.1/ENCRYPT</addressed-by><rationale>Supports this objective requiring the OS to perform encryption according to industry stands.</rationale>
	  <addressed-by>FDP_ACF_EXT.1</addressed-by><rationale>Supports this objective by requiring the OS to implement access controls.</rationale>
        </SO>
        <SO name="O.PROTECTED_COMMS">
          <description> To address both passive (eavesdropping) and active (packet modification)
            network attack threats, conformant OSes provide mechanisms to create
            trusted channels for CSP and sensitive data. Both CSP and sensitive data
          should not be exposed outside of the platform. </description>
	  <addressed-by>FCS_RBG_EXT.1</addressed-by><rationale>Supports this objective by requiring the OS to generate random bits according to industry standards.</rationale>
	  <addressed-by>FCS_CKM.1</addressed-by><rationale>Supports this objective by requiring the TSF to generate asymmetric cryptographic keys to industry standards.</rationale>
	  <addressed-by>FCS_CKM.2</addressed-by><rationale>Supports this objective by requiring the TSF to perform key establishment according to industry standards.</rationale>
	  <addressed-by>FCS_CKM_EXT.4</addressed-by><rationale>Supports this objective by requiring the TSF to destroy key material according to industry standards.</rationale>
	  <addressed-by>FCS_COP.1/ENCRYPT</addressed-by><rationale>Supports this objective by requiring the TSF to encrypt data according to industry standards </rationale>
	  <addressed-by>FCS_COP.1/HASH</addressed-by><rationale>Supports this objective by requiring the TSF to hash data according to industry standards.</rationale>
	  <addressed-by>FCS_COP.1/SIGN</addressed-by><rationale>Supports this objective by requiring the TSF to cryptographically sign data according to industry standards.</rationale>
	  <addressed-by>FCS_COP.1/KEYHMAC</addressed-by><rationale>Supports this objective by requiring the TSF to perform keyed hashes according to industry standards. </rationale>
    <addressed-by>FCS_DTLSC_EXT.1 (TLS Package)</addressed-by><rationale>Supports the objective by defining the TOE's implementation of DTLS as a client if this protocol is used for protected communications.</rationale>
    <addressed-by>FCS_DTLSC_EXT.2 (TLS Package)</addressed-by><rationale>Supports the objective by defining the TOE's implementation of mutually-authenticated DTLS as a client if this protocol is used for protected communications.</rationale>
    <addressed-by>FCS_DTLSS_EXT.1 (TLS Package)</addressed-by><rationale>Supports the objective by defining the TOE's implementation of DTLS as a server if this protocol is used for protected communications.</rationale>
    <addressed-by>FCS_DTLSS_EXT.2 (TLS Package)</addressed-by><rationale>Supports the objective by defining the TOE's implementation of mutually-authenticated DTLS as a server if this protocol is used for protected communications.</rationale>
    <addressed-by>FCS_TLS_EXT.1 (TLS Package)</addressed-by><rationale>Supports the objective by defining the TOE's implementation of TLS and DTLS if this protocol is used for protected communications.</rationale>
    <addressed-by>FCS_TLSC_EXT.1 (TLS Package)</addressed-by><rationale>Supports the objective by defining the TOE's implementation of TLS as a client for protected communications.</rationale>
    <addressed-by>FCS_TLSC_EXT.2 (TLS Package)</addressed-by><rationale>Supports the objective by defining the TOE's implementation of mutually-authenticated TLS as a client for protected communications.</rationale>          
    <addressed-by>FCS_TLSC_EXT.3 (TLS Package) (Objective)</addressed-by><rationale>Supports the objective by requiring the TSF to support the TLS signature algorithms extension as part of establishing TLS protected communications.</rationale>
    <addressed-by>FCS_TLSC_EXT.4 (TLS Package)</addressed-by><rationale>Supports the objective by defining the TOE's implementation of renegotiation for TLS as a client for protected communications.</rationale>          
    <addressed-by>FCS_TLSC_EXT.5 (TLS Package)</addressed-by><rationale>Supports the objective by defining the TOE's implementation of supported groups extension for TLS as a client for protected communications.</rationale>
    <addressed-by>FCS_TLSS_EXT.1 (TLS Package)</addressed-by><rationale>Supports the objective by defining the TOE's implementation of TLS as a server for protected communications.</rationale>
    <addressed-by>FCS_TLSS_EXT.2 (TLS Package)</addressed-by><rationale>Supports the objective by defining the TOE's implementation of mutually-authenticated TLS as a server for protected communications.</rationale>        
    <addressed-by>FCS_TLSS_EXT.3 (TLS Package) (Objective)</addressed-by><rationale>Supports the objective by requiring the TSF to support the TLS signature algorithms extension as part of establishing TLS protected communications.</rationale>
    <addressed-by>FCS_TLSS_EXT.4 (TLS Package)</addressed-by><rationale>Supports the objective by defining the TOE's implementation of renegotiation  for TLS as a server for protected communications.</rationale>
    <addressed-by>FCS_SSH_EXT.1 (SSH Package)</addressed-by><rationale>Supports the objective by defining the TOE's implementation of SSH if this protocol is used for protected communications.</rationale>
    <addressed-by>FCS_SSHC_EXT.1 (SSH Package)</addressed-by><rationale>Supports the objective by defining the TOE's implementation of SSH as a client if this protocol is used for protected communications.</rationale>
    <addressed-by>FCS_SSHS_EXT.1 (SSH Package)</addressed-by><rationale>Supports the objective by defining the TOE's implementation of SSH as a server if this protocol is used for protected communications.</rationale>
    <addressed-by>FDP_IFC_EXT.1</addressed-by><rationale>Supports this objective by requiring the TSF to be compatible with at least one VPN.</rationale>
	  <addressed-by>FIA_X509_EXT.1</addressed-by><rationale>Supports the objective by requiring the TSF to validate certificates using industry standards.</rationale>
	  <addressed-by>FIA_X509_EXT.2</addressed-by><rationale>Supports this objective by requiring the TSF to validate TLS and related encrypted connections with x509 certificates.</rationale>
	  
	  <addressed-by>FTP_ITC_EXT.1</addressed-by><rationale>Supports the objective by requiring the OS to provide a trusted channel for critical communication.</rationale>
          
        </SO>
      </SOs>
    </sec:Security_Objectives_for_the_TOE>
    -->
    <sec:Security_Objectives_for_the_Operational_Environment>
      The following security objectives for the operational
      environment assist the OS in correctly providing its security functionality.
      These track with the assumptions about the environment. <SOEs>
        <SOE name="OE.PLATFORM">
          <description>The OS relies on being installed on trusted
            hardware.</description>
        </SOE>
        <SOE name="OE.PROPER_USER">
          <description> The user of the OS is not willfully negligent or hostile,
            and uses the software within compliance of the applied enterprise security policy.
            Standard user accounts are provisioned in accordance with the least privilege model.
            Users requiring higher levels of access should have a separate account dedicated for
            that use. </description>
        </SOE>
        <SOE name="OE.PROPER_ADMIN">
          <description> The administrator of the OS is not careless, willfully
            negligent or hostile, and administers the OS within compliance of the applied enterprise
            security policy. </description>
        </SOE>
      </SOEs>
    </sec:Security_Objectives_for_the_Operational_Environment>
    <sec:Security_Objectives_Rationale/>
  </sec:Security_Objectives>

  <sec:Security_Requirements>   
    
    <sec:SFRs title="Security Functional Requirements">
      
      <section id="s-audit-table" title="Auditable Events for Mandatory SFRs">        
        <audit-table id="t-audit-mandatory" table="mandatory" title="Auditable Events for Mandatory           SFRs">
        </audit-table>        
      </section>
      <!--
      <section id="opt-audit-table" title="Auditable Events for Optional SFRs">
        <audit-table id="at-optional" table="atref-optional" title="Auditable Events for Optional SFRs"></audit-table>
      </section>
      <section id="obj-audit-table" title="Auditable Events for Objective SFRs">
        <audit-table id="at-objective" table="atref-objective" title="Auditable Events for Objective SFRs"></audit-table>
      </section>
      <section id="sb-audit-table" title="Auditable Events for Selection-Based SFRs">
        <audit-table id="at-sel-based" table="atref-sel-based" title="Auditable Events for Selection-Based SFRs"></audit-table>
      </section>
      -->
      <section title="Audit Data Generation (FAU)" id="fau">
        <f-component cc-id="fau_gen.1" name="Audit Data Generation">
          <f-element id="fel-faugen">
            <title>
              The TSF shall be able to generate audit data of the following auditable
              events:
              <h:ol type="a">
                <h:li>Start-up and shut-down of the audit functions;</h:li>
                <h:li>All auditable events for the [<h:i>not specified</h:i>] level of audit;
                  <h:li>Specifically defined auditable events listed in <xref g="t-audit-mandatory"/></h:li>
                  
                  [</h:li>
                <h:li><h:i>
                  <h:ul><h:li>Authentication events (Success/Failure);</h:li>
                    <h:li>Use of privileged/special rights events (Successful and unsuccessful security, audit, and configuration changes);</h:li>
                    <h:li>Privilege or role escalation events (Success/Failure);</h:li>
                    <h:li>Auditable events as defined in the <xref to="pkg-ssh"/>;</h:li>
                    <h:li>Auditable events as defined in the <xref to="pkg-tls"/>;</h:li>
                    <h:li>Auditable events as defined in the <xref to="pkg-x509"/>;</h:li>
                    <h:li><selectables linebreak="yes">
                      <selectable>File and object events (Successful and unsuccessful attempts to create, access, delete, modify, modify permissions)</selectable>
                      <selectable>User and Group management events (Successful and unsuccessful add, delete, modify, disable, enable, and credential change)</selectable>
                      <selectable>Audit and log data access events (Success/Failure)</selectable>
                      <selectable>Cryptographic verification of software (Success/Failure)</selectable>
                      <selectable>Attempted application invocation with arguments (Success/Failure e.g. due to software restriction policy)</selectable>
                      <selectable>System reboot, restart, and shutdown events (Success/Failure)</selectable>
                      <selectable>Kernel module loading and unloading events (Success/Failure)</selectable>
                      <selectable>Administrator or root-level access events (Success/Failure)</selectable>
                      <selectable><assignable>other specifically defined auditable events</assignable>.</selectable>
                    </selectables>
                    </h:li>
                  </h:ul>
                </h:i>].
                </h:li>
              </h:ol>
            </title>
            <aactivity>
              <TSS>TBD</TSS>
              <Guidance>
                <h:p>
                  The evaluator shall check the administrative guide and ensure
                  that it lists all of the auditable events.  The evaluator shall
                  check to make sure that every audit event type selected in the ST
                  is included.
                </h:p>
              </Guidance>
              <Tests>
                <h:p>
                  The evaluator shall test the OS's ability to correctly generate
                  audit data by having the TOE generate audit data for the
                  events listed in the ST.  This should include all instance types
                  of an event specified.
                  When verifying the test results, the evaluator shall ensure the
                  audit data generated during testing match the format specified
                  in the administrative guide, and that the audit
                  data provides the required information.
                </h:p>
              </Tests>
            </aactivity>
          </f-element>
          <f-element id="fel-audit-content">
            <title> The TSF shall record within the audit data at least the following information:
              <h:ol type="a">
                <h:li>Date and time of the event, type of event, subject identity (if applicable),
                  and the outcome (success or failure) of the event; </h:li>
                <h:li>For each audit event type, based on the auditable event
                  definitions of the functional components included in the PP, PP-Module, functional
                  package, or ST,
                  <assignable>other audit relevant information</assignable>
                </h:li>
              </h:ol>
              .
            </title>
            <note role="application">
              The term <h:i>subject</h:i> here is understood to be the user that the process
              is acting on behalf of.  If no auditable event definitions of
              functional components are provided, then no additional audit-relevant information
              is required.
            </note>
            <aactivity>
              <Guidance>
                <h:p>
                  The evaluator shall check the administrative guide and ensure
                  that it provides a format
                  for audit data. Each audit data format type must be covered,
                  along with a brief description of each field. The evaluator shall
                  ensure that the fields contains the information required.
                </h:p>
              </Guidance>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>
      </section>
      
      <section title="Cryptographic Support (FCS)" id="fcs">
	  
	  
        <f-component cc-id="fcs_ckm.1" name="Cryptographic Key Generation">
          <f-element id="fel-asym-gen">
            <title>The TSF shall generate <h:b>asymmetric</h:b> cryptographic keys in accordance with a specified cryptographic key generation algorithm
              <selectables linebreak="yes">
                <selectable>RSA schemes using a cryptographic key size of 3072-bits that
                  meet the following: FIPS PUB 186-5, "Digital Signature Standard (DSS)", Appendix
                  A.1</selectable>
                <selectable>ECC schemes using "NIST curve" P-384 that meet the following: FIPS PUB 186-5, "Digital Signature
                  Standard (DSS)", Appendix A.2
                </selectable>                
                <selectable>FFC schemes using "safe-prime" groups that meet the following: 'NIST Special Publication 800-56A Revision 3, 
                  "Recommendation for Pair-Wise Key Establishment Schemes Using Discrete Logarithm Cryptography"', and <selectables>
                    <selectable>RFC 3526</selectable>
                    <selectable>RFC 7919</selectable>
                  </selectables></selectable>
              </selectables>.
            </title>
            <note role="application">
	      <h:p>
	      The ST author will select all key generation schemes used for key establishment and entity authentication.
		  When key generation is used for key establishment, the schemes in
	      FCS_CKM.2 and selected cryptographic protocols must match the selection.
		  When key generation is used for entity authentication, the public key is
          expected to be associated with an X.509v3 certificate.
	      </h:p><h:p>
	      If the OS acts only as a receiver in the RSA key establishment scheme,
	      the OS does not need to implement RSA key generation.
	      </h:p>
              <h:p>
                “P-256” may only be selected if the PP-Module for Bluetooth is included
                in the ST and may only be used specifically for Bluetooth functions.
              </h:p>
	    </note>
            <aactivity>
	      <TSS>
	      <h:p>
	      The evaluator shall ensure that the TSS identifies the key
              sizes supported by the OS. If the ST specifies
              more than one scheme, the evaluator shall examine the TSS to verify
              that it identifies the usage for each scheme. If “P-256” is selected,
              the evaluator shall examine the TSS to verify that it is only used for Bluetooth functions.
	      </h:p>
	      </TSS>
        <Guidance>
          <h:p>
            The evaluator shall verify that
            the AGD guidance instructs the administrator how to configure the OS
            to use the selected key generation scheme(s) and key size(s) for all uses defined
            in this PP.
          </h:p>  
        </Guidance>      
        <Tests>
	      <h:p>
	      Evaluation Activity Note: The following tests may require the
        vendor to furnish a developer environment and developer
	      tools that are typically not available to end-users of the OS.
          </h:p>
        <h:p>
          The following content should be included if:<h:ul>
            <h:li>RSA schemes is selected from FCS_CKM.1.1</h:li>
          </h:ul>
          
        </h:p>
		  <h:div>  <depends on="s-keygen-rsa"/>
		  <h:b>Key Generation for FIPS PUB 186-5 RSA Schemes</h:b><h:br/>
		  <h:p>The evaluator shall verify
		  the implementation of RSA Key Generation by the OS using the Key
		  Generation test. This test verifies the ability of the TSF to
		  correctly produce values for the key components including the public verification
		  exponent e, the private prime factors p and q, the public modulus n and the
		  calculation of the private signature exponent d. Key Pair generation specifies 5 ways
		  (or methods) to generate the primes p and q. These include:
	      <h:ol>
                <h:li> Random Primes:
		<h:ul>
                  <h:li>Provable primes</h:li>
                  <h:li>Probable primes</h:li>
                </h:ul>
                </h:li>
                <h:li> Primes with Conditions: <h:ul>
                    <h:li>Primes p1, p2, q1,q2, p and q shall all be provable primes</h:li>
                    <h:li>Primes p1, p2, q1, and q2 shall be provable primes and p and q shall be
                      probable primes</h:li>
                    <h:li>Primes p1, p2, q1,q2, p and q shall all be probable primes</h:li>
                  </h:ul>
                </h:li>
              </h:ol>
	      To test the key generation method for the Random Provable primes method and for
              all the Primes with Conditions methods, the evaluator must seed the TSF
	      key generation routine with sufficient data to deterministically
              generate the RSA key pair. This includes the random seed(s), the public exponent of
              the RSA key, and the desired key length. For each key length supported, the evaluator
              shall have the TSF generate 25 key pairs. The evaluator shall verify
              the correctness of the TSF's implementation by comparing values
              generated by the TSF with those generated from a known good
              implementation.
	      </h:p><h:p>
	      If possible, the Random Probable primes method should also be
              verified against a known good implementation as described above. Otherwise, the
              evaluator shall have the TSF generate 10 keys pairs for each
              supported key length nlen and verify: <h:ul>
                <h:li>n = p⋅q,</h:li>
                <h:li>p and q are probably prime according to Miller-Rabin tests,</h:li>
                <h:li>GCD(p-1,e) = 1,</h:li>
                <h:li>GCD(q-1,e) = 1,</h:li>
                <h:li>2<h:sup>16</h:sup> ≤ e ≤ 2<h:sup>256</h:sup> and e is an odd integer,</h:li>
                <h:li>|p-q| &gt; 2<h:sup>nlen/2 - 100</h:sup>,</h:li>
                <h:li>p ≥ 2<h:sup>nlen/2 -1/2</h:sup>,</h:li>
                <h:li>q ≥ 2<h:sup>nlen/2 -1/2</h:sup>,</h:li>
                <h:li>2<h:sup>(nlen/2)</h:sup> &lt; d &lt; LCM(p-1,q-1),</h:li>
                <h:li>e⋅d = 1 mod LCM(p-1,q-1).</h:li>
              </h:ul>
			  </h:p>
			  </h:div>
			  <h:div>
			   <depends on="s-keygen-ecc"/>
               <h:b>Key Generation for Elliptic Curve Cryptography (ECC)</h:b><h:br/>
     	      <h:p> FIPS 186-5 ECC Key Generation Test</h:p>
              <h:p>For the supported NIST curve P-384, the
              evaluator shall require the implementation under test (IUT) to generate 10
              private/public key pairs. The private key shall be generated using an approved random
              bit generator (RBG). To determine correctness, the evaluator shall submit the
              generated key pairs to the public key verification (PKV) function of a known good
              implementation.
	     </h:p>
	      <h:p>FIPS 186-5 Public Key Verification (PKV) Test</h:p>
	      <h:p>
	      For the supported
              NIST curve P-384, the evaluator shall generate 10
              private/public key pairs using the key generation function of a known good
              implementation and modify five of the public key values so that they are incorrect,
              leaving five values unchanged (i.e., correct). The evaluator shall obtain in response
              a set of 10 PASS/FAIL values.

	      </h:p>
		  </h:div>
		  <h:div>
			  <depends on="s-keygen-ffc-fips"/>
	          <h:b>Key Generation for Finite-Field Cryptography (FFC)</h:b><h:br/>
              <h:p>
    
              The evaluator shall verify the implementation of the Parameters Generation
              and the Key Generation for FFC by the TOE using the Parameter Generation
              and Key Generation test.
	      This test verifies the ability of the TSF to correctly
              produce values for the field prime p, the cryptographic prime q (dividing p-1),
              the cryptographic group generator g, and the calculation of the private
              key x and public key y.
	      </h:p><h:p>
              The Parameter generation specifies 2 ways (or methods) to generate the
              cryptographic prime q and the field prime p:
              <h:br/>
              
              <h:li>Cryptographic and Field Primes:<h:ul>
                <h:li>Primes q and p shall both be provable primes</h:li>
                <h:li>Primes q and field prime p shall both be probable primes</h:li>
              </h:ul>
              </h:li>
              and two ways to generate the cryptographic group generator g:
              
              <h:li>Cryptographic Group Generator:<h:ul>
                <h:li>Generator g constructed through a verifiable process</h:li>
                <h:li>Generator g constructed through an unverifiable process</h:li>
              </h:ul>
              </h:li>

              The Key generation specifies 2 ways to generate the private key x:
              
              <h:li>Private Key:<h:ul>
                <h:li>len(q) bit output of RBG where 1 ≤ x ≤ q-1</h:li>
                <h:li>len(q) + 64 bit output of RBG, followed by a mod q-1 operation where 1 ≤ x ≤ q-1</h:li>
              </h:ul>
              </h:li>
              
              The security strength of the RBG must be at least that of the security offered by the FFC parameter set.
              
              To test the cryptographic and field prime generation method for the provable primes method and/or the
              group generator g for a verifiable process, the evaluator must seed the TSF parameter
              generation routine with sufficient data to deterministically generate the parameter set.
              
              For each key length supported, the evaluator shall have the TSF generate 25 parameter sets
              and key pairs. The evaluator shall verify the correctness of the TSF's implementation
              by comparing values generated by the TSF with those generated from a known good
              implementation. Verification must also confirm:
              <h:ul>
                <h:li>g != 0,1</h:li>
                <h:li>q divides p-1</h:li>
                <h:li>g<h:sup>q</h:sup> mod p = 1</h:li>
                <h:li>g<h:sup>x</h:sup> mod p = y</h:li>
              </h:ul>
              for each FFC parameter set and key pair.
              </h:p>
			  </h:div>
			  <!-- <h:div> -->
			  <!-- 	  <depends on="s-keygen-ffc-dh" also="s-keygen-ffc-safeprime"/> -->
			  <!-- 	  <h:b>Diffie-Hellman Group 14 and FFC Schemes using "safe-prime" groups</h:b><h:br/> -->
			  <!-- 	  Testing for FFC Schemes using Diffie-Hellman group 14 and/or "safe-prime" groups is done as part of testing in FCS_CKM.2.1 -->


			  <!-- </h:div> -->
	      </Tests>
	    </aactivity>
          </f-element>
          <audit-event/>
        </f-component>
		
		
        <f-component cc-id="fcs_ckm.2" name="Cryptographic Key Establishment">
          <f-element id="fel-crypt-key-estab">
            <title>The TSF shall <h:b>implement functionality to perform cryptographic key establishment</h:b>
              in accordance with a specified cryptographic key <h:b>establishment</h:b> method:
              <selectables linebreak="yes">
	<!--			<selectable id="s-keyestab-rsa">RSA-based key establishment schemes that meets the following:
					RSAES-PKCS1-v1_5 as specified in Section 7.2 of RFC 8017, “Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications Version 2.2"</selectable> -->
		
				<selectable id="s-keyestab-ecc">Elliptic curve-based key establishment schemes that meets the following: NIST Special Publication 800-56A Revision 3, “Recommendation for Pair-Wise Key Establishment Schemes Using Discrete Logarithm Cryptography”</selectable>
				<selectable id="s-keyestab-ffc">Finite field-based key establishment schemes
					that meets NIST Special Publication 800-56A Revision 3, “Recommendation for Pair-Wise Key Establishment Schemes Using Discrete Logarithm Cryptography”</selectable>
				<!-- <selectable id="s-keyestab-dh">using Diffie-Hellman group 14 that meets the following: RFC 3526</selectable> -->
			   </selectables>.
            </title>
            <note role="application">
	      <h:p>
	      The ST author will select all key establishment schemes used
              for the selected cryptographic protocols.
	      </h:p>
	      <h:p>
			  The elliptic curves used for the key establishment scheme shall correlate with the curves specified in FCS_CKM.1.1.
			  The domain parameters used for the finite field-based key establishment scheme are specified by the key generation according to FCS_CKM.1.1.
			  The finite field-based key establishment schemes that conform to NIST SP 800-56A Revision 3 correspond to the "safe-prime" groups selection in FCS_CKM.1.1.
				</h:p>
	    </note>
            <aactivity>
              <TSS>TBD</TSS>
              <Guidance>TBD</Guidance>
	      <Tests>
	      <h:p>
		The evaluator shall ensure that the supported key establishment schemes
		correspond to the key generation schemes identified in FCS_CKM.1.1.
		If the ST specifies more than one scheme,
		the evaluator shall examine the TSS to verify that it identifies the usage for each scheme.
	      </h:p>
	      <h:p>
		The evaluator shall verify that the AGD
		guidance instructs the administrator how to configure the OS to use the selected key
		establishment scheme(s).
	      </h:p>
	      <h:p>
		Evaluation Activity Note: The following tests require
		the developer to provide access to a test platform that provides the evaluator with
		tools that are typically not found on factory products.
	      </h:p>
	      <h:b>Key Establishment Schemes</h:b><h:br/>
	      <h:p>
		The evaluator shall verify the implementation of
		the key establishment schemes supported by the OS using the applicable tests below.
	      </h:p>
		  <h:div>
		    <depends on="s-keyestab-ecc" also="s-keyestab-ffc"/>
		    <h:b>SP800-56A Key Establishment Schemes</h:b><h:br/>
		    <h:p>
		      The evaluator shall verify the OS's
		      implementation of SP800-56A key agreement schemes using the following Function and
		      Validity tests. These validation tests for each key agreement scheme verify that the OS
		      has implemented the components of the key agreement scheme according to the
		      specifications in the Recommendation. These components include the calculation of the
		      discrete logarithm cryptography (DLC) primitives (the shared secret value Z) and the
		      calculation of the derived keying material (DKM) via the Key Derivation Function
		      (KDF). If key confirmation is supported, the evaluator shall also verify that the
		      components of key confirmation have been implemented correctly, using the test
		      procedures described below. This includes the parsing of the DKM, the generation of
		    MAC data and the calculation of MAC tag. </h:p>
		    <h:div style="margin-left: 40px">
		      <h:b>Function Test</h:b>
		      <h:p>The Function test verifies the ability of the OS to implement the key agreement schemes correctly.
		      To conduct this test the evaluator shall generate or obtain test vectors from a known good implementation of the OS's supported schemes.
		      For each supported key agreement scheme-key agreement role combination, KDF type, and, if supported, key confirmation role- key confirmation type combination,
		      the tester will generate 10 sets of test vectors.
		      The data set consists of one set of domain parameter values (FCC) or the NIST approved curve (ECC) per 10 sets of public keys.
		      These keys are static, ephemeral or both depending on the scheme being tested.
		      </h:p>
		      <h:p> The evaluator shall obtain the DKM, the
                      corresponding OS's public keys (static and/or ephemeral), the MAC tag(s), and any
                      inputs used in the KDF, such as the Other Information field OI and OS id fields.
		      </h:p>
		      <h:p>
			If the OS does not use a KDF defined in SP 800-56A, the evaluator shall
			obtain only the public keys and the hashed value of the shared secret.
		      </h:p>
		      <h:p>
			The evaluator shall verify the correctness of the TSF's implementation of a given scheme
			by using a known good implementation to calculate the shared secret value, derive
			the keying material DKM, and compare hashes or MAC tags generated from these values.
		      </h:p>
		      <h:p>
			If key confirmation is supported, the OS will perform the above for each
			implemented approved MAC algorithm.
		      </h:p>
		      <h:p>
		<h:b>Validity Test</h:b><h:br/>
		<h:p> The Validity test verifies the ability of the OS to
                recognize another party's valid and invalid key agreement results with or without
                key confirmation. To conduct this test, the evaluator shall obtain a list of the
                supporting cryptographic functions included in the SP800-56A Revision 3 key agreement
                implementation to determine which errors the OS should be able to recognize.
		The
                evaluator generates a set of 24 FCC or 30 ECC test vectors consisting of data
                sets including domain parameter values or NIST approved curves, the evaluator's
                public keys, the OS's public/private key pairs, MAC tag, and any inputs used in the
                KDF, such as the other info and OS id fields.
		</h:p>
		<h:p>
		The evaluator shall inject an
                error in some of the test vectors to test that the OS recognizes invalid key
                agreement results caused by the following fields being incorrect: the shared secret
                value Z, the DKM, the other information field OI, the data to be MACed, or the
                generated MAC tag. If the OS contains the full or partial (only ECC) public key
                validation, the evaluator shall also individually inject errors in both parties'
                static public keys, both parties' ephemeral public keys and the OS's static private
                key to assure the OS detects errors in the public key validation function and/or
                the partial key validation function (in ECC only).
		At least two of the test vectors will remain unmodified and therefore
		should result in valid key agreement results
                (they should pass).
		</h:p>
		<h:p>
		  The OS will use these modified test vectors to emulate
                  the key agreement scheme using the corresponding parameters. The evaluator shall
                  compare the OS's results with the results using a known good implementation
                  verifying that the OS detects these errors.
		</h:p>
	      </h:p>
		</h:div>
	    <!--
		<h:div><depends on="s-keyestab-rsa"/>
			<h:b>RSAES-PKCS1-v1_5 Key Establishment Schemes</h:b><h:br/>
	<h:p>
The evaluator shall verify the correctness of the TSF's implementation of RSAES-PKCS1-v1_5 by using a known good implementation for each protocol selected in FTP_ITC_EXT.1 that uses RSAES-PKCS1-v1_5.
			</h:p>
			  </h:div> -->
		<!-- <h:div><depends on="s-keyestab-dh"/> -->
		<!-- 	<h:b>Diffie-Hellman Group 14</h:b><h:br/> -->

		<!-- 	<h:p>The evaluator shall verify the correctness of the TSF's implementation of Diffie-Hellman group 14 by using a known good implementation for each protocol selected in FTP_ITC_EXT.1 that uses Diffie-Hellman Group 14.</h:p> -->
		<!-- 	  </h:div> -->

<h:div>
	<depends on="s-keyestab-ffc"/>
	<h:b>FFC Schemes using "safe-prime" groups (identified in Appendix D of SP 800-56A Revision 3) </h:b><h:br/>
    <h:p>
The evaluator shall verify the correctness of the TSF's implementation of "safe-prime" groups by using a known good implementation for each protocol selected in FTP_ITC_EXT.1 that uses "safe-prime" groups. This test must be performed for each "safe-prime" group that each protocol uses.
	</h:p>
    </h:div>
			  </h:div>
	      </Tests>
	    </aactivity>
	    <rule id="r-key-rsa">
	      <if><ref-id>s-keyestab-rsa</ref-id></if>
	      <then><ref-id>s-keygen-rsa</ref-id></then>
	    </rule>
	    <rule id="r-key-ecc">
	      <if><ref-id>s-keyestab-ecc</ref-id></if>
	      <then><ref-id>s-keygen-ecc</ref-id></then>
	    </rule>
	    <rule id="r-key-ffc">
	      <if><ref-id>s-keyestab-ffc</ref-id></if>
	      <then><ref-id>s-keygen-ffc</ref-id></then>
	    </rule>
	    
          </f-element>
          <audit-event/>
        </f-component>
                
<f-component cc-id="fcs_ckm.6" name="Timing and Event of Cryptographic Key Destruction">
	 
          <f-element id="fel-key-kill-when">
            <title>The TSF shall destroy [<h:i>all keys and key material</h:i>] when [<h:i>no longer needed</h:i>].</title>
	    <note role="application">
	        For the purposes of this requirement, key material refers to authentication data, passwords, secret/private symmetric
		      keys, private asymmetric keys, data used to derive keys, values derived from passwords, etc.	      
	    </note>
	    <aactivity>
	      <TSS>
	        <h:p>
            The evaluator examines the TSS to ensure it describes how the keys are managed in volatile memory. This description
            includes details of how each identified key is introduced into volatile memory (e.g. by derivation from user input,
            or by unwrapping a wrapped key stored in non-volatile memory) and how they are overwritten.
	        </h:p>
	        <h:p>
            The evaluator shall check to ensure the TSS lists each type of key that is stored in non-volatile memory, and 
            identifies how the TOE interacts with the underlying platform to manage keys (e.g., store, retrieve, destroy). The
            description includes details on the method of how the TOE interacts with the platform, including an identification
            and description of the interfaces it uses to manage keys (e.g., file system APIs, platform key store APIs).
	        </h:p>
	        <h:p>
            If the ST makes use of the open assignment and fills in the type of pattern that is used, the evaluator examines 
            the TSS to ensure it describes how that pattern is obtained and used. The evaluator shall verify that the pattern
            does not contain any CSPs.
	        </h:p>
	        <h:p>
            The evaluator shall check that the TSS identifies any configurations or circumstances that may not strictly conform
            to the key destruction requirement.
	        </h:p>
	        <h:p>
            If the selection "destruction of all key encrypting keys (KEKs) protecting the target key 
            according to FCS_CKM.6.2, where none of the KEKs protecting the target key 
            are derived" is included, the evaluator shall examine the TOE’s keychain in the TSS and
            identify each instance when a key is destroyed by this method. In each instance the evaluator
            will verify all keys capable of decrypting the target key are destroyed in accordance with a
            specified key destruction method in FCS_CKM.6.2. The evaluator shall verify that all of the
            keys capable of decrypting the target key are not able to be derived to reestablish the keychain
            after their destruction. 	      
	        </h:p>      
	      </TSS>
	      <Guidance>	      
	      <h:p>
          There are a variety of concerns that may prevent or delay key destruction in some cases. The evaluator
          shall check that the guidance documentation identifies configurations or circumstances that may not 
          strictly conform to the key destruction requirement, and that this description is consistent with the
          relevant parts of the TSS and any other relevant Required Supplementary Information. The evaluator 
          shall check that the guidance documentation provides guidance on situations where key destruction may 
          be delayed at the physical layer and how such situations can be avoided or mitigated if possible.
	      </h:p>
	      <h:p>
          Some examples of what is expected to be in the documentation are provided here.
	      </h:p>
	      <h:p>
          When the TOE does not have full access to the physical memory, it is possible that the storage may be
          implementing wear-leveling and garbage collection. This may create additional copies of the key that 
          are logically inaccessible but persist physically. In this case, to mitigate this the drive should 
          support the TRIM command and implements garbage collection to destroy these persistent copies when
          not actively engaged in other tasks.
	      </h:p>
	      <h:p>
          Drive vendors implement garbage collection in a variety of different ways, as such there is a variable
          amount of time until data is truly removed from these solutions. There is a risk that data may persist
          for a longer amount of time if it is contained in a block with other data not ready for erasure. To 
          reduce this risk, the operating system and file system of the OE should support TRIM, instructing 
          the non-volatile memory to erase copies via garbage collection upon their deletion. If a RAID array
          is being used, only set-ups that support TRIM are utilized. If the drive is connected via PCI-Express,
          the operating system supports TRIM over that channel.
	      </h:p>
	      <h:p>
          The drive should be healthy and contains minimal corrupted data and should be end-of-lifed before a
          significant amount of damage to drive health occurs, this minimizes the risk that small amounts of
          potentially recoverable data may remain in damaged areas of the drive.
	      </h:p>
	      </Guidance>
	      <Tests>
		<testlist>
		  <test>Applied to each key held as in volatile memory and subject to destruction by overwrite by the TOE (whether or not the value is subsequently encrypted for storage in volatile or non-volatile memory). In the case where the only selection made for the destruction method key was removal of power, then this test is unnecessary. The evaluator shall:
		  <h:ol>
		    <h:li>Record the value of the key in the TOE subject to clearing.</h:li>
		    <h:li>Cause the TOE to perform a normal cryptographic processing with the key from Step #1.</h:li>
		    <h:li>Cause the TOE to clear the key.</h:li>
		    <h:li>Cause the TOE to stop the execution but not exit.</h:li>
		    <h:li>Cause the TOE to dump the entire memory of the TOE into a binary file.</h:li>
		    <h:li>Search the content of the binary file created in Step #5 for instances of the known key value from Step #1.</h:li>
		  </h:ol>
		  <h:p>
Steps 1-6 ensure that the complete key does not exist anywhere in volatile memory. If a copy is found, then the test fails.
		  </h:p>
</test>
<test>Applied to each key help in non-volatile memory and subject to destruction by the TOE. The evaluator shall use special tools (as needed), provided by the TOE developer if necessary, to ensure the tests function as intended.
<h:ol>
  <h:li>Identify the purpose of the key and what access should fail when it is deleted. (e.g. the data encryption key being deleted would cause data decryption to fail.)</h:li>
  <h:li>Cause the TOE to clear the key.</h:li>
  <h:li>Have the TOE attempt the functionality that the cleared key would be necessary for.</h:li>
</h:ol>

<h:p>
  The test succeeds if step 3 fails.
</h:p>
</test>
<test>
  <h:p>
Tests 3 and 4 do not apply for the selection 
<h:i>instructing the underlying platform to destroy the representation of the key</h:i>
as the TOE has no visibility into the inner workings and completely relies on the underlying platform.
  </h:p>
  <h:p>
The following tests are used to determine if the TOE is able to request the platform to overwrite the key with a TOE supplied pattern.
  </h:p>
<h:p>

Applied to each key held in non-volatile memory and subject to destruction by overwrite by the TOE. The evaluator shall use a tool that provides a logical view of the media (e.g., MBR file system):
<h:ol>
<h:li>Record the value of the key in the TOE subject to clearing.</h:li>

<h:li>Cause the TOE to perform a normal cryptographic processing with the key from Step #1.</h:li>

<h:li>Cause the TOE to clear the key.</h:li>

<h:li>Search the logical view that the key was stored in for instances of the known key value from Step #1. If a copy is found, then the test fails.</h:li>
</h:ol>
</h:p>
</test>
<test> Applied to each key held as non-volatile memory and subject to destruction by overwrite by the TOE. The evaluator shall use a tool that provides a logical view of the media:
<h:ol>
<h:li>Record the logical storage location of the key in the TOE subject to clearing.</h:li>

<h:li>Cause the TOE to perform a normal cryptographic processing with the key from Step #1.</h:li>

<h:li>Cause the TOE to clear the key.</h:li>

<h:li>Read the logical storage location in Step #1 of non-volatile memory to ensure the appropriate pattern is utilized.</h:li>
</h:ol>
<h:p>
  The test succeeds if correct pattern is used to overwrite the key in the memory location. If the pattern is not found the test fails.
</h:p>
</test>
		</testlist>
	      </Tests>
            </aactivity>
          </f-element>
  <f-element id="fel-key-kill">
    <title>
      The TSF shall destroy cryptographic keys and keying material specified by FCS_CKM.6.1 in accordance with a specified cryptographic key destruction method
      <selectables>
        <selectable>For volatile memory, the destruction shall be executed by a
          <selectables>
            <selectable>single overwrite consisting of <selectables>
              <selectable>a pseudo-random pattern using the TSF's RBG</selectable>
              <selectable>zeroes</selectable>
              <selectable>ones</selectable>
              <selectable>a new value of a key</selectable>
              <selectable><assignable> any value that does not contain any CSP</assignable></selectable></selectables></selectable>
            <selectable>removal of power to the memory</selectable>
            <selectable>destruction of reference to the key directly followed by a request for garbage collection</selectable>
          </selectables></selectable>
        <selectable>For non-volatile memory that consists of 
          <selectables>
            <selectable id="s-kek-kill">destruction
              of all key encrypting keys (KEKs) protecting the target key
              according to FCS_CKM.6.2, where none of the KEKs protecting the target key are derived
            </selectable>
            <selectable>the invocation of an interface provided by the underlying platform that
              <selectables>
                <selectable>logically addresses the storage location of the key and performs a 
                  <selectables>
                    <selectable>single</selectable>
                    <selectable><assignable>ST author defined multi-pass</assignable></selectable>
                  </selectables>overwrite consisting of
                  <selectables>
                    <selectable>zeroes</selectable>
                    <selectable>ones</selectable>
                    <selectable>pseudo-random pattern</selectable>
                    <selectable>a new value of a key of the same size</selectable>
                    <selectable><assignable>any value that does not contain any CSP</assignable></selectable></selectables></selectable>
                <selectable>instructs the underlying platform to destroy the abstraction that represents the key</selectable>
              </selectables>
            </selectable>
          </selectables>
        </selectable>
      </selectables>
      .
    </title>
    <note role="application">
      <h:p>
        The interface referenced in the requirement could take different forms, 
        the most likely of which is an application programming interface to an OS kernel. 
        There may be various levels of abstraction visible.
        For instance, in a given implementation that overwrites a key stored in non-volatile memory, 
        the application may have access to the file system details and 
        may be able to logically address specific memory locations.
        In another implementation, that instructs the underlying platform to destroy the 
        representation of a key stored in non-volatile memory, 
        the application may simply have a handle to a resource and 
        can only ask the platform to delete the resource, as may be the case with a platforms secure key store.
        The latter implementation should only be used for the most restricted access.
        The level of detail to which the TOE has access will be reflected in the TSS section of the ST.
      </h:p>
      <h:p>
        Several selections allow assignment of a 'value that does not contain any CSP.'
        This means that the TOE uses some other specified data not drawn from a source that 
        may contain key material or reveal information about key material, 
        and not being any of the particular values listed as other selection options. 
        The point of the phrase 'does not contain any CSP' is to ensure that the overwritten 
        data is carefully selected, and not taken from a general 'pool' that might contain current or 
        residual data that itself requires confidentiality protection.
      </h:p>
      <h:p>      
        For the selection <xref to="s-kek-kill"/>,
        a key can be considered destroyed by destroying the key that protects the key.
        If a key is wrapped or encrypted it is not necessary to "overwrite" that key,
        overwriting the key that is used to wrap or encrypt the key used to encrypt/decrypt data,
        using the appropriate method for the memory type involved, will suffice.
        For example, if a product uses a KEK to encrypt a Data Encryption Key
        (DEK), destroying the KEK using one of the methods in FCS_CKM.6 is sufficient, 
        since the DEK would no longer be usable (of course, presumes the DEK is still encrypted 
        and the KEK cannot be recovered or re-derived.).
      </h:p>
    </note>
  </f-element>
  <audit-event/>
        </f-component>
 
        <f-component cc-id="fcs_cop.1" iteration="ENCRYPT" name="Cryptographic Operation - Encryption/Decryption">
          <f-element id="fel-encrypt-how">
            <title>
              The TSF shall perform [<h:i>encryption and decryption services for data</h:i>] in
	      accordance with a specified cryptographic algorithm<h:b>
	      <selectables linebreak="yes">
	              <selectable id="s-aes-xts">AES-XTS (as defined in NIST SP 800-38E)</selectable>
	              <selectable id="s-aes-cbc">AES-CBC (as defined in NIST SP 800-38A)</selectable>
		      <selectable id="s-aes-ctr">AES-CTR (as defined in NIST SP 800-38A)</selectable>
              </selectables>
	      and
	      <selectables linebreak="yes">
	        <!-- <selectable>AES-CCMP (as defined in FIPS PUB 197, NIST SP 800-38C and IEEE 802.11-2012)</selectable> -->
                <selectable id="s-aes-kw">AES Key Wrap (KW) (as defined in NIST SP 800-38F)</selectable>
                <selectable id="s-aes-kwp">AES Key Wrap with Padding (KWP) (as defined in NIST SP 800-38F)</selectable>
                <!-- <selectable>AES-GCM (as defined in NIST SP 800-38D)</selectable> -->
                <!-- <selectable>AES-CCM (as defined in NIST SP 800-38C)</selectable> -->
                <selectable id="s-aes-ccmp">AES-CCMP-256 (as defined in NIST SP 800-38C and IEEE 802.11ac-2013)</selectable>
                <selectable id="s-aes-gcmp">AES-GCMP-256 (as defined in NIST SP 800-38D and IEEE 802.11ac-2013)</selectable>
                <selectable id="s-aes-ccm"> AES-CCM (as defined in NIST SP 800-38C)</selectable>
	            <selectable id="s-aes-gcm">AES-GCM (as defined in NIST SP 800-38D)</selectable>	        
<!-- <depends on="s-ftp_ssh"/> Could have added this to the previous, but choose to use rules.-->
		
                <selectable exclusive="yes">no other modes</selectable>
              </selectables></h:b>
              and cryptographic key sizes <h:b>256-bit and <selectables>
                <selectable id="s-128">128-bit</selectable>
                <selectable>no other bit size</selectable>
              </selectables></h:b>.
              <!-- <selectables> -->
              <!--   <selectable>128-bit</selectable> -->
              <!--   <selectable>256-bit</selectable> -->
              <!-- </selectables> -->
      </title>
            <note role="application">
	      <h:p>
		<!-- AUTOMATION -->
              AES CCMP (which uses AES in CCM as specified in SP 800-38C) becomes mandatory and must
              be selected if the ST includes the PP-Module for Wireless LAN Clients.
	      <!-- <!-\- AUTOMATION -\-> -->
	      <!-- AES-CTR becomes mandatory and must be selected if the ST includes the <xref to="pkg-ssh"/>. -->
        <h:p>
          AES-CCM becomes mandatory and must be selected if the ST includes the PP-Module for Bluetooth.
        </h:p>	    
	      </h:p>
	      <h:p>
	        For the second selection, the ST author should choose the mode
		or modes in which AES operates.</h:p>
		    <h:p>
		      For the third selection, the ST author may only choose 128-bit if the ST
		      includes the PP-Module for Bluetooth, and it may only be used specifically
		      with AES-CCM for Bluetooth functions.
	      </h:p>
	      <!-- <h:p>If <xref to="s-ftp_ssh"/> is selected in FTP_ITC_EXT.1.1, -->
	      <!-- then <xref to="s-aes-ctr"/> must be selected.</h:p> -->
	      
	    </note>
            <aactivity>
	      <TSS>
	        If "128-bit" is selected, the evaluator shall examine the TSS to verify that 128-bit
	        is only used with AES-CCM for Bluetooth functions.
	      </TSS>
        <Guidance>
		The evaluator shall verify that the AGD documents contains instructions required
		to configure the OS to use the required modes and key sizes.
	      </Guidance>
	      <Tests>

	      <h:p>
	      The evaluator shall execute all instructions as specified to configure the OS
	      to the appropriate state.
	      The evaluator shall perform all of the following tests for each
              algorithm implemented by the OS and used to satisfy the requirements of this PP:
	      </h:p>
	      <h:div>
		<depends on="s-aes-xts"/>
	      
	      <h:p><h:b>XTS-AES Test</h:b></h:p>
	      <h:p>
		The evaluator shall test the encrypt functionality of XTS-AES for each combination of the
              following input parameter lengths:
              <h:ul>
                <h:li>512 bit (for AES-256) key</h:li>
                <h:li>Three data unit (i.e., plaintext) lengths. One of the data unit lengths will be a nonzero
                  integer multiple of 256 bits, if supported. One of the data unit lengths will be an
                  integer multiple of 256 bits, if supported. The third data unit length will be either the
                  longest supported data unit length or 216 bits, whichever is smaller.
                </h:li>
              </h:ul>
              using a set of 100 (key, plaintext and 256-bit random tweak value) 3-tuples and obtain the
              ciphertext that results from XTS-AES encrypt.
	      </h:p>
	      <h:p>
		The evaluator may supply a data unit sequence number instead of the tweak value if the
		implementation supports it. The data unit sequence number is a base-10 number ranging
		between 0 and 255 that implementations convert to a tweak value internally.
	      </h:p>
	      <h:p>
		The evaluator shall test the decrypt functionality of XTS-AES using the same test as for
		encrypt, replacing plaintext values with ciphertext values and XTS-AES encrypt with XTSAES
              decrypt.
	      </h:p>
	      </h:div>
	      <h:div>
		<depends on="s-aes-cbc"/>
	      <h:p><h:b>AES-CBC Known Answer Tests</h:b></h:p>
	      <h:p>
		There are four Known Answer Tests (KATs), described below. In all KATs, the
              plaintext, ciphertext, and IV values will be 256-bit blocks. The results from each
              test may either be obtained by the evaluator directly or by supplying the inputs to
              the implementer and receiving the results in response. To determine correctness, the
              evaluator shall compare the resulting values to those obtained by submitting the same
              inputs to a known good implementation.
	      <testlist>
                <test>To test the encrypt functionality of AES-CBC, the evaluator shall supply
                  a set of five plaintext values and obtain the ciphertext value that results from
                  AES-CBC encryption of the given plaintext using a key value of all zeros and an IV
                  of all zeros.
		  The plaintext values will encrypted with a 256-bit all-zeros key. To test
                  the decrypt functionality of AES-CBC, the evaluator shall perform the same test as
                  for encrypt, using 5 ciphertext values as input and AES-CBC decryption.</test>
                <test>To test the encrypt functionality of AES-CBC, the evaluator shall supply
                  a set of five 256-keys and obtain the ciphertext value that results from AES-CBC
                  encryption of an all-zeros plaintext using the given key value and an IV of all
                  zeros.
		  To test the decrypt functionality of AES-CBC, the evaluator shall perform
                  the same test as for encrypt, using an all-zero ciphertext value as input and
                  AES-CBC decryption.</test>
                <test>To test the encrypt functionality of AES-CBC, the evaluator shall supply
                  the a sets of key values described below and obtain the ciphertext value that
                  results from AES encryption of an all-zeros plaintext using the given key value
                  and an IV of all zeros.
		  Key i will have the leftmost i bits be ones and the rightmost N-i bits be zeros, for i in [1,N].
		  To test the decrypt functionality of AES-CBC, the evaluator shall supply the set of key
                  and ciphertext value pairs described below and obtain the plaintext value that
                  results from AES-CBC decryption of the given ciphertext using the given key and an
                  IV of all zeros.
		  The set of key/ciphertext pairs will have 256 256-bit key/ciphertext pairs.
		  Key i in each set will have the leftmost i bits be
                  ones and the rightmost N-i bits be zeros, for i in [1,N]. The ciphertext value in
                  each pair will be the value that results in an all-zeros plaintext when decrypted
                  with its corresponding key.</test>
                <test>To test the encrypt functionality of AES-CBC, the evaluator shall supply
                  the set of 256 plaintext values described below and obtain the ciphertext
                  values that result from AES-CBC encryption of the given plaintext using a 256-bit key value of
                  all zeros with an IV of all zeros.
		  Plaintext value <h:i>i</h:i> in each set will have the leftmost <h:i>i</h:i> bits be ones and
		the rightmost 256-<h:i>i</h:i> bits be zeros, for <h:i>i</h:i> in [1,256].</test>
	      </testlist>
	      <h:br/>
	      To test the decrypt functionality of AES-CBC, the evaluator shall perform the
              same test as for encrypt, using ciphertext values of the same form as the plaintext in
              the encrypt test as input and AES-CBC decryption.
	      </h:p>
              <h:b>AES-CBC Multi-Block Message Test</h:b>
	      <h:p>
              The evaluator shall test the encrypt functionality by encrypting an i-block
              message where 1 &lt; i ≤ 10. The evaluator shall choose a key, an IV and plaintext
              message of length i blocks and encrypt the message, using the mode to be tested, with
              the chosen key and IV. The ciphertext will be compared to the result of encrypting
              the same plaintext message with the same key and IV using a known good implementation.
              The evaluator shall also test the decrypt functionality for each mode by decrypting an
              i-block message where 1 &lt; i ≤10. The evaluator shall choose a key, an IV and a
              ciphertext message of length i blocks and decrypt the message, using the mode to be
              tested, with the chosen key and IV. The plaintext will be compared to the result of
              decrypting the same ciphertext message with the same key and IV using a known good
              implementation.
	    </h:p>
	    <h:p>
	      <h:b>AES-CBC Monte Carlo Tests</h:b>
	    </h:p>
	    <h:p>
	      The evaluator shall test the encrypt
              functionality using a set of 100 plaintext, IV, and key 3-tuples.
	      The keys, plaintext, and IV values are each 256-bits.
	      For each 3-tuple, 1000 iterations will be run as follows:
              <h:pre>
              # Input: PT, IV, Key
              for i = 1 to 1000:
                if i == 1:
                      CT[1] = AES-CBC-Encrypt(Key, IV, PT)
                      PT = IV
                else:
                  CT[i] = AES-CBC-Encrypt(Key, PT)
                  PT = CT[i-1]
              </h:pre>The
              ciphertext computed in the 1000th iteration (i.e., CT[1000]) is the result for that
              trial. This result will be compared to the result of running 1000 iterations with the
              same values using a known good implementation.
	    </h:p>
	    <h:p>
	      The evaluator shall test the
              decrypt functionality using the same test as for encrypt, exchanging CT and PT and
              replacing AES-CBC-Encrypt with AES-CBC-Decrypt.
	    </h:p>
	  </h:div>
	  <h:div>
	      <depends on="s-aes-ctr"/>
	      <h:b>AES-CTR Test</h:b><h:br/>
	      <h:p><h:b>Known Answer Tests (KATs)</h:b></h:p>
	      <h:p>
There are four Known Answer Tests (KATs) described below.
For all KATs, the plaintext, initialization vector (IV), and ciphertext values shall be 256-bit blocks.
The results from each test may either be obtained by the validator directly or by supplying the inputs to the implementer and receiving the results in response.
To determine correctness, the evaluator shall compare the resulting values to those obtained by submitting the same inputs to a known good implementation.
	      </h:p>

	      <h:p>
		<testlist>
		  <test>
		    To test the encrypt functionality, the evaluator shall supply 5 plaintext values and obtain the ciphertext value that results from encryption of the given plaintext using a 256-bit key value of all zeros and an IV of all zeros.
		    To test the decrypt functionality, the evaluator shall perform the same test as for encrypt, using the 5 ciphertext values as input.
		  </test>
		  <test>
		To test the encrypt functionality, the evaluator shall supply 5 256-bit key values and obtain the ciphertext value that results from encryption of an all zeros plaintext using the given key value and an IV of all zeros.
To test the decrypt functionality, the evaluator shall perform the same test as for encrypt, using an all zero ciphertext value as input.
		  </test>
		  <test>
To test the encrypt functionality, the evaluator shall supply a set of key values described below and obtain the ciphertext values that result from AES encryption of an all zeros plaintext using the given key values and an IV of all zeros.
The set of keys shall have  shall have 256 256-bit keys.
Key<h:i>i</h:i> shall have the leftmost i bits be ones and the rightmost 256-i bits be zeros, for i in [1, N].
To test the decrypt functionality, the evaluator shall supply the set of key and ciphertext value pairs described below and obtain the plaintext value that results from decryption of the given ciphertext using the given key values and an IV of all zeros.
The  set of key/ciphertext pairs shall have 256 256-bit pairs.
Key<h:i>i</h:i> shall have the leftmost i bits be ones and the rightmost 256-i bits be zeros for i in [1, N].
The ciphertext value in each pair shall be the value that results in an all zeros plaintext when decrypted with its corresponding key.
		  </test>
		  <test>
To test the encrypt functionality, the evaluator shall supply the set of 256 plaintext values described below and obtain the two ciphertext values that result from encryption of the given plaintext using a 256 bit key value of all zeros, respectively, and an IV of all zeros.
Plaintext value i in each set shall have the leftmost bits be ones and the rightmost 256-i bits be zeros, for i in [1, 256].
To test the decrypt functionality, the evaluator shall perform the same test as for encrypt, using ciphertext values of the same form as the plaintext in the encrypt test as input.
		  </test>
		</testlist>
	      </h:p>
	      <h:p><h:b>Multi-Block Message Test</h:b></h:p>

	      <h:p>The evaluator shall test the encrypt functionality by encrypting an i-block message where 1 less-than i less-than-or-equal to 10.
For each i the evaluator shall choose a key, IV, and plaintext message of length i blocks and encrypt the message, using the mode to be tested, with the chosen key.
The ciphertext shall be compared to the result of encrypting the same plaintext message with the same key and IV using a known good implementation.
The evaluator shall also test the decrypt functionality by decrypting an i-block message where 1 less-than i less-than-or-equal to 10.
For each i the evaluator shall choose a key and a ciphertext message of length i blocks and decrypt the message, using the mode to be tested, with the chosen key.
The plaintext shall be compared to the result of decrypting the same ciphertext message with the same key using a known good implementation.</h:p>

	      <h:p><h:b>Monte-Carlo Test</h:b></h:p>

	      <h:p>For AES-CTR mode perform the Monte Carlo Test for ECB Mode on the encryption engine of the counter mode implementation. There is no need to test the decryption engine.
	      </h:p>
	      <h:p>
		The evaluator shall test the encrypt functionality using 100 plaintext/key pairs.
		Each key shall be 256-bit.
		The plaintext values shall be 256-bit blocks.
		For each pair, 1000 iterations shall be run as follows:
	      </h:p>
	      For AES-ECB mode<h:br/>
<h:pre>
# Input: PT, Key

for i = 1 to 1000:
CT[i] = AES-ECB-Encrypt(Key, PT)
PT = CT[i]
</h:pre>

<h:p>The ciphertext computed in the 1000th iteration is the result for that trial.
This result shall be compared to the result of running 1000 iterations with the same values using a known good implementation.
</h:p>

<!-- <h:p> -->
<!--   If "invoke platform-provided" is selected, -->
<!--   the evaluator confirms that SSH connections are only successful if appropriate algorithms and appropriate key sizes are configured. -->
<!--   To do this, the evaluator shall perform the following tests: -->
<!-- </h:p> -->

<!-- <h:p><h:b>Test 1</h:b>: [Conditional: TOE is an SSH server] -->
<!-- The evaluator shall configure an SSH client to connect with an invalid cryptographic algorithm and key size for each listening SSH socket connection on the TOE. -->
<!-- The evaluator initiates SSH client connections to each listening SSH socket connection on the TOE and observes that the connection fails in each attempt. -->
<!-- </h:p> -->

<!-- <h:p><h:b>Test 2</h:b>: [Conditional: TOE is an SSH client] -->
<!-- The evaluator shall configure a listening SSH socket on a remote SSH server that accepts only invalid cryptographic algorithms and keys. -->
<!-- The evaluator uses the TOE to attempt an SSH connection to this server and observes that the connection fails. -->
<!-- </h:p> -->
</h:div>
	      <h:div>
		<depends on="s-aes-kw" also="s-aes-kwp"/>
	      <h:p><h:b>AES Key Wrap (AES-KW) and Key Wrap with Padding (AES-KWP) Test</h:b></h:p>
              <h:p>
		The evaluator shall test the authenticated encryption functionality of AES-KW for EACH
		combination of the following input parameter lengths:
              <h:ul>
                <h:li>256-bit key encryption keys (KEKs)</h:li>
                <h:li>Three plaintext lengths.
		One of the plaintext lengths will be two semi-blocks (256 bits).
		One of the plaintext lengths will be three semi-blocks (192 bits).
		The third data unit length will be the longest supported plaintext
		length less than or equal to 64 semi-blocks (4096 bits).
                </h:li>
              </h:ul>
              using a set of 100 key and plaintext pairs and obtain the ciphertext that results from AES-KW
              authenticated encryption. To determine correctness, the evaluator shall use the AES-KW
              authenticated-encryption function of a known good implementation.
	      </h:p>
	      <h:p>

              The evaluator shall test the authenticated-decryption functionality of AES-KW using the
              same test as for authenticated-encryption, replacing plaintext values with ciphertext values
              and AES-KW authenticated-encryption with AES-KW authenticated-decryption.
	      </h:p>
	      </h:div>
	      <h:div><depends on="s-aes-kwp"/>
	      <h:p>
              The evaluator shall test the authenticated-encryption functionality of AES-KWP using the
              same test as for AES-KW authenticated-encryption with the following change in the three
              plaintext lengths:
              <h:ul>
                <h:li>One plaintext length will be one octet. One plaintext length will be 20 octets (160
                  bits).</h:li>
                <h:li>
                  One plaintext length will be the longest supported plaintext length less than or equal
                  to 512 octets (4096 bits).
                </h:li>
              </h:ul>
              The evaluator shall test the authenticated-decryption functionality of AES-KWP using the
              same test as for AES-KWP authenticated-encryption, replacing plaintext values with
              ciphertext values and AES-KWP authenticated-encryption with AES-KWP authenticated-decryption.
              </h:p>
	      </h:div>
	      <h:div>
	        <depends on="s-aes-ccmp" also="s-aes-ccm"/>
	        <h:p>
	          
	        <h:b>AES-CCM Tests</h:b>
	        </h:p>
	      <h:p>
              The evaluator shall test the generation-encryption and decryption-verification
              functionality of AES-CCM for the following input parameter and tag lengths: <h:ul>
                <h:li>128-bit (if selected) and 256-bit keys</h:li>
                <h:li>Two payload lengths. One payload length will be the shortest supported payload
                  length, greater than or equal to zero bytes. The other payload length will be the
                  longest supported payload length, less than or equal to 32 bytes (256 bits).
                </h:li>
                <h:li>Two or three associated data lengths. One associated data length will be 0, if
                  supported. One associated data length will be the shortest supported payload length,
                  greater than or equal to zero bytes. One associated data length will be the longest
                  supported payload length, less than or equal to 32 bytes (256 bits). If the
                  implementation supports an associated data length of 2
                  16 bytes, an associated data length of 216 bytes will be tested.
                </h:li>
                <h:li>Nonce lengths.
		The evaluator shall test all nonce lengths between 7 and 13 bytes, inclusive, that are supported by the OS.
                </h:li>
                <h:li>Tag lengths.
		The evaluator shall test all of the following tag length values that are supported by the OS: 4, 6, 8, 10, 12, 14 and 16 bytes.
                </h:li>
              </h:ul>
              To test the generation-encryption functionality of AES-CCM, the evaluator shall perform the
              following four tests:
	      </h:p>
	      <testlist>
		<test> For EACH supported key and associated data length and ANY supported
                  payload, nonce and tag length, the evaluator shall supply one key value, one nonce
                  value and 10 pairs of associated data and payload values and obtain the resulting
                  ciphertext.
		</test>
		<test>For EACH supported key and payload length and ANY supported associated
                  data, nonce and tag length, the evaluator shall supply one key value, one nonce value
                  and 10 pairs of associated data and payload values and obtain the resulting ciphertext.
		</test>

                <test>For EACH supported key and nonce length and ANY supported associated
                  data, payload and tag length, the evaluator shall supply one key value and 10
                  associated data, payload and nonce value 3-tuples and obtain the resulting ciphertext.
                </test>
                <test>For EACH supported key and tag length and ANY supported associated data,
                  payload and nonce length, the evaluator shall supply one key value, one nonce value
                  and 10 pairs of associated data and payload values and obtain the resulting ciphertext.
                </test>
	      </testlist>
	      <h:p>
              To determine correctness in each of the above tests, the evaluator shall compare the
              ciphertext with the result of generation-encryption of the same inputs with a known good
              implementation.
	      </h:p>
	      <h:p>
              To test the decryption-verification functionality of AES-CCM, for EACH combination of
              supported associated data length, payload length, nonce length and tag length, the evaluator
              will supply a key value and 15 nonce, associated data and ciphertext 3-tuples and obtain
              either a FAIL result or a PASS result with the decrypted payload. The evaluator shall supply
              10 tuples that should FAIL and 5 that should PASS per set of 15.
	      </h:p>
	      <h:p>
              Additionally, the evaluator shall use tests from the IEEE 802.11-02/362r6 document
              "Proposed Test vectors for IEEE 802.11 TGi", dated September 10, 2002, Section 2.1 AESCCMP
              Encapsulation Example and Section 2.2 Additional AES CCMP Test Vectors to
              further verify the IEEE 802.11-2007 implementation of AES-CCMP.
	      </h:p>
	      </h:div>
	      <h:div>
		<depends on="s-aes-gcmp"/>
	      <h:p> <h:b>AES-GCMP Test</h:b></h:p>
              <h:p>The evaluator shall test the authenticated encrypt functionality of AES-GCM for each
                combination of the following input parameter lengths: <h:br/>
              <h:ul>
                <h:li> 256 bit keys</h:li>
                <h:li>Two plaintext lengths. One of the plaintext lengths will be a non-zero integer
                  multiple of 256 bits, if supported. The other plaintext length will not be an integer
                  multiple of 256 bits, if supported.
                </h:li>
                <h:li>Three AAD lengths. One AAD length will be 0, if supported. One AAD length will
                  be a non-zero integer multiple of 256 bits, if supported. One AAD length will not be
                  an integer multiple of 256 bits, if supported.
                </h:li>
                <h:li>Two IV lengths. If 96 bit IV is supported, 96 bits will be one of the two IV lengths
                  tested.
                </h:li>
              </h:ul>
              The evaluator shall test the encrypt functionality using a set of 10 key, plaintext, AAD, and
              IV tuples for each combination of parameter lengths above and obtain the ciphertext value
              and tag that results from AES-GCM authenticated encrypt. Each supported tag length will be
              tested at least once per set of 10. The IV value may be supplied by the evaluator or the
              implementation being tested, as long as it is known.
	      </h:p>
	      <h:p>
              The evaluator shall test the decrypt functionality using a set of 10 key, ciphertext, tag, AAD,
              and IV 5-tuples for each combination of parameter lengths above and obtain a Pass/Fail result
              on authentication and the decrypted plaintext if Pass. The set will include five tuples that
              Pass and five that Fail.
	      </h:p>
	      <h:p>
              The results from each test may either be obtained by the evaluator directly or by supplying
              the inputs to the implementer and receiving the results in response. To determine correctness,
              the evaluator shall compare the resulting values to those obtained by submitting the same
              inputs to a known good implementation.
	      </h:p>

              <h:b>AES-GCMP Monte Carlo Tests</h:b><h:br/>
	      <h:p>
              The evaluator shall test the authenticated encrypt functionality of AES-GCM for
              each combination of the following input parameter lengths: <h:ul>
                <h:li>256 bit keys</h:li>
                <h:li>Two plaintext lengths. One of the plaintext lengths will be a non-zero integer
                  multiple of 256 bits, if supported. The other plaintext length will not be an
                  integer multiple of 256 bits, if supported.</h:li>
                <h:li>Three AAD lengths. One AAD length will be 0, if supported. One AAD length will
                  be a non-zero integer multiple of 256 bits, if supported. One AAD length will not
                  be an integer multiple of 256 bits, if supported.</h:li>
                <h:li>Two IV lengths. If 96 bit IV is supported, 96 bits will be one of the two IV
                  lengths tested.</h:li>
              </h:ul>The evaluator shall test the encrypt functionality using a set of 10 key,
              plaintext, AAD, and IV tuples for each combination of parameter lengths above and
              obtain the ciphertext value and tag that results from AES-GCM authenticated encrypt.
              Each supported tag length will be tested at least once per set of 10. The IV value
              may be supplied by the evaluator or the implementation being tested, as long as it is
              known.
	    </h:p>
	    <h:p>


	      The evaluator shall test the decrypt functionality using a set of 10 key,
              ciphertext, tag, AAD, and IV 5-tuples for each combination of parameter lengths above
              and obtain a Pass/Fail result on authentication and the decrypted plaintext if Pass.
              The set will include five tuples that Pass and five that Fail.
	    </h:p>
	    <h:p>
	      The results from
              each test may either be obtained by the evaluator directly or by supplying the inputs
              to the implementer and receiving the results in response. To determine correctness,
              the evaluator shall compare the resulting values to those obtained by submitting the
              same inputs to a known good implementation.
	      </h:p>

	      </h:div>
	      </Tests>
	    </aactivity>
	    <rule id="r-wlan-aes">
	      <or>
		<and><not><ref-id>mod-wlanclient</ref-id></not></and>
		<and>
		  <ref-id>mod-wlanclient</ref-id>
		  <or><ref-id>s-aes-ccmp</ref-id><ref-id>s-aes-gcmp</ref-id></or>
		</and>
	      </or>
	    </rule>
	    <!-- <rule id="r-aes-ctr-for-ssh"> -->
	    <!--   <if><ref-id>s-ftp_ssh</ref-id></if> -->
	    <!--   <then><ref-id>s-aes-ctr</ref-id></then> -->
	      <!-- <or><and><ref-id>s-aes-ctr</ref-id><ref-id>s-ftp_ssh</ref-id></and> -->
	      <!-- <not><ref-id>s-ftp_ssh</ref-id></not> -->
	      <!-- </or> -->
	    <!-- </rule> -->
          </f-element>
          <audit-event/>
        </f-component>
        
        <f-component cc-id="fcs_cop.1" iteration="HASH" name="Cryptographic Operation - Hashing">
          <f-element id="fel-hash-how">
            <title>The TSF shall perform [<h:i>cryptographic hashing services</h:i>] in accordance with a
              specified cryptographic algorithm <h:b> of SHA-384 and a message digest size of 384-bits
                </h:b> 
              that meets the following: [<h:i>FIPS Pub 180-4</h:i>]. </title>
            <note role="application">
	      <h:p>
	      The intent of this requirement is to specify the hashing function.
	      The hash selection must support the message digest size selection.
	      The hash selection should be consistent with the overall strength of
        the algorithm used.
	      </h:p>
	    </note>
            <aactivity>
              <TSS>TBD</TSS>
              <Guidance>TBD</Guidance>
	      <Tests>
	      <h:p>
	      The evaluator shall check that the association of the hash function with
              other application cryptographic functions (for example, the digital signature
              verification function) is documented in the TSS.
	      </h:p>
	      <h:p>
		The TSF
              hashing functions can be implemented in one of two modes. The first mode is the
              byte-oriented mode. In this mode the TSF only hashes messages that
              are an integral number of bytes in length; i.e., the length (in bits) of the message
              to be hashed is divisible by 8. The second mode is the bit-oriented mode. In this mode
              the TSF hashes messages of arbitrary length. As there are different
              tests for each mode, an indication is given in the following sections for the
              bit-oriented vs. the byte-oriented test MACs. The evaluator shall perform all of the
              following tests for each hash algorithm implemented by the TSF and
              used to satisfy the requirements of this PP.
	      </h:p>
	      <h:p>
		The following tests require the
		developer to provide access to a test application that provides the evaluator with
		tools that are typically not found in the production application.<testlist>
                <test>Short Messages Test (Bit oriented Mode) - The evaluator shall generate an input set
                  consisting of m+1 messages, where m is the block length of the hash algorithm. The
                  length of the messages range sequentially from 0 to m bits. The message text will
                  be pseudorandomly generated. The evaluator shall compute the message digest for each of
                  the messages and ensure that the correct result is produced when the messages are
                  provided to the TSF.</test>
                <test>Short Messages Test (Byte oriented Mode) - The evaluator shall generate an input set
                  consisting of m/8+1 messages, where m is the block length of the hash algorithm.
                  The length of the messages range sequentially from 0 to m/8 bytes, with each
                  message being an integral number of bytes. The message text will be
                  pseudorandomly generated. The evaluator shall compute the message digest for each of
                  the messages and ensure that the correct result is produced when the messages are
                  provided to the TSF.</test>
                <test>Selected Long Messages Test (Bit oriented Mode) - The evaluator shall generate an input
                  set consisting of m messages, where m is the block length of the hash algorithm.
                  The length of the <h:i>i</h:i>th message is 512 + 99⋅i, where 1 ≤ i ≤ m. The message
                  text will be pseudorandomly generated. The evaluator shall compute the message digest
                  for each of the messages and ensure that the correct result is produced when the
                  messages are provided to the TSF.</test>
                <test>Selected Long Messages Test (Byte oriented Mode) - The evaluator shall generate an
                  input set consisting of m/8 messages, where m is the block length of the hash
                  algorithm. The length of the <h:i>i</h:i>th message is 512 + 8⋅99⋅i,
		  where 1 ≤ i ≤ m/8. The message text will be pseudorandomly generated.
		  The evaluator shall compute
                  the message digest for each of the messages and ensure that the correct result is
                  produced when the messages are provided to the TSF.</test>
                <test>Pseudorandomly Generated Messages Test -  This test is for byte-oriented
                  implementations only. The evaluator shall randomly generate a seed that is n bits long,
                  where n is the length of the message digest produced by the hash function to be
                  tested. The evaluator shall then formulate a set of 100 messages and associated digests
                  by following the algorithm provided in Figure 1 of <xref to="bib-shavs"/>. The evaluator shall then
                  ensure that the correct result is produced when the messages are provided to the
                  TSF.
		</test>
              </testlist>
	      </h:p>
	      </Tests>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>
        
        <f-component cc-id="fcs_cop.1" iteration="KEYHMAC" name="Cryptographic Operation - Keyed-Hash Message Authentication">
          <f-element id="fel-keyed-hash-how">
            <title>The TSF shall perform [<h:i>keyed-hash message authentication services</h:i>]
              in accordance with a specified cryptographic algorithm<h:b> of SHA-384 with key sizes
                <assignable>key size (in bits) used in HMAC</assignable>
                and a message digest</h:b> size of 384-bits that meets the following:
              [<h:i>FIPS Pub 198-1 The Keyed-Hash Message Authentication Code and
                FIPS Pub 180-4 Secure Hash Standard</h:i>]. </title>
            <note role="application">
              <h:p>
                The intent of this requirement is to specify the keyed-hash
                message authentication function used for key establishment purposes for the various
                cryptographic protocols used by the OS (e.g., trusted channel).
                The hash selection must support the message digest size selection.
                The hash selection should be consistent with the overall strength of the
                algorithm used for FCS_COP.1/HASH.
              </h:p>
            </note>
            <aactivity>
              <TSS>TBD</TSS>
              <Guidance>TBD</Guidance>
              <Tests>
                <h:p>
                  
                  The evaluator shall perform the following activities based on the selections
                  in the ST.
                </h:p><h:p>
                  For each of the supported parameter sets, the
                  evaluator shall compose 15 sets of test data.
                  Each set consists of a key and message data.
                  The evaluator shall have the OS generate HMAC tags for these sets of test data.
                  The resulting MAC tags will be compared against the result of generating HMAC
                  tags with the same key using a known-good implementation.
                </h:p>
              </Tests>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>
        
                <f-component cc-id="fcs_cop.1" iteration="SIGN" name="Cryptographic Operation - Signing">
          <f-element id="fel-sign-how">
            <title>The TSF shall perform [<h:i>cryptographic signature services (generation and
              verification)</h:i>] in accordance with a specified cryptographic algorithm <selectables linebreak="yes">
                <selectable id="s-rsa-certs">RSA schemes using cryptographic key sizes of <selectables>
                  <selectable>2048-bit (for secure boot only) or greater</selectable>
                  <selectable>3072-bit or greater</selectable>
                </selectables></selectable> 
                <selectable id="s-ec-certs">ECDSA schemes using "NIST curve" P-384 and no other curves</selectable>
                  </selectables>
                that meet the following: [<h:i>FIPS PUB 186-5, "Digital Signature Standard (DSS)"</h:i>].
          </title>
            <note role="application"> The ST author should choose the algorithm implemented to
              perform digital signatures; if more than one algorithm is available, this requirement
              should be iterated to specify the functionality. For the algorithm chosen, the ST
              author should make the appropriate assignments/selections to specify the parameters
              that are implemented for that algorithm.
            </note>
       <aactivity>
	       <TSS>
	         [Conditional: If “2048-bit (for secure boot only) or greater” is selected] The evaluator shall
	         check that the TSS documents that 2048-bit RSA is used only for secure boot and a greater key
	         size is used for any other functions.
	       </TSS>
         <Guidance>
           [Conditional: If “2048-bit (for secure boot only) or greater” is selected] The evaluator shall
           check that the AGD documents any configuration needed to ensure 2048-bit RSA is used only for
           secure boot and a greater key size is used for any other functions.
         </Guidance>
         <Tests>
	      <h:p>
		The following tests require the developer to
		provide access to a test application that provides the evaluator with tools that are
		typically not found in the production application.
	      </h:p>

	      <h:div>
		<depends on="s-ec-certs"/>
	      <h:p><h:b>ECDSA Algorithm Tests</h:b></h:p>
	      <h:p>
	      <testlist>
                <test>ECDSA FIPS 186-5 Signature Generation Test. For the supported NIST curve
                  P-384 and SHA function pair, the evaluator shall generate
                  10 1024-bit long messages and obtain for each message a public key and the
                  resulting signature values R and S. To determine correctness, the evaluator shall
                  use the signature verification function of a known good implementation. </test>
                <test>
		  ECDSA FIPS 186-5 Signature Verification Test. For the supported NIST curve P-384 and SHA function pair, the evaluator shall generate
                  a set of 10 1024-bit message, public key and signature tuples and modify one of
                  the values (message, public key or signature) in five of the 10 tuples.
		  The evaluator shall verify that 5 responses indicate success and
		  5 responses indicate failure.
		</test>
              </testlist>
	      </h:p>
	      </h:div>
	      <h:div>
		<depends on="s-rsa-certs"/>
	      <h:p><h:b>RSA Signature Algorithm Tests </h:b></h:p>
	      <h:p>
	      <testlist>
                <test>Signature Generation Test. The evaluator shall verify the implementation of
                  RSA Signature Generation by the OS using the Signature
                  Generation Test. To conduct this test the evaluator must generate or obtain 10
                  messages from a trusted reference implementation for each modulus size/SHA
                  combination supported by the TSF.
		  The evaluator shall have the
                    OS use its private key and modulus value to sign these
                    messages. The evaluator shall verify the correctness of the TSF'
		    signature using a known good implementation and the associated public keys to
                  verify the signatures. </test>
                <test>Signature Verification Test. The evaluator shall perform the Signature
                  Verification test to verify the ability of the OS to recognize
                  another party's valid and invalid signatures. The evaluator shall inject errors
                  into the test vectors produced during the Signature Verification Test by
                  introducing errors in some of the public keys, e, messages, IR format, and/or
                  signatures.
		  The evaluator shall verify that the OS returns failure when
		  validating each signature.
		</test>
              </testlist>
	      </h:p>
	      </h:div>
	      </Tests>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>
        
       
<!--
	<ext-comp-def fam-id="FCS_RBG_EXT" title="Random Bit Generation">
	  <fam-behavior>Components in this family address the requirements for random bit and number generation. This is a
	    new family defined for the FCS class.</fam-behavior>
	</ext-comp-def>
        
        <f-component cc-id="fcs_rbg_ext.1" name="Random Bit Generation">
          <comp-lev> requires random bit generation to be performed in accordance with selected standards and seeded by an entropy source.</comp-lev>
          <management> There are no management activities foreseen.</management>
          <audit>The following actions should be auditable if FAU_GEN Security audit data generation is included in the PP or ST:
            <h:ul>
              <h:li>Failure of the randomization process</h:li>
            </h:ul>
          </audit>
          <dependencies>
            <no-link>FCS_COP.1</no-link> Cryptographic Operation
          </dependencies>
          
          <f-element id="fel-rbg-how">
            <title>
              The OS shall perform all deterministic random bit generation (DRBG) services in
              accordance with NIST Special Publication 800-90A using
              <selectables linebreak="yes">
                <selectable>Hash_DRBG (any)</selectable>
                <selectable>HMAC_DRBG (any)</selectable>
                <selectable>CTR_DRBG (AES)</selectable>
              </selectables>
	      .
            </title>
            <note role="application">
NIST SP 800-90A contains three different methods of generating random numbers;
each of these, in turn, depends on underlying cryptographic primitives (hash functions/ciphers).
The ST author will select the function used and include the specific underlying cryptographic primitives used in the requirement or in the TSS.
While any of the identified hash functions (SHA-224, SHA-256, SHA-384, SHA-512) are allowed for Hash_DRBG or HMAC_DRBG,
only AES-based implementations for CTR_DRBG are allowed.
            </note>
            <aactivity>
	      <Tests>
	      <h:p>
	      The evaluator shall perform the following tests:
	      </h:p><h:p>
              The evaluator shall perform 15 trials for the RNG implementation. If the RNG
              is configurable, the evaluator shall perform 15 trials for each configuration. The
              evaluator shall also confirm that the operational guidance contains appropriate
              instructions for configuring the RNG functionality.
	      </h:p><h:p>
	      If the RNG has  prediction resistance enabled, each trial consists of (1) instantiate DRBG, (2)
              generate the first block of random bits (3) generate a second block of random bits
              (4) uninstantiate. The evaluator verifies that the second block of random bits is
              the expected value. The evaluator shall generate eight input values for each
              trial. The first is a count (0 – 14). The next three are entropy input, nonce, and
              personalization string for the instantiate operation. The next two are additional
              input and entropy input for the first call to generate. The final two are
              additional input and entropy input for the second call to generate. These values
              are randomly generated. "generate one block of random bits" means to generate
              random bits with number of returned bits equal to the Output Block Length (as
              defined in NIST SP 800-90A).
	      </h:p><h:p>
	      If the RNG does not have prediction resistance,
              each trial consists of (1) instantiate DRBG, (2) generate the first block of
              random bits (3) reseed, (4) generate a second block of random bits (5)
              uninstantiate. The evaluator verifies that the second block of random bits is the
              expected value. The evaluator shall generate eight input values for each trial.
              The first is a count (0 – 14). The next three are entropy input, nonce, and
              personalization string for the instantiate operation. The fifth value is
              additional input to the first call to generate. The sixth and seventh are
              additional input and entropy input to the call to reseed. The final value is
              additional input to the second generate call.
	      </h:p><h:p>
	      The following list contains more information on some of the input values to be generated/selected by the evaluator.
	      <h:ul>
		<h:li> <h:b>Entropy input:</h:b> The length of the entropy input value must equal the seed
                  length.</h:li>
		  
                  <h:li><h:b>Nonce:</h:b> If a nonce is supported (CTR_DRBG with no Derivation Function does
                  not use a nonce), the nonce bit length is one-half the seed length. </h:li>
                  <h:li><h:b>Personalization string:</h:b> The length of the personalization string must be
                  less than or equal to seed length. If the implementation only supports one
                  personalization string length, then the same length can be used for both values.
                  If more than one string length is support, the evaluator shall use personalization
                  strings of two different lengths. If the implementation does not use a
                  personalization string, no value needs to be supplied. </h:li>
                  <h:li><h:b>Additional input:</h:b> The additional input bit lengths have the same defaults
                  and restrictions as the personalization string lengths.</h:li>
		</h:ul>
	      </h:p>
	      </Tests>
            </aactivity>
          </f-element>
          
          <f-element id="fel-rbg-seed-how">
            <title>
              The deterministic RBG used by the OS shall be seeded by an entropy source that
              accumulates entropy from a
              <selectables linebreak="yes">
                <selectable>software-based noise source</selectable>
                <selectable>platform-based noise source</selectable>
              </selectables>
              with a minimum of 256 bits
              <selectables linebreak="yes"> 
                 <selectable>128 bits</selectable> 
                 <selectable>256 bits</selectable> 
               </selectables> 
              of entropy at least equal to the greatest security strength (according to NIST SP 800-57)
              of the keys and hashes that it will generate.
	    </title>
            <note role="application">
	      <h:p>
		For the first
		selection in this requirement, the ST author selects 'software-based noise source' if
		any additional noise sources are used as input to the DRBG.
	      </h:p><h:p>
	      In the second selection in this requirement, the ST author selects the
              appropriate number of bits of entropy that corresponds to the greatest security
              strength of the algorithms included in the ST.
	      Security strength is defined in Tables
              2 and 3 of NIST SP 800-57A.
	      For example, if the implementation includes 3072-bit RSA
              (security strength of 128 bits), AES 256 (security strength 256 bits), and
              HMAC-SHA-256 (security strength 256 bits), then the ST author would select 256 bits.
	    </h:p>
            </note>
            <aactivity>
	    <Tests>
	      <h:p>
		Documentation will be produced - and the evaluator shall perform the
		activities - in accordance with <xref to="entropyappendix"/> and
		the
	        <h:a href="https://niap-ccevs.org/Documents_and_Guidance/ccevs/Entropy%20Documentation%20and%20Assessment%20Clarification.pdf"
		     >Clarification to the Entropy Documentation and Assessment Annex</h:a>.
	      </h:p><h:p>
              In the future, specific statistical testing (in line with NIST SP 800-90B) will
              be required to verify the entropy estimates.
	    </h:p>
	    </Tests>
            </aactivity>
          </f-element>
        </f-component>
        -->
        
        <f-component cc-id="fcs_rbg.1" name="Random Bit Generation (RBG)">
          <f-element id="fel-rbg-init-seed">
            <title>
              The TSF shall perform deterministic random bit generation services using 
              <selectables linebreak="yes">
                <selectable>Hash_DRBG (any)</selectable>
                <selectable>HMAC_DRBG (any)</selectable>
                <selectable>CTR_DRBG (AES)</selectable>
              </selectables>
              in accordance
              with [<h:i>NIST SP 800-90A</h:i>] after initialization with a seed.              
            </title>
            <note role="application">
              NIST SP 800-90A contains three different methods of generating random numbers;
              each of these, in turn, depends on underlying cryptographic primitives (hash functions/ciphers).
              The ST author will select the function used and include the specific underlying cryptographic primitives used in the requirement or in the TSS.              
            </note>
            <aactivity level="element">
              <TSS>The evaluator shall verify that the TSS identifies the DRBGs used by the TOE.</TSS>
              <Guidance>If the DRBG functionality is configurable, the evaluator shall verify that the operational guidance includes instructions on how to configure this behavior.</Guidance>
              <Tests>
                <h:p>
                  The evaluator shall perform the following tests:
                </h:p><h:p>
                  The evaluator shall perform 15 trials for the RNG implementation. If the RNG
                  is configurable, the evaluator shall perform 15 trials for each configuration. The
                  evaluator shall also confirm that the operational guidance contains appropriate
                  instructions for configuring the RNG functionality.
                </h:p><h:p>
                  If the RNG has  prediction resistance enabled, each trial consists of (1) instantiate DRBG, (2)
                  generate the first block of random bits (3) generate a second block of random bits
                  (4) uninstantiate. The evaluator verifies that the second block of random bits is
                  the expected value. The evaluator shall generate eight input values for each
                  trial. The first is a count (0 – 14). The next three are entropy input, nonce, and
                  personalization string for the instantiate operation. The next two are additional
                  input and entropy input for the first call to generate. The final two are
                  additional input and entropy input for the second call to generate. These values
                  are randomly generated. "generate one block of random bits" means to generate
                  random bits with number of returned bits equal to the Output Block Length (as
                  defined in NIST SP 800-90A).
                </h:p><h:p>
                  If the RNG does not have prediction resistance,
                  each trial consists of (1) instantiate DRBG, (2) generate the first block of
                  random bits (3) reseed, (4) generate a second block of random bits (5)
                  uninstantiate. The evaluator verifies that the second block of random bits is the
                  expected value. The evaluator shall generate eight input values for each trial.
                  The first is a count (0 – 14). The next three are entropy input, nonce, and
                  personalization string for the instantiate operation. The fifth value is
                  additional input to the first call to generate. The sixth and seventh are
                  additional input and entropy input to the call to reseed. The final value is
                  additional input to the second generate call.
                </h:p><h:p>
                  The following list contains more information on some of the input values to be generated/selected by the evaluator.
                  <h:ul>
                    <h:li> <h:b>Entropy input:</h:b> The length of the entropy input value must equal the seed
                      length.</h:li>
                    
                    <h:li><h:b>Nonce:</h:b> If a nonce is supported (CTR_DRBG with no Derivation Function does
                      not use a nonce), the nonce bit length is one-half the seed length. </h:li>
                    <h:li><h:b>Personalization string:</h:b> The length of the personalization string must be
                      less than or equal to seed length. If the implementation only supports one
                      personalization string length, then the same length can be used for both values.
                      If more than one string length is support, the evaluator shall use personalization
                      strings of two different lengths. If the implementation does not use a
                      personalization string, no value needs to be supplied. </h:li>
                    <h:li><h:b>Additional input:</h:b> The additional input bit lengths have the same defaults
                      and restrictions as the personalization string lengths.</h:li>
                  </h:ul>
                </h:p>
              </Tests>
            </aactivity>
          </f-element>
          <f-element id="fel-rbg-init-seed-how">
            <title>
              The TSF shall use a <selectables>
                <selectable id="internal-seed">TSF noise source <assignable>name of noise source</assignable></selectable>
                <selectable id="internal-seeds"><h:b>multiple TSF noise sources <assignable>names of noise sources</assignable></h:b></selectable>
                <selectable id="external-seed">TSF interface for seeding</selectable>
              </selectables>
              for initialized seeding.
            </title>
            <note role="application">
              <h:p>
                For the 
                selection in this requirement, the ST author selects "TSF noise source" if
                a single noise source is used as input to the DRBG. The ST author selects "multiple TSF noise sources" if a seed is formed from a combination of two or more noise sources within the TOE boundary. If the TSF implements two or more separate DRBGs that are seeded in separate manners, this SFR should be iterated for each DRBG. It multiple distinct noise sources exist such that each DRBG only uses one of them, then each iteration would select "TSF noise source"; "multiple TSF noise sources" is only selected if a single DRBG uses multiple noise sources for its seed. The ST author selects "TSF interface for seeding" if noise source data is generated outside the TOE boundary.
              </h:p>
              <h:p>
                If "TSF noise source" is selected, FCS_RBG.3 must be claimed.
              </h:p>
              <h:p>
                If "multiple TSF noise sources" is selected, FCS_RBG.4 and FCS_RBG.5 must be claimed. 
              </h:p>
              <h:p>
                If "TSF interface for seeding" is selected, FCS_RBG.2 must be claimed. 
              </h:p>
            </note>
            <aactivity level="element">
              <no-tests>
                Documentation will be produced and the evaluator shall perform the
                activities in accordance with <xref to="entropyappendix"/> and
                the
                <h:a href="https://niap-ccevs.org/Documents_and_Guidance/ccevs/Entropy%20Documentation%20and%20Assessment%20Clarification.pdf">
                  Clarification to the Entropy Documentation and Assessment Annex</h:a>.
              </no-tests>
              
            </aactivity>
          </f-element>
          
          <f-element id="fel-rbg-init-seed-when">
            <title>
              The TSF shall update the RBG state by <selectables>
                <selectable>reseeding</selectable>
                <selectable>uninstantiating and reinstantiating</selectable>
              </selectables> using a <selectables>
                <selectable>TSF noise source <assignable>name of noise source</assignable></selectable>
                <selectable>TSF interface for seeding</selectable></selectables>
              in the following situations: <selectables linebreak="yes">
                <selectable>never</selectable>
                <selectable>on demand</selectable>
                <selectable>on the condition: <assignable>condition</assignable></selectable>
                <selectable>after <assignable>time</assignable></selectable>
              </selectables>
              in accordance with <assignable>list of standards</assignable>.
            </title>
            <aactivity level="element">              
              <TSS>
                The evaluator shall verify that the TSS identifies how the DRBG state is updated, and the situations under which this may occur.
              </TSS>
              <Guidance>If the ST claims that the DRBG state can be updated on demand, the evaluator shall verify that the operational guidance has instructions for how to perform this operation.</Guidance>
              <Tests/>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>    
        
        <f-component cc-id="fcs_rbg.2" name="Random Bit Generation (External Seeding)" status="sel-based">
          <depends on="external-seed"/>
          <f-element id="fe1-rbg-seed">
            <title>
              The TSF shall be able to accept a minimum input of <assignable>minimum input length greater than zero</assignable>
              from a TSF interface for the purpose of seeding.
            </title>
            <note role="application">
              This requirement is claimed when a DRBG is seeded with entropy from one or more noise source that is outside the TOE
              boundary. Typically the entropy produced by an environmental noise source is conditioned such that the input length has
              full entropy and is therefore  usable as the seed. However, if this is not the case, it should be noted what the minimum
              entropy rate of the noise source is so that the TSF can collect a sufficiently large sample of noise data to be
              conditioned into a seed value.
            </note>
            <aactivity>
              <h:p>
                The evaluator shall examine the entropy documentation required by FCS_RBG.1.2 to verify that it identifies, for each DRBG function implemented by the TOE, the TSF external interface used to seed the TOE's DRBG. The evaluator shall verify that this includes the amount of sampled data and the min-entropy rate of the sampled data such that it can be determined that sufficient entropy can be made available for the highest strength keys that the TSF can generate (e.g., 256 bits). If the seed data cannot be assumed to have full entropy (e.g., the min-entropy of the sampled bits is less than 1), the evaluator shall ensure that the entropy documentation describes the method by which the TOE estimates the amount of entropy that has been accumulated to ensure that sufficient data is collected and any conditioning that the TSF applies to the output data to create a seed of sufficient size with full entropy.
              </h:p>
              <TSS/>
              <Guidance/>
              <Tests/>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>
        
        <f-component cc-id="fcs_rbg.3" name="Random Bit Generation (Internal Seeding - Single Source)" status="sel-based">
          <depends on="internal-seed"/>
          <f-element id="fel-rbg-seed-int-sing">
            <title>
              The TSF shall be able to seed the RBG using a <selectables onlyone="yes">
                <selectable>TSF software-based noise source</selectable>
                <selectable>TSF hardware-based noise source <assignable>name of noise source</assignable></selectable></selectables>
              with a minimum of <assignable>number of bits</assignable> bits of min-entropy.
            </title>        
            <note role="application">This requirement is claimed when a DRBG is seeded with entropy from a single noise source that is within the TOE boundary. Min-entropy should be expressed as a ratio of entropy bits to sampled bits so that the total amount of data needed to ensure full entropy is known, as well as the conditioning function by which that data is reduced in size to the seed.</note>
            
            <aactivity>
              <h:p>
                The evaluator shall examine the entropy documentation required by FCS_RBG.1.2 to verify that it identifies, for each DRBG function implemented by the TOE, the TSF noise source used to seed the TOE's DRBG. The evaluator shall verify that this includes the amount of sampled data and the min-entropy rate of the sampled data such that it can be determined that sufficient entropy can be made available for the highest strength keys that the TSF can generate (e.g., 256 bits). If the seed data cannot be assumed to have full entropy (e.g., the min-entropy of the sampled bits is less than 1), the evaluator shall ensure that the entropy documentation describes the method by which the TOE estimates the amount of entropy that has been accumulated to ensure that sufficient data is collected and any conditioning that the TSF applies to the output data to create a seed of sufficient size with full entropy.
              </h:p>
              <TSS/>
              <Guidance/>
              <Tests/>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>
        
        <f-component cc-id="fcs_rbg.4" name="Random Bit Generation (Internal Seeding - Multiple Sources)" status="sel-based">
          <depends on="internal-seeds"/>
          <f-element id="fel-rbg-seed-int-mult">
            <title>
              The TSF shall be able to seed the RBG using <selectables>
                <selectable><assignable>number</assignable> TSF software-based noise source(s)</selectable>
                <selectable><assignable>number</assignable> TSF hardware-based noise source(s)</selectable>
              </selectables>.
            </title>
            <note role="application">
              This requirement is claimed when a DRBG is seeded with entropy from multiple noise sources that are within the TOE boundary. 
              FCS_RBG.5 defines the mechanism by which these sources are combined to ensure sufficient minimum entropy.
            </note>
            <aactivity>
              <h:p>
                The evaluator shall examine the entropy documentation required by FCS_RBG.1.2 to verify that it identifies, for each DRBG function implemented by the TOE, each TSF noise source used to seed the TOE's DRBG. The evaluator shall verify that this includes the amount of sampled data and the min-entropy rate of the sampled data from each data source.
              </h:p>
              <TSS/>
              <Guidance/>
              <Tests/>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>
        
        <f-component cc-id="fcs_rbg.5" name="Random Bit Generation (Combining Noise Sources)" status="sel-based">
          <depends on="internal-seeds"/>
          <f-element id="fel-rbg-comb">
            <title>
              The TSF shall <assignable>combining operation</assignable> <selectables>
                <selectable>output from TSF noise source(s)</selectable>
                <selectable>input from TSF interface(s) for seeding</selectable></selectables>
              to create the entropy input into the derivation function as defined in <assignable>list of standards</assignable>, resulting
              in a minimum of <assignable>number of bits</assignable> bits of min-entropy.              
            </title>        
            <aactivity>
              <h:p>
                Using the entropy sources specified in FCS_RBG.4, the evaluator shall examine the entropy documentation required by FCS_RBG.1.2 to verify that it describes the method by which the various entropy sources are combined into a single seed. This should include an estimation of the rate at which each noise source outputs data and whether this is dependent on any system-specific factors so that each source's relative contribution to the overall entropy is understood. The evaluator shall verify that the resulting combination of sampled data and the min-entropy rate of the sampled data is described in sufficient detail to determine that sufficient entropy can be made available for the highest strength keys that the TSF can generate (e.g., 256 bits). If the seed data cannot be assumed to have full entropy (e.g., the min-entropy of the sampled bits is less than 1), the evaluator shall ensure that the entropy documentation describes the method by which the TOE estimates the amount of entropy that has been accumulated to ensure that sufficient data is collected and any conditioning that the TSF applies to the output data to create a seed of sufficient size with full entropy.
              </h:p>
              <TSS/>
              <Guidance/>
              <Tests/>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>  
        
        <f-component cc-id="fcs_rbg.6" name="Random Bit Generation Service" status="optional">
          <f-element id="fel-external-service">
            <title>
              The TSF shall provide a <selectables>
                <selectable>hardware</selectable>
                <selectable>software</selectable>
                <selectable><assignable>other interface type</assignable></selectable>
              </selectables> 
              interface to make the RBG output, as specified in FCS_RBG.1 Random bit generation (RBG),
              available as a service to entities outside of the TOE.
            </title>        
            <note role="application">This SFR is defined for the case where an operating system includes a mechanism for </note>
          <aactivity>              
            <TSS>
              The evaluator shall verify that the TSS identifies the interface that the TSF makes available for calling applications to obtain DRBG output. 
            </TSS>
            <Guidance>The evaluator shall verify that the guidance documentation includes an API specification for the random bit generation service such that it is clear how a calling application is able to obtain DRBG output from the TSF.</Guidance>
            <Tests>The evaluator shall invoke the API specified by the guidance documentation to determine that the TSF provides DRBG output upon proper invocation of the API.</Tests>
          </aactivity>
          </f-element>
          <audit-event/>
        </f-component>    
        

	<ext-comp-def fam-id="FCS_STO_EXT" title="Storage of Sensitive Data">
	  <fam-behavior>Components in this family describe the requirements for storing sensitive data (such as cryptographic
	    keys). This is a new family defined for the FCS class.</fam-behavior>
	</ext-comp-def>
        
        <f-component cc-id="fcs_sto_ext.1" name="Storage of Sensitive Data">
          <comp-lev> requires the TSF to include a mechanism that encrypts
            sensitive data and that can be invoked by third-party applications in addition to internal TSF usage.</comp-lev>
          <management>There are no management activities foreseen.</management>
          <audit>There are no auditable events foreseen.</audit>
          <dependencies>
            <no-link>FCS_COP.1</no-link> Cryptographic Operation
          </dependencies>
          
          <f-element id="fel-store-sdata">
            <title>
	      The TSF shall implement functionality to encrypt sensitive data
	      stored in non-volatile storage and provide interfaces to applications to invoke this functionality.
            </title>
	    <note role="application">Sensitive data will be identified in the TSS by the ST
	    author, and minimally includes credentials and keys.  The interface for invoking the
	    functionality could take a variety of forms: it could consist of an API,
	    or simply well-documented conventions for accessing credentials stored as files.
	    </note>
            <aactivity>
	      <TSS>
	      The evaluator shall check the TSS to ensure that it lists all persistent
              sensitive data for which the OS provides a storage capability.  For each of these
              items, the evaluator shall confirm that the TSS lists for what purpose it can be used,
              and how it is stored.
	      The evaluator shall confirm that cryptographic operations used to protect the data occur as specified in FCS_COP.1/ENCRYPT.
	      </TSS>
	      <Guidance>
		The evaluator shall consult the developer documentation to verify that instructions
		exists on applications should securely store credentials.
	      </Guidance>
        <Tests>TBD</Tests>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>

      </section>
      <section title="User Data Protection (FDP)" id="fdp">
	<ext-comp-def title="Access Controls for Protecting User Data" fam-id="FDP_ACF_EXT">
	  <fam-behavior>This family specifies methods for ensuring that data stored or maintained by the TSF cannot be accessed
	    without authorization. This family differs from FDP_ACF in CC Part 2 by defining technology-specific
	    details for the implementation of these functions.</fam-behavior>
	</ext-comp-def>
        <f-component cc-id="fdp_acf_ext.1" name="Access Controls for Protecting User Data">
          
          <comp-lev> requires the TSF to prevent unprivileged users
            from accessing operating system objects owned by other users.</comp-lev>
          <management>The following actions could be considered for the management functions in FMT:
          <h:ul>
            <h:li>Configuration of object ownership and allowed access</h:li>
          </h:ul>
          </management>
          <audit>The following actions should be auditable if FAU_GEN Security audit data generation is included in the PP or ST:
          <h:ul>
            <h:li>Successful and unsuccessful attempts to access data</h:li>
          </h:ul></audit>
          <dependencies>No dependencies.</dependencies>
          
          <f-element id="fel-protect-user-data">
            <title>
	      The TSF shall implement access controls which can prohibit unprivileged users from
              accessing files and directories owned by other users.
            </title>
	    <note role="application">
	      Effective protection by access controls may also depend
	      upon system configuration.  This requirement is designed to ensure
	      that, for example, files and directories owned by one user in a multi user system
	      can be protected from access by another user in that system.
            </note>
            <aactivity>
	      <TSS>
	      <h:p>
	      The evaluator shall confirm that the TSS comprehensively describes the access control policy enforced by the OS.
              The description must include the rules by which accesses to particular files and directories
	      are determined for particular users.
              The evaluator shall inspect the TSS to ensure that it describes the access control rules
              in such detail that given any possible scenario between a user and a file governed by
              the OS the access control decision is unambiguous.
	      </h:p>
	      </TSS>
        <Guidance>TBD</Guidance>
	      <Tests>
	      <h:p>
              The evaluator shall create two new standard user accounts on the system and conduct the following tests:
              <testlist>
                <test>
                  The evaluator shall authenticate to the system as the first user and create a file within that user's home directory.
		  The evaluator shall then log off the system and log in as the second user.
		  The evaluator shall then attempt to read the file created in the first user's home directory.
		  The evaluator shall ensure that the read attempt is denied.
                </test>
                <test>
                  The evaluator shall authenticate to the system as the first user and create a file within that user's home directory.
		  The evaluator shall then log off the system and log in as the second user.
		  The evaluator shall then attempt to modify the file created in the first user's home directory.
		  The evaluator shall ensure that the modification is denied.
                </test>
                <test>
                  The evaluator shall authenticate to the system as the first user and create a file within that user's user directory.
		  The evaluator shall then log off the system and log in as the second user.
		  The evaluator shall then attempt to delete the file created in the first user's home directory.
		  The evaluator shall ensure that the deletion is denied.
                </test>
                <test>
                  The evaluator shall authenticate to the system as the first user.
		  The evaluator shall attempt to create a file in the second user's home directory.
                  The evaluator shall ensure that the creation of the file is denied.
                </test>
                <test>
                  The evaluator shall authenticate to the system as the first user and attempt to modify the file created in the first user's home directory.
                  The evaluator shall ensure that the modification of the file is accepted.
                </test>
                <test>
                  The evaluator shall authenticate to the system as the first user and attempt to delete the file created in the first user's directory.
                  The evaluator shall ensure that the deletion of the file is accepted.
                </test>
              </testlist>
	      </h:p>
	      </Tests>
            </aactivity>
          </f-element>
          <audit-event>
            <audit-event-descr>Successful and unsuccessful attempts to access data</audit-event-descr>
          </audit-event>
        </f-component>
	  
        <ext-comp-def fam-id="FDP_IFC_EXT" title="Information Flow Control">
          <fam-behavior>This family defines the ability of the TSF to control information flows by ensuring that it is possible to
            use IPsec to encapsulate all traffic bound to or from the TOE. This family differs from FDP_IFC in CC Part
            2 by defining technology-specific details for the implementation of these functions.</fam-behavior>
	</ext-comp-def>

        <f-component cc-id="fdp_ifc_ext.1" name="Information Flow Control" status="sel-based">
	  <depends on="s-itc-ipsec"/>
	  <depends><optional/></depends>
          
          <comp-lev> requires the TSF to provide the ability to protect IP traffic
            using IPsec.</comp-lev>
          <management>There are no management activities foreseen.</management>
          <audit>There are no auditable events foreseen.</audit>
          <dependencies>
            <no-link>FTP_ITC_EXT.1</no-link> Trusted Channel Communication
          </dependencies>
          
          <f-element id="fel-dit-vpn">
            <title> The OS shall
	    <selectables linebreak="yes">
              <selectable>provide an interface which allows a VPN client to protect all IP traffic using IPsec</selectable>
              <selectable id="s-provides-vpnclient">provide a VPN client that can protect all IP traffic using IPsec</selectable>
            </selectables>
	    with the exception of IP traffic required to establish the VPN connection
	    and
	    <selectables>
	      <selectable>signed updates directly from the OS vendor</selectable>
	      <selectable exclusive="yes">no other traffic</selectable>
	    </selectables>
	    .
            </title>
	    <note role="application">
	      <h:p>
		Typically, the traffic required to establish the VPN connection is referred to as "Control Plane" traffic,
		whereas the IP traffic protected by the IPsec VPN is referred to as "Data Plane" traffic.
		All Data Plane traffic must flow through the VPN connection and the VPN must not split-tunnel.
	      </h:p>
	      <h:p>
		  If no native IPsec client is validated or third-party VPN clients may
		  also implement the required Information Flow Control, the first
		  option must be selected. In these cases, the TOE provides an API to
		  third-party VPN clients that allows them to configure the TOE's
		  network stack to perform the required Information Flow Control.
	      </h:p>
	      <h:p>
		If the TSF implements a native VPN client, then the ST author must select 
		<xref to="s-provides-vpnclient"/> and includes the PP-Module for VPN Client
		as part of the ST.
		  <!-- If the native VPN client is to be validated  -->
		  <!-- (<xref to="s-itc-ipsec"/> is selected in FTP_ITC_EXT.1.1  -->
		  <!-- and the TSF is validated against the  -->
		  <!-- <h:i>Module for Virtual Private Network (VPN) Clients</h:i>), -->
		  <!-- the ST author will also -->
		  <!-- include FDP_IFC_EXT.1 from this package. -->
	      </h:p>
	      <h:p>
		  In the future, this requirement may also make a distinction between the
		  current requirement (which requires that when the IPsec trusted
		  channel is enabled, all traffic from the TSF is routed through that
		  channel) and having an option to force the establishment of an IPsec
		  trusted channel to allow any communication by the TSF.
	      </h:p>
	    </note>
            <aactivity>
	      <TSS>
	      The evaluator shall verify that the TSS section of the ST describes the
              routing of IP traffic when a VPN client is enabled.
	      The evaluator shall ensure that the description indicates which traffic does not go
              through the VPN and which traffic does, and that a configuration exists for each
              in which only the traffic identified by the ST author as necessary
              for establishing the VPN connection (IKE traffic and perhaps HTTPS or DNS traffic) is
              not encapsulated by the VPN protocol (IPsec).
	      </TSS>
        <Guidance>TBD</Guidance>
	      <Tests>
	      The evaluator shall perform the following test:
	      <testlist><test><steplist>
		<step>The evaluator shall enable a network connection.
		  The evaluator shall sniff packets while performing running applications that use the network such as web browsers and email clients.
		  The evaluator shall verify that the sniffer captures the traffic generated by these actions, turn off the sniffing tool, and save the session data.
		  </step>
		  <step>
                  The evaluator shall configure an IPsec VPN client that supports the routing specified in this requirement.
		  The evaluator shall turn on the sniffing tool, establish the VPN connection, and perform the same actions with the device as performed in the first step.
		  The evaluator shall verify that the sniffing tool captures traffic generated by these actions, turn off the sniffing tool, and save the session data.
                  </step>
                  <step>
		  The evaluator shall examine the traffic from both step one and step two to verify that all non-excepted Data Plane traffic in Step 2 is encapsulated by IPsec.
		  The evaluator shall examine the Security Parameter Index (SPI) value present in the encapsulated packets captured in Step 2 from the TOE to the Gateway and will verify this value is the same for all actions used to generate traffic through the VPN.
		  Note that it is expected that the SPI value for packets from the Gateway to the TOE is different than the SPI value for packets from the TOE to the Gateway.
		  </step>
		  <step>
                  The evaluator shall perform a ping on the TOE host on the local network and verify that no packets sent are captured with the sniffer.
		  The evaluator shall attempt to send packets to the TOE outside the VPN tunnel (i.e. not through the VPN gateway), including from the local network, and verify that the TOE discards them.
		  </step>
	      </steplist></test></testlist>
	      </Tests>
	    </aactivity>
          </f-element>
          <audit-event/>
        </f-component>
      </section>
      
      
      <section title="Identification and Authentication (FIA)" id="fia">
        <f-component cc-id="fia_afl.1" name="Authentication Failure Handling">
          <f-element id="fel-id-and-auth">
            <title>
            The TSF shall detect when
            <selectables linebreak="yes">
              <selectable><assignable>positive integer number</assignable></selectable>
              <selectable>an administrator configurable positive integer within <assignable>range of acceptable values</assignable></selectable>
            </selectables>
            unsuccessful authentication attempts occur related to
	    <h:b>
	      events with
            <selectables linebreak="yes">
              <selectable>authentication based on user name and password</selectable>
              <selectable>authentication based on user name and a PIN that
	      releases an asymmetric key stored in OE-protected storage</selectable>
              <selectable>authentication based on X.509 certificates</selectable>
            </selectables>.
	    </h:b>
	    </title>
        <note role="application">
          Selections in FIA_AFL.1 and FIA_UAU.5 must match.
            </note>
            <aactivity>
              <TSS>TBD</TSS>
              <Guidance>TBD</Guidance>
	      <Tests>
		  The evaluator shall set an administrator-configurable threshold for
		  failed attempts, or note the ST-specified assignment. The evaluator
		  will then (per selection) repeatedly attempt to authenticate with an
		  incorrect password, PIN, or certificate until the number of attempts
		  reaches the threshold.  Note that the authentication attempts and
		  lockouts must also be logged as specified in FAU_GEN.1.
	      </Tests>
	    </aactivity>
          </f-element>
          <f-element id="fel-bad-attempts">
            <title>
	      When the defined number of unsuccessful authentication attempts <h:b>for an
	      account</h:b> has been [<h:i>met</h:i>], The TSF shall:
	      <h:b>
	      <selectables>
		<selectable>Account Lockout</selectable>
		<selectable>Account Disablement</selectable>
		<selectable>Mandatory Credential Reset</selectable>
		<selectable><assignable>list of actions</assignable></selectable>
	      </selectables>
	      </h:b>.
            </title>
            <note role="application">
            	The action to be taken will be populated in the assignment of the ST and defined
            	in the administrator guidance.
            </note>
            <aactivity>
	      <Tests>
              <testlist>
                <test>
                  [conditional, to be performed if "authentication based on user name and password" is selected in FIA_AFL.1
                  and FIA_UAU.5]: The evaluator shall attempt to authenticate repeatedly to the system with a
                  known bad password. Once the defined number of failed authentication attempts has been
                  reached the evaluator shall ensure that the account that was being used for testing
                  has had the actions detailed in the assignment list above applied to it. The evaluator shall ensure that
                  an event has been logged to the security event log detailing that the account has had these actions applied.
                </test>
                <test>
                  [conditional, to be performed if "authentication based on user name and a PIN that releases an                  
                  asymmetric key stored in OE-protected storage" is selected in FIA_AFL.1 and FIA_UAU.5]: The 
                  evaluator shall attempt to authenticate repeatedly to the system with a
                  known bad PIN. Once the defined number of failed authentication attempts has been
                  reached the evaluator shall ensure that the account that was being used for testing
                  has had the actions detailed in the assignment list above applied to it. The evaluator shall ensure that
                  an event has been logged to the security event log detailing that the account has had these actions applied.
                </test>
                <test>
                  [conditional, to be performed if "authentication based on X.509 certificates" is selected in                  
                  FIA_AFL.1 and FIA_UAU.5]:The evaluator shall attempt to authenticate repeatedly to the system 
                  using a known bad certificate.
                  Once the defined number of failed authentication attempts has been
                  reached the evaluator shall ensure that the account that was being used for testing
                  has had the actions detailed in the assignment list above applied to it. The evaluator shall ensure that
                  an event has been logged to the security event log detailing that the account has had these actions applied.
                </test>
              </testlist>
              </Tests>
	    </aactivity>
          </f-element>
          <audit-event/>
        </f-component>
        
        <f-component cc-id="fia_uau.5" name="Multiple Authentication Mechanisms">
          <f-element id="fel-mult-auth">
            <title>
	      The <refinement>OS</refinement> shall provide 
	      <h:b><selectables linebreak="yes">
		<selectable id="s-pass">authentication based on username and password</selectable>
		<selectable id="s-pin">authentication based on username and a PIN that releases an asymmetric key stored
		in OE-protected storage</selectable>
		<selectable id="s-otp">combination of authentication based on user name, password, and time-based one-time password</selectable>
		<selectable id="s-x509-auth">authentication based on X.509 certificates</selectable>
		<selectable id="s-uau-ssh">for use in SSH only, <snip>SSH public key-based authentication</snip> as specified by the <xref to="pkg-ssh"/></selectable>
	      </selectables>
	      </h:b>
	      to support user authentication.
            </title>
            <note role="application">
	      <h:p>
	        The <xref to="s-uau-ssh"/> selection can only be included, and must be included, if
		    FTP_ITC_EXT.1.1 selects <xref to="s-ftp_ssh"/>
	      </h:p><h:p>
	        If "authentication based on X.509 certificates" is claimed, the TOE must claim conformance to <xref to="pkg-x509"/>.
	      </h:p>.
	    </note>
            <aactivity>
	      <Tests>
		<h:div>
		  <depends on="s-pass"/>
		  <!-- If <xref to="s-pass"/> is selected, the evaluator shall configure the OS with a -->
		  <!-- known user name and password and conduct the following tests: -->
		  <testlist>
                    <test>
		      The evaluator shall attempt to authenticate to the OS using
		      the known user name and password. The evaluator shall ensure
		      that the authentication attempt is successful.
                    </test>
                    <test>
		      The evaluator shall attempt to authenticate to the OS using
		      the known user name but an incorrect password. The evaluator
		      will ensure that the authentication attempt is unsuccessful.
                    </test>
		  </testlist>
		</h:div>
		<h:div>
		  <depends on="s-pin"/>
		  The evaluator shall examine the TSS for guidance on supported
		  protected storage and will then configure the TOE or OE to establish a PIN
		  which enables release of the asymmetric key from the protected storage (such as a TPM, a hardware token, or
		  isolated execution environment) with which the
		  OS can interface.  The evaluator shall then conduct the following tests:
		  <testlist>
		    <test>
		      The evaluator shall attempt to  authenticate to the OS using the known user name and PIN.
		      The evaluator shall ensure that the authentication attempt is successful.
		    </test>
		    <test>
		      The evaluator shall attempt to  authenticate to the OS using the known user name but an incorrect
		      PIN. The evaluator shall ensure that the authentication attempt is
		      unsuccessful.
		    </test>
		  </testlist>
		</h:div>
		<h:div><depends on="s-otp"/>
		  The evaluator shall configure the OS to authentication to authenticate to the OS using
		  a username, password, and one-time password mechanism.
		  The evaluator shall then perform the following tests.
		  <testlist>
		    <test>
	  	      The evaluator shall attempt to authenticate using a valid username, valid password, and valid one-time password.
		      The evaluator shall ensure that the authentication attempt is successful.
		    </test>
		    <test>
	  	      The evaluator shall attempt to authenticate using a valid username, invalid password, and valid one-time password.
		      The evaluator shall ensure that the authentication attempt fails.
		    </test>
		    <test>
	  	      The evaluator shall attempt to authenticate using a valid username, valid password, and invalid one-time password.
		      The evaluator shall ensure that the authentication attempt fails.
		    </test>
		    <test>
	  	      The evaluator shall attempt to authenticate using a valid username, invalid password, and invalid one-time password.
		      The evaluator shall ensure that the authentication attempt fails.
		    </test>
		  </testlist>
		</h:div>

		<h:p>
		  Authentication mechanisms related to <xref to="s-x509-auth"/> are tested under FIA_X509_EXT.1 as defined in the <xref to="pkg-x509"/>
		  and <xref to="s-uau-ssh"/> are tested in the <xref to="pkg-ssh"/>.
		</h:p>
              </Tests>
	    </aactivity>
          </f-element>
           <f-element id="fel-auth-how">
            <title>
The TSF shall authenticate any user's claimed identity according to the
              <assignable>
              	rules describing how the multiple authentication
		mechanisms provide authentication
              </assignable>.
            </title>

              <aactivity>
		<TSS>
		  The evaluator shall ensure that the TSS describes
		  the rules as to how each authentication mechanism specified in
		  FIA_UAU.5.1 is implemented and used.
		  Example rules are how the authentication mechanism authenticates the user
		  (i.e. how does the TSF verify that the correct password or authentication
		  factor is used),
		  the result of a successful authentication
		  (i.e. is the user input used to derive or unlock a key) and which
		  authentication mechanism can be used at which authentication factor
		  interfaces (i.e. if there are times, for example, after a reboot,
		  that only specific authentication mechanisms can be used).
		  Rules regarding how the authentication factors interact in terms of
		  unsuccessful authentication are covered in FIA_AFL.1.
		</TSS>
	      <Guidance>
	      <h:p>
		The evaluator shall verify that
		configuration guidance for each authentication mechanism is
		addressed in the AGD guidance.
	      </h:p>
	      </Guidance>
	      <Tests>
		
              <!-- <testlist> -->
              <!--   <test>For each -->
	      <!-- 	authentication mechanism selected, the evaluator shall enable that -->
	      <!-- 	mechanism and verify that it can be used to authenticate the user at -->
	      <!-- 	the specified authentication factor interfaces. </test> -->
	      <!-- 	<test> -->
	      <h:p>
		  For each authentication mechanism rule, the evaluator shall ensure that
		  the authentication mechanism(s) behave as documented in the TSS.
	      </h:p>
	      <!-- 	</test> -->
              <!-- </testlist> -->
	      </Tests>
          </aactivity>
          </f-element>
          <audit-event/>
        </f-component>

<!--
        <ext-comp-def fam-id="FIA_X509_EXT" title="Authentication Using X.509 Certificates">
          <fam-behavior>This family defines the behavior, management, and use of X.509 certificates for functions to be
            performed by the TSF. Components in this family require validation of certificates according to a
            specified set of rules and use of certificates for authentication for protocols and integrity verification.
            This is a new family defined for the FIA class.</fam-behavior>
	</ext-comp-def>

	<f-component cc-id="fia_x509_ext.1" id="fc-cert-val" name="X.509 Certificate Validation">
	  
	  <comp-lev> requires the TSF to check and validate certificates in
	    accordance with the RFCs and rules specified in the component.</comp-lev>
	  <management>The following actions could be considered for the management functions in FMT:
	    <h:ul>
	      <h:li>Import and removal of X.509v3 certificates</h:li>
	      <h:li>Approval of import and removal of X.509v3 certificates</h:li>
	    </h:ul>
	  </management>
	  <audit>The following actions should be auditable if FAU_GEN Security audit data generation is included in the PP or ST:
	    <h:ul>
	      <h:li>Failure of certificate validation</h:li>	      
	    </h:ul>
	  </audit>
	  <dependencies>
	    <no-link>FCS_COP.1</no-link> Cryptographic Operation<h:br/>
	    <no-link>FPT_STM.1</no-link> Reliable Time Stamps
	  </dependencies>
	  
          <f-element id="fel-cert-val">
            <title>
	      The OS shall implement functionality to validate certificates in accordance with the following rules:
	      <h:ul>
		<h:li>RFC 5280 certificate validation and certificate path validation</h:li>
		<h:li>The certificate path must terminate with a trusted CA certificate</h:li>
    <h:li>The OS shall validate a certificate path by ensuring the presence of the 
	        basicConstraints extension, that the CA flag is set to TRUE for all CA certificates,
          and that any path constraints are met.</h:li>
    <h:li>The TSF shall validate that any CA certificate includes "Certificate Signing" as a purpose the key usage field</h:li>
    <h:li>The OS shall validate the revocation status of the certificate using 
		<selectables>
		  <selectable>OCSP as specified in RFC 6960</selectable>
		  <selectable>CRL as specified in RFC 8603</selectable>
		  <selectable>an OCSP TLS Status Request Extension (OCSP stapling) as specified in RFC 6066</selectable>
		  <selectable> OCSP TLS Multi-Certificate Status Request Extension (i.e., OCSP Multi-Stapling) as specified in RFC 6961</selectable>
		</selectables>
		with
		<selectables>
		  <selectable>no exceptions</selectable>
		  <selectable id="s-revoc-exceptions"><readable>exceptional use cases</readable><assignable>exceptional use cases and alternative status check</assignable></selectable>
		</selectables></h:li>
		<h:li>The OS shall validate the extendedKeyUsage field according to the following rules:
		<h:ul>
		  <h:li>Certificates used for trusted updates and executable code integrity verification shall have the Code Signing Purpose (id-kp 3 with OID 1.3.6.1.5.5.7.3.3) in the extendedKeyUsage field.</h:li>
		  <h:li>Server certificates presented for TLS shall have the Server Authentication purpose (id-kp 1 with OID 1.3.6.1.5.5.7.3.1) in the extendedKeyUsage field.</h:li>	
		  <h:li>Client certificates presented for TLS shall have the Client Authentication purpose (id-kp 2 with OID 1.3.6.1.5.5.7.3.2) in the EKU field.</h:li>
		  <h:li>S/MIME certificates presented for email encryption and signature shall have the Email Protection purpose (id-kp 4 with OID 1.3.6.1.5.5.7.3.4) in the EKU field.</h:li>
		  <h:li>OCSP certificates presented for OCSP responses shall have the OCSP Signing Purpose (id-kp 9 with OID 1.3.6.1.5.5.7.3.9) in the EKU field.</h:li>
		  <h:li>Server certificates presented for EST shall have the CMC Registration Authority (RA) purpose (id-kp-cmcRA with OID 1.3.6.1.5.5.7.3.28) in the EKU field. (conditional)</h:li>
		</h:ul>
		</h:li>
	      </h:ul>				
	      .
            </title>
            <note role="application">
	      <h:p>
		FIA_X509_EXT.1.1 lists the rules for validating certificates.
		The ST author will select whether revocation status is verified using OCSP or CRLs.
		FIA_X509_EXT.2 requires that certificates are used for HTTPS, TLS, and DTLS;
		this use requires that the <h:i>extendedKeyUsage</h:i> rules are verified.
	      </h:p>
	      <h:p>
		OCSP stapling and OCSP multi-stapling only support TLS server certificate validation. If other certificate types are validated, either OCSP or CRL should be claimed.
		If OCSP is not supported the EKU provision for checking the OCSP Signing purpose is met by default.
	      </h:p>
	      <h:p>
		If the OS receives server certificates presented for EST, then the ST author should make the selection for EST in the SFR.
	      </h:p>

	      <h:p>
		If the OS cannot perform revocation checking in accordance with one of the specified revocation methods,
		then the specific use cases where revocation checking is not possible must be described, along with any alternative to certificate status checking for each use case.
		For example, for the use case "update functions when network connections are not available, notice of a compromised certificate disables automatic updates."
	      </h:p>
	      
            </note>
            <aactivity>
	      <TSS>
		<h:p>
		The evaluator shall ensure the TSS describes where the
		check of validity of the certificates takes place.
		The evaluator ensures the TSS also provides a description of the certificate path validation algorithm.
		</h:p>
		<h:p>
		  If there are exceptional use cases where the OS cannot perform revocation checking in accordance with
		  at least one of the revocation methods, the evaluator shall ensure the TSS describes each revocation
		  checking exception use case and, for each exception, the alternate functionality the TOE implements 
		  to determine the status of the certificate and disable functionality dependent on the validity of 
		  the certificate.
		</h:p>
	      </TSS>
	      <Tests> 
The tests described must be performed in conjunction with the other certificate services evaluation activities, including the functions in FIA_X509_EXT.2.1.
The evaluator shall create a chain of at least four certificates: the node certificate to be tested, two Intermediate CAs, and the self-signed Root CA.

	<testlist>
<test> The evaluator shall demonstrate that validating a certificate without a valid certification path results in the function failing, for each of the following reasons, in turn:
by establishing a certificate path in which one of the issuing certificates is not a CA certificate,
by omitting the basicConstraints field in one of the issuing certificates,
by setting the basicConstraints field in an issuing certificate to have CA=False,
by omitting the CA signing bit of the key usage field in an issuing certificate, and
by setting the path length field of a valid CA field to a value strictly less than the certificate path.
The evaluator shall then establish a valid certificate path consisting of valid CA certificates, and demonstrate that the function succeeds.
The evaluator shall then remove trust in one of the CA certificates, and show that the function fails.
</test>
<test> The evaluator shall demonstrate that validating an expired certificate results in the function failing.</test>
<test> [Conditional, to be performed for use cases identified in exceptions that cannot be configured to allow revocation checking]
The evaluator shall test that the OS can properly handle revoked certificates - conditional on whether CRL, OCSP, OCSP stapling, or OCSP multi-stapling is selected; if multiple methods are selected, then a test will be performed for each method.
The evaluator shall test revocation of the node certificate and revocation of the intermediate CA certificate (i.e. the intermediate CA certificate should be revoked by the root CA).
If OCSP stapling per RFC 6066 is the only supported revocation method, testing revocation of the intermediate CA certificate is omitted.
The evaluator shall ensure that a valid certificate is used, and that the validation function succeeds.
The evaluator then attempts the test with a certificate that has been revoked (for each method chosen in the selection) to ensure when the certificate is no longer valid that the validation function fails.
If the exceptions are configurable, the evaluator shall attempt to configure the exceptions to allow revocation checking for each function indicated in FIA_X509_EXT.2.</test>
<test> If any OCSP option is selected, the evaluator shall configure the OCSP server or use a man-in-the-middle tool to present a certificate that does not have the OCSP signing purpose and verify that validation of the OCSP response fails.
If CRL is selected, the evaluator shall configure the CA to sign a CRL with a certificate that does not have the cRLsign key usage bit set and verify that validation of the CRL fails.</test>
<test> The evaluator shall modify any byte in the first eight bytes of the certificate and demonstrate that the certificate fails to validate.
(The certificate will fail to parse correctly.)</test>
<test> The evaluator shall modify any byte in the last eight bytes of the certificate and demonstrate that the certificate fails to validate.
(The signature on the certificate will not validate.)</test>
<test> The evaluator shall modify any byte in the public key of the certificate and demonstrate that the certificate fails to validate.
(The signature of the certificate will not validate.)</test>
<test>
      <depends on="s-ec-certs"/>
      <depends on="sel-rfc6187"><external-doc ref="pkg-ssh"/></depends>
      <testlist><test id="t-ecdsa-valid">
	The evaluator shall establish a valid, trusted certificate chain consisting of an EC leaf certificate, an EC Intermediate CA certificate not designated as a trust anchor, and an EC certificate designated as a trusted anchor, where the elliptic curve parameters are specified as a named curve.
    The evaluator shall confirm that the TOE validates the certificate chain.
  </test>
  <test>
      The evaluator shall replace the intermediate certificate in the certificate chain for <xref to="t-ecdsa-valid"/> with a modified certificate, where the modified intermediate CA has a public key information field where the EC parameters uses an explicit format version of the Elliptic Curve parameters in the public key information field of the intermediate CA certificate from <xref to="t-ecdsa-valid"/>, and the modified Intermediate CA certificate is signed by the trusted EC root CA, but having no other changes.
The evaluator shall confirm the TOE treats the certificate as invalid.
      </test></testlist>
</test>
    <test>
    <depends on="s-revoc-exceptions"/>
    For each exceptional use case for revocation checking described in the ST, the evaluator shall attempt to establish the conditions of the use case, designate the certificate as invalid and perform the function relying on the certificate. The evaluator shall observe that the alternate revocation checking mechanism successfully prevents performance of the function.
</test>
</testlist>

<h:div>
  [Conditional, to be performed if "authentication based on X.509 certificates" is selected in FIA_UAU.5]:
  The evaluator shall generate an X.509v3 certificate for a user with the Client Authentication Extended Key Usage field set.
  The evaluator shall provision the OS for authentication with the X.509v3 certificate.
  The evaluator shall ensure that the certificates are validated by the OS as per
  FIA_X509_EXT.1.1 and then conduct the following two tests:
  <testlist>
    <test>
      The evaluator shall attempt to authenticate to the OS using the X.509v3 certificate.
      The evaluator shall ensure that the authentication attempt is successful.
    </test>
    <test>
      The evaluator shall generate a second certificate identical to
      the first except for the public key and any values derived
      from the public key.
      The evaluator shall attempt to authenticate to the OS with this certificate.
      The evaluator shall ensure that the authentication attempt is unsuccessful.
    </test>
  </testlist>
</h:div>


</Tests>

			  
			  </aactivity>
          </f-element>
          <f-element id="fel-cacert">
            <title>
The OS shall only treat a certificate as a CA certificate if the
basicConstraints extension is present and the CA flag is set to TRUE.
	    </title>
            <note role="application"> This requirement applies to certificates that are used and
              processed by the TSF and restricts the certificates that may be
              added as trusted CA certificates. </note>
            <aactivity>
	      <Tests>
The tests described must be performed in conjunction with the other
certificate services evaluation activities, including the functions in
FIA_X509_EXT.2.1.
The evaluator shall create a chain of at least four certificates:
the node certificate to be tested, two Intermediate CAs, and the
              self-signed Root CA.
<testlist>
  <test> The evaluator shall construct a certificate path, such that the certificate
  of the CA issuing the OS&apos;s certificate does not contain the
  <h:i>basicConstraints</h:i> extension. The validation of the certificate path fails. </test>
  <test> The evaluator shall construct a certificate path, such that the certificate
  of the CA issuing the OS&apos;s certificate has the CA flag in the
  <h:i>basicConstraints</h:i> extension not set. The validation of the certificate path fails. </test>
  <test> The evaluator shall construct a certificate path, such that the certificate
  of the CA issuing the OS&apos;s certificate has the CA flag in the
  <h:i>basicConstraints</h:i> extension set to TRUE. The validation of the certificate path
  succeeds. </test>
</testlist>
              </Tests>
	    </aactivity>
          </f-element>
        </f-component>
        <f-component cc-id="fia_x509_ext.2" name="X.509 Certificate Authentication">
          
          <comp-lev> requires the TSF to use certificates for authentication
            functions.</comp-lev>
          <management>The following actions could be considered for the management functions in FMT:
            <h:ul>
              <h:li>Import and removal of X.509v3 certificates</h:li>
              <h:li>Approval of import and removal of X.509v3 certificates</h:li>
            </h:ul>
          </management>
          <audit>The following actions should be auditable if FAU_GEN Security audit data generation is included in the PP or ST:
            <h:ul>
              <h:li>Success or failure of authentication attempt</h:li>	      
            </h:ul>
          </audit>
          <dependencies>
            <no-link>FIA_X509_EXT.1</no-link> X.509 Certificate Validation
          </dependencies>
          
          <f-element id="fel-cert-auth">
            <title> The OS shall use X.509v3 certificates as defined by RFC 5280 to support
              authentication for
			  <selectables>
			  <selectable>TLS</selectable>
			  <selectable>DTLS</selectable>
			  <selectable>HTTPS</selectable>
			  <selectable><assignable>other protocols</assignable></selectable>
			  </selectables>
			  connections.
	    </title>
            <aactivity>
	      <Tests>
	      <h:p>
		The evaluator shall acquire or develop an application that uses the selected OS
		mechanism with an X.509v3 certificate. The evaluator shall then run the
		application and ensure that the provided certificate is used to authenticate the
		connection.
	      </h:p>
	      <h:p>
		The evaluator shall repeat the activity for all selections listed.
	      </h:p>
	      </Tests>
	    </aactivity>
          </f-element>
        </f-component>
        
        -->
        
      </section>
      
      <section title="Security Management (FMT)" id="fmt">
        <ext-comp-def fam-id="FMT_MOF_EXT" title="Management of Functions Behavior">
          <fam-behavior>This family defines the administrative privileges required to modify the behavior of the security
            functions that are defined specifically for operating systems.</fam-behavior>
	</ext-comp-def>
        <f-component cc-id="fmt_mof_ext.1" name="Management of Functions Behavior">
          
          <comp-lev> requires the TSF to define a set of
            management functions for the TOE and the privileges that are required to administer them.</comp-lev>
          <management>The following actions could be considered for the management functions in FMT:
          <h:ul>
            <h:li>Configuration of the roles that may manage the behavior of the TSF management functions</h:li>
          </h:ul>
          </management>
          <audit>The following actions should be auditable if FAU_GEN Security audit data generation is included in the
            PP or ST:
          <h:ul>
            <h:li>Successful or unsuccessful management of the behavior of any TOE functions</h:li>
            <h:li>Change in permissions to a set of users that have the ability to manage a given function</h:li>
          </h:ul>
          </audit>
          <dependencies>
            <no-link>FMT_SMF_EXT.1</no-link> Specification of Management Functions
          </dependencies>
          
	  <f-element id="fel-man-sec-func">
	    <title>
	      The TSF shall restrict the ability to perform the function indicated in the "Administrator" column in 
              FMT_SMF_EXT.1.1 to the administrator.
	    </title>
	    <note role="application">
        The functions with an "M" in the "Administrator" column must be restricted
        to (or overridden by) the administrator in the TOE.
	The functions with an "O" in the "Administrator" column may be restricted
        to (or overridden by) the administrator when implemented in the TOE at
        the discretion of the ST author.  For such functions, the ST author indicates this
        by replacing an "O" with an "M" in the ST.
	    </note>
            <aactivity>
	      <TSS>
	      <h:p>
		The evaluator shall verify that the TSS describes those management functions
		that are restricted to Administrators, including how the user is prevented
		from performing those functions, or not able to use any interfaces that
		allow access to that function.
	      </h:p>

	      </TSS>
              <Guidance>TBD</Guidance>
		<Tests>
		The evaluator shall also perform the following test.
  	      <testlist><test>For each function that is indicated as restricted to the administrator,
              the evaluation will perform the function as an administrator, as specified in the
              Operational Guidance, and determine that it has the expected effect as outlined by
              the Operational Guidance and the SFR.  The evaluator shall then perform the function
              (or otherwise attempt to access the function) as a non-administrator and observe
              that they are unable to invoke that functionality.
              </test></testlist>
		</Tests>
            </aactivity>
	  </f-element>
          <audit-event>
            <audit-event-descr>Successful or unsuccessful management of the behavior of any TOE
              functions</audit-event-descr>            
          </audit-event>
          <audit-event>
            <audit-event-descr>Change in permissions to a set of users that have the ability to
              manage a given function</audit-event-descr>
          </audit-event>
	</f-component>

        <ext-comp-def fam-id="FMT_SMF_EXT" title="Specification of Management Functions">
	  <fam-behavior>This family defines management functions that are defined specifically for operating systems.</fam-behavior>
	</ext-comp-def>
	<f-component cc-id="fmt_smf_ext.1" name="Specification of Management Functions">
	  
	  <comp-lev> requires the TSF to define a set of
	    management functions for the TOE.</comp-lev>
	  <management>There are no management functions foreseen.</management>
	  <audit>There are no auditable events foreseen.
	  </audit>
	  <dependencies>No dependencies.</dependencies>
	  
	  <f-element id="fel-manage-functions">
	    <title>
	      The TSF shall be capable of performing the following management functions:
	      <h:br/>
	      <management-function-set default="O">
		<manager cid="a">Administrator</manager>
		<manager cid="u">User</manager>
		<management-function><text>Enable/disable <selectables><selectable>screen lock</selectable><selectable>session timeout</selectable></selectables></text><M ref="a"/></management-function>
		<management-function><text>Configure <selectables><selectable>screen lock</selectable><selectable>session</selectable></selectables> inactivity timeout</text><M ref="a"/></management-function>
		<management-function><text>import keys/secrets into  the secure key storage</text></management-function>
		<management-function><text>Configure local audit storage capacity</text></management-function>
		<management-function><text>Configure minimum password length</text></management-function>
		<management-function><text>Configure minimum number of special characters in password</text></management-function>
		<management-function><text>Configure minimum number of numeric characters in password</text></management-function>
		<management-function><text>Configure minimum number of uppercase characters in password</text></management-function>
		<management-function><text>Configure minimum number of lowercase characters in password</text></management-function>
		<management-function><text>
Configure lockout policy for unsuccessful authentication attempts through
                  <selectables>
		    <selectable>timeouts between attempts</selectable>
		    <selectable>limiting number of attempts during a time period</selectable>
		  </selectables>
		</text></management-function>
		<management-function><text>Configure host-based firewall</text></management-function>
		<management-function><text>Configure name/address of directory server with which to bind</text></management-function>
		<management-function><text>Configure name/address of remote management server from which to receive management settings</text></management-function>
		<management-function><text>Configure name/address of audit/logging server to which to send audit/logging records</text></management-function>
		<management-function><text>Configure audit rules</text></management-function>
		<management-function><text>Configure name/address of network time server</text></management-function>
		<management-function><text>Enable/disable automatic software update</text></management-function>
		<management-function><text>Configure Wi-Fi interface</text></management-function>
		<management-function><text>Enable/disable Bluetooth interface</text></management-function>
		<management-function><text>Enable/disable <assignable> list of other external interfaces</assignable></text></management-function>
		<management-function><text><assignable>list of other management functions to be provided by the TSF</assignable></text></management-function>
	      </management-function-set>
	      .
	    </title>
	    <note role="application">
	      <h:p>
          The ST should indicate which of the optional management functions are implemented in the TOE.
          This can be done by copying the above table into the ST and adjusting the "Administrator"
          and "User" columns to "M" according to which capabilities are present or not present,
          and for which privilege level. The Application Note for FMT_MOF_EXT.1 explains
          how to indicate Administrator or User capability.
	      </h:p>
	      <h:p>
          The terms "Administrator" and "User" are defined in the <xref g="glossary"/>.
          The intent of this requirement is to ensure that the ST is populated with the
          relevant management functions that are provided by the OS.	      </h:p>
	      <h:p>
Sophisticated account management policies, such as intricate password complexity requirements and handling of temporary accounts, are a function of directory servers.
The OS can enroll in such account management and enable the overall information system to achieve such policies by binding to a directory server.
	      </h:p>
	    </note>
	    <aactivity>
	      <TSS>TBD</TSS>
	      <Guidance>
		The evaluator shall verify that every management function captured in the ST is described in the operational guidance and that the description contains the information required to perform the management duties associated with the management function.
	      </Guidance>
	      <Tests>
	      The evaluator shall test the OS's ability to provide the management functions by configuring the operating system and testing each option selected from above.
	      The evaluator is expected to test these functions in all the ways in which the ST and guidance documentation state the configuration can be managed.
	      </Tests>
	    </aactivity>
	  </f-element>
	  <audit-event/>
	</f-component>
      </section>
      <section title="Protection of the TSF (FPT)" id="fpt">

        <ext-comp-def fam-id="FPT_ACF_EXT" title="Access Controls">
          <fam-behavior>This family defines specific TOE components that are protected against unprivileged access. This is a new
            family defined for the FPT class.</fam-behavior>
	</ext-comp-def>
	
        <f-component cc-id="fpt_acf_ext.1" name="Access Controls">
          
          <comp-lev> requires the TSF to prohibit unauthorized users from reading or
            modifying specific TSF data.</comp-lev>
          <management>There are no management functions foreseen.</management>
          <audit>The following actions should be auditable if FAU_GEN Security audit data generation is included in the PP or ST:
            <h:ul>
              <h:li>Unauthorized attempts to perform operations against protected data</h:li>
            </h:ul>
          </audit>
          <dependencies>No dependencies.</dependencies>
          
          <f-element id="fel-protect-priv">
            <title> The TSF shall implement access controls which prohibit unprivileged users from
              modifying: <h:ul>
                <h:li>Kernel and its drivers/modules</h:li>
                <h:li>Security audit logs</h:li>
                <h:li>Shared libraries</h:li>
                <h:li>System executables</h:li>
                <h:li>System configuration files</h:li>
                <h:li><assignable>other objects</assignable></h:li>
              </h:ul>
	      .
            </title>
            <aactivity>
	      <TSS>
	      The evaluator shall confirm that the TSS specifies the locations of kernel drivers/modules, security
	      audit logs, shared libraries, system executables, and system configuration files.  Every
	      file does not need to be individually identified, but the system's conventions for storing and protecting
	      such files must be specified.
	      </TSS>
        <Guidance>TBD</Guidance>
	      <Tests>
	      The evaluator shall create an unprivileged user account.
	      Using this account, the evaluator shall ensure that the following tests result in a negative
              outcome (i.e., the action results in the OS denying the evaluator permission to
              complete the action):
              <testlist>
                <test>The evaluator shall attempt to modify all kernel drivers and modules.</test>
                <test>The evaluator shall attempt to modify all security audit logs generated by the logging subsystem.</test>
                <test>The evaluator shall attempt to modify all shared libraries that are used throughout the system.</test>
                <test>The evaluator shall attempt to modify all system executables.</test>
                <test>The evaluator shall attempt to modify all system configuration files.</test>
                <test>The evaluator shall attempt to modify any additional components selected.</test>
              </testlist>
	      </Tests>
            </aactivity>
          </f-element>
          <f-element id="fel-no-read">
            <title> The TSF shall implement access controls which prohibit unprivileged users from
              reading: <h:ul>
                <h:li>Security audit logs</h:li>
                <h:li>System-wide credential repositories</h:li>
                <h:li><assignable>list of other objects</assignable></h:li>
              </h:ul>
	      .
            </title>
            <note role="application">
	      "Credential repositories" refer, in this case, to structures containing cryptographic keys or passwords.
	    </note>
            <aactivity>
	      <Tests>
	      The evaluator shall create an unprivileged user account.
	      Using this account, the evaluator shall ensure that the following tests result in a negative
              outcome (i.e., the action results in the OS denying the evaluator permission to
              complete the action):
              <testlist>
                <test>The evaluator shall attempt to read security audit logs generated by the auditing subsystem</test>
                <test>The evaluator shall attempt to read system-wide credential repositories</test>
                <test>The evaluator shall attempt to read any other object specified in the assignment</test>
              </testlist>
	      </Tests>
            </aactivity>
          </f-element>
          <audit-event>
            <audit-event-descr>Unauthorized attempts to perform operations against protected data</audit-event-descr>
          </audit-event>
        </f-component>

        <ext-comp-def fam-id="FPT_ASLR_EXT" title="Address Space Layout Randomization">
          <fam-behavior>This family defines the ability of the TOE to implement address space layout randomization (ASLR). This
            is a new family defined for the FPT class.</fam-behavior>
	</ext-comp-def>
	
        <f-component cc-id="fpt_aslr_ext.1" name="Address Space Layout Randomization">
          
          <comp-lev> defines the ability of the TOE to use ASLR as
            well as the objects that ASLR is applied to.</comp-lev>
          <management>There are no management functions foreseen.</management>
          <audit>There are no auditable events foreseen.</audit>
          <dependencies>No dependencies.</dependencies>
          
          <f-element id="fel-aslr">
            <title>The TSF shall always randomize process address space memory locations with
	    <selectables>
	      <selectable>8</selectable>
	      <selectable><assignable>number greater than 8</assignable></selectable>
	    </selectables>
	    bits of entropy except for
                <assignable>list of explicit exceptions</assignable>.
            </title>
            <aactivity>
              <TSS>TBD</TSS>
              <Guidance>TBD</Guidance>
	      <Tests>
The evaluator shall select 3 executables included with the TSF.
If the TSF includes a web browser it must be selected.
If the TSF includes a mail client it must be selected.
For each of these apps, the evaluator shall launch the same executables on two separate instances of the
OS on identical hardware and compare all memory mapping locations.
The evaluator shall ensure that no memory mappings are placed in the same location.
If the rare chance occurs that two mappings are the same for a single executable and
not the same for the other two, the evaluator shall repeat the test with that executable to verify
that in the second test the mappings are different.
This test can also be completed on the same hardware and rebooting between application launches.
	      </Tests>
	    </aactivity>
          </f-element>
<!--          <f-element>
            <title>The OS shall always randomize kernel address space memory locations</title>
                <note role="application">
                  Randomizing the location of the kernel address spaces provides some defense against
		  kernel-level exploits.
                </note>
            <aactivity>
	      The evaluator shall review the TSS to ensure that ASLR applies to the kernel.
	    </aactivity>
          </f-element> -->
          <audit-event/>
	</f-component>
        <!-- <f-component id="fpt_php_ext.1" name="External Interface Controls">-->
        <!--   <f-element> -->
        <!--     <title> -->
	<!--       The OS shall provide a mechanism to  -->
	<!--       <selectables> -->
	<!-- 	<selectable>users</selectable> -->
	<!-- 	<selectable>administrators</selectable> -->
	<!--       </selectables> -->
	<!--       to disable external interfaces (physical and logical) and -->
        <!--       services exposed to untrusted networks and devices:  -->
        <!--       <selectables linebreak="yes"> -->
        <!--         <selectable>WiFi</selectable> -->
        <!--         <selectable>Bluetooth</selectable> -->
        <!--         <selectable>NFC</selectable> -->
        <!--         <selectable>USB</selectable> -->
        <!--         <selectable>FireWire</selectable> -->
        <!--         <selectable><assignable>list of other external interfaces</assignable></selectable> -->
        <!--       </selectables> -->
	<!--       . -->
        <!--     </title> -->
        <!--     <note role="application"> -->
	<!--       Different hardware platforms present different external interfaces. -->
	<!--       The selection of tests to run against an OS varies depending on the hardware the OS  -->
	<!--       is running on.  -->
	<!--       However, where an OS supports an external interface -->
        <!--       type (e.g., FireWire) it is important that the OS also offers the ability to disable -->
        <!--       that interface.  -->
	<!--       Requirements that ensure secure communication over WiFi are defined in the  -->
	<!--       <a href="https://www.niap-ccevs.org/pp/PP_WLAN_AS_EP_V1.0/" -->
	<!-- 	 >ND CPP EP Wireless LAN Access System</a>. -->
	      
	<!--     </note> -->
        <!--     <aactivity> -->
	<!--       The evaluator shall install the OS onto a platform that has capabilities commiserate -->
	<!--       with the OS capabilities (e.g., a USB capable OS must be evaluated on a USB capable -->
	<!--       platform) and ensure that the following tests (where applicable) -->
        <!--       succeed: <testlist> -->
        <!--         <test> The evaluator shall attempt to connect to a Wireless network and ensure that the OS successfully connects and allows network traffic to flow.</test> -->
        <!--         <test>  -->
	<!-- 	  The evaluator shall connect to a Wireless network and then disable the WiFi -->
        <!--           network interface from within the OS.  -->
	<!-- 	  The evaluator shall ensure that the WiFi connection is terminated and that the OS -->
	<!-- 	  does not list any wireless network as accessible. -->
	<!-- 	  The evaluator shall run a wireless sniffer (e.g. Kismet, aircrack) and ensure that -->
	<!-- 	  no signals, attributable to the test platform, are detected. -->
	<!-- 	</test> -->
        <!--         <test> The evaluator shall attempt to pair, and connect, a Bluetooth device to the OS and ensure that the OS successfully connects to the device.</test> -->
        <!--         <test> -->
	<!-- 	  The evaluator shall pair, and connect, a Bluetooth device to the OS and then -->
        <!--           disable the Bluetooth interface within the OS.  -->
	<!-- 	  The evaluator shall ensure that the Bluetooth connection is terminated and that -->
	<!-- 	  the OS does not list any devices as accessible. -->
	<!-- 	  The evaluator shall run a Bluetooth sniffer (e.g. UberTooth, Wireshark) -->
	<!-- 	  and ensure that no signals, attributable to the test platform, are detected. -->
	<!-- 	</test> -->
        <!--         <test> The evaluator shall attempt to pair, and connect, a NFC device to the OS and ensure that the OS successfully connects to the device.</test> -->
        <!--         <test> The evaluator shall pair, and connect, an NFC device to the OS and then disable -->
        <!--           the NFC interface within the OS. The evaluator shall ensure that the NFC connection -->
        <!--           is terminated. -->
	<!-- 	  The evaluator shall run a NFC sniffer  -->
	<!-- 	  and ensure that no signals, attributable to the test platform, are detected. -->
	<!-- 	</test> -->
        <!--         <test> The evaluator shall connect a USB device to the OS and then disable the USB -->
        <!--           interface within the OS. The evaluator shall ensure that the USB device no longer -->
        <!--           functions within the OS. </test> -->
        <!--         <test> The evaluator shall connect a FireWire device to the OS and ensure that the OS successfully connects to the device.</test> -->
        <!--         <test> The evaluator shall connect a FireWire device to the OS and then disable the -->
        <!--           FireWire interface within the OS. The evaluator shall ensure that the FireWire -->
        <!--           device no longer functions within the OS. </test> -->
        <!--         <test>If any additional components have been listed in the selection, the evaluator shall connect each component to the OS and ensure that the OS successfully connects to it.</test> -->
        <!--         <test> If any additional components have been listed in the selection, the evaluator -->
        <!--           shall connect each component to the OS and then disable the component interface -->
        <!--           within the OS. The evaluator shall ensure that the component device no longer -->
        <!--           functions within the OS. </test> -->
        <!--       </testlist> -->
        <!--     </aactivity> -->
        <!--   </f-element> -->
        <!-- </f-component> -->
        
        <ext-comp-def fam-id="FPT_BLT_EXT" title="Limitation of Bluetooth Profile Support">
          <fam-behavior>This family defines requirements for limiting Bluetooth capabilities without user action.
            This is a new family defined for the FPT class.</fam-behavior>
        </ext-comp-def>
        
        <f-component cc-id="fpt_blt_ext.1" name="Limitation of Bluetooth Profile Support" status="objective">
         
          <comp-lev> requires the TSF to maintain a disabled by default posture for Bluetooth profiles.</comp-lev>
          <management>There are no management activities foreseen.</management>
          <audit>There are no auditable events foreseen.</audit>
          <dependencies>No dependencies.</dependencies>
                    
          <f-element id="fel-bluetooth-stop">
            <title>
	      The TSF shall disable support for
 	      <assignable>list of Bluetooth profiles</assignable>
	      Bluetooth profiles when they are not currently being used by
              an application on the TOE and shall require explicit user action to enable
              them.
	    </title>
            <note role="application">
		<h:p>
		Some Bluetooth services incur more serious consequences if
		unauthorized remote devices gain access to them.
		Such services should be protected by measures like disabling support for
		the associated Bluetooth profile unless it is actively being used by an application on the OS
		(in order to prevent discovery by a Service Discovery Protocol search), and then requiring explicit user
		action to enable those profiles in order to use the services.
		It may be further appropriate to require additional user action before granting a remote device access
		to that service.
		</h:p>
		<h:p>
		  For example, it may be appropriate to disable the
		  OBEX Push Profile until a user  pushes a button in an application
		  indicating readiness to transfer an object.
		  After completion of the object transfer,
		  support for the OBEX profile should be suspended until the next time the user requests
		  its use.
		</h:p>
	    </note>
            <aactivity>
              <TSS>The evaluator shall ensure that the TSS lists all Bluetooth profiles that are
                disabled while not in use by an application and which need explicit user action in
                order to become enabled.
	      </TSS>
              <Guidance>There are no guidance evaluation activities for this component.</Guidance>
	      <Tests>The evaluator shall perform the following tests:
	      <testlist>
                <test>
		  The evaluator shall perform this test with a test device that does not have a trust relationship with the TOE.
		  While the service is not in active use by an application on the TOE, the
                  evaluator shall attempt to discover a service associated with a "protected"
                  Bluetooth profile (as specified by the requirement) on the TOE via a Service
                  Discovery Protocol search.
		  The evaluator shall verify that the service does not
                  appear in the Service Discovery Protocol search results.
		  Next, the evaluator shall attempt to gain remote access to the service from a device that does not
                  currently have a trusted device relationship with the TOE.
		  The evaluator shall verify that this attempt fails due to the unavailability of the service and
                  profile.
		</test>
                <test>The evaluator shall repeat Test 1 with a device that currently has a trusted
                device relationship with the TOE and verify that the same behavior is exhibited.
                </test>
              </testlist>
              </Tests>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>


        <ext-comp-def fam-id="FPT_SBOP_EXT" title="Stack Buffer Overflow Protection">
          <fam-behavior>This family requires the TSF to be compiled using stack-based buffer overflow protections. This is a new
            family defined for the FPT class.</fam-behavior>
	</ext-comp-def>
        
        
        <f-component cc-id="fpt_fls.1" name="Failure with Preservation of Secure State">
          <f-element id="fel-pres-sec-state">
            <title>
              The TSF shall preserve a secure state when the following types of failures occur: [<h:i>DRBG self-test failure</h:i>].              
            </title>
            <note role="application">The intent of this requirement is to ensure that cryptographic services requiring random bit generation cannot be performed if a failure of a self-test defined in FPT_TST.1 occurs.</note>
            <aactivity>              
              <TSS>
                The evaluator shall verify that the TSF describes how the TOE enters an error state in the event of a DRBG self-test failure.
              </TSS>
              <Guidance>
                The evaluator shall verify that the guidance documentation describes the error state that results from a DRBG self-test failure and the actions that a user or administrator should take in response to attempt to resolve the error state.
              </Guidance>
              <Tests/>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>	     

	<f-component cc-id="fpt_sbop_ext.1" name="Stack Buffer Overflow Protection">
	  
	  <comp-lev> requires the TSF to be compiled using stack-based
	    buffer overflow protections or to store data in such a manner that a stack-based buffer overflow cannot
	    compromise the TSF.</comp-lev>
	  <management>There are no management activities foreseen.</management>
	  <audit>There are no auditable events foreseen.</audit>
	  <dependencies>No dependencies.</dependencies>
	  
          <f-element id="fel-sbop">
            <title>
The TSF shall <selectables>
  <selectable>employ stack-based buffer overflow protections</selectable>
  <selectable>not store parameters or variables in the same data structures as control flow values</selectable>
</selectables>.
</title>

            <note role="application">
Many OSes store control flow values (i.e. return addresses) in stack data structures that also contain parameters and variables.
For these OSes, it is expected that most of the OS, to include the kernel, libraries, and application software from the OS vendor be compiled with stack-based buffer overflow protection enabled.
OSes that store parameters and variables separately from control flow values do not need additional stack protections.
            </note>
            <aactivity>
              <TSS>TBD</TSS>
              <Guidance>TBD</Guidance>
	      <Tests>
<h:p>For stack-based OSes, the evaluator shall determine that the TSS contains a description of stack-based buffer overflow protections used by the OS.
These are referred to by a variety of terms, such as stack cookie, stack guard, and stack canaries.
The TSS must include a rationale for any binaries that are not protected in this manner.
The evaluator shall also preform the following test:
            <testlist>
                <test>
                  The evaluator shall inventory the kernel, libraries, and application binaries
                  to determine those that do not implement stack-based buffer overflow protections. This list should
                  match up with the list provided in the TSS.
                </test>
            </testlist>
</h:p>

<h:p>For OSes that store parameters/variables separately from control flow values, the evaluator shall verify that the TSS describes what data structures control values, parameters, and variables are stored.
The evaluator shall also ensure that the TSS includes a description of the safeguards that ensure parameters and variables do not intermix with control flow values.
</h:p>
              </Tests>
	    </aactivity>
          </f-element>
	  <audit-event/>
        </f-component>

	<ext-comp-def fam-id="FPT_SRP_EXT" title="Software Restriction Policies">
	  <fam-behavior>This family defines the ability of the TOE to restrict the execution of software unless it meets defined
	    criteria. This is a new family defined for the FPT class.</fam-behavior>
	</ext-comp-def>

	<f-component cc-id="fpt_srp_ext.1" name="Software Restriction Policies" status="objective">
	  
	  <comp-lev> defines the criteria the TSF can use to prevent execution
	    of restricted programs.</comp-lev>
	  <management>The following actions could be considered for the management functions in FMT:
	  <h:ul>
	    <h:li>Specification of restriction policies</h:li>
	  </h:ul></management>
	  <audit>There are no auditable events foreseen.</audit>
	  <dependencies>No dependencies.</dependencies>
	  
          <f-element id="fel-srp">
            <title> The TSF shall restrict execution to only programs which match an administrator-specified
              <selectables linebreak="yes">
                <selectable id="s-srp-path">file path</selectable>
                <selectable id="s-srp-signature">file digital signature</selectable>
                <selectable id="s-srp-version">version</selectable>
                <selectable id="s-srp-hash">hash</selectable>
                <selectable id="s-srp-other"><readable>other</readable><assignable>other characteristics</assignable></selectable>
              </selectables>
	      .
            </title>
            <note role="application">
              The assignment permits implementations which provide a low
              level of granularity such as a volume.
	      The restriction is only against direct execution of
              executable programs.
	      It does not forbid interpreters which may take data as an input, even if
              this data can subsequently result in arbitrary computation.
            </note>
            <aactivity>
	      <TSS>
		The evaluator shall ensure that the description of the supported characteristics in the TSS is consistent with the SFR.
		The evaluator shall also ensure that any characteristics specified by the ST-author are described in sufficient detail to understand how to test those characteristics.
	      </TSS>
	      <Guidance>
		The evaluator shall ensure that the characteristics are described in sufficient detail for administrators to configure policies using them, and that the list of characteristics in the guidance is consistent with the information in the TSS.
	      </Guidance>
	      <Tests>
		There are two tests for each selection above.
              <testlist>
                <test>
		  <depends on="s-srp-path"/>
                  The evaluator shall configure the OS to only allow code execution from the core
                  OS directories. The evaluator shall then attempt to execute code from a directory
                  that is in the allowed list. The evaluator shall ensure that the code they
                  attempted to execute has been executed.
                </test>
                <test>
		  <depends on="s-srp-path"/>
                  The evaluator shall configure the OS to only allow code execution from the core
                  OS directories. The evaluator shall then attempt to execute code from a directory
                  that is not in the allowed list. The evaluator shall ensure that the code they
                  attempted to execute has not been executed.
                </test>
                <test>
		  <depends on="s-srp-signature"/>
                  The evaluator shall configure the OS to only allow code that has been signed by
                  the OS vendor to execute. The evaluator shall then attempt to execute code signed
                  by the OS vendor. The evaluator shall ensure that the code they
                  attempted to execute has been executed.
                </test>
                <test>
		  <depends on="s-srp-signature"/>
                  The evaluator shall configure the OS to only allow code that has been signed by
                  the OS vendor to execute. The evaluator shall then attempt to execute code signed
                  by another digital authority. The evaluator shall ensure that the code they
                  attempted to execute has not been executed.
                </test>
                <test>
		  <depends on="s-srp-version"/>
                  The evaluator shall configure the OS to allow execution of a specific
                  application based on version. The evaluator shall then attempt to execute the same
                  version of the application. The evaluator shall ensure that the code they attempted
                  to execute has been executed.
                </test>
                <test>
		  <depends on="s-srp-version"/>
                  The evaluator shall configure the OS to allow execution of a specific
                  application based on version. The evaluator shall then attempt to execute an older
                  version of the application. The evaluator shall ensure that the code they attempted
                  to execute has not been executed.
                </test>
                <test>
		  <depends on="s-srp-hash"/>
                  The evaluator shall configure the OS to allow execution based on the hash of the application
                  executable. The evaluator shall then attempt to execute
                  the application with the matching hash. The evaluator shall
                  ensure that the code they attempted to execute has been executed.
                </test>
                <test>
		  <depends on="s-srp-hash"/>
                  The evaluator shall configure the OS to allow execution based on the hash of the application
                  executable. The evaluator shall modify the
                  application in such a way that the application hash is changed. The evaluator
                  will then attempt to execute the application with the matching hash. The evaluator shall
                  ensure that the code they attempted to execute has not been executed.
                </test>
		<test>
		  <depends on="s-srp-other"/>
		  The evaluator shall attempt to run an application that should be allowed based on the defined software restriction policy and ensure that it runs.
		</test>
		<test>
		  <depends on="s-srp-other"/>
		  The evaluator shall then attempt to run an application that should not be allowed the defined software restriction policy and ensure that it does not run.
		</test>
              </testlist>
              
              </Tests>
	    </aactivity>
          </f-element>
	  <audit-event/>
        </f-component>
        
        
        <f-component cc-id="fpt_tst.1" name="TSF Self-Testing">
          <f-element id="fel-tsf-self-test">
            <title>
              The TSF shall run a suite of the following self-tests <selectables>
                <selectable>during initial start-up</selectable>
                <selectable>periodically during normal operation</selectable>
                <selectable>at the request of the authorized user</selectable>
                <selectable>at the conditions <assignable>conditions under which self-test should occur</assignable></selectable>
              </selectables>
              to demonstrate the correct operation of [<h:i>[TSF DRBG specified in FCS_RBG.1]</h:i>].              
            </title>
          </f-element>
          
          <f-element id="fel-tsf-ver-int-data">
            <title>
              The TSF shall provide authorized users with the capability to verify the integrity of [<h:i>[DRBG seed/output data]</h:i>].
            </title>
          </f-element>
          
          <f-element id="fel-tsf-ver-int">
            <title>
              The TSF shall provide authorized users with the capability to verify the integrity of [<h:i>[TSF DRBG specified in FCS_RBG.1]</h:i>].
            </title>
            <note role="application">This SFR is a required dependency of FCS_RBG.1. It is intended to require that any DRBG implemented by the TOE undergo health testing to ensure that the random bit generation functionality has not been degraded. If the TSF supports multiple DRBGs, this SFR should be iterated to describe the self-test behavior for each.</note>
            <aactivity>
              <TSS>
                <h:p>
                  The	evaluator shall examine the TSS to ensure that it details the self-tests that are run by the TSF along with how they are run. This description should include an outline of what the tests are actually doing. The evaluator shall ensure that the TSS makes an argument that the tests are sufficient to demonstrate that the DRBG is operating correctly.
                </h:p><h:p>
                  Note that this information may also be placed in the entropy documentation specified by <xref to="entropyappendix"/>. 
                </h:p>
              </TSS>
              <Guidance>
                <h:p>
                  If a self-test can be executed at the request of an authorized user, the evaluator shall verify that the operational guidance provides instructions on how to execute that self-test.
                </h:p>
              </Guidance>
              <Tests>
                <h:p>
                  For each self-test, the evaluator shall verify that evidence is produced that the self-test is executed when specified by FPT_TST.1.1.
                </h:p><h:p>
                  If a self-test can be executed at the request of an authorized user, the evaluator shall verify that following the steps documented in the operational guidance to perform the self-test will result in execution of the self-test.
                </h:p>
              </Tests>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>

        <ext-comp-def fam-id="FPT_TST_EXT" title="Boot Integrity">
          <fam-behavior>This family defines the ability of the TOE to provide a mechanism that can be used to verify its integrity
            when started.</fam-behavior>
	</ext-comp-def>
        <f-component cc-id="fpt_tst_ext.1" name="Boot Integrity">
          
          <comp-lev> defines the mechanisms that the TSF uses to assert its own integrity at
            startup.</comp-lev>
          <management>There are no management functions foreseen.</management>
          <audit>The following actions should be auditable if FAU_GEN Security audit data generation is included in the PP or ST:
          <h:ul>
            <h:li>Failure of the integrity checking mechanism</h:li>
          </h:ul>
          </audit>
          <dependencies>
          <no-link>FCS_COP.1</no-link> Cryptographic Operation<h:br/>
          <no-link>FIA_X509_EXT.1</no-link> X.509 Certificate Validation
          </dependencies>
          
          <f-element id="fel-boot">
            <title>The TSF shall verify the integrity of the bootchain up through the OS kernel and
              <selectables linebreak="yes">
                <selectable id="s-verify-all-code">all executable code stored in mutable media</selectable>
                <selectable><assignable>list of other executable code</assignable></selectable>
                <selectable exclusive="yes">no other executable code</selectable>
              </selectables>
	      prior to its execution through the use of
              <selectables linebreak="yes">
                <selectable>a digital signature using a hardware-protected asymmetric key</selectable>
		<selectable id="s-boot-x509">a digital signature using an X.509 certificate with hardware-based protection</selectable>
                <selectable>a hardware-protected hash</selectable>
              </selectables>
	      .
            </title>
            <note role="application">
	      <h:p>
              The bootchain of the OS is the sequence of software, to include the OS loader, the kernel, system
              drivers or modules, and system files, which ultimately result in loading the OS.
	          The first part of the OS, usually referred to as the first-stage bootloader,
	          must be loaded by the platform.
	          Assessing its integrity, while critical, is the platform's responsibility; and therefore outside
	          the scope of this PP. 
		      All software loaded after this stage is potentially within the control of the OS and is in scope.
	      </h:p>
	      <h:p>
              The verification may be transitive in nature:
	      a hardware-protected public key, X.509 certificate, or hash may be used to verify the mutable bootloader code
              which contains a key, certificate, or hash used by the bootloader to verify the mutable OS kernel code,
              which contains a key, certificate, or hash to verify the next layer of executable code, and so on.
	      However, the way in which the hardware stores and protects these keys is out of scope.
	      </h:p>
	      <h:p>
              If all executable code (including bootloader(s), kernel, device drivers, pre-loaded applications, user-loaded
              applications, and libraries) is verified, <xref to="s-verify-all-code"/> should
              be selected.
              </h:p>
	      <h:p>
		If certificates are used, they can be hardware-protected trust store elements or leaf certificates in a certificate chain that terminates in a root CA which is an element of a hardware protected trust store.
		If the certificates themselves are not trust store elements, revocation information is expected to be available for each CA certificate in the chain that is not a trust element, in accordance with FIA_X509_EXT.1 as defined in the <xref to="pkg-x509"/>.
	      </h:p>
            </note>
            <aactivity>
	      <TSS>
	      <h:p>
              The evaluator shall verify that the TSS section of the ST includes a comprehensive description of the boot
              procedures, including a description of the entire bootchain, for the TSF.
              The evaluator shall ensure that the OS cryptographically verifies each
	      piece of software it loads in the bootchain to include bootloaders and the kernel.
	      Software loaded for execution directly by the platform (e.g. first-stage bootloaders) is out of scope.
	      For each additional category of executable code verified before
              execution, the evaluator shall verify that the description in the TSS describes how that
              software is cryptographically verified.
	      </h:p>
	      <h:p>
              <!-- Out of scope, for now:
			  The evaluator shall verify that the TSS contains a justification for the protection of the
              cryptographic key or hash, preventing it from being modified by unverified or
              unauthenticated software.
              <br/> -->
              The evaluator shall verify that the TSS contains a description of the
              protection afforded to the mechanism performing the cryptographic verification.
	      </h:p>
	      </TSS>
              <Guidance>TBD</Guidance>
	      <Tests>
	      <h:p>
              The evaluator shall also perform the following tests:
              <testlist>
                <test>
                  The evaluator shall perform actions to cause TSF software to load and observe that the
                  integrity mechanism does not flag any executables as containing integrity errors and that the
                  OS properly boots.
                </test>
                <test>
                  The evaluator shall modify a TSF executable that is part of the bootchain verified by the TSF (i.e. Not the first-stage bootloader)
		  and attempt to boot.
		  The evaluator shall ensure that an integrity violation is triggered and the OS does not boot
		  (Care must be taken so that the integrity
                  violation is determined to be the cause of the failure to load the module, and not the fact that
                  in such a way to invalidate the structure of the module.).
                </test>
                <test>
		  <depends on="s-boot-x509"/>
                  If the ST author indicates that the integrity verification is performed
                  using public key in an X509 certificate, the evaluator shall verify that the boot integrity mechanism includes a certificate
                  validation according to in accordance with FIA_X509_EXT.1 as defined in the <xref to="pkg-x509"/> for all certificates in the chain from the certificate used for
				  boot integrity to a certificate in the trust store that are not themselves in the trust store.
				  This means that, for each X.509 certificate in this chain that is not a trust store element, the evaluator must ensure that revocation information is available to the TOE during the bootstrap mechanism (before the TOE becomes fully operational).

 
                </test>
              </testlist>
	      </h:p>
              </Tests>
	    </aactivity>
          </f-element>
          <audit-event>
            <audit-event-descr>Failure of the integrity checking mechanism</audit-event-descr>
          </audit-event>
        </f-component>

	<ext-comp-def fam-id="FPT_TUD_EXT" title="Trusted Update">
	  <fam-behavior>This family defines the ability of the TOE to provide mechanisms for assuring the integrity of updates to
	    the TSF or to non-TOE components that rely on the TSF to function. This is a new family defined for
	    the FPT class.</fam-behavior>
	</ext-comp-def>
	
        <f-component cc-id="fpt_tud_ext.1" name="Integrity for Installation and Update">
          
          <comp-lev> requires the TOE to provide a mechanism to verify the integrity of
            updates to itself.</comp-lev>
          <management>The following actions could be considered for the management functions in FMT:
          <h:ul>
            <h:li>Configuration of update checking mechanism</h:li>
            <h:li>Initiation of update</h:li>
          </h:ul>
          </management>
          <audit>The following actions should be auditable if FAU_GEN Security audit data generation is included in the PP or ST:
            <h:ul>
              <h:li>Failure of the integrity checking mechanism</h:li>
              <h:li>Successful completion of updates</h:li>
            </h:ul>
          </audit>
          <dependencies>
            <no-link>FCS_COP.1</no-link> Cryptographic Operation
          </dependencies>
          
          <f-element id="fel-os-update">
            <title>The TSF shall provide the ability to check for updates to the OS
              software itself and shall use a digital signature scheme specified in FCS_COP.1/SIGN to validate the authenticity of the response. </title>
            <note role="application">
				This requirement is about the ability to check for the availability of
			    authentic updates, while the installation of authentic updates is covered by
                FPT_TUD_EXT.1.2.
				Use of the digital signature scheme ensures that an attacker cannot influence the response, 
				regarding of whether updates are available.
			</note>
            <aactivity>
              <TSS>TBD</TSS>
              <Guidance>TBD</Guidance>
	      <Tests>
              <h:p>The evaluator shall check for an update using procedures described in the
              documentation and verify that the OS provides a list of available updates.
			  Testing this capability may require
			  installing and temporarily placing the system into a
			  configuration in conflict with secure configuration guidance
			  which specifies automatic update.
			  </h:p>
			  <h:p>The evaluator is also to ensure that the response to this query is authentic by using a digital signature scheme specified in FCS_COP.1/SIGN. 
				The digital signature verification may be performed as part of a network protocol occurs over a trusted channel as described in FTP_ITC_EXT.1.)
				If the signature verification is not performed as part of a trusted channel, the evaluator shall send a query response with a bad signature and verify that the signature verification fails.
				The evaluator shall then send a query response with a good signature and verify that the signature verification is successful.</h:p>
	      <h:p>For the following tests, the evaluator shall initiate the download of an update and
	        capture the update prior to installation.
	        The download could originate from the vendor's website, an enterprise-hosted
	        update repository, or another system (e.g. network peer).
	        All supported origins
	        for the update must be indicated in the TSS and evaluated.</h:p>
	        <testlist>
	          <test>
	            The evaluator shall ensure that the update has a digital
	            signature belonging to the vendor prior to its installation.
	            The evaluator shall modify the downloaded update in such a way
	            that the digital signature is no longer valid. The evaluator
	            will then attempt to install the modified update. The
	            evaluator shall ensure that the OS does not install the
	            modified update.
	          </test>
	          <test>
	            The evaluator shall ensure that the update has a digital
	            signature belonging to the vendor. The evaluator shall then
	            attempt to install the update (or permit installation to continue).
	            The evaluator shall ensure that
	            the OS successfully installs the update.
	          </test>
	        </testlist>
	      </Tests>
	    </aactivity>
          </f-element>
          <f-element id="fel-verify-updates">
            <title>
              The TSF shall 
		<selectables>
			<selectable>cryptographically verify</selectable>
			<selectable>invoke platform-provided functionality to cryptographically verify</selectable>
		</selectables>
              updates to itself using a digital
              signature prior to installation using schemes specified in FCS_COP.1/SIGN.
	    </title>
		 <note role="application">The intent of the requirement is to ensure that only digitally signed and verified TOE updates are applied to the TOE.</note>
           
          </f-element>
          <audit-event>
            <audit-event-descr>Failure of the integrity checking mechanism</audit-event-descr>
          </audit-event>
          <audit-event>
            <audit-event-descr>Successful completion of updates</audit-event-descr>
          </audit-event>
	
        </f-component>
        <f-component cc-id="fpt_tud_ext.2" name="Integrity for Installation and Update of Application Software">
          
          <comp-lev> requires the TOE to provide a mechanism to
            verify the integrity of updates to non-TSF applications that are running on the TOE.</comp-lev>
          <management>The following actions could be considered for the management functions in FMT:
            <h:ul>
              <h:li>Configuration of update checking mechanism</h:li>
              <h:li>Initiation of update</h:li>
            </h:ul>
          </management>
          <audit>The following actions should be auditable if FAU_GEN Security audit data generation is included in the PP or ST:
            <h:ul>
              <h:li>Failure of the integrity checking mechanism</h:li>
              <h:li>Successful completion of updates</h:li>
            </h:ul>
          </audit>
          <dependencies>
            <no-link>FCS_COP.1</no-link> Cryptographic Operation
          </dependencies>
          
          <!-- TO DO: Cite references. -->
          <f-element id="fel-app-check-update">
            <title>
	          The TSF shall provide the ability to check for updates to
              application software and shall use a digital signature scheme specified in 
		      FCS_COP.1/SIGN to validate the authenticity of the response.
	        </title>
            <note role="application">This requirement is about the ability to check for authentic updates,
              while the actual installation of such updates is covered by FPT_TUD_EXT.2.2.
			  Use of the digital signature scheme ensures that an attacker cannot influence the response,
			  regarding of whether updates are available.
            </note>

            <aactivity>
              <TSS>TBD</TSS>
              <Guidance>TBD</Guidance>
	      <Tests>
			  <h:p>
	      The evaluator shall check for updates to application software
			  using procedures described in the
			  documentation and verify that the OS provides a list of available
			  updates.  Testing this capability may require
			  temporarily placing the system into a configuration in conflict
			  with secure configuration guidance which specifies automatic
			  update.
			  </h:p>
			  <h:p>
				The evaluator shall also ensure that the response to this query is authentic by using a digital signature scheme specified in FCS_COP.1/SIGN.
    			The digital signature verification may be performed as part of a network protocol
			     as described in FTP_ITC_EXT.1. 
                If the signature verification is not performed as part of a trusted channel, the evaluator shall send a query response with a bad signature and verify that the signature verification fails. 
				The evaluator shall then send a query response with a good signature and verify that the signature verification is successful.
			  </h:p>
	        The evaluator shall initiate an update to an application.  This may vary depending on the application,
	        but it could be through the application vendor's website, a commercial app store, or another system.
	        All origins supported by the OS must be indicated in the TSS and evaluated.  However, this only includes
	        those mechanisms for which the OS is providing a trusted installation and update functionality.
	        It does not include user or administrator-driven download and installation of arbitrary files.
	        <testlist>
	          <test>
	            The evaluator shall ensure that the update has a digital
	            signature which chains to the OS vendor or another trusted
	            root managed through the OS.  The evaluator shall modify the
	            downloaded update in such a way that the
	            digital signature is no longer valid. The evaluator shall then attempt to install the
	            modified update. The evaluator shall ensure that the OS does not install the modified
	            update.
	          </test>
	          <test>
	            The evaluator shall ensure that the update has a digital
	            signature belonging to the OS vendor or another trusted root
	            managed through the OS. The evaluator shall then attempt to
	            install the update.  The evaluator shall ensure that the OS
	            successfully installs the update.
	          </test>
	        </testlist>
              </Tests>
	    </aactivity>
          </f-element>
          <f-element id="fel-verify-app-updates">
            <title>
	      The TSF shall cryptographically verify the integrity of updates
	      to applications using a digital signature specified by
	      FCS_COP.1/SIGN prior to installation.
	    </title>
          </f-element>
          <audit-event>
            <audit-event-descr>Failure of the integrity checking mechanism</audit-event-descr>
          </audit-event>
          <audit-event>
            <audit-event-descr>Successful completion of updates</audit-event-descr>
          </audit-event>

        </f-component>


        <ext-comp-def fam-id="FPT_W^X_EXT" title="Write XOR Execute Memory Pages">
          <fam-behavior>
            This family defines the ability of the TOE to implement data execution prevention (DEP) by preventing
            memory from being both writable and executable. This is a new family defined for the FPT class.
          </fam-behavior>
        </ext-comp-def>
        <f-component cc-id="fpt_w^x_ext.1" name="Write XOR Execute Memory Pages" status="optional">
          
          <comp-lev> defines the ability of the TOE to prevent memory
            from being simultaneously writable and executable unless otherwise specified.</comp-lev>
          <management>There are no management functions foreseen.</management>
          <audit>There are no auditable events foreseen.</audit>
          <dependencies>No dependencies.</dependencies>
          
          <f-element id="fel-no-rw-mem">
            <title> The TSF shall prevent allocation of any memory region with both write and
              execute permissions except for <assignable>list of exceptions</assignable>.
            </title>
            <note role="application">Requesting a memory mapping with both write and execute
              permissions subverts the platform protection provided by DEP.
              If the OS provides no exceptions (such as for just-in-time compilation),
              then "no exceptions" should be indicated in the assignment.
              Full realization of this requirement requires hardware support, but this is commonly available.
            </note>
            <aactivity>
              <TSS>
                The evaluator shall inspect the vendor-provided developer documentation and
                verify that no memory-mapping can be made with
                write and execute permissions except for the cases listed in the assignment.
              </TSS>
              <Guidance>TBD</Guidance>           
              <Tests>
                The evaluator shall also perform the following tests.
                <testlist>
                  <test>
                    The evaluator shall acquire or construct a test program which attempts
                    to allocate memory that is both writable and executable.
                    The evaluator shall run the program and confirm that it fails to
                    allocate memory that is both writable and executable.
                  </test>
                  <test>
                    The evaluator shall acquire or construct a test program which
                    allocates memory that is executable and then
                    subsequently requests additional write/modify permissions on that memory.
                    The evaluator shall run the program and confirm that at no time
                    during the lifetime of the process is the memory both writable and executable.
                  </test>
                  <test>
                    The evaluator shall acquire or construct a test program which
                    allocates memory that is writable and then
                    subsequently requests additional execute permissions on that memory.
                    The evaluator shall run the program and confirm that at no time
                    during the lifetime of the process is the memory both writable and executable.
                  </test>
                </testlist>
              </Tests>
            </aactivity>
          </f-element>
          <audit-event/>
        </f-component>

      </section>
 
      <section title="TOE Access (FTA)" id="fta">
        <f-component cc-id="fta_tab.1" name="Default TOE access banners" status="optional">
          <f-element id="fel-banner">
            <title>
            Before establishing a user session, the [<h:i>TSF</h:i>] shall display an [<h:i>advisory
            warning</h:i>] message <h:b>regarding unauthorized use of the OS</h:b>.
            </title>
            <aactivity>
        <TSS>TBD</TSS>
        <Guidance>TBD</Guidance>
	      <Tests>
            The evaluator shall configure the OS, per instructions in the OS manual,
            to display the advisory warning message "TEST TEST Warning Message TEST TEST".
            The evaluator shall then log out and confirm that the advisory message is
            displayed before logging in can occur.
              </Tests>
	    </aactivity>
          </f-element>
          <audit-event/>
        </f-component>
       
      </section>
      <section title="Trusted Path/Channels (FTP)" id="ftp">

        <ext-comp-def fam-id="FTP_ITC_EXT" title="Trusted Channel Communication">
          <fam-behavior>This family defines the ability of the TOE to use specific trusted communications channels to
            communicate with specific non-TOE entities in the Operational Environment. This family differs from
            FTP_ITC in Part 2 by defining technology-specific details for the implementation of these functions.</fam-behavior>
	</ext-comp-def>
	
      	<f-component cc-id="ftp_itc_ext.1" name="Trusted Channel Communication">
      	  
      	  <comp-lev> defines the specific secure communications protocols
      	    the TSF uses to communicate with a specific set of non-TOE entities in the Operational Environment.</comp-lev>
      	  <management>There are no management functions foreseen.</management>
      	  <audit>The following actions should be auditable if FAU_GEN Security audit data generation is included in the PP or ST:
      	    <h:ul>
      	      <h:li>Initiation of trusted channel</h:li>
      	      <h:li>Termination of trusted channel</h:li>
      	      <h:li>Failure of trusted channel functions</h:li>
      	    </h:ul>
      	  </audit>
      	  <dependencies>
      	    <no-link>FCS_DTLSC_EXT.1</no-link> DTLS Client Protocol<h:br/> 
      	    <no-link>FCS_IPSEC_EXT.1</no-link> IPsec<h:br/>
      	    <no-link>FCS_SSH_EXT.1</no-link> SSH Protocol<h:br/>
      	    <no-link>FCS_TLSC_EXT.1</no-link> TLS Client Protocol
      	  </dependencies>
      	  
      	  <f-element id="fel-trust-comms">
      	    <title>
              The TSF shall use
      	      <selectables linebreak="yes">
                <selectable id="tls">TLS as conforming to the <xref to="pkg-tls"/> as a
    	  	    <selectables>
    	  	      <selectable id="s-tls-client"><readable>client(TLS)</readable>client</selectable>
    	  	      <selectable id="s-tls-server"><readable>server(TLS)</readable>server</selectable>
              </selectables></selectable>
              <selectable id="dtls">DTLS as conforming to the <xref to="pkg-tls"/> as a
    	  	    <selectables>
    	  	      <selectable id="s-dtls-client"><readable>client(DTLS)</readable>client</selectable>
    	  	      <selectable id="s-dtls-server"><readable>server(DTLS)</readable>server</selectable>
    	  	    </selectables></selectable>
      	      <selectable id="s-itc-ipsec">IPsec as conforming to the PP-Module for Virtual Private Network (VPN) Clients</selectable>
      	      </selectables>
      	        and <selectables linebreak="yes">
      	          <selectable id="s-ftp_ssh"><snip>SSH</snip> as conforming to the <xref to="pkg-ssh"/> as a
      	          <selectables>
      	          <selectable id="s-ssh-client"><readable>client(SSH)</readable>client</selectable>
      	            <selectable id="s-ssh-server"><readable>server(SSH)</readable>server</selectable>
      	          </selectables></selectable>
      	          <selectable>no other protocols</selectable>
      	        </selectables>
		    to provide a trusted communication channel between itself and
		    authorized IT entities supporting the following capabilities:
		    <selectables>
		      <selectable>audit server</selectable>
		      <selectable>authentication server</selectable>
		      <selectable>management server</selectable>
		      <selectable><assignable>other capabilities</assignable></selectable>
		    </selectables> using certificates as defined in [<h:i><xref to="pkg-x509"/></h:i>]
		    that is logically distinct from other communication
		    channels and provides assured identification of its end points and protection of the channel
		    data from disclosure and detection of modification of the channel data.
      	    </title>
      	    <ext-comp-def-title>
      	      <title>
      	        The TSF shall use
      	        <assignable>trusted protocol</assignable>, to provide a trusted communication channel between itself and authorized IT
      	        entities supporting the following capabilities:
      	        <selectables>
      	          <selectable>audit server</selectable>
      	          <selectable>authentication server</selectable>
      	          <selectable>management server</selectable>
      	          <selectable><assignable>other capabilities</assignable></selectable>
      	        </selectables> using certificates as defined in <assignable>requirement or standard defining the use of certificates</assignable>
      	        that is logically distinct from other communication channels and provides assured identification of its end points and
      	        protection of the channel data from disclosure and detection of modification of the channel data.
      	      </title>
      	    </ext-comp-def-title>
      	    <note role="application">
             <h:p>
               The ST author must include the security functional requirements for the trusted
               channel protocol selected in FTP_ITC_EXT.1.1 in the main body of the ST.
             </h:p>
      	     <h:p>
      	       If TLS or DTLS is selected, the TSF must be validated against the appropriate requirements in the <xref to="pkg-tls"/>.
      	     </h:p>
      	     <h:p>
      	        If <xref to="s-itc-ipsec"/> is selected, then FDP_IFC_EXT.1 must be included in the ST.
      	    </h:p>
      	    <h:p>
      	        If <xref to="s-ftp_ssh"/> is selected, the TSF must be validated against
      	        the <xref to="pkg-ssh"/> and the corresponding selection is expected to be made in FIA_UAU.5.1.
      	        The ST author must include the security functional requirements for the trusted channel protocol
      	        selected in FTP_ITC_EXT.1 in the main body of the ST.
      	    </h:p>
      	      <h:p>
      	        Claims from the <xref to="pkg-x509"/> are only required to the extent that they are needed to support the functionality required by the trusted protocols that are claimed.
      	      </h:p><h:p>
      	        If the TSF implements a protocol that requires the validation of a certificate presented by an external entity, FIA_X509_EXT.1 and FIA_X509_EXT.2 will be claimed, as will FIA_TSM_EXT.1 for management of the trust store.
      	      </h:p><h:p>
      	        If the TSF implements a protocol that requires the presentation of any certificates to an external entity, FIA_XCU_EXT.2 will be claimed. FIA_X509_EXT.3 will also be claimed, along with any applicable dependencies, depending on how the certificates presented by the TOE are obtained.  
      	      </h:p>
	          <h:p>
		          <rule id="r-need-client-tls">
		          <doc ref="pkg-tls"><ref-id>tlsc_impl</ref-id></doc>
		          </rule>
		          <rule id="r-tlss">
		          <if><ref-id>s-tls-server</ref-id></if>
		          <then><doc ref="pkg-tls"><ref-id>tlss_impl</ref-id></doc></then>
		          </rule>
		          <rule id="r-dtlsc">
		          <if><ref-id>s-dtls-client</ref-id></if>
		          <then><doc ref="pkg-tls"><ref-id>dtlsc_impl</ref-id></doc></then>
		          </rule>
		          <rule id="r-dtlss">
		          <if><ref-id>s-dtls-server</ref-id></if>
		          <then><doc ref="pkg-tls"><ref-id>dtlss_impl</ref-id></doc></then>
		          </rule>
	         </h:p>
<rule id="r-sshclient">
  <if><ref-id>s-ssh-client</ref-id></if>
  <then><doc ref="pkg-ssh"><ref-id>ssh-client</ref-id></doc></then>
</rule>
<rule id="r-sshserver">
  <if><ref-id>s-ssh-server</ref-id></if>
  <then><doc ref="pkg-ssh"><ref-id>ssh-server</ref-id></doc></then>
</rule>
      	      <!-- this rule isn't associated with the SFR but it was placed here for ordering purposes -->
      	      <rule id="r-bluetooth-ccm">
      	        <or>
      	          <and><not><ref-id>mod-bluetooth</ref-id></not></and>
      	          <and>
      	            <ref-id>mod-bluetooth</ref-id>
      	            <or>
      	              <and><not><ref-id>p-256-keygen</ref-id></not><not><ref-id>s-aes-ccm</ref-id></not><not><ref-id>s-128</ref-id></not></and>
      	              <and><ref-id>p-256-keygen</ref-id><ref-id>s-aes-ccm</ref-id><ref-id>s-128</ref-id></and>
      	            </or>
      	          </and>
      	        </or>
      	      </rule>


      	    </note>
      	    <aactivity>
      	      <TSS>TBD</TSS>
      	      <Guidance>TBD</Guidance>
	      <Tests>
	         The evaluator shall configure the OS to communicate with another trusted IT product as identified in the third selection.
      	   The evaluator shall monitor network traffic while the OS performs communication with each of the servers identified in the
      	   third selection. The evaluator shall ensure that for each session a trusted channel was established in conformance with the
      	   selected protocols.
      	      </Tests>
	    </aactivity>
      	  </f-element>
      	  <audit-event>
      	    <audit-event-descr>Initiation of trusted channel</audit-event-descr>
      	  </audit-event>
      	  <audit-event>
      	    <audit-event-descr>Termination of trusted channel</audit-event-descr>
      	  </audit-event>
      	  <audit-event>
      	    <audit-event-descr>Failure of trusted channel functions</audit-event-descr>      	    
      	  </audit-event>
      	  
      	</f-component>
        <f-component cc-id="ftp_trp.1" name="Trusted Path">
            <f-element id="fel-trust-ends">
	      <title>
The TSF shall provide a communication path between itself and
<selectables><selectable id="s-remote">remote</selectable><selectable id="s-local">local</selectable></selectables>
users that is logically distinct from other communication paths and provides assured
identification of its endpoints and protection of the communicated data from
[<h:i>modification, disclosure</h:i>].
              </title>
	      <note role="application">
		<h:p>
This requirement ensures that all remote administrative actions are protected.
Authorized remote administrators must initiate all communication with the OS via
a trusted path and all communication with the OS by remote administrators must
be performed over this path. The data passed in this trusted communication
channel is encrypted as defined in FTP_ITC_EXT.1.1.
If <xref to="s-local"/> users access is selected and no unprotected traffic is sent to remote
users, then this requirement is met.
If <xref to="s-remote"/> users access is selected, the
ST author must include the security functional requirements for the trusted
channel protocol selected in
FTP_ITC_EXT.1.1 in the main body of the ST.
		</h:p>
	      </note>
            </f-element>
            <f-element id="fel-trust-users">
              <title> The TSF shall permit
                <selectables>
                  <selectable>the TSF</selectable>
                  <selectable>local users</selectable>
                  <selectable>remote users</selectable>
                </selectables>
                to initiate communication via the trusted path.
              </title>
            </f-element>
            <f-element id="fel-trust-path">
              <title> The TSF shall require use of the trusted path for <selectables>
                <selectable>initial user authentication</selectable>
                <selectable><h:i>[all remote administrative actions]</h:i></selectable>
              </selectables>           
              </title>
              <note role="application">
		    <h:p>
		        This requirement ensures that authorized remote administrators initiate all communication
            with the OS via a trusted path, and that all communication with the OS by remote administrators
            is performed over this path. The data passed in this trusted communication channel is encrypted as
            defined in FTP_ITC_EXT.1.
	      </h:p>
        <h:p>
          If <h:i>"remote"</h:i> is selected in FTP_TRP.1.1, <h:i>"all remote administrative actions"</h:i>
          must be selected in FTP_TRP.1.3.
        </h:p>
        <h:p>
          If <h:i>"local"</h:i> is selected in FTP_TRP.1.1, then <h:i>"initial user authentication"</h:i> must be selected
          in FTP_TRP.1.3.
        </h:p>
              </note>
              <aactivity>
		<TSS>
                The evaluator shall examine the TSS to determine that the methods of remote or local OS administration
                are indicated, along with how those communications are protected. [Conditional: if "remote" is selected
                in FTP_TRP.1.1], the evaluator shall also confirm that all protocols listed in the TSS in support of OS
                administration are consistent with those specified in the requirement, and are included in the requirements
                in the ST.
		</TSS>
		<Guidance>
		            The evaluator shall confirm that the operational guidance contains instructions for establishing the remote
                administrative sessions or initial user authentication for each supported method.
		</Guidance>
	      <Tests>

The evaluator shall also perform the following tests:
                <testlist>
                  <test>
                    The evaluator shall ensure that communications using each remote or local administration method is
                    tested during the course of the evaluation, setting up the connections or initial user authentication
                    as described in the operational guidance and ensuring that communication is successful.
                  </test>
                  <test>
                    [Conditional: if "remote" is selected in FTP_TRP.1.1]: For each method of remote administration supported,
                    the evaluator shall follow the operational guidance to ensure that there is no available interface that can be
                    used by a remote user to establish a remote administrative sessions without invoking the trusted path.
                  </test>
                  <test>
                    [Conditional: if “remote” is selected in FTP_TRP.1.1]: The evaluator shall ensure, for each method of remote
                    administration, the channel data is not sent in plaintext.
                  </test>
                  <test>
                    [Conditional: if “remote” is selected in FTP_TRP.1.1]: The evaluator shall ensure, for each method of remote
                    administration, modification of the channel data is detected by the OS.
                  </test>
                </testlist>
		</Tests>
	      </aactivity>
            </f-element>
          <audit-event/>
        </f-component>
      </section>
    </sec:SFRs>
    
    <sec:Security_Assurance_Requirements>
      <h:p>
	The Security Functional Requirements (SFRs) in <xref to="SFRs"/> are specified to 
        mitigate the threats defined in <xref to="Threats"/>.
	The PP identifies the Security Assurance Requirements (SARs) to frame
	the extent to which the evaluator assesses the documentation applicable for the
	evaluation and performs independent testing.
      </h:p>
      <h:p>
	This section lists the set of SARs from CC part 3
	that are required in evaluations against this PP.
        Individual evaluation activities to be performed are specified both in 
        <xref to="Security_Requirements"/> as well as in this section.
      </h:p>
      <h:p>
      The general model for evaluation of TOEs against STs written to conform to this PP is as follows:
      <h:br/>
      After the ST has been approved for evaluation, the ITSEF
      will obtain the OS, supporting environmental IT, and the administrative/user guides for
      the OS. The ITSEF is expected to perform actions mandated by the Common Evaluation
      Methodology (CEM) for the ASE and ALC SARs.
      The ITSEF also performs the evaluation activities contained within 
      <xref to="Security_Requirements"/>, which are intended to be an interpretation of the
      other CEM assurance requirements as they apply to the specific technology instantiated in the
      OS.
      The evaluation activities that are captured in 
      <xref to="Security_Requirements"/> also provide
      clarification as to what the developer needs to provide to demonstrate the OS is compliant
      with the PP.
      </h:p>

      <section title="Class ASE: Security Target" id="ase">
        The following ASE components as defined in <xref to="bibCEM"/> are required:
        <h:ul>
        <h:li>Conformance claims (ASE_CCL.1)</h:li>
        <h:li>Extended components definition (ASE_ECD.1)</h:li>
        <h:li>ST introduction (ASE_INT.1)</h:li>
        <h:li>Security objectives for the operational environment (ASE_OBJ.1)</h:li>
        <h:li>Direct rationale security requirements (ASE_REQ.1)</h:li>
        <h:li>Security problem definition (ASE_SPD.1)</h:li>
        <h:li>TOE summary specification (ASE_TSS.1)</h:li>
        </h:ul>
        The requirements for exact conformance of the Security Target are described in 
        <xref to="Conformance_Claims"/>.
      </section>

      <section title="Class ADV: Development" id="adv">The information about the OS is contained in the guidance documentation available to the end user as
        well as the TSS portion of the ST. The OS developer must concur with the description of the product that is
        contained in the TSS as it relates to the functional requirements. The evaluation activities
        contained in <xref to="SFRs"/> should provide the ST authors with
        sufficient information to determine the appropriate content for the TSS section.
          <a-component cc-id="adv_fsp.1" name="Basic Functional Specification (ADV_FSP.1)">The
          functional specification describes the TSFIs. It is not
          necessary to have a formal or complete specification of these interfaces. Additionally,
          because OSes conforming to this PP will necessarily have interfaces to
          the operational environment that are not directly invokable by OS
          users, there is little point specifying that such interfaces be described in and of
          themselves since only indirect testing of such interfaces may be possible. For this PP,
          the activities for this family should focus on understanding the interfaces presented in
          the TSS in response to the functional requirements and the interfaces
          presented in the AGD documentation. No additional "functional specification" documentation
          is necessary to satisfy the evaluation activities specified. The interfaces that need to be
          evaluated are characterized through the information needed to perform the assurance
          activities listed, rather than as an independent, abstract list.

            <a-element type="D">
              <title>The developer shall provide a functional specification.</title>
            </a-element>
            <a-element type="D">
              <title>The developer shall provide a tracing from the functional specification to the
              SFRs.</title>
              <note role="application">As indicated in the introduction to this section, the
              functional specification is comprised of the information contained in the AGD_OPE and
              AGD_PRE documentation. The developer may reference a website accessible to application
              developers and the evaluator. The evaluation activities in the functional requirements
              point to evidence that should exist in the documentation and TSS
              section; since these are directly associated with the SFRs, the tracing in element
              ADV_FSP.1.2D is implicitly already done and no additional documentation is
              necessary.</note>
            </a-element>
	  

            <a-element type="C">
              <title>The functional specification shall describe the purpose and method of use for
              each SFR-enforcing and SFR-supporting TSFI.</title>
            </a-element>
            <a-element type="C">
              <title>The functional specification shall identify all parameters associated with each
              SFR-enforcing and SFR-supporting TSFI.</title>
            </a-element>
            <a-element type="C">
              <title>The functional specification shall provide rationale for the implicit
              categorization of interfaces as SFR-non-interfering.</title>
            </a-element>
            <a-element type="C">
              <title>
		The tracing shall demonstrate that the SFRs trace to TSFIs
		in the functional specification.
	      </title>
            </a-element>
	  
            <a-element type="E">
              <title>The evaluator shall confirm that the information provided meets all requirements
              for content and presentation of evidence.</title>
            </a-element>
            <a-element type="E">
              <title>The evaluator shall determine that the functional specification is an accurate
              and complete instantiation of the SFRs.</title>
              <aactivity>There are no specific evaluation activities associated with these SARs, except
              ensuring the information is provided. The functional specification documentation is
              provided to support the evaluation activities described in <xref to="SFRs"/>, and
              other activities described for AGD, ATE, and AVA SARs. The requirements on the content
              of the functional specification information is implicitly assessed by virtue of the
              other evaluation activities being performed; if the evaluator is unable to perform an
              activity because there is insufficient interface information, then an adequate
              functional specification has not been provided.
	      </aactivity>
            </a-element>
	  
        </a-component>
      </section>
      <section id="agd" title="Class AGD: Guidance Documentation">The guidance documents will be
        provided with the ST. Guidance must include a description of how the IT
        personnel verifies that the operational environment can fulfill its role for the security
        functionality. The documentation should be in an informal style and readable by the IT
        personnel. Guidance must be provided for every operational environment that the product
        supports as claimed in the ST. This guidance includes instructions to
        successfully install the TSF in that environment; and Instructions to
        manage the security of the TSF as a product and as a component of the
        larger operational environment. Guidance pertaining to particular security functionality is
        also provided; requirements on such guidance are contained in the Evaluation Activities
        specified with each requirement.
	<a-component cc-id="agd_ope.1" name="Operational User Guidance (AGD_OPE.1)">

	    <a-element type="D">
	      <title>The developer shall provide operational user guidance.</title>
	      <note role="application">The operational user guidance does not have to be contained in a
	      single document. Guidance to users, administrators and application developers can be
              spread among documents or web pages.
	      Rather than repeat information here, the developer should
              review the evaluation activities for this component to ascertain the specifics of the
              guidance that the evaluator shall be checking for. This will provide the necessary
              information for the preparation of acceptable guidance.</note>
            </a-element>
          

            <a-element type="C">
              <title>The operational user guidance shall describe, for each user role, the
              user-accessible functions and privileges that should be controlled in a secure
              processing environment, including appropriate warnings.</title>
              <note role="application">User and administrator are to be considered in the definition
              of user role.</note>
            </a-element>
            <a-element type="C">
              <title>The operational user guidance shall describe, for each user role, how to use the
              available interfaces provided by the <h:b>OS</h:b> in a secure manner.</title>
            </a-element>
            <a-element type="C">
              <title>The operational user guidance shall describe, for each user role, the available
              functions and interfaces, in particular all security parameters under the control of
              the user, indicating secure values as appropriate.</title>
              <note role="application">
		This portion of the operational user guidance should be presented
		in the form of a checklist that can be quickly executed by IT personnel (or end-users,
		when necessary) and suitable for use in compliance activities.
		When possible, this guidance is to be expressed in the eXtensible Configuration
		Checklist Description Format (XCCDF) to
		support security automation.
		Minimally, it should be presented in a structured
		format which includes a title for each configuration item,
		instructions for achieving the secure configuration, and any relevant rationale.
              </note>
            </a-element>
            <a-element type="C">
              <title>The operational user guidance shall, for each user role, clearly present each
              type of security-relevant event relative to the user-accessible functions that need to
              be performed, including changing the security characteristics of entities under the
              control of the TSF.</title>
            </a-element>
            <a-element type="C">
              <title>The operational user guidance shall identify all possible modes of operation of
                the <h:b>OS</h:b> (including operation following failure or operational
              error), their consequences, and implications for maintaining secure operation.</title>
            </a-element>
            <a-element type="C">
              <title>The operational user guidance shall, for each user role, describe the security
              measures to be followed in order to fulfill the security objectives for the
              operational environment as described in the ST.</title>
            </a-element>
            <a-element type="C">
              <title>The operational user guidance shall be clear and reasonable.</title>
            </a-element>
	  

            <a-element type="E">
              <title>The evaluator shall confirm that the information provided meets all requirements
              for content and presentation of evidence. </title>
              <aactivity>Some of the contents of the operational guidance are verified by the
              evaluation activities in <xref to="SFRs"/> and evaluation of the OS according to the <xref to="bibCEM"/>.
              The following additional information is also required.
              If cryptographic functions are provided by the OS, the operational guidance ill contain instructions for configuring
              the cryptographic engine associated with the evaluated configuration of the OS.
              It will provide a warning to the administrator that use of other
              cryptographic engines was not evaluated nor tested during the CC evaluation of the
              OS.
              The documentation must describe the process for verifying
              updates to the OS by verifying a digital signature – this may be
              done by the OS or the underlying platform.
              The evaluator shall
              verify that this process includes the following steps: Instructions for obtaining the
              update itself.
              This should include instructions for making the update accessible to
              the OS (e.g., placement in a specific directory).
              Instructions for initiating the update process, as well as discerning whether the process was
              successful or unsuccessful.
              This includes generation of the hash/digital signature.
              The OS will likely contain security functionality that does not
              fall in the scope of evaluation under this PP.
              The operational guidance will make it
              clear to an administrator which security functionality is covered by the evaluation
              activities. </aactivity>
          </a-element>
	  
        </a-component>
        <a-component cc-id="agd_pre.1" name="Preparative Procedures (AGD_PRE.1)">

            <a-element type="D">
              <title>The developer shall provide the <h:b>OS</h:b>, including its preparative
              procedures.</title>
              <note role="application">As with the operational guidance, the developer should look to
              the evaluation activities to determine the required content with respect to preparative
              procedures.</note>
            </a-element>
	  

            <a-element type="C">
              <title>The preparative procedures shall describe all the steps necessary for secure
                acceptance of the delivered <h:b>OS</h:b> in accordance with the developer's
              delivery procedures.</title>
            </a-element>
            <a-element type="C">
              <title>The preparative procedures shall describe all the steps necessary for secure
                installation of the <h:b>OS</h:b> and for the secure preparation of the
              operational environment in accordance with the security objectives for the operational
              environment as described in the ST.</title>
            </a-element>
	  

            <a-element type="E">
              <title>The evaluator shall confirm that the information provided meets all requirements
              for content and presentation of evidence.</title>
            </a-element>
            <a-element type="E">
              <title>The evaluator shall apply the preparative procedures to confirm that the <h:b>OS</h:b> can be prepared securely for operation.</title>
              <aactivity>As indicated in the introduction above, there are significant expectations
              with respect to the documentation—especially when configuring the operational
              environment to support OS functional requirements. The evaluator
              will check to ensure that the guidance provided for the OS
              adequately addresses all platforms claimed for the OS in the ST. </aactivity>
            </a-element>
	  
        </a-component>
      </section>
      <section id="alc" title="Class ALC: Life-cycle Support"> At the assurance level provided
        for OSes conformant to this PP, life-cycle support is limited to end-user-visible aspects of
        the life-cycle, rather than an examination of the OS vendor's development and configuration
        management process. This is not meant to diminish the critical role that a developer's
        practices play in contributing to the overall trustworthiness of a product; rather, it is a
        reflection on the information to be made available for evaluation at this assurance level.
          <a-component cc-id="alc_cmc.1" name="Labeling of the TOE (ALC_CMC.1)">This component is
          targeted at identifying the OS such that it can be distinguished from
          other products or versions from the same vendor and can be easily specified when being
          procured by an end user.

            <a-element type="D">
              <title>The developer shall provide the <h:b>OS</h:b> and a reference for the
                <h:b>OS</h:b>.</title>
            </a-element>
	  

            <a-element type="C">
              <title>The TSF shall be labeled with a unique reference.</title>
              <note role="application">Unique reference information includes:
	      <h:ul>
		<h:li>OS Name</h:li>
		<h:li>OS Version</h:li>
		<h:li>OS Description</h:li>
		<h:li>Software Identification (SWID) tags, if available</h:li>
              </h:ul>
              </note>
            </a-element>
	  

            <a-element type="E">
              <title>The evaluator shall confirm that the information provided meets all requirements
              for content and presentation of evidence.</title>
              <aactivity>The evaluator shall check the ST to ensure that it contains
              an identifier (such as a product name/version number) that specifically identifies the
              version that meets the requirements of the ST. Further, the
              evaluator shall check the AGD guidance and OS samples received for
              testing to ensure that the version number is consistent with that in the ST. If the vendor maintains a web site advertising the OS, the evaluator shall examine the information on the web site to
              ensure that the information in the ST is sufficient to distinguish
              the product.</aactivity>
            </a-element>
	  
        </a-component>
        <a-component cc-id="alc_cms.1" name="TOE CM Coverage (ALC_CMS.1)">
	  Given the scope of the OS and its associated evaluation
	  evidence requirements, this component's evaluation activities are covered
	  by the evaluation activities listed for ALC_CMC.1.

            <a-element type="D">
              <title>
                The developer shall provide a configuration list for the <h:b>OS</h:b>.
	      </title>
            </a-element>
	  

            <a-element type="C">
              <title>The configuration list shall include the following: the <h:b>OS</h:b>
              itself; and the evaluation evidence required by the SARs.</title>
            </a-element>
            <a-element type="C">
              <title>The configuration list shall uniquely identify the configuration items.</title>
            </a-element>
	  

            <a-element type="E">
              <title>The evaluator shall confirm that the information provided meets all requirements
              for content and presentation of evidence.</title>
              <aactivity>
		<h:p>
		  The "evaluation evidence required by the SARs" in this PP is limited to the
              information in the ST coupled with the guidance provided to
              administrators and users under the AGD requirements. By ensuring that the OS is specifically identified and that this identification is
              consistent in the ST and in the AGD guidance (as done in the
              evaluation activity for ALC_CMC.1), the evaluator implicitly confirms the information
              required by this component. Life-cycle support is targeted aspects of the developer's
              life-cycle and instructions to providers of applications for the developer's devices,
              rather than an in-depth examination of the TSF manufacturer's
              development and configuration management process. This is not meant to diminish the
              critical role that a developer's practices play in contributing to the overall
              trustworthiness of a product; rather, it's a reflection on the information to be made
              available for evaluation.
	      </h:p><h:p>
	      The evaluator shall ensure that the developer has
              identified (in guidance documentation for application developers concerning the
              targeted platform) one or more development environments appropriate for use in
              developing applications for the developer's platform. For each of these development
              environments, the developer will provide information on how to configure the
              environment to ensure that buffer overflow protection mechanisms in the environment(s)
              are invoked (e.g., compiler and linker flags). The evaluator shall ensure that this documentation
              also includes an indication of whether such protections are on by default, or have to
              be specifically enabled. The evaluator shall ensure that the TSF is
              uniquely identified (with respect to other products from the TSF
              vendor), and that documentation provided by the developer in association with the
              requirements in the ST is associated with the TSF
              using this unique identification.
	      </h:p>
	      </aactivity>
          </a-element>
	  
        </a-component>
        
        
        <a-component cc-id="alc_flr.1" name="Basic Flaw Remediation (ALC_FLR.1)" status="optional">
          <a-element type="D">
            <title>The developer shall document and provide flaw remediation procedures addressed to TOE
              developers.</title>
          </a-element>
          <a-element type="C">
            <title>The flaw remediation procedures documentation shall describe the procedures used to
              track all reported security flaws in each release of the TOE.</title>
          </a-element>
          <a-element type="C">
            <title>The flaw remediation procedures shall require that a description of the nature and effect
              of each security flaw be provided, as well as the status of finding a correction to that flaw.</title>
          </a-element>
          <a-element type="C">
            <title>The flaw remediation procedures shall require that corrective actions be identified for
              each of the security flaws.</title>
          </a-element>
          <a-element type="C">
            <title>The flaw remediation procedures documentation shall describe the methods used to
              provide flaw information, corrections and guidance on corrective actions to TOE users.</title>
          </a-element>
          <a-element type="E">
            <title>The evaluator shall confirm that the information provided meets all requirements for
              content and presentation of evidence.</title>
            <aactivity>Evaluated as specified by <xref to="bibCEM"/>.</aactivity>
          </a-element>  
        </a-component>
        
        
        
        <a-component cc-id="alc_flr.2" name="Flaw Reporting Procedures (ALC_FLR.2)" status="optional">
          <a-element type="D">
            <title>
              The developer shall document and provide flaw remediation procedures addressed to TOE
              developers.</title>
          </a-element>
          <a-element type="D">
            <title>
              The developer shall establish a procedure for accepting and acting upon all reports of
              security flaws and requests for corrections to those flaws.
            </title>
          </a-element>
          <a-element type="D">
            <title>
              The developer shall provide flaw remediation guidance addressed to TOE users.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation procedures documentation shall describe the procedures used to track all
              reported security flaws in each release of the TOE.</title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation procedures shall require that a description of the nature and effect of each
              security flaw be provided, as well as the status of finding a correction to that flaw.</title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation procedures shall require that corrective actions be identified for each of the
              security flaws.</title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation procedures documentation shall describe the methods used to provide flaw
              information, corrections and guidance on corrective actions to TOE users.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation procedures shall describe a means by which the developer receives
              from TOE users reports and enquiries of suspected security flaws in the TOE.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The procedures for processing reported security flaws shall ensure that any reported
              flaws are remediated and the remediation procedures issued to TOE users.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The procedures for processing reported security flaws shall provide safeguards that any
              corrections to these security flaws do not introduce any new flaws.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation guidance shall describe a means by which TOE users report to the
              developer any suspected security flaws in the TOE.
            </title>
          </a-element>
          <a-element type="E">
            <title>
              The evaluator shall confirm that the information provided meets all requirements for content and
              presentation of evidence.</title>
            <aactivity>Evaluated as specified by <xref to="bibCEM"/>.</aactivity>
          </a-element>  
        </a-component>		
        
        
        <a-component cc-id="alc_flr.3" name="Systematic Flaw Remediation (ALC_FLR.3)" status="optional">
          <a-element type="D">
            <title>
              The developer shall document and provide flaw remediation procedures addressed to TOE
              developers.
            </title>
          </a-element>
          <a-element type="D">
            <title>
              The developer shall establish a procedure for accepting and acting upon all reports of security
              flaws and requests for corrections to those flaws.
            </title>
          </a-element>
          <a-element type="D">
            <title>
              The developer shall provide flaw remediation guidance addressed to TOE users.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation procedures documentation shall describe the procedures used to track all
              reported security flaws in each release of the TOE.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation procedures shall require that a description of the nature and effect of each
              security flaw be provided, as well as the status of finding a correction to that flaw.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation procedures shall require that corrective actions be identified for each of the
              security flaws.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation procedures documentation shall describe the methods used to provide flaw
              information, corrections and guidance on corrective actions to TOE users.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation procedures shall describe a means by which the developer receives from
              TOE users reports and enquiries of suspected security flaws in the TOE.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation procedures shall include a procedure requiring timely response and
              the automatic distribution of security flaw reports and the associated corrections to
              registered users who might be affected by the security flaw.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The procedures for processing reported security flaws shall ensure that any reported flaws are
              remediated and the remediation procedures issued to TOE users.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The procedures for processing reported security flaws shall provide safeguards that any
              corrections to these security flaws do not introduce any new flaws.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation guidance shall describe a means by which TOE users report to the
              developer any suspected security flaws in the TOE.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation guidance shall describe a means by which TOE users may register
              with the developer, to be eligible to receive security flaw reports and corrections.
            </title>
          </a-element>
          <a-element type="C">
            <title>
              The flaw remediation guidance shall identify the specific points of contact for all reports
              and enquiries about security issues involving the TOE.
            </title>
          </a-element>
          <a-element type="E">
            <title>
              The evaluator shall confirm that the information provided meets all requirements for content and
              presentation of evidence.</title>
            <aactivity>Evaluated as specified by <xref to="bibCEM"/>.</aactivity>
          </a-element>  
        </a-component>	

        <!-- <ext-comp-def fam-id="ALC_TSU_EXT" title="Timely Security Updates"> -->
	<!--   <fam-behavior>This family of requirements defines the scenarios when the vendor must issue updates.</fam-behavior> -->
	<!-- </ext-comp-def> -->

	<a-component cc-id="alc_tsu_ext.1" name="Timely Security Updates"> This component requires the
          OS developer, in conjunction with any other necessary parties, to provide information as
          to how the end-user devices are updated to address security issues in a timely manner. The
          documentation describes the process of providing updates to the public from the time a
          security flaw is reported/discovered, to the time an update is released. This description
          includes the parties involved (e.g., the developer, carriers(s)) and the steps that are
          performed (e.g., developer testing, carrier testing), including worst case time periods,
          before an update is made available to the public.

            <a-element type="D">
              <title>The developer shall provide a description in the TSS of how timely security
              updates are made to the OS.</title>
            </a-element>
            <a-element type="D">
              <title> The developer shall provide a description in the TSS of how users are notified
              when updates change security properties or the configuration of the product. </title>
            </a-element>
	  

            <a-element type="C">
              <title>The description shall include the process for creating and deploying security
              updates for the OS software.</title>
            </a-element>
            <a-element type="C">
              <title>The description shall include the mechanisms publicly available for reporting
              security issues pertaining to the OS.</title>
              <note> The reporting mechanism could include web sites, email addresses, as well as a
              means to protect the sensitive nature of the report (e.g., public keys that could be
              used to encrypt the details of a proof-of-concept exploit). </note>
            </a-element>
	  

            <a-element type="E">
              <title>The evaluator shall confirm that the information provided meets all
              requirements for content and presentation of evidence.</title>
              <aactivity>
		<h:p>
		The evaluator shall verify that the TSS contains a description of the timely
              security update process used by the developer to create and deploy security updates.
              The evaluator shall verify that this description addresses the entire application. The
              evaluator shall also verify that, in addition to the OS developer's process, any
              third-party processes are also addressed in the description. The evaluator shall also
              verify that each mechanism for deployment of security updates is described.
	      </h:p><h:p>
	      The
              evaluator shall verify that, for each deployment mechanism described for the update
              process, the TSS lists a time between public disclosure of a vulnerability and public
              availability of the security update to the OS patching this vulnerability, to include
              any third-party or carrier delays in deployment. The evaluator shall verify that this
              time is expressed in a number or range of days.
	      </h:p><h:p>
	      The evaluator shall verify that
              this description includes the publicly available mechanisms (including either an email
              address or website) for reporting security issues related to the OS. The evaluator
              will verify that the description of this mechanism includes a method for protecting
              the report either using a public key for encrypting email or a trusted channel for a
              website.
	    </h:p>
	    </aactivity>
            </a-element>
	  
        </a-component>
      </section>
      <section id="ate" title="Class ATE: Tests">Testing is specified for functional aspects of
        the system as well as aspects that take advantage of design or implementation weaknesses.
        The former is done through the ATE_IND family, while the latter is through the AVA_VAN
        family. At the assurance level specified in this PP, testing is based on advertised
        functionality and interfaces with dependency on the availability of design information. One
        of the primary outputs of the evaluation process is the test report as specified in the
        following requirements.
	<a-component cc-id="ate_ind.1" name="Independent Testing - Conformance (ATE_IND.1)">
	  Testing is performed to confirm the
          functionality described in the TSS as well as the administrative
          (including configuration and operational) documentation provided. The focus of the testing
          is to confirm that the requirements specified in <xref to="SFRs"/> being met,
          although some additional testing is specified for SARs in
          <xref to="Security_Assurance_Requirements"/>. 
          The
          evaluation activities identify the additional testing activities associated with these
          components. The evaluator produces a test report documenting the plan for and results of
          testing, as well as coverage arguments focused on the platform/OS
          combinations that are claiming conformance to this PP.
	  Given the scope of the OS and its associated evaluation evidence requirements, this component's
          evaluation activities are covered by the evaluation activities listed for ALC_CMC.1.

            <a-element type="D">
              <title>The developer shall provide the <h:b>OS</h:b> for testing.</title>
            </a-element>
	  

            <a-element type="C">
              <title>The <h:b>TSF</h:b> shall be suitable for testing.</title>
            </a-element>
	  

            <a-element type="E">
              <title>The evaluator <h:i>shall confirm</h:i> that the information provided meets all
              requirements for content and presentation of evidence.</title>
            </a-element>
            <a-element type="E">
              <title>The evaluator shall test a subset of the TSF to confirm that
              the TSF operates as specified.</title>
              <note role="application">The evaluator shall test the OS on the most current fully
              patched version of the platform.</note>
              <aactivity>
		<h:p>
		  The evaluator shall prepare a test plan and report documenting the testing
              aspects of the system, including any application crashes during testing. The evaluator
              will determine the root cause of any application crashes and include that information
              in the report.
              The test plan covers all of the testing actions contained in the <xref to="bibCEM"/>
              and the body of this PP's evaluation activities.
	      </h:p><h:p>
	      While it is
              not necessary to have one test case per test listed in an evaluation activity, the
              evaluator must document in the test plan that each applicable testing requirement in
              the ST is covered. The test plan identifies the platforms to be
              tested, and for those platforms not included in the test plan but included in the
                ST, the test plan provides a justification for not testing the
              platforms. This justification must address the differences between the tested
              platforms and the untested platforms, and make an argument that the differences do not
              affect the testing to be performed. It is not sufficient to merely assert that the
              differences have no affect; rationale must be provided. If all platforms claimed in
              the ST are tested, then no rationale is necessary. The test plan
              describes the composition of each platform to be tested, and any setup that is
              necessary beyond what is contained in the AGD documentation. It should be noted that
              the evaluator is expected to follow the AGD documentation for installation and setup
              of each platform either as part of a test or as a standard pre-test condition. This
              may include special test drivers or tools. For each driver or tool, an argument (not
              just an assertion) should be provided that the driver or tool will not adversely
              affect the performance of the functionality by the OS and its
              platform.
	      </h:p><h:p>
	      This also includes the configuration of the cryptographic engine to be
              used. The cryptographic algorithms implemented by this engine are those specified by
              this PP and used by the cryptographic protocols being evaluated (IPsec, TLS). The test
              plan identifies high-level test objectives as well as the test procedures to be
              followed to achieve those objectives. These procedures include expected results.
	      </h:p><h:p>
              The test report (which could just be an annotated version of the test plan) details
              the activities that took place when the test procedures were executed, and includes
              the actual results of the tests. This will be a cumulative account, so if there was a
              test run that resulted in a failure; a fix installed; and then a successful re-run of
              the test, the report would show a "fail" and "pass" result (and the supporting
              details), and not just the "pass" result.
	    </h:p>
	    </aactivity>
            </a-element>
	  
        </a-component>
      </section>
      <section id="ava" title="Class AVA: Vulnerability Assessment">For the first generation of
        this protection profile, the evaluation lab is expected to survey open sources to discover
        what vulnerabilities have been discovered in these types of products. In most cases, these
        vulnerabilities will require sophistication beyond that of a basic attacker. Until
        penetration tools are created and uniformly distributed to the evaluation labs, the
        evaluator shall not be expected to test for these vulnerabilities in the OS.
        The labs will be expected to comment on the likelihood of these vulnerabilities given
        the documentation provided by the vendor. This information will be used in the development
        of penetration testing tools and for the development of future protection profiles.
        <a-component cc-id="ava_van.1" name="Vulnerability Survey (AVA_VAN.1)">

          <a-element type="D">
            <title>The developer shall provide the <h:b>OS</h:b> for testing.</title>
          </a-element>
	  

	  <a-element type="C">
	    <title>The <h:b>TSF</h:b> shall be suitable for testing.</title>
          </a-element>
	  

          <a-element type="E">
            <title>The evaluator shall confirm that the information provided meets all requirements
            for content and presentation of evidence.</title>
          </a-element>
          <a-element type="E">
            <title>The evaluator shall perform a search of public domain sources to identify
              potential vulnerabilities in the <h:b>OS</h:b>.</title>
            <note role="application">Public domain sources include the Common Vulnerabilities
              and Exposures (CVE) dictionary for publicly-known vulnerabilities. Public domain
              sources also include sites which provide free checking of files for viruses.</note>
            <!-- their Usage statement does not permit us to mention VirusTotal by name without permission -->
          </a-element>
          <a-element type="E">
            <title>The evaluator shall conduct penetration testing, based on the identified
              potential vulnerabilities, to determine that the <h:b>OS</h:b> is resistant to
              attacks performed by an attacker possessing Basic attack potential.</title>
            <aactivity>
	      <h:p>
	      The evaluator shall generate a report to document their
              findings with respect to this requirement. This report could physically be part of the
              overall test report mentioned in ATE_IND, or a separate document. The evaluator
              performs a search of public information to find vulnerabilities that have been found
              in similar applications with a particular focus on network protocols the application
              uses and document formats it parses.
              The evaluator documents the sources consulted and
              the vulnerabilities found in the report.
	      </h:p><h:p>
              For each vulnerability found, the evaluator
              either provides a rationale with respect to its non-applicability, or the evaluator
              formulates a test (using the guidelines provided in ATE_IND) to confirm the
              vulnerability, if suitable. Suitability is determined by assessing the attack vector
              needed to take advantage of the vulnerability. If exploiting the vulnerability
              requires expert skills and an electron microscope, for instance, then a test would not
              be suitable and an appropriate justification would be formulated.
	    </h:p>
	    </aactivity>
          </a-element>
	  
        </a-component>
      </section>
    </sec:Security_Assurance_Requirements>
  </sec:Security_Requirements>

  <appendix title="Implicitly Satisfied Requirements" id="satisfiedreqs">
     <h:table>
	<h:tr class="header">
	<h:td>Requirement</h:td>
	<h:td>Rationale for Satisfaction</h:td>
	</h:tr>
	<h:tr>
	<h:td>FIA_UAU.1 - Timing of authentication</h:td>
	<h:td>
	  FIA_AFL.1 implicitly requires that the OS perform all necessary actions,
	  including those on behalf of the user who has not been authenticated,
	  in order to authenticate;
	  therefore it is duplicative to include these actions as a
	  separate assignment and test.
	</h:td>
	</h:tr>
	<h:tr>
	<h:td>FIA_UID.1 - Timing of identification</h:td>
	<h:td>
	  FIA_AFL.1 implicitly requires that the OS perform all necessary actions,
	  including those on behalf of the user who has not been identified,
	  in order to authenticate;
	  therefore it is duplicative to include these actions as a
	  separate assignment and test.
	</h:td>
	</h:tr>
	<h:tr>
	<h:td>FMT_SMR.1 - Security roles</h:td>
	<h:td>
	  FMT_MOF_EXT.1 specifies role-based management functions that implicitly defines
	  user and privileged accounts;
	  therefore, it is duplicative to include separate role requirements.
	</h:td>
	</h:tr>
	<h:tr>
	<h:td>FPT_STM.1 - Reliable time stamps</h:td>
	<h:td>
	  FAU_GEN.1.2 explicitly requires that the OS associate timestamps with audit data;
	  therefore it is duplicative to include a separate timestamp requirement.
	</h:td>
	</h:tr>
	<h:tr>
	<h:td>FTA_SSL.1 - TSF-initiated session locking</h:td>
	<h:td>
 	  FMT_MOF_EXT.1 defines requirements for managing session locking;
	  therefore, it is duplicative to include a separate session locking requirement.
	</h:td>
	</h:tr>
	<h:tr>
	<h:td>FTA_SSL.2 - User-initiated locking</h:td>
	<h:td>
	  FMT_MOF_EXT.1 defines requirements for user-initiated session locking;
	  therefore, it is duplicative to include a separate session locking requirement.
	</h:td>
	</h:tr>
	<h:tr>
	<h:td>FAU_STG.2 - Protected audit data storage</h:td>
	<h:td>
	  FPT_ACF_EXT.1 defines a requirement to protect audit logs;
	  therefore, it is duplicative to include a separate protection of audit trail requirements.
	</h:td>
	</h:tr>
	<h:tr>
	<h:td>FAU_GEN.2 - User identity association</h:td>
	<h:td>
	  FAU_GEN.1.2 explicitly requires that the OS record
	  any user account associated with each event; therefore, it is duplicative
	  to include a separate requirement to associate a user account with each
	  event.
	</h:td>
	</h:tr>
	<h:tr>
	  <h:td>FAU_SAR.1 - Audit review</h:td>
	  <h:td>
	    FPT_ACF_EXT.1.2 requires that audit logs (and other objects)
	    are protected from reading by unprivileged users; therefore, it is duplicative
	    to include a separate requirement to protect only the audit information.
	  </h:td>
	</h:tr>
    </h:table>

  </appendix>

  <appendix title="Entropy Documentation and Assessment" id="entropyappendix">
    <h:p>
      This appendix describes the required supplementary information for the entropy source used by the OS.
    </h:p>
    <h:p>
    The documentation of the entropy source should be detailed enough that, after reading, the
    evaluator shall thoroughly understand the entropy source and why it can be relied upon to provide
    sufficient entropy. This documentation should include multiple detailed sections: design
    description, entropy justification, operating conditions, and health testing. This documentation
    is not required to be part of the TSS.
    </h:p>
    <section id="entropydesign" title="Design Description">
      <h:p>
      Documentation will include the design of the entropy source as a whole, including the
      interaction of all entropy source components. Any information that can be shared regarding the
      design should also be included for any third-party entropy sources that are included in the
      product.
      </h:p>
      <h:p> The documentation will describe the operation of the entropy source to include,
      how entropy is produced, and how unprocessed (raw) data can be obtained from within the
      entropy source for testing purposes. The documentation should walk through the entropy source
      design indicating where the entropy comes from, where the entropy output is passed next, any
      post-processing of the raw outputs (hash, XOR, etc.), if/where it is stored, and finally, how
      it is output from the entropy source. Any conditions placed on the process (e.g., blocking)
      should also be described in the entropy source design. Diagrams and examples are encouraged.
      </h:p>
      <h:p> This design must also include a description of the content of the security boundary of
      the entropy source and a description of how the security boundary ensures that an adversary
      outside the boundary cannot affect the entropy rate.
      </h:p>
      <h:p>If implemented, the design
      description will include a description of how third-party applications can add entropy to the
      RBG. A description of any RBG state saving between power-off and power-on will be included.
      </h:p>
    </section>
    <section id="entropyjustification" title="Entropy Justification">
      <h:p>
      There should be a technical
      argument for where the unpredictability in the source comes from and why there is confidence
      in the entropy source delivering sufficient entropy for the uses made of the RBG output (by
      this particular OS). This argument will include a description of the expected min-entropy
      rate (i.e. the minimum entropy (in bits) per bit or byte of source data) and explain that
      sufficient entropy is going into the OS randomizer seeding process. This discussion will be
      part of a justification for why the entropy source can be relied upon to produce bits with
      entropy.
      </h:p>
      <h:p>
	The amount of information necessary to justify the expected min-entropy rate
	depends on the type of entropy source included in the product.
      </h:p>
      <h:p>
	For developer provided
      entropy sources, in order to justify the min-entropy rate, it is expected that a large number
      of raw source bits will be collected, statistical tests will be performed, and the min-entropy
      rate determined from the statistical tests. While no particular statistical tests are required
      at this time, it is expected that some testing is necessary in order to determine the amount
      of min-entropy in each output.
      </h:p>
      <h:p>
	For third-party provided entropy sources, in which the
      OS vendor has limited access to the design and raw entropy data of the source, the
      documentation will indicate an estimate of the amount of min-entropy obtained from this
      third-party source. It is acceptable for the vendor to "assume" an amount of min-entropy,
      however, this assumption must be clearly stated in the documentation provided. In particular,
      the min-entropy estimate must be specified and the assumption included in the ST.
      </h:p>
      <h:p>
	
      Regardless of type of entropy source, the justification will also include how the DRBG is
      initialized with the entropy stated in the ST, for example by verifying that the min-entropy
      rate is multiplied by the amount of source data used to seed the DRBG or that the rate of
      entropy expected based on the amount of source data is explicitly stated and compared to the
      statistical rate. If the amount of source data used to seed the DRBG is not clear or the
      calculated rate is not explicitly related to the seed, the documentation will not be
      considered complete.
      </h:p>
      <h:p>
	The entropy justification will not include any data added from any
	third-party application or from any state saving between restarts.
      </h:p>
    </section>
    <section id="entropyoperatingconditions" title="Operating Conditions"> The entropy rate may be
      affected by conditions outside the control of the entropy source itself. For example, voltage,
      frequency, temperature, and elapsed time after power-on are just a few of the factors that may
      affect the operation of the entropy source. As such, documentation will also include the range
      of operating conditions under which the entropy source is expected to generate random data. It
      will clearly describe the measures that have been taken in the system design to ensure the
      entropy source continues to operate under those conditions. Similarly, documentation will
      describe the conditions under which the entropy source is known to malfunction or become
      inconsistent. Methods used to detect failure or degradation of the source will be included. </section>
    <section id="entropyhealthtesting" title="Health Testing"> More specifically, all entropy source
      health tests and their rationale will be documented. This includes a description of the health
      tests, the rate and conditions under which each health test is performed (e.g., at start,
      continuously, or on-demand), the expected results for each health test, and rationale
      indicating why each test is believed to be appropriate for detecting one or more failures in
      the entropy source.
    </section>
  </appendix>
  
  <appendix title="Validation Guidelines" id="validation_guidelines"/>
  
  <bibliography>
    <cc-entry/>
    <entry id="bibNCSC">
      <tag>NCSC</tag>
      <description>National Cyber Security Centre - <h:a href="https://www.ncsc.gov.uk/collection/end-user-device-security">
            End User Device (EUD) Security Guidance
            </h:a></description>
    </entry>
      
    <entry id="bibCSA">
        <tag>CSA</tag>
        <description>
          <h:a href="http://csrc.nist.gov/groups/SMA/ispab/documents/csa_87.txt">Computer Security Act
            of 1987</h:a>, H.R. 145, June 11, 1987. </description>
    </entry>
    <entry id="bibOMB">
        <tag>OMB</tag>
        <description>
          <h:a href="http://www.whitehouse.gov/sites/default/files/omb/memoranda/fy2006/m06-19.pdf">
	    Reporting Incidents Involving Personally Identifiable Information and Incorporating the
            Cost for Security in Agency Information Technology Investments</h:a>, OMB M-06-19, July
          12, 2006.
        </description>
    </entry>
    <entry id="bib-shavs">
      <tag>SHAVS</tag>
      <description>
	<h:a href="https://csrc.nist.gov/csrc/media/projects/cryptographic-algorithm-validation-program/documents/shs/shavs.pdf">The Secure Hash Algorithm Validation System, NIST, 22 July 2004</h:a>
      </description>
    </entry>
    <entry id="bibx509">
      <tag>x509</tag>
      <description>
        <h:a href="https://tools.ietf.org/html/rfc5280">
            Internet X.509 Public Key Infrastructure Certificate
             and Certificate Revocation List (CRL) Profile</h:a>, May 2008.
      </description>
    </entry>
  </bibliography>

</PP>
