<?xml-stylesheet type='text/xsl' href='xmlspec.xsl'?>
<!DOCTYPE spec PUBLIC "-//W3C//DTD Specification V2.1//EN"
"xmlspec.dtd"[

<!ENTITY shortname "wsc-ui">

<!ENTITY draft.year "2010">

<!ENTITY draft.month "May">
<!ENTITY draft.mm "05">

<!ENTITY draft.day "11">
<!ENTITY draft.dd "11"> 

<!ENTITY draft.latest "http://www.w3.org/TR/&shortname;/">
<!ENTITY draft.current "http://www.w3.org/TR/&draft.year;/&draft.doctype;-&shortname;-&draft.year;&draft.mm;&draft.dd;/">

<!ENTITY draft.doctype "WD">
<!-- <!ENTITY status "W3C Working Draft">  -->
<!ENTITY status "Editor's Draft">


]>
<spec xmlns:xlink="http://www.w3.org/1999/xlink"
      w3c-doctype="wd" role="editors-copy" >
  <header>
    <title>Web Security Context: User Interface Guidelines</title>
    <w3c-doctype>&status;</w3c-doctype>
    <pubdate>
      <day>&draft.day;</day>
      <month>&draft.month;</month>
      <year>&draft.year;</year>
    </pubdate>
    <publoc>
      <loc href="&draft.current;">&draft.current;</loc>
    </publoc>
    <latestloc>
      <loc href="&draft.latest;">&draft.latest;</loc>
    </latestloc>
    <prevlocs>
      <loc
      href="http://www.w3.org/TR/2009/CR-wsc-ui-20091222/">http://www.w3.org/TR/2009/CR-wsc-ui-20091222/</loc>
    </prevlocs>
    <authlist>
      <author>
        <name>Thomas Roessler</name>
        <affiliation>
          <loc href="http://www.w3.org/">W3C</loc> 
        </affiliation>
      </author>
      <author>
        <name>Anil Saldhana</name>
        <affiliation>
          <loc href="http://www.redhat.com/">RedHat</loc> 
        </affiliation>
      </author>
    </authlist>
    
    <abstract>This specification defines guidelines and requirements for the 
    presentation and communication of Web security context information to 
    end-users.</abstract>
    
    <status>
      <p>
	<emph> This section describes the status of this document at the time of its
	publication. Other documents may supersede this document. A list of current W3C 
	publications and the latest revision of this technical report can be found in 
	the <loc href="http://www.w3.org/TR/">W3C technical reports index</loc> 
	at http://www.w3.org/TR/.
	</emph>
      </p>

      <p>The W3C Membership and other interested parties are invited to review the document and send
      comments to <loc
      href="mailto:public-usable-authentication@w3.org">public-usable-authentication@w3.org</loc>
      (with <loc href="http://lists.w3.org/Archives/Public/public-usable-authentication/">public
      archive</loc>) through @@.  Advisory Committee Representatives should consult their <loc href="http://www.w3.org/2002/09/wbs/myQuestionnaires">WBS
      questionnaires</loc>. Note that substantive technical comments were expected during the Last Call
      review period that ended 31 March 2010.</p>

      <p>
	Please see the Working Group's <loc href="wsc-impl.html">Implementation Report</loc>.
      </p>
      
      <p>
	This document was developed by the <loc href="http://www.w3.org/2006/WSC/">Web 
	Security Context Working Group</loc>.  The Working Group expects to advance 
	this Working Draft to Recommendation Status.
      </p>
      
      <p>
	To frame its development of this specification, the Working Group had previously
	published a use case note <bibref ref="ref-wsc-usecases"/>.  This specification 
	addresses most of the use cases and issues documented in that note by 
	documenting best existing practice, with the following exceptions: </p>
      <ulist>
	<item><p>This specification does not include advice for web site authors.</p></item>
	<item><p>This specification does not provide advice to address the issue 
	explained in sections 
	<loc
	href="http://www.w3.org/TR/2008/NOTE-wsc-usecases-20080306/#extended-chrome">9.1.2
	Visually extending the chrome</loc> and
	<loc href="http://www.w3.org/TR/2008/NOTE-wsc-usecases-20080306/#information-bar">9.2.7 Information bar (aka:
	notification bar)</loc>.
	</p></item>
      </ulist>
      <p>
	Additionally, section 
	<loc
	href="http://www.w3.org/TR/2008/NOTE-wsc-usecases-20080306/#usability-testing">10.4
	Implementation and testing</loc> of <bibref ref="ref-wsc-usecases"/> 
	articulated an expectation that the recommendations in this specification 
	would be subject to usability testing, at least on a low fidelity level, and that 
	such testing would form part of the Candidate Recommendation exit criteria.  
	Resources available to the Working Group at this point will not permit the 
	group to conduct extensive usability testing.  At the same time, the focus of
	this specification has shifted toward documenting best existing practice.
      </p>

      <p>
	For a list of changes to this document since its latest Last Call Working Draft, please
	refer to the <loc href="diff.html">diff document</loc> that is available.  Notable changes
	made in response to last call comments include:
      </p>

      <p>
	@@ Note: Will add links to sections in the diff to this list of changes. @@
      </p>
      
      <ul>
	<li>A clarification in the overview that the security properties of the local client state
	are out of scope.</li>
	
	<li>Removing upgrades as defined in RFC 2817 from the definition of TLS-protected.</li>
	
	<li>Reverting the conformance criteria for TLS indicator and identity signal to their
	Candidate Recommendation state of SHOULD in primary user interface, otherwise MUST in
	secondary user interface. (During the latest last call they had been changed to MUST in
	primary user interface.)</li>
	
	<li>In errors that interrupt the user's flow of interaction, clarifying that user agents are
	to make a best effort to enable the user to easily return to the previous user agent
	state.</li>
	
	<li>Referencing TLS-protected HTTP instead of HTTPS in the discussion of the security
	considerations of dynamic content changes from calls to the XMLHttpRequest API. </li>
      </ul>
      
      <p>
	Publication as a Proposed Recommendation does not imply endorsement by
	the W3C Membership. This is a draft document and may be
	updated, replaced or obsoleted by other documents at any
	time. It is inappropriate to cite this document as other than
	work in progress.
      </p>
      <p>
	 This document was produced by a group operating under the
	 <loc
	 href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5
	 February 2004 W3C Patent Policy</loc>. W3C maintains a <loc
	 href="http://www.w3.org/2004/01/pp-impl/39814/status">public
	 list of any patent disclosures</loc> made in connection with
	 the deliverables of the group; that page also includes
	 instructions for disclosing a patent. An individual who has
	 actual knowledge of a patent which the individual believes
	 contains 
	 <loc 
	 href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</loc> 
	 must disclose the information in
	 accordance with 
	 <loc href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section 6 of the W3C Patent Policy</loc>.
      </p>
    </status>
  </header>
  <body>
    <div1 id="Overview">
      <head>Overview</head>
      
      <p>
      This specification deals with the trust decisions that users must make online, 
      and with ways to support them in making safe and informed decisions where 
      possible.
      </p>
      
      <p>
      In order to achieve that goal, this specification includes recommendations on 
      the presentation of identity information by user agents, 
      <specref ref="identity-requirement"/>. We also include recommendations on
      conveying error situations in security protocols. The error handling 
      recommendations both minimize the trust decisions left to users, and represent 
      known best practice in inducing users toward safe behavior where they have to 
      make these decisions. To complement the interaction and decision related parts 
      of this specification, <specref ref="Robustness"/> addresses the question of 
      how the communication of context information needed to make decisions can be 
      made more robust against attacks.
      </p>

      <p>
      This document specifies user interactions with a goal toward making security 
      usable, based on known best practice in this area. This document is intended to 
      provide user interface guidelines. Most sections assume the audience has a 
      certain level of understanding of the core PKI (Public Key Infrastructure) 
      technologies as used on the Web. The following sections are relevant to all 
      readers and do not require a thorough understanding of PKI: 
      <specref ref="Conformance"/>, <specref ref="concepts"/>, 
      <specref ref="indicators"/>, 
      <specref ref="error-handling"/>, <specref ref="Robustness"/> and 
      <specref ref="security-considerations-warning-fatigue"/>. 
      Since this document is part of the W3C specification process, it is written to 
      clearly lay out the requirements and options for conforming to it as a 
      standard.  User interface guidelines that are not intended for use as 
      standards do not have such a structure. Readers more familiar with that latter 
      form of user interface guideline are encouraged to read this specification as a 
      way to avoid known mistakes in usable security.
      </p>
      
      <p>
      This specification comes with two companion documents: 
      <bibref ref="ref-wsc-usecases"/> documents the initial assumptions about the 
      scope of this specification. It also includes an initial set of use cases 
      the Working Group discussed.  <bibref ref="ref-wsc-threats"/> documents 
      the Working Group's initial threat analysis.  This document is based on current 
      best practices in deployed user agents, and covers the use cases and 
      threats in those documents to that extent.
      </p>

    </div1>

    <div1 id="thanks">
    <head>Acknowledgments</head>
    <p>
    This specification is based on text from Mary Ellen Zurko, Stephen Farrell, 
    Anil Saldhana, Ian Fette, Michael McCormick, Serge Egelman, Johnathan Nightingale,
    Yngve N. Pettersen, Luis Barriga, Hal Lockhart, Tyler Close, Bill Doyle, 
    Thomas Roessler, as well as input and discussions from the active members of the 
    Web Security Context Working Group, primarily Phillip Hallam-Baker, Mike Beltzner, 
    Joe Steele, Jan Vidar Krey, Maritza Johnson, Rachna Dhamija and Dan Schutzer. 
    It has also benefited from general public and working group commentary on earlier
    drafts.
    </p>
 </div1>
 
    <div1 id="Conformance">
      <head>Conformance</head>
      
      <div2 id="conformance-products">
	<head>Product classes</head>
	<p>
	  This specification addresses 
	  <termref def="def-user-agent">Web user agents</termref> as a product class. 
	  Web user agents and user agents are used synonymously in this 
	  specification.
	</p>
	  
	<p>
	  This specification also addresses products that might incorporate changes 
	  to a user agents, such as plug-ins, extensions, and others; they are 
	  summarily called <termdef
	  id="def-plug-in">plug-ins</termdef> in this section.
	</p>
	  
	<p>
	  Such products that might incorporate changes to the user agent,
	  e.g. through the addition or removal of features, can render an 
	  otherwise conforming user agent non conforming, or vice versa.
	</p>
	
      </div2>
      
      <div2 id="conformance-language">
	<head>Language conventions</head>
	
	<p>
	Throughout the specification, the RFC 2119 <bibref ref="ref-RFC2119" /> 
	keywords MUST, MUST NOT, SHOULD, SHOULD NOT, MAY are applied, with their 
	respective meanings.
	</p>
      </div2>
      
      <div2 id="conformance-levels">
	<head>Conformance levels</head>
	<p>
	  A user agent conforms to this specification at 
	  the <termdef id="conformance-basic">basic level</termdef> if it 
	  honors all MUST and MUST NOT clauses of this specification.
	</p>
	<p>
	  A user agent conforms to this specification at the <termdef
	  id="conformance-advanced">advanced level</termdef> if it also honors all 
	  SHOULD and SHOULD NOT clauses of this specification.
	</p>
	<p>
	  Conformance of a plug-in is defined in terms of the conformance of the 
	  user agent that results when the plug-in is added to a base user agent. 
	  E.g., if a given user agent conforms to this specification on the basic 
	  level, and a plug-in adds features that lead to conformance on the advanced 
	  level, then this plug-in conforms on the advanced level <emph>with respect 
	  to this base user agent</emph>.
	</p>
      </div2>

      <div2 id="conformance-claims"> <head>Conformance claims</head>
      
       <p> A claim about a Web user agent's conformance with this
      specification must state: </p>
      
       <olist> <item>Whether basic or advanced conformance is claimed (see
      <specref ref="conformance-levels"/>)</item> <item>What TLS <bibref
      ref="ref-sslv3"/> <bibref ref="ref-tlsv11"/> <bibref ref="ref-tlsv12"/>
      protocol versions and algorithms are considered as <termref
      def="def-strong-algos">strong TLS algorithms</termref>, and what
      protocol versions and algorithms are supported in TLS negotiation, but
      not considered <termref def="def-strong-algos">strong</termref>.</item>
      <item>What user interface element is the <termref
      def="tls-indicator">TLS indicator</termref> defined in this
      specification.</item> <item>What user interface element is the <termref
      def="def-identity-signal">identity signal</termref> defined in this
      specification.</item> <item>What broadly accepted practices are
      considered sufficient for a trust anchor to be deemed augmented
      assurance qualified (see <specref ref="sec-evcert"/>), and what data
      elements are deemed assured by those certificates.</item> <item>What
      features beyond the claimed conformance level the user agent conforms
      with.</item> </olist>
      
       <p> A claim about a plug-in's conformance with this specification must
      include all of the above, and also identify the base user agent with
      respect to which conformance is claimed. </p>
      
       </div2> </div1> <div1 id="concepts"> <head>Interaction and content
      model</head> <div2 id="interaction-overview"> <head>Overview</head> <p>
      This specification assumes a human user interacting with a <termref
      def="def-user-agent">Web user agent</termref>, interacting with Web
      resources. Many of the requirements specified are focused on the
      presentation of security context information to the user, and therefore
      directly relate to user interfaces. Where requirements or techniques are
      specific to certain modalities, these are made explicit, and are part of
      the preconditions for applying the requirement or technique. </p> <p>
      When this specification speaks of a Web user agent to describe the
      application through which a user interacts with the Web, then this term
      is used on a conceptual level: No assumption is made about
      implementation details; the "Web user agent" may denote a combination of
      several applications, extensions to such applications, operating system
      features, and assistive technologies. </p> <p> A common user agent will
      therefore be a web browser with some number of plug-ins, extensions,
      call outs to external systems which render particular document formats,
      and assistive technologies. </p> <p>This specification makes no specific
      assumption about the content with which the user interacts, except for
      one: There is a top-level <termref def="def-page">Web page</termref>
      that is identified by a URI <bibref ref="ref-URI" />. This Web page
      might be an HTML frameset, an application running on top of a
      proprietary run-time environment, or a document in a format interpreted
      by plug-ins or external systems served as part of a Web interaction. The
      page's behavior might be determined by scripting, stylesheets, or other
      mechanisms. </p>

	<p>In interactive Web applications, the presentation to the user might also
depend on state that is local to the client - be it local storage of
structured data, or be it recent interactions with the Web page. The security
properties of those data will depend on the security properties of the client
computer itself, and are out of scope for this specification.</p>

 <p> Some requirements are expressed in terms of user interface components
commonly found in current-generation <termref def="def-user-agent">Web user
agents</termref>. </p> <p> <specref ref="definitions" /> is expected to be
consistent with the Web Content Accessibility Guidelines Version 2, <bibref
ref="ref-WCAG2"></bibref>. </p> </div2> <div2 id="definitions"> <head>Terms
and definitions</head> <p> <termdef id="def-user-agent">A <term>Web User
Agent</term> is any software that retrieves and presents Web content for
users.</termdef> </p> <p> <termdef id="def-page">A <term>Web Page</term> is a
resource that is referenced by a URI and is not embedded in another resource,
plus any other resources that are used in the rendering or intended to be
rendered together with it.</termdef> </p> <div3 id="common-widgets">
<head>Common User Interface elements</head> <p> This section defines terms for
user interface elements commonly present in <termref def="def-user-agent">Web
User Agents</termref>. </p> <p> <termdef id="def-primary-chrome">
<term>Primary User Interface</term> denotes the portions of a <termref
def="def-user-agent">Web user agent's</termref> user interface that are
available to users without being solicited by a user interaction.</termdef>
</p> <p> Examples of primary user interface include the location bar in common
Web user agents, the "padlock" icon present in common Web user agents, or
error pages that take the place of a Web page that could not be retrieved.
</p> <p> <termdef id="def-secondary-chrome"> <term>Secondary User
Interface</term> denotes the portions of a <termref def="def-user-agent">Web
user agent's</termref> user interface that are available to the user after
they are solicited by a specific user interaction.</termdef> </p> <p> Examples
of secondary user interface include the "Page Information" dialog commonly
found in Web user agents, and the "Security Properties" dialog that can
obtained by clicking the padlock icon in common Web user agents. </p>

 <p> We occasionally use the term <termdef id="def-chrome">
<term>chrome</term></termdef> to refer to the representation through which the
user interacts with the user agent itself, as distinct from the accessed web
content. This includes both primary and secondary user interface. </p>

 <p> <termdef id="def-locationbar"> <term>Location Bar</term> is a widget in a
Web user agent's user interface which displays (and often allows input of) the
textual location (entered as a URI) of the resource being requested (or
displayed - after the response is received).</termdef> </p> <p> <termdef
id="def-identity-information"> <term>Identity Information</term> is
information about the web site which is used to present the identity
signal.</termdef> </p> </div3> </div2> </div1>

  <div1 id="tlsforweb">
    <head>Applying TLS to the Web</head>

    <div2 id="tlstosecurehttp">
      <head>Certificate Handling and Information</head>


      <p>
      Public key certificates (see <bibref ref="ref-PKIX"/>) are widely used in 
      TLS <bibref ref="ref-sslv3"/> <bibref ref="ref-tlsv11"/> 
      <bibref ref="ref-tlsv12"/>, but have been the basis for the generation of many 
      inappropriate warnings and other dialogs for users. This section describes some 
      modifications to current certificate processing aimed at improving this aspect 
      of handling web security context and defines some new terms describing
      various cases related to certificate handling in user agents.</p>

      <p>
      User agents can base their acceptance of certificates that are presented 
      by Web servers on various sources, including user action, previous interactions 
      involving the same certificate, or, as more traditionally assumed, on validation 
      of a certificate chain where each certificate is issued by a Certification 
      Authority (CA). The practices used by CAs (and the information attested) vary 
      by CA and are not available in any useful sense to Web user
      agents.
      </p>

      <div3 id="sec-interactively">
	<head>Interactively accepting trust anchors or certificates</head>


	<p>
	A trust anchor represents an authoritative entity represented by a public 
	key and associated data. The public key is used to verify digital signatures 
	and the associated data is used to constrain the types of information for which 
	the trust anchor is authoritative. Relying parties use trust anchors to 
	determine if digitally signed information objects are valid by verifying 
	digital signatures using the trust anchor's public key and by enforcing the 
	constraints expressed in the associated certificate data. </p>

	<p>
	Trust anchor installation is typically handled by user agent 
	vendors, systems administrators and device manufacturers, based on out-of-band 
	information. Note that updating trust anchors is therefore often handled as 
	part of user agent or operating system software updates.</p>

	<p>
	However, current user agents sometimes support the interactive 
	acceptance of a trust anchor during a session, based on user interaction.  
	Most users cannot sensibly decide how to handle such interactions.</p>

	<p>
	Similarly, end-entity (e.g. web server) certificates that cannot be 
	currently verified using the Basic Path Validation algorithm may trigger 
	current user agents to offer the user a choice to accept the certificate 
	in any case, sometimes for a single session, sometimes for all future 
	sessions involving that certificate, possibly scoped to specific host 
	and port combinations.</p>

	<p>
	<termdef id="def-interactively">A trust anchor or certificate 
	is <term>interactively accepted</term> if the acceptance was caused through 
	a user interaction that happens while the user is focused on a primary task 
	unrelated to trust and certificate management.</termdef></p>

	<p>
	For example, if a web server certificate is presented for acceptance by 
	a user during ordinary Web interactions, and is accepted by the user, 
	then this matches the test for interactive acceptance. If, however, a 
	systems administrator (or user) adds a trust anchor's certificate to an 
	agent's store of trust roots, then that certificate is not considered 
	interactively accepted.</p>
      </div3>

      <div3 id="sec-evcert">
	<head>Augmented Assurance Certificates</head>

	<p>
	Some trust anchors adhere to documented broadly accepted practices 
	(e.g. <bibref ref="ref-EV"/>). These involve some level of guarantee that 
	certificates chaining up to those roots embody augmented assurance and 
	can therefore be treated more favorably in terms of the primary security 
	indicators.  We call such certificates "Augmented Assurance Certificates".
	</p>

	<p>
	<termdef id="def-augmented-assurance-cert">An <term>Augmented Assurance
	Certificate</term> is a public key certificate where the issuer asserts that the
	subject entity has been authenticated by means of some process that adheres to 
	the requirements of an augmented assurance specification supported by the 
	user agent.  The certificate chain for such a certificate MUST be 
	validated up to a trust root that is recognized as augmented assurance 
	qualified by the user agent.</termdef></p>

        <p>
        This specification does not define what an "augmented assurance 
        qualified trust root" is, except to note that this designation is made 
        by user agents through an out of band mechanism consistent with the 
        relevant underlying augmented assurance specification.
        </p>

	<p>
	Marking a trust anchor as augmented assurance qualified is a 
	security-critical step and most often will involve the use of some 
	application-specific out-of-band mechanism. </p>

	<p>
	<phrase id="I">Implementations MUST NOT enable users to designate trust roots as 
	augmented assurance qualified as part of a unrelated interaction.</phrase> 
	In particular, the notions of an augmented assurance qualified trust root 
	and an <termref def="def-interactively">interactively</termref> accepted 
	trust root are mutually exclusive.</p>
	
	<p>
	In addition to the out of band designation process described above, 
	the trust anchor, and possibly all certificates in a path chaining up to 
	such a trust anchor may need to be specially marked, e.g.  through the 
	use of specific policy object identifiers.</p>

	<p>
	The specific marking mechanisms to be used and the special treatment to 
	be afforded to such certificates are out of scope of this document, but 
	will typically be covered by the underlying augmented assurance specification. 
	User agent implementers determine the set of such standards that they 
	support and the associated special treatment to apply, other than as 
	outlined below, where we impose some consistency requirements on 
	the handling of this type of certificate.</p>
	
	<p>
	<phrase id="II">To derive a human-readable subject name from an augmented assurance 
	certificate, user agents SHOULD use the Subject field's 
	Organization (O) and Country (C) attributes.</phrase> <phrase id="IIa">They MUST use 
	information that is subject to the certificate authority's additional assurances,
	as documented in the user agent's conformance statement.</phrase></p>

<!--	<p>
	<phrase id="III">If the certificate's Subject field does not have an Organization 
	attribute, then user agents MUST NOT consider the certificate as an 
	augmented assurance certificate, even if it chains up to an augmented 
	assurance qualified trust root (<specref ref="sec-evcert"/>).</phrase> <phrase id="IV">User agents 
	MAY consider such a certificate as an ordinary <termref
	def="def-validated-cert">validated certificate</termref>.</phrase></p> -->
	
	<p>
	  Note: Should certificates arise in the future that provide strong 
	  assurance of the holder's identity, but do not include an organization 
	  attribute, then user agents can make use of the additional assurance level 
	  and identity information without violating this specification. Such future 
	  certificates could, for example, include high assurance certificates for 
	  individuals.
	</p>
	
      </div3>


      <div3 id="sec-validated-certificates">
	<head>Validated Certificates</head>

	<p>The term <termdef id="def-validated-cert"><term>validated 
	certificate</term> </termdef> is used to denote a public key certificate that 
	has been verified by chaining up to a locally configured trust anchor. 
	The set of trust anchors used by a given Web User agent is 
	implementation-dependent.</p>

	<p>Since Augmented Assurance Certificates chain up to a "special" 
	trust anchor, all valid Augmented Assurance Certificates are also 
	validated certificates.</p> 

	<p>Certificates or certificate chains that are <termref
	def="def-pinned-cert">pinned</termref> to a particular destination 
	are <emph>not</emph> considered validated certificates by virtue of 
	being pinned.</p>
	
	<p>The notion of a validated certificate in this specification corresponds 
	to the domain validated certificate commonly deployed on the Web. This 
	type of certificate attests to a binding between a domain name registration 
	and a key pair; additional certificate attributes are often not validated.</p>
	  
      </div3>
      
      <div3 id="selfsignedcerts">
	<head>Self-signed Certificates and Untrusted Root Certificates</head>


	<p>Self-signed certificates (SSC) which are not trust anchors by themselves 
	are commonly used for appliances and web sites catering to small groups of 
	users, and essentially serve as a container for cryptographic key material in 
	a key exchange that is not verified by any third party. Certificate chains 
	that lead up to custom root certificates which are not part of the user 
	agent's store of trust roots are sometimes used similarly.</p>

	<p>In both situations, use of TLS provides confidentiality protection services 
	against passive attackers. No binding of a third-party asserted identity to 
	the cryptographic key is achieved.  In both cases, the certificates are not 
	considered <termref def="def-validated-cert">validated 
	certificates</termref>.</p>
	
	<p>Using Key Continuity Management <bibref ref="ref-gutmann-kcm"/>, user 
	agents can use self-signed certificates (or certificates that chain up to an 
	untrusted root) to determine that they are consistently communicating with 
	the same end entity, thereby defending against active attacks as well.  Simply 
	put, if a Web site consistently presents the same self-signed certificate (or 
	the same certificate chaining up to the same untrusted root) to a client, then 
	this can be strong evidence that protection against an active attacker has been 
	achieved as well.  Conversely, a change of certificates for the same site can 
	be evidence that a man in the middle attack occurs -- or it can merely indicate 
	that the legitimate site has changed to a different certificate.</p>

	<p><phrase id="V">User agents MAY support <termdef id="def-pinned-cert">
	<term>pinning</term></termdef> a self-signed certificate or more generally 
	a certificate chain that leads to an untrusted root certificate to a 
	particular Web site, to enable behavior based on recorded state about 
	certificates shown previously by the same site.</phrase>  Such behavior includes, 
	e.g., warning users about changes of certificates, and not showing warning 
	messages if a site shows a certificate consistent with previous visits.</p>
	
	<p>
	<phrase id="VI"><termref def="def-interactively">The interaction</termref> that enables 
	users to pin a certificate to a destination SHOULD NOT cause a self-signed 
	certificate to be pinned to more than one site, identified through URI scheme, 
	domain, and port.</phrase> <phrase id="VII">The interaction MUST NOT cause an untrusted root certificate 
	to be accepted automatically for additional sites.</phrase>  </p>
	
      </div3>

    </div2>
    <div2 id="typesoftls">
      <head>Types of TLS</head>


      <p>The most common mechanism for applying TLS to the Web is the use of 
      the <code>https</code> URI scheme <bibref ref="ref-RFC2818"/>; the alternative 
      upgrade mechanism <bibref ref="ref-RFC2817"/> is used rarely, if at all. For 
      the purposes of this specification, the most relevant property of 
      <bibref ref="ref-RFC2818"/> is that the URI used to identify a resource 
      includes an assertion that use of TLS is desired.</p>

      <p>This specification uses the term <termdef id="def-http-transaction"><term>HTTP 
      transaction</term> </termdef> regardless of whether any kind of TLS protection 
      was applied; in particular, the transactions arising when an <code>https</code> 
      URI is dereferenced are subsumed under this term. <bibref ref="ref-RFC2616"/></p>

      <p><termdef id="def-tls-protected">An HTTP transaction is 
      <term>TLS-protected</term>  if the resource was 
      identified through a URI with the https URI scheme, the TLS handshake was 
      performed successfully, and the HTTP transaction has occurred through the TLS
      channel.</termdef></p>

      <p>Note that an HTTP transaction may be considered 
      <termref def="def-tls-protected">TLS protected</termref> even though weak 
      algorithms (including <code>NULL</code> encryption) are negotiated.</p>

      <p><termdef id="def-strong-tls">An HTTP transaction is <term>strongly
      TLS-protected</term> if it is <termref
      def="def-tls-protected">TLS-protected</termref>, an https URL was used, <termref
      def="def-strong-algos">strong TLS algorithms</termref> were negotiated
      for both confidentiality and integrity protection, and at least one of the
      following conditions is true:</termdef></p>
      
       <olist> <item>the server used a <termref
      def="def-validated-cert">validated certificate</termref> that matches
      the dereferenced URI; or</item> <item>the server used a self-signed
      certificate that was <termref def="def-pinned-cert">pinned</termref> to
      the destination; or </item> <item>the server used a certificate chain
      leading to an untrusted root certificate that was <termref
      def="def-pinned-cert">pinned</termref> to the destination.</item>
      </olist>

      <p>TLS modes that do not require the server to show a certificate (such as the
      <code>DH_anon</code> mode) do not lead to a strongly TLS-protected transaction.</p>
      
      <p>The ability to provide privacy and secure the connection between a user 
      agent and web server is in part determined by the strength and capabilities of 
      the TLS protocol and underlying cryptographic mechanisms. The TLS protocol is 
      versioned to keep pace with protocol features and cipher suites that are 
      available. Cipher suites are grouped according to algorithms and the key 
      length used by cryptographic functions to provide cipher strength.</p>
      
      <p>When this document speaks of <termdef id="def-strong-algos">Strong TLS
      algorithms</termdef>, then the following must hold:</p>
      
      <olist>
	<item>No version of the TLS protocol that suffers known security flaws has been
	negotiated.  <phrase id="VIII">At the point of writing of this document, versions of SSL prior 
	to SSLv3 <bibref ref="ref-sslv3"/> MUST NOT be considered strong.</phrase></item>
	<item>A cipher suite has been selected for which key and algorithm strengths 
	correspond to industry practice. <phrase id="IX">At the time of writing of this document, 
	the "export" cipher suites explicitly forbidden in appendix A.5 of 
	<bibref ref="ref-tlsv11"/> MUST NOT be considered strong.</phrase></item>
      </olist>
      
      <p>What set of algorithms is considered as strong by a given implementation must 
      be described in any conformance claim against this specification, see 
      <specref ref="conformance-claims"/>.</p> 

      <p><termdef id="def-weak-tls">An HTTP transaction is <term>weakly 
      TLS-protected</term> if it is TLS-protected, but strong TLS protection could not 
      be achieved for one of the following reasons:</termdef></p>

      <olist>
	<item>TLS handshake used an anonymous key exchange algorithm such
	as <code>DH_anon</code></item>
	<item>the cryptographic algorithms negotiated are not considered <termref
	def="def-strong-algos">strong</termref></item>
	<item>certificates were used that are not either <termref 
	def="def-validated-cert">validated certificates</termref>, or self-signed 
	certificates <termref def="def-pinned-cert">pinned</termref> to the 
	destination (see <specref ref="selfsignedcerts"/>)</item>
      </olist>

      <p><termref def="def-weak-tls">Weakly TLS-protected</termref> interactions may 
      provide security services such as confidentiality protection against passive 
      attackers, or integrity protection against active attackers (without 
      confidentiality protection). These properties are often desirable, even 
      if <termref def="def-strong-tls">strong TLS protection</termref> cannot be 
      achieved.</p>
    </div2>
    
    <div2 id="securepage">
      <head>Mixed Content</head>
      
      <p>
	If a given Web page consists of a single resource only, then all content that 
	the user interacts with has security properties derived from the HTTP 
	transaction used to retrieve the content.
      </p>
      
      <p>
	<termdef id="def-secure-page">A Web page is called <term>TLS-secured</term> 
	if the top-level resource and all other resources that can affect or control 
	the page's content and presentation have been retrieved through strongly 
	TLS protected HTTP transactions.  </termdef>
      </p>
      
      <p>
	<termdef id="def-mixed-content">A Web page is called <term>mixed content</term> 
	if the top-level resource was retrieved through a strongly TLS protected HTTP 
	transaction, but some dependent resources were retrieved through a weakly 
	protected or unprotected HTTP transaction.</termdef>
      </p>
      
      <p>
	This definition implies that inline images, stylesheets, script content, and 
	frame content for a secure page need to be retrieved through <termref 
	def="def-strong-tls">strongly TLS</termref> protected HTTP transactions in 
	order for the overall page to be considered TLS-secured.
      </p>
     
      <p>
       <phrase id="X">Any UI indicator used to signal the presence of Augmented Assurance certificates 
       MUST NOT signal the presence of such a certificate, unless the page is <termref
       def="def-secure-page">TLS-secured</termref>, i.e., all parts of the page 
       are loaded from servers presenting at least a <termref 
       def="def-validated-cert">validated certificate</termref>, 
       over <termref def="def-strong-tls">strongly TLS-protected 
       interactions</termref>.</phrase>
      </p>
      
      <p>For relevant security considerations, see <specref 
      ref="security-considerations-ev-dv"/>.</p>
      
    </div2>
    
    <div2 id="errorconditions">
      <head>Error conditions</head>
      
      <div3 id="sec-tlserrors">
	<head>TLS errors</head>

	<p>
	  This section covers TLS-related error conditions, and maps them to the 
	  classes of error handling interactions (see <specref ref="error-handling"/>) 
	  that are used when these conditions arise.
	</p>
	
	<p>
	  <phrase id="XI">If multiple error conditions apply, the most severe signaling level currently 
	  known MUST be used, as defined in <specref ref="error-handling"/>.</phrase>
	</p>
	
	<p>
	  When, during TLS negotiation, the certificate chain presented by the server
	  does not lead to a trusted root certificate, and the certificate chain 
	  presented was not <termref def="def-pinned-cert">pinned</termref> to the 
	  destination, the following applies:
	</p>
	

	<olist>
	  <item><phrase id="XII">Error signaling of class warning or higher (<specref 
	  ref="error-warning"/>, <specref ref="error-danger"/>) MUST be used to 
	  signal the error condition.</phrase></item> 
	
	<item><phrase id="XIII">User agents MAY offer a possibility 
	  to pin newly encountered certificates to the destination.</phrase></item>
	</olist>
	
	<p>
	  Note that, when untrusted certificates are accepted without user interaction, 
	  an additional exposure to man-in-the-middle attacks is created.  
	  See <specref ref="mitm-initial"/> for a more detailed discussion of this 
	  scenario.
	</p>
	

       
        <p>
	 <phrase id="XIV"> When certificate information is presented in the interactions described 
	  in this section, then human-readable information from certificates MUST NOT 
	  be presented as trustworthy unless it is attested. E.g., a self-signed 
	  certificate's Common Name or Organization attribute MUST NOT be displayed, 
	  even if that certificate is pinned to a destination.</phrase>  <phrase id="XV">User agents MAY 
	  display this information in a dialog or other secondary user interfaces 
	  reachable from the warning or error messages specified here.</phrase>
        </p>

	<p>
	 <phrase id="XVI"> When, during TLS negotiation, the end-entity certificate presented 
	  or one of the intermediate certificates in the certificate chain are found to 
	  have been revoked, error signaling of class danger (<specref 
	  ref="error-danger"/>) MUST be used.</phrase>
	</p>

	<p>
	  <phrase id="XVII">When, during TLS negotiation, the end-entity certificate presented or 
	  one of the intermediate certificates in the certificate chain are found 
	  to have expired, error signaling of class danger (<specref 
	  ref="error-danger"/>) MUST be used.</phrase>  </p>
	
	<p>
	  <phrase id="XVIII">When the URI corresponding to the transaction does not match the 
	  end-entity certificate presented, and a <termref 
	  def="def-validated-cert">validated certificate </termref> is used, then error 
	  signaling of level danger (<specref ref="error-danger"/>) MUST be used.</phrase>
	</p>
	
	<p>
	  <phrase id="XIX">If TLS negotiation otherwise fails, error signaling of level danger (<specref
	  ref="error-danger"/>) MUST be used.</phrase>
	</p>

        <p>
          <phrase id="XX">When TLS error conditions occur, user agents MAY choose to abort the 
          connection without any further user interaction.</phrase> The guidelines in 
          this section apply when user agents choose to cause a user interaction in 
          the case of TLS error conditions.  Note that user agents may combine both 
          practices:  E.g., an  interactive approach may be chosen for the top-level 
          frame of a Web  page, but a non-interactive approach may be chosen for 
          inline  content.  It is expected that the XMLHttpRequest specification <bibref ref="ref-XHR"/> will  
          include a non-interactive approach as well.
	</p>
	
      </div3>
      
      <div3 id="errors-blacklists">
	<head>Error Conditions based on Third Party or Heuristic Information</head>
	
	<p>
	  <phrase id="XXI">User agents that use third party services or heuristic approaches to assess 
	  the possible danger of a pending Web transaction MUST use error signaling of 
	  class danger (<specref ref="error-danger"/>) to signal positively identified 
	  dangers, e.g., identified malicious downloads or exploits of user agent 
	  vulnerabilities.</phrase>  
	</p>
	<p>
	  <phrase id="XXII">To signal risks that are identified with high likelihood, but involve further 
	  user decisions (e.g., phishing heuristics were triggered), error 
	  signaling of class warning or above (<specref ref="error-warning"/>, 
	  <specref ref="error-danger"/>) MUST be used.</phrase>  
	</p>
	
      </div3>
      
   <!--   <div3 id="change-redirects"><head>Redirection chains</head>
                                                                  
      <p>
	Page redirection (whether by 302-style http headers, html features or ECMAScript 
	logic) can happen so quickly in some cases that it is possible for UI to 
	appear as though a continuous, secure connection has been maintained, even 
	if navigation between pages has involved redirects over weakly TLS-protected or 
	unsecured http channels. This can engender false confidence in the integrity 
	and privacy of user data. <phrase id="XXIII">User agents SHOULD inform users, using an 
	error of class Warning or higher (<specref ref="error-warning"/>, 
	<specref ref="error-danger"/>), when navigation between <termref 
	def="def-secure-page">TLS-secured pages</termref> involves redirects which 
	travel over <termref def="def-weak-tls">weakly TLS-protected</termref>, or 
	unsecured HTTP channels.</phrase>
      </p>
      </div3> -->
      <div3 id="insecure-form-submission">
	<head>Insecure form submission</head>
	<p>
	  Users interacting with a <termref def="def-secure-page">TLS-secured 
	  page</termref> are likely to develop the impression that information 
	  submitted during these interactions will be <termref 
	  def="def-strong-tls">strongly TLS-protected</termref>. <phrase id="XXIV">User agents 
	  MAY warn users, using an error of class Warning or 
	  higher (<specref ref="error-warning"/>, <specref ref="error-danger"/>), 
	  if form submissions from a TLS-secured page are directed to an 
	  unsecured channel.</phrase>
	</p>
      </div3>
    </div2>
  </div1>


    
    <div1 id="indicators">
      <head>Indicators and Interactions</head>
      <div2 id="IdentitySignal">
	
	<head>Identity and Trust Anchor Signaling</head>
	
        <p>
        This section specifies practices for signaling information about the 
        identity of the Web site a user interacts with. All signals specified in 
        this section are passive. No claim is made about the effectiveness of these 
        signals to counter impersonation attacks.
        </p>
	
        <div3 id="identity-requirement">
	  <head>Identity Signal</head>
	  
          <p>
          <phrase id="XXV">User agents MUST make information about the identity of the Web site that 
          a user interacts with available.</phrase> <phrase id="XXVI">This <termdef id="def-identity-signal">
          <term>identity signal</term> </termdef> SHOULD be part of <termref 
          def="def-primary-chrome">primary user interface</termref> during usage modes 
          which entail the presence of signaling to the user beyond only presenting 
          page content.  Otherwise, it MUST be available through secondary user interface.</phrase>  
	Note that 
          there may be usage modes during which this requirement does not apply: For 
          example, a Web agent which is interactively switched into a presentation 
          mode that does not display any chrome need not preserve security indicators 
          in primary user interface. On the other hand, a user agent such as a smart 
          phone, individual entertainment screen in an airplane seat back, or TV set 
          which has a usage mode that makes minimal (but visible) chrome elements 
          available does need to preserve security indicators in such a mode.
          </p>
	  
          <p>
          <phrase id="XXXI">User agents with a visual user interface MUST show the 
	   Identity Signal in a consistent visual position.</phrase> 
          <phrase id="XXXII">Web Content MUST NOT obscure security user interface, 
          <specref ref="robustness-apis-obscure-security-ui"/>.</phrase>
          </p>
        </div3>
	
        <div3 id="signal-content">
          <head>Identity Signal Content</head>
	   
          <p>
          <phrase id="XXXIII">Information displayed in the <termref def="def-identity-signal">identity
          signal</termref> MUST be derived from <termref 
          def="def-validated-cert">validated certificates</termref>, or from user 
          agent state.</phrase> <phrase id="XXXIV">Web user agents MUST NOT use information as part of 
          the <termref def="def-identity-signal">identity signal</termref> that is 
          taken from unauthenticated or untrusted sources.</phrase>
          </p>

	  <p>
	  During interactions with a <termref def="def-secure-page">TLS-secured Web
          page</termref> for which the top-level resource has been retrieved through 
          a <termref def="def-strong-tls">strongly TLS-protected</termref> interaction 
          that involves an <termref def="def-augmented-assurance-cert">augmented 
          assurance certificate</termref>, and for which all dependent resources have 
          been retrieved through interactions that involve <termref 
          def="def-validated-cert">validated certificates</termref>, the following 
          applies:
          </p>
	  <ulist>
	    
	    <item>
	      <p>
	        <phrase id="XXXV">The <termref def="def-identity-signal">identity signal</termref> MUST 
	        include human-readable information about the certificate subject, 
	        derived as specified in <specref ref="sec-evcert"/>, to inform the user 
	        about the owner of the <termref def="def-page">Web page</termref>.</phrase>
	      </p>
	    </item>
	    
	  </ulist>
	  
          <p>
          During interactions with a <termref def="def-secure-page">TLS-secured Web
          page</termref> for which the top-level resource has been retrieved through 
          a <termref def="def-strong-tls">strongly TLS-protected</termref> interaction 
          that involves a <termref def="def-validated-cert">validated 
          certificate</termref> (including an <termref
          def="def-augmented-assurance-cert">augmented assurance 
          certificate</termref>), the following applies:
          </p>
	  
	  <ulist>
	    <item>
	    <p>
	    <phrase id="XXXVI">If the identity signal does not include any other human readable information
	    about the identity of the certificate subject (derived, e.g., from an 
	    augmented assurance certificate), then it MUST include an applicable 
	    DNS name that matches either the subject's Common Name attribute or its 
	    subjectAltName extension.</phrase> <phrase id="XXXVII">User agents MAY shorten such a DNS name by 
	    displaying only a suffix.</phrase>
	    </p>
	    </item>

	    	<item><p> <phrase id="XXXVIII">To inform the user about the party
                responsible for that information, the Issuer field's
                Organization attribute  MUST be displayed in the
                Identity Signal, or in secondary user interface that is
                available through a consistent interaction with the Identity
                Signal.</phrase> </p> </item>

	    <item>
	    <p>
	    <phrase id="XXXIX">Subject logotypes <bibref ref="ref-RFC3709"/> derived from certificates MUST NOT be rendered, unless 
	    the certificate used is an <termref 
	    def="def-augmented-assurance-cert">augmented assurance
	    certificate</termref>.</phrase>
	    </p>
	    </item>
	    
	  </ulist>
	  
	  <p>
	  Note that this behavior does not apply when self-signed certificates or 
	  certificate chains that chain up to an untrusted root certificate are 
	  used.
	  </p> 
          <p>
          <phrase id="XL">During interactions with a <termref def="def-mixed-content">mixed 
          content</termref> Web page, the <termref def="def-identity-signal">identity 
          signal</termref> MUST NOT include any site identity information  
          beyond that which is in use for unprotected HTTP transactions.</phrase>  
	<phrase id="XLI">In this situation, the 
          identity signal MAY include indicators that point out any error conditions 
          that occurred.</phrase>
          </p>
	  
	  <p>
	  <phrase id="XLII">During interactions with mixed content, user agents MUST NOT render any 
	  logotypes <bibref ref="ref-RFC3709"/> derived from certificates.</phrase>
	  </p>
	
</div3>
      </div2>
      
      <div2 id="pageinfosummary">
	
	<head>Additional Security Context Information</head>

<p><phrase id="XLIII">This section describes additional security context information provided by
	<termref def="def-user-agent">Web user agents</termref>.
</phrase> <phrase id="XLIV">Where security context information is provided in
both primary and secondary interface, the meaning of the presented information
MUST be consistent.</phrase> Best practice will also avoid inconsistent
presentation, such as using identical or semantically similar icons for
different information in different places. </p>

 <p id="asc-must">The information sources MUST make the following security
context information available:</p>

 <olist> <item id="pageinfo-domain"><phrase id="XLV">the Web page's domain
name</phrase></item>

 <item id="pageinfo-owner"><phrase id="XLVI">Owner information, consistent
with section <specref ref="signal-content">Identity Signal</specref></phrase></item>

 <item id="pageinfo-verifier"><phrase id="XLVII">Verifier information,
consistent with section <specref ref="signal-content">Identity
Signal</specref></phrase></item>

 <item id="pageinfo-trustroots"><phrase id="XLVIII">The reason why the
displayed information is trusted (or not).</phrase> This includes whether or
not a certificate was <termref def="def-interactively">accepted
interactively</termref>, whether a self-signed certificate was used, and
whether the self-signed certificate was <termref
def="def-pinned-cert">pinned</termref> to the site that the user interacts
with, and whether trust relevant settings of the user agent were otherwise
overridden through user action.</item> </olist>

 <p id="asc-should">The information sources SHOULD make the following security
context information available: </p>

 <olist> <item id="pageinfo-weak"><phrase id="XLIX">An explanation of the
	information represented by the <termref def="tls-indicator">TLS
indicator</termref></phrase>, e.g., concerning the presence mixed content;</item>

 <item><phrase id="L">If the Web page is <termref
def="def-weak-tls">weakly</termref> TLS-protected, then, what conditions cause
the protection to be weak (e.g., bad algorithms, mixed content, ...)</phrase>
</item>

 <item id="pageinfo-history"><phrase id="LI">Whether the user has visited the
site in the past.</phrase> </item>

 <item id="pageinfo-storedcreds"><phrase id="LII">Whether the user has stored
credentials for this site.</phrase> </item>

 <item id="pageinfo-enc"><phrase id="LIII">Whether the site content was
encrypted in transmission.</phrase> </item>

 <item id="pageinfo-auth"><phrase id="LIV">Whether the site content was
authenticated (e.g., server authentication via TLS).</phrase> </item>

 </olist>

 <p id="asc-may">Additionally, the information sources MAY make the following
security context information available: </p>

 <olist> <!-- ><item id="pageinfo-when-last"><phrase id="LV">When the user most
recently visited the site in the past.</phrase> </item> --> <item
id="pageinfo-when-first"><phrase id="LVI">When the user first visited the site
in the past.</phrase> </item> <item id="pageinfo-how-often"><phrase
id="LVII">How often the user visited the site in the past.</phrase> </item>
</olist>

 <p><phrase id="LVIII">User agents that provide information about the presence
or absence of Cookies <bibref ref="ref-COOKIES" /> MUST NOT make any claims
that suggest that the absence of cookies implies an absence of any user
tracking, as there are numerous tracking and session management techniques
that do not rely on Cookies.</phrase></p>

 </div2>

 <div2 id="sec-tls-indicator"> <head>TLS indicator</head>

 <p> <phrase id="LIX">User agents MUST make information about the state of TLS
protection available.</phrase> <phrase id="LX">The <termdef
id="tls-indicator"><term>TLS indicator</term></termdef> SHOULD be part of
primary user interface during usage modes which entail the presence of
signaling to the user beyond only presenting page content.</phrase> <phrase
id="LXI">Otherwise, it MUST be available through secondary user
interface.</phrase> As in the case of <specref ref="identity-requirement"/>,
there may be usage modes during which this requirement does not apply. <phrase
id="LXII">Web content MUST NOT obscure security interface, see <specref
ref="robustness-apis-obscure-security-ui"/>.</phrase> </p>

	<p>
	<!-- <phrase id="LXIII">User interactions to access the TLS indicator MUST be consistent across all 
	Web interactions.</phrase> This includes when TLS has not been used to protect those 
	interactions.  <phrase id="LXIV">In this case, user agents SHOULD indicate the interaction was 
	not TLS protected.</phrase> --> <phrase id="LXV">User agents with a visual user interface SHOULD make the TLS 
	indicator available in a consistent 
	visual position.</phrase>
	</p>
	
	<p>
	<phrase id="LXVI">The TLS indicator MUST present a distinct state that is used only 
	for <termref def="def-secure-page">TLS-secured</termref> Web pages.</phrase> 
	<phrase id="LXVII">The User Agent SHOULD inform users when they are viewing a page that, 
	along with all dependent resources, was retrieved through
	at least <termref def="def-weak-tls">weakly TLS protected</termref> 
	transactions, including
	<termref def="def-mixed-content">mixed content</termref>.</phrase>
	</p>
	
	<p>
	<phrase id="LXVIII">The user agent MAY accomplish this by using a third state in the TLS 
	indicator, or via another mechanism (such as a dialog, info bar, or 
	other means).</phrase>
	</p>

      </div2>
      
       <div2 id="error-handling">
      
       <head>Error handling and signaling</head>
      
       <p> This section defines common error interaction requirements and,
      ordered by increasing severity, practices to signal the following
      classes of errors: </p>
      
       <ulist> <item><specref ref="error-notification"/></item> <item><specref
      ref="error-warning"/></item> <item><specref ref="error-danger"/></item>
      </ulist>
      
       <p> <phrase id="LXIX">User agents MAY communicate additional indicators
      to users. E.g., a user agent could additionally display a persistent
      indicator in a "danger" situation.</phrase> </p>
      
       <p> For additional security considerations concerning frequent warning
      messages, see <specref ref="security-considerations-warning-fatigue"/>.
      </p>
      
       <div3 id="error-common"> <head>Common Error Interaction
      Requirements</head>
      
       <p> <phrase id="LXX">Error signaling that occurs as part of <termref
      def="def-primary-chrome">primary user interface</termref> SHOULD be
      phrased in terms of threat to user's interests, not technical
      occurrence.</phrase> </p> <p> <phrase id="LXXI"><termref
      def="def-primary-chrome">Primary user interface</termref> error messages
      MUST NOT be phrased solely in terms of art.</phrase> For example, if a
      certificate includes a DNS name in the subjectAltName extension that
      does not match the URI of the site that the user tries to visit, an
      error message can explain that the user is reaching a different site,
      instead of reporting a "subjectAltName mismatch". </p>
      
       <p> <phrase id="LXXII">They SHOULD NOT tell the user to enter the
      destination site that caused the error, e.g., to provide feedback or
      obtain assistance.</phrase> <phrase id="LXXIII">For error messages that
      interrupt the user's flow of interaction, user agents SHOULD enable the
      user to easily return to the page that the user was previously
      interacting with.</phrase> Note that this ideally implies returning to the
      previous user agent state -- including the results of user input and
      dynamic processing --; however, this may not be feasible under all
      circumstances. </p> 

      <p><phrase id="LXXIV">For advanced users, error interactions SHOULD have
      an option to request a detailed description of the condition that caused
      the error interaction to occur.</phrase> </p> <p> The error interactions
      discussed in this section typically involve communication of security
      context information. </p> </div3>

 <div3 id="error-warning"> <head> Warning/Caution Messages </head>

 <p> <phrase id="LXXV">Warning / Caution messages are intended for situations
when the system has good reason to believe that the user may be at risk based
on the current security context information, but a determination cannot
positively be made.</phrase> </p> <p> <phrase id="LXXVII">Warning / Caution
messages MUST interrupt the user's current task, such that the user has to
acknowledge the message.</phrase> </p>

	  <p>
	    <phrase id="LXXVIII">Warning / Caution messages MUST provide the user with distinct options 
	    for how to proceed (i.e., these messages MUST NOT lead to a situation in 
	    which the only option presented to the user is to dismiss the warning 
	    and continue).</phrase>  <phrase id="LXXIX">The options presented on these warnings MUST be 
	    descriptive to the point that their respective meaning can be understood in 
	    the absence of any other information contained in the warning 
	    interaction.</phrase>  <phrase id="LXXX">One of the options offered SHOULD be recommended, 
	    and the warning message SHOULD include a succinct text component denoting 
	    which option is recommended.</phrase>  <phrase id="LXXXI">In the absence of a recommended option, 
	    the warning MUST present the user with a method of finding out more 
	    information (e.g., a hyperlink, secondary window, etc) if the options 
	    cannot be understood.</phrase>
	  </p>
	</div3>
	
	<div3 id="error-danger">
	  <head>Danger Messages</head>
	  
	  <p>
	    <phrase id="LXXXII">Danger Messages are intended for situations when there is a positively identified danger 
	    to the user (i.e., not merely a risk).</phrase>
	  </p>
	  <p>
	    <phrase id="LXXXIII">The interactions communicating these messages MUST be designed such that 
	    the user's task is interrupted.</phrase>
	  </p>
	  <p>
           <phrase id="LXXXIV">These interactions MUST be presented in a way that makes it impossible for 
           the user go to or interact with the destination web site that caused 
           the danger situation to occur, without first explicitly interacting with 
           the Danger Message.</phrase>
	  </p>
	</div3>
	
      </div2>
  
    </div1>
    
    <div1 id="Robustness">
      <head>Robustness Best Practices</head>
      
     
      <div2 id="keepchromevisible-goodpractice">
	<head>Keep Security Chrome Visible</head>
	
	<p>
	  <phrase id="LXXXV">For visual user agents, agent chrome SHOULD always be present to 
	  signal security context information.</phrase> This requirement does not apply when 
	  user interface is explicitly dismissed by the user.
	</p>
	
      </div2>
      
      <div2 id="site-identifying">
	
	<head>Do not mix content and security indicators</head>
	
        <p>
        To the extent to which users pay attention to passive security indicators at 
        all, noticing and understanding them is made difficult to impossible when 
        the same signal path that is commonly used for security indicators can also 
        be controlled by Web content. For example, the location bar commonly found 
        on agents is often used to both display the "padlock" security indicator, 
        and a possible "favorite icon" <bibref ref="ref-FAVICON" />, which can in 
        turn be a simple copy of the very padlock an informed and attentive user 
        might look for.</p>
	
	<p>
          <phrase id="LXXXVI">Web User Agents MUST NOT communicate positive trust information using user interface 
          elements which can be mimicked within chrome under the control of web 
          content.</phrase> <phrase id="LXXXVII">Site-controlled content (e.g. page title, favicon) MAY be hosted in 
          chrome</phrase>, <phrase id="LXXXVIII">but this content MUST NOT be displayed in a manner that confuses 
          hosted content and chrome indicators, by allowing that content to mimic 
          chrome indicators in a position close to them.</phrase> 

          This requirement applies to both <termref 
          def="def-primary-chrome">primary</termref> and <termref 
          def="def-secondary-chrome"> secondary</termref> elements of visual user 
          interfaces.
	</p>

	<p>
	  <phrase id="LXXXIX">In particular, Web User Agents SHOULD NOT use a 16x16 image in chrome to 
	  indicate security status if doing so would allow the favorite icon to mimic it.</phrase>
	</p>
    </div2>
    
    <div2 id="interaction-flooding">
	<head>Managing User Attention</head>
	
	<p> When confronted with multiple modal interactions
	  during a short amount of time, users are known to
	  exercise the default option (e.g., by pressing the
	  Enter key repeatedly) until the sequence of modal
	  interactions stops blocking the user's intended
	  interaction.
	  </p>
	
	<p>
	  <termdef id="whack-a-mole">An <term>Interaction flooding attack</term> refers 
	  to a Web site with the malicious intent of performing an unintended action 
	  (e.g. installing software that would have required an user intervention such 
	  as clicking OK on a warning dialog) or by exploiting distraction and 
	  task-focus. The Web site opens a large number of new windows over the desired 
	  web content and the malicious action is performed when the user tries to 
	  close these new windows and/or clicks on a dialog that indicates a trust 
	  decision.
	  </termdef>
	</p>
	  
	<p id="prevent-click-thru">
	  <phrase id="XC">User interfaces used to inform users about security critical events or to 
	  solicit input MUST employ techniques that prevent immediate dismissal of 
	  the user interface, e.g., by using a temporarily disabled "OK" button on 
	  user interfaces that make such an interaction paradigm available.</phrase>  <phrase id="XCI">When users 
	  interact with security relevant notifications (<specref 
	  ref="error-warning"/> and above), Web content 
	  MUST NOT be granted control of the user agent's interaction.</phrase>
	</p>

        <p><phrase id="XCII">A Web User Agent SHOULD NOT display a modal security dialog related to a web 
        page which does not currently have focus.</phrase> Security dialogs include prompts for 
        user credentials, script errors and TLS errors.
        </p>

      </div2>

    
      <div2 id="robustness-apis">
        <head>APIs Exposed To Web Content</head>
	
        <p>User agents commonly allow web content to perform certain manipulations of 
        agent UI and functionality such as opening new windows, resizing existing 
        windows, etc. to permit customization of the user experience. These 
        manipulations need to be constrained to prevent malicious sites from 
        concealing or obscuring important elements of the agent interface, or 
        deceiving the user into performing dangerous acts. This section includes 
        requirements and techniques to address known attacks of this kind.
        </p>

	<div3 id="robustness-apis-obscure-security-ui">

	  <head>Obscuring or disabling Security User Interfaces</head>

	  <p id="prevent-obscuring"><phrase id="XCIII"><termref def="def-user-agent">Web user agents</termref> MUST
	  prevent web content from obscuring, hiding, or disabling user interfaces that display
	  security context information, except in response to a user interaction.</phrase>
	  </p>

	  <p id="restrict-window-resizing"><phrase id="XCIV">User agents MUST restrict window sizing 
	  and moving operations consistent with section <specref 
	  ref="keepchromevisible-goodpractice"/>.</phrase> This prevents attacks wherein 
	  agent chrome is obscured by moving it off the edges of the visible screen.
	  </p>
	  
	  <p id="prevent-new-windows"><phrase id="XCV">User agents MUST NOT allow web content to 
	  open new windows with the agent's security UI hidden.</phrase> Allowing this 
	  operation facilitates picture-in-picture attacks, where artificial chrome 
	  (usually indicating a positive security state) is supplied by the web 
	  content in place of the hidden UI.
	  </p>
	  
	  <p id="prevent-overlaying-chrome"><phrase id="XCVI">User agents MUST prevent web content 
	  from overlaying chrome.</phrase> This helps to ensure that user interactions that are 
	  perceived to target agent chrome are not redirected to Web applications.
	  </p>

	</div3>

	<div3 id="robustness-software-install">
	  
	  <head>Software Installation</head>
	  
	  <p>This section covers web user agent APIs that allow web content to download software for
	  later execution outside of the web user agent context. </p>

	  
	  <p id="prevent-api-exposure"><phrase id="XCVII"><termref def="def-user-agent">Web user 
	  agents </termref> MUST NOT expose programming interfaces which permit 
	  installation of software without a user intervention.</phrase>
	  </p>

	  <p id="prevent-installation"><phrase id="XCVIII">User agents MUST inform the user and request 
	  consent when the user agent is attempting to install software outside of the 
	  agent environment as a result of web content.</phrase> 
	  <phrase id="XCIX">The interaction used MUST follow the requirements in 
	  <specref ref="error-warning"/>.</phrase>  <phrase id="C">User agents SHOULD NOT provide features 
	  which can be used by web content to install software outside of the agent 
	  environment without the user's consent.</phrase></p>

	</div3>

	<div3 id="robustness-bookmarks">
	  <head>Bookmarking APIs</head>
	  
	  <p>
	  User agents often include features that enable Web content to update the 
	  user's bookmarks, e.g. through an ECMAScript API.  If permitted unchecked, 
	  these features can serve to confuse users by, e.g., placing a bookmark that 
	  goes by the same name as the user's bank, but points to an attacker's site.</p>
	  
	  <p id="bookmark-api-userconsent"><phrase id="CIII"><termref def="def-user-agent">Web user 
	  agents </termref> MUST NOT permit Web content to add bookmarks without 
	  explicit user consent.</phrase></p>
	  
	  <p id="bookmark-api-uri-match"><phrase id="CIV"><termref def="def-user-agent">Web user 
	  agents </termref> MUST NOT permit Web content to add URIs to the user's 
	  bookmark collection that do not match the URI of the page that the user 
	  currently interacts with.</phrase></p>
	  
	</div3>
	
	<div3 id="popups">
	  
	  <head>Pop-up Window APIs</head>
	  
	  <p id="prevent-newwindows">
	    <phrase id="CV">With visual user interfaces that use a windowed interaction paradigm, 
	    User agents SHOULD restrict the opening of pop-up windows from web 
	    content, particularly those not initiated by user action.</phrase> Creating 
	    excessive numbers of new pop-up windows is a technique that can be used 
	    to condition users to rapidly dismissing dialogs. This can be employed 
	    in <termref def="whack-a-mole">interaction flooding attacks</termref>.
	  </p>
	  <p id="offer-extended-perm">
	    <phrase id="CVI">User agents which offer this restriction SHOULD offer a way to extend 
	    permission to individual trusted sites.</phrase> Failing to do so encourages 
	    users who desire the functionality on certain sites to disable the feature 
	    universally.
	  </p>
	</div3>
      </div2>

    </div1>
    
    <div1 id="security-considerations">
      <head>Security Considerations</head>
      <div2 id="mitm-initial">
        <head>Active attacks during initial TLS interactions</head>
	
        <p>
	  Section <specref ref="sec-tlserrors" /> leads to additional exposure during the
	  <emph>first</emph> TLS interaction with a site, even if that site uses 
	  validated or extended validation certificates: An active attacker can show 
	  a self-signed certificate, which will cause only weak warning signals to 
	  the user. Traditional user agents react to this scenario with a dialog 
	  box that interrupts the user's flow of interaction, but gives users the 
	  ability to override the security warning. Empirical evidence shows that this 
	  ability is typically exercised by users.
	</p>
	
	<p>
	  Countermeasures against this threat include the prior designation of 
	  high-value sites, for which extended validation or validated certificates 
	  are required (causing a stronger warning signal during the attack scenario 
	  described above), and communication of certification and TLS expectations 
	  by a mechanism separate from HTTP, e.g.  through authenticated DNS records.
	</p>
	
	 <p>
	  <specref ref="sec-tlserrors" /> refers to the pinning of a new certificate to a
	  destination. Note that this newly pinned certificate could be the basis for a 
	  spoofing attack, or it could represent a refresh of an Self Signed 
	  Certificate. </p>
	
      </div2>

      <div2 id="cert-status-check-failures">
        <head>Certificate Status Checking Failures</head>
        <p>
          The TLS Errors (<specref ref="sec-tlserrors"/>) section does not 
          document intended behavior for user agents when a certificate status 
          check fails for network or other non-revocation reasons. At time of writing, 
          the deployment environment for OCSP <bibref ref="ref-ocsp"/> status checking 
          is fragile and subject to frequent failures, so it is inappropriate to 
          require that user agents treat such failures as warnings or errors. However, 
          this creates a possibility for attack: site operators using a fraudulently 
          obtained, and revoked, certificate may attempt to attack a CA's revocation 
          infrastructure as a way to suppress revocation errors. User agent 
          countermeasures for this vulnerability include: exposing failures of 
          certificate validation checks to users as warning (<specref 
          ref="error-warning"/>) or danger (<specref ref="error-danger"/>) level 
          messages; or refusal to load sites that fail these checks.
        </p>
      </div2>
      
      <div2 id="certs-assure-identity">
        <head>Certificates assure identity, not security</head>
        <p>
          While TLS certificates of all types (i.e. self-signed, validated, or 
          augmented assurance) provide the means for strong encryption of 
          communications, they should not be understood to be, or treated as, blanket 
          security assurances. In particular, validated and augmented assurance 
          certificates make guarantees about some level of owner identity verification 
          having been performed (see definitions) but they do not represent any 
          guarantees that a site is operated in a safe manner, or is not otherwise 
          subject to attack. Historically, issues of security and identity have been 
          conflated by user agent interfaces which present SSL/TLS connections as 
          "secure," but implementers of this specification are advised to be cautious 
          and cognizant of this distinction.
        </p>
      </div2>
      
      <div2 id="security-considerations-petnames">
	<head>Binding "human readable" names to domain names</head>
	
	<p>
	Several recommendations in this document concern themselves with the binding 
	between domain names and certificates, but equally important for users is 
	the binding between domain name/certificate and the actual real-world 
	entity involved in the transaction. It is helpful, for example, to know 
	not only that example.com presents a valid certificate, but also that it 
	is the "Example Inc., Norway" with whom the user expects to be interacting. 
	In the case of augmented assurance certificates, the identity information 
	provided may be considered sufficient for this purpose, but other validated 
	certificates do not necessarily provide this real-world identity. User agents 
	that wish to provide a mechanism for users to manually establish these 
	linkages are advised to consider the petnames 
	approach (see <bibref ref="ref-petnames"/>).
	</p> 
      </div2>
      
      <div2 id="security-considerations-warning-fatigue">
	<head>Warning Fatigue</head>
	
	<p>
	  Requirements in this document often involve warning (<specref 
	  ref="error-warning"/> and <specref ref="error-danger"/>) messages when 
	  warranted by conditions in the user agent.  However, it is important to 
	  be aware, when developing user interfaces, that users will habituate to 
	  over-frequent warnings, weakening the impact of the messages and their 
	  ability to effectively interrupt the user's task flow.
	</p>
	<p>
	  User agents are advised to constrain the number of warnings and errors 
	  presented to the minimum required to satisfy these and other security 
	  guidelines. It is also recommended that user agents phrase options in 
	  these messages in terms of the action taken (e.g.  "Ignore this warning," 
	  "Trust this site") rather than using generic labels (e.g. "OK", "Cancel").
	</p>
      </div2>
      
      <div2 id="security-considerations-ev-dv">
	<head>Mixing Augmented Assurance and Validated Certificates</head>
	
	<p>
	  The Augmented Assurance indicator tells the user that the owner and author 
	  of the Web page being displayed can be identified using information from the 
	  associated augmented assurance certificate. Identity signals in this 
	  specification only directly address displaying the identity of the party 
	  responsible for the top level resource in a Web page.  User agents may choose 
	  to make the identities of other resources that can affect or control the 
	  page's content available, but we do not put forward a model for users on how 
	  they might use such information in their trust decisions.
	</p>
	<p>
	  The identity of the top level resource vouches for the content of all 
	  dependent resources.  What resources these are is under the control of 
	  the top-level resource, which will typically identify these resources using 
	  URIs with domain based authority. Therefore, this specification requires 
	  that, in order to display any augmented assurance related indicators, 
	  dependent resources must all be strongly TLS protected <emph>using validated 
	  certificates</emph>.
	</p>
	  
	<p>
	  If an augmented assurance page includes content from other strongly 
	  TLS-protected resources that are not identified by augmented assurance 
	  certificates, the authors for these third party parts of the document cannot 
	  be identified to the same extent as for the main document. Given that certain 
	  types of content, for example external scripts and styling can change the 
	  containing document's entire appearance, and framed content and plug-ins can 
	  be where the user's main interaction occurs, the user's real interaction may 
	  be with content under the control of a completely different party than the 
	  one identified by the main document's augmented assurance certificate.
	</p>

	<p>
	  Using third party content also makes the main document reliant upon the 
	  security of the third party contributor, and expands the available attack 
	  surface of the service, thus giving attackers several more lines of attack.
	</p>
	
	<p>
	  Under the agent's Same Origin policy, separately displayed Web pages from 
	  the same origin can freely read and modify each other's state. A Web page's 
	  origin is comprised of the scheme, host and port of the URI used to retrieve 
	  the Web page. The origin does not take into account any attributes of the 
	  TLS session or server certificate used when retrieving a Web page.  For 
	  example, consider a user agent that has loaded two Web pages from 
	  "https://www.example.com/". When the first page was retrieved, an Augmented 
	  Assurance Certificate was used by the TLS session. When the second page was 
	  retrieved, a different certificate, such as a domain validated or self-signed 
	  certificate, was used. Though the first page was retrieved using an augmented 
	  assurance certificate, the second page can freely read and write the first 
	  page. Differing security presentations of the two pages may obscure this 
	  relationship in the mind of the user.
	</p>
	
      </div2>
      
      <div2 id="dynamic-content">
	<head>Dynamic content might change security properties</head>
	
	<p>
	This specification is expressed in terms of the fundamentally static  
	indicators of existing agent security user interfaces.
	</p>

	<p> These indicators tend to assume that the security properties "of a page"
will not change in a significant way once it has finished loading (whatever
that might mean in detail). Strictly speaking, this assumption is flawed:
Dynamic pages can load scripts and data at any time and from any source (using
techniques like the insertion of script tags into the DOM at run time); the
effect may very well be that a page that was retrieved from a secure Web site
with an Augmented Assurance certificate could at some point be under the
control of scripts that are retrieved insecurely. This specification does not
prescribe any specific user interaction in this kind of situation. </p>

 <p> For TLS-protected HTTP requests caused using the XMLHttpRequest API
<bibref ref="ref-XHR"/> <bibref ref="ref-XHRl2"/>, this specification permits
either handling the error situation described above as a network error (and
leaving behavior to the Web application in question) or causing a user
interaction. It is expected that upcoming specifications for the
XMLHttpRequest API will opt for the former choice. </p>

 </div2>

 </div1>

 <div1 id="Terms"> <head>Terms defined in this document</head>

 <!-- note: a list of links to termdefs will be added here. --> </div1>

 <div1 id="Ref"> <head>References</head> <blist>

 <bibl key="WSC-THREATS" id="ref-wsc-threats"> <titleref
href="http://www.w3.org/TR/2007/NOTE-wsc-threats-20071101/">Web User
Interaction: Threat Trees</titleref>, T. Roessler (ed), W3C Working Group Note
(work in progress) 1 November 2007. This version is
http://www.w3.org/TR/2007/NOTE-wsc-threats-20071101". The <loc
href="http://www.w3.org/TR/wsc-threats/">latest version</loc> is available at
http://www.w3.org/TR/wsc-threats/ . </bibl>

 <bibl key="WSC-USECASES" id="ref-wsc-usecases"><titleref
href="http://www.w3.org/TR/2008/NOTE-wsc-usecases-20080306/">Web Security
Experience, Indicators and Trust: Scope and Use Cases</titleref>, T. Close,
Editor, W3C Working Group Note (work in progress) 06 March 2008. This version
is http://www.w3.org/TR/2008/NOTE-wsc-usecases-20080306/ . The <loc
href="http://www.w3.org/TR/wsc-usecases/">latest version</loc> is available at
http://www.w3.org/TR/wsc-usecases/ . </bibl>

	
	<bibl key="RFC2965" id="ref-COOKIES">
	  <titleref href="http://www.ietf.org/rfc/rfc2965.txt">HTTP
	  State Management Mechanism</titleref>, RFC 2965, D.
	  Kristol, L. Montulli, October 2000, available at 
	  http://www.ietf.org/rfc/rfc2965.txt .
	</bibl>
	
        <bibl key="ECRYPT2009" id="ref-ECRYPT-report">
	  <titleref href="http://www.ecrypt.eu.org/documents/D.SPA.7.pdf"
		    >ECRYPT2  Yearly Report on Algorithms and Key
	  Lengths (2009 Edition)</titleref>, available at 
	  http://www.ecrypt.eu.org/documents/D.SPA.7.pdf .
	</bibl>
	
        <bibl key="EVTLSCERT" id="ref-EV">
	  <titleref href="http://www.cabforum.org/EV_Certificate_Guidelines.pdf"
		    >Guidelines for the Issuance and Management
	  of Extended Validation Certificates</titleref>, CA/Browser
	  Forum, 7 June 2007, available at 
	  http://www.cabforum.org/EV_Certificate_Guidelines.pdf .
	</bibl>
	
	<bibl key="NESSIE" id="ref-NESSIE-report">
	  <titleref 
	      href="https://www.cosic.esat.kuleuven.be/nessie/deliverables/decision-final.pdf"
	      >Portfolio of recommended cryptographic
	  primitives, New European Schemes for Signatures, Integrity,
	  and Encryption (NESSIE)</titleref>, available at 
	  https://www.cosic.esat.kuleuven.be/nessie/deliverables/decision-final.pdf .
	</bibl>
	
        <bibl key="RFC2119" id="ref-RFC2119">
	  <titleref href="http://www.ietf.org/rfc/rfc2119.txt"
		    >Key words for use in RFCs to Indicate
	  Requirement Levels</titleref>, RFC 2119, S. Bradner, March
	  1997, available at 
	  http://www.ietf.org/rfc/rfc2119.txt .
	</bibl>
	
        <bibl key="RFC2616" id="ref-RFC2616">
	  <titleref href="http://www.ietf.org/rfc/rfc2616.txt"
		    >Hypertext Transfer Protocol --
	  HTTP/1.1</titleref>, RFC 2616, R. Fielding, J. Gettys, J.
	  Mogul, H. Frystyk, L. Masinter, P. Leach, T. Berners-Lee,
	  June 1999, available at 
	  http://www.ietf.org/rfc/rfc2616.txt .
	</bibl>
	
        <bibl key="RFC2817" id="ref-RFC2817">
	  <titleref href="http://www.ietf.org/rfc/rfc2817.txt"
		    >Upgrading to TLS Within
	  HTTP/1.1</titleref>, RFC 2817, R. Khare, S. Lawrence, May
	  2000, available at 
	  http://www.ietf.org/rfc/rfc2817.txt .
	</bibl>
	
        <bibl key="RFC2818" id="ref-RFC2818">
	  <titleref href="http://www.ietf.org/rfc/rfc2818.txt"
		    >HTTP Over TLS</titleref>, RFC 2818, E.
	  Rescorla, May 2000, available at 
	  http://www.ietf.org/rfc/rfc2818.txt .
	</bibl>
	
        <bibl key="PKIX" id="ref-PKIX">
	  <titleref href="http://www.ietf.org/rfc/rfc5280.txt" >Internet X.509 Public Key
	  Infrastructure Certificate and Certificate Revocation List (CRL) 
	  Profile</titleref>, RFC 5280, D. Cooper, S. Santesson, S. Farrell, S. Boeyen, 
	  R. Housley, W. Polk, May 2008, available at
	  http://www.ietf.org/rfc/rfc5280.txt .
	</bibl>
	
        <bibl key="RFC3709" id="ref-RFC3709">
	  <titleref href="http://www.ietf.org/rfc/rfc3709.txt"
		    >Internet X.509 Public Key Infrastructure:
	  Logotypes in X.509 Certificates</titleref>, RFC 3709, S.
	  Santeson, R. Housley, T. Freeman, February 2004, available
	  at 
	  http://www.ietf.org/rfc/rfc3709.txt .
	</bibl>
	
        <bibl key="RFC3986" id="ref-URI">
	  <titleref href="http://www.ietf.org/rfc/rfc3986.txt"
		    >Uniform Resource Identifier (URI): Generic
	  Syntax"</titleref>, RFC 3986, T. Berners-Lee, R. Fielding,
	  L. Masinter, January 2005, available at 
	  http://www.ietf.org/rfc/rfc3986.txt .
	</bibl>
	
        <bibl key="WCAG20" id="ref-WCAG2">
	  <titleref href="http://www.w3.org/TR/2008/REC-WCAG20-20081211/"
		    >Web Content Accessibility Guidelines
	  2.0</titleref>, B. Caldwell, M. Cooper, L. G. Reid, G.
	  Vanderheiden, W3C Recommendation 11 December 2008.  This version is 
	  http://www.w3.org/TR/2008/REC-WCAG20-20081211/ . The
	  <loc href="http://www.w3.org/TR/WCAG20/">latest version
	  of WCAG 2.0</loc> is  available at
	  http://www.w3.org/TR/WCAG20/ .
	</bibl>
<!--	
	<bibl key="WHALENEVIDENCE" id="ref-whalen-inkpen">
	  <titleref href="http://www.edgelab.ca/publications/whalen_GI.pdf">Use of Visual 
	  Security Cues in Web Browsers</titleref>, T. Whalen and K. M. Inkpen.
	  Gathering Evidence. In Proceedings of the 2005 Conference
	  on Graphics Interface, pages 137–144, Victoria, British
	  Columbia, 2005.  This publicatio is available at
	  http://www.edgelab.ca/publications/whalen_GI.pdf .
	</bibl>

        <bibl key="XIA" id="ref-xia-brustoloni">
        <titleref href="http://www2005.org/cdrom/docs/p489.pdf"
		  >Hardening web browsers against
	man-in-the-middle and eavesdropping attacks</titleref>, H.
	Xia and J. C. Brustoloni. In Proceedings of the 14th
	International World Wide Web Conference (WWW2005), pages
	489–497. W3C/ACM, May 2005, available at 
	http://www2005.org/cdrom/docs/p489.pdf .
	</bibl>
-->

	<bibl key="FAVICON" id="ref-FAVICON">
	  <titleref href="http://www.w3.org/2005/10/howto-favicon">How
	  to Add a Favicon to your Site</titleref>,
	  D. Hazaël-Massieux, C. Lilley, O. Théreaux, W3C work in
	  progress, available at http://www.w3.org/2005/10/howto-favicon .
	</bibl>

<!--
	<bibl id="ref-Emperor" key="EMPEROR">
	  <titleref href="http://www.usablesecurity.org/emperor/">The
	  Emperor's New Security Indicators</titleref>, S. Schechter,
	  R. Dhamija, A. Ozment, I. Fischer, in Proceedings of the
	  IEEE Symposium on Security and Privacy, May 2007.  This
	  paper is available at http://www.usablesecurity.org/emperor/
	  .
	</bibl>
-->
	
	<bibl id="ref-sslv3" key="SSLv3">
	  <titleref 
	  href="http://web.archive.org/web/20080208141212/http://wp.netscape.com/eng/ssl3/">SSLv3 specification</titleref>,
	  Netscape, November 1996.  This specification is archived at
	  http://web.archive.org/web/20080208141212/http://wp.netscape.com/eng/ssl3/ .
	</bibl>
	
	<bibl id="ref-tlsv11" key="TLSv11">
	  <titleref href="http://www.ietf.org/rfc/rfc4346.txt">The Transport Layer 
	  Security (TLS)
	  Protocol</titleref>, RFC 4346, T. Dierks, E. Rescorla, April 2006.  
	  This specification is available at http://www.ietf.org/rfc/rfc4346.txt .
	</bibl>
	
	<bibl id="ref-tlsv12" key="TLSv12">
	  <titleref href="http://www.ietf.org/rfc/rfc5246.txt">The Transport 
	  Layer Security (TLS) Protocol Version 1.2</titleref>, RFC 5246, 
	  T. Dierks, E. Rescorla, August
	  2008. This specification is available at http://www.ietf.org/rfc/rfc5246.txt .
	</bibl>
	
	<bibl id="ref-gutmann-kcm" key="KCM">
	  <titleref href="http://tools.ietf.org/id/draft-gutmann-keycont-01.txt">Key 
	  Management through Key Continuity (KCM)</titleref>, 
	  (Expired) Internet Draft, September
	  2008, Peter Gutmann.  This draft is available at
	  http://tools.ietf.org/id/draft-gutmann-keycont-01.txt .
	</bibl>
	
	<bibl id="ref-ocsp" key="RFC2560">
	  <titleref href="http://www.ietf.org/rfc/rfc2560.txt">X.509 Internet Public 
	  Key Infrastructure
	  Online Certificate Status Protocol - OCSP</titleref>, RFC 2560, M. Myers, 
	  R. Ankney, A. Malpani,
	  S. Galperin, C. Adams, June 1999.  This specification is available at
	  http://www.ietf.org/rfc/rfc2560.txt .
	</bibl>
	
	<bibl id="ref-petnames" key="PETNAMES">
	  <titleref 
	  href="http://www.hpl.hp.com/techreports/2005/HPL-2005-148.html">Petname
	  Systems</titleref>, HPL-2005-148, Mark Stiegler, August 2005. 
	  This report is available at http://www.hpl.hp.com/techreports/2005/HPL-2005-148.html .
	</bibl>
	
	<bibl id="ref-XHR" key="XHR">
	  <titleref href="http://www.w3.org/TR/XMLHttpRequest/">XMLHttpRequest</titleref>.
	  A. van Kesteren, W3C Working Draft (Work in Progress) 19 November 2009.  This version of
	  the XMLHttpRequest specification is at
	  http://www.w3.org/TR/2009/WD-XMLHttpRequest-20091119/ .  The <loc href="http://www.w3.org/TR/XMLHttpRequest/">latest version</loc> of this
	  specification is available at
	  http://www.w3.org/TR/XMLHttpRequest/ .
	</bibl>
	
	<bibl id="ref-XHRl2" key="XHR2">
	  <titleref href="http://www.w3.org/TR/XMLHttpRequest2/">XMLHttpRequest 
	  Level 2</titleref>.
	  A. van Kesteren, W3C Working Draft (Work in Progress) 20 August September 2009.   This
	  version of the XMLHttpRequest Level 2  specification is at
	  http://www.w3.org/TR/2009/WD-XMLHttpRequest2-20090820/ .  The <loc href="http://tools.ietf.org/id/draft-gutmann-keycont-01.txt">latest version</loc> of this
	  specification is available at 
	  http://www.w3.org/TR/XMLHttpRequest2/ .
	</bibl>
	
      </blist>
    </div1>
  </body>
  
</spec>
