Daniel Kahn Gillmor | 22 May 2013 23:56

Strict-Transport-Security and mixed-content warnings

hi websec folks--

I am wondering what people think the proper intersection is between a
web browser's mixed-content warnings and HSTS.

For example, if https://example.net has asserted
Strict-Transport-Security: max-age=15768000 but the homepage at
https://example.net/ also contains

  <img src="http://example.net/example.jpg"/>

should an HSTS-compatible browser show its standard mixed-content
warning even though it knows to rewrite that img src to
https://example.net/example.jpg ?

My intuition is that this shouldn't trigger the browser's mixed-content
warning, but chromium 26.0.1410.43 does show it, and

 https://code.google.com/p/chromium/issues/detail?id=122548#c26

suggests that palmer <at>  and rsleevi <at>  think that is the correct behavior
because they want:

> to signal to the site author of an error - for example, if users which
> did not have HSTS visited.

I'm not sure how the author is supposed to get this signal from the site
visitor's browser, though -- perhaps the expectation is that site
visitors will independently report the "broken lock" to the site
administrator?
(Continue reading)

Phillip Hallam-Baker | 15 May 2013 03:36
Picon

Session continuation mechanism -01

I have just submitted an updated version of the session continuation draft.


I didn't bring the first version to the list attention as I was not convinced all the parts really worked. I have since re-engineered the replay prevention mechanism and I think the result is more sensible.

There is code, but this version is not tracking it (yet). I modified the examples to get the draft out the door so don't go checking it :-)


The basic idea here is that this is a more or less drop in replacement for HTTP cookies but with much better security properties. To signal that it can accept session continuation in place of cookies, a client adds an Accept-Session header to a request. If the server accepts the offer of using session management it returns a response with a Set-Session header.

After the context is set up, the client and server both add Session headers to request and response messages.


The main change is on replay attack prevention which I now think needs to be different for requests and responses.

Response replay attack prevention is easy. Just put a nonce in the request and the server returns in in the response. Problem solved. No need to keep any state or muck about with clocks.

Request replay attack is trickier and I don't think we even want to try to do the job in HTTP, certainly not the whole job. If people want really solid request replay attack prevention for a Web service then they should write the code into their Web Service because HTTP does not have enough visibility into their transaction to know when the nonces should be there or not.


The same mechanism could be extended to cover public key techniques (digital signatures).

--
Website: http://hallambaker.com/
<div><div dir="ltr">I have just submitted an updated version of the session continuation draft.<div>
<br clear="all"><div>
<a href="http://www.ietf.org/id/draft-hallambaker-httpsession-01.txt">http://www.ietf.org/id/draft-hallambaker-httpsession-01.txt</a><br>
</div>
<div><br></div>
<div>I didn't bring the first version to the list attention as I was not convinced all the parts really worked. I have since re-engineered the replay prevention mechanism and I think the result is more sensible.</div>
<div><br></div>
<div>There is code, but this version is not tracking it (yet). I modified the examples to get the draft out the door so don't go checking it :-)</div>
<div><br></div>
<div><br></div>
<div>The basic idea here is that this is a more or less drop in replacement for HTTP cookies but with much better security properties. To signal that it can accept session continuation in place of cookies, a client adds an Accept-Session header to a request. If the server accepts the offer of using session management it returns a response with a Set-Session header.</div>
<div><br></div>
<div>After the context is set up, the client and server both add Session headers to request and response messages.</div>
<div><br></div>
<div><br></div>
<div>The main change is on replay attack prevention which I now think needs to be different for requests and responses.</div>
<div><br></div>
<div>Response replay attack prevention is easy. Just put a nonce in the request and the server returns in in the response. Problem solved. No need to keep any state or muck about with clocks.</div>
<div><br></div>
<div>Request replay attack is trickier and I don't think we even want to try to do the job in HTTP, certainly not the whole job. If people want really solid request replay attack prevention for a Web service then they should write the code into their Web Service because HTTP does not have enough visibility into their transaction to know when the nonces should be there or not.</div>
<div><br></div>
<div><br></div>
<div>The same mechanism could be extended to cover public key techniques (digital signatures).</div>
<div><br></div>-- <br>Website: <a href="http://hallambaker.com/">http://hallambaker.com/</a><br>
</div>
</div></div>
Yoav Nir | 7 May 2013 09:13
Picon
Favicon

Consensus call: Issue #57 (max-max-age)

Hi folks

We think it's time to move on with Key Pinning, as there haven't been substantial issues raised in months. 
The one outstanding contentious issue is the one in the subject: http://trac.tools.ietf.org/wg/websec/trac/ticket/57

We've heard the argument that allowing pins to exist for indefinitely long can cause a site to be bricked for
that period because of simple mistakes like changing certificate vendor or changing ownership of the
domain name.

We've also heard the counter-argument that some domains are visited infrequently, so short pins would do
nothing for them.

So here are some options. Please reply to this thread with with your preference. Arguments are good, but
"+1" works as well. So…

How should we handle the max-max-age issue:
 (1) No hard limits, but allow UAs to limit the pin time. Suggest a month
 (2) Set a hard limit of one month in the RFC. Longer pins are truncated.
 (3) No hard limits, but allow the UA to skip hard-fail if a pin hasn't been observed for some time (like a month)
 (4) Adopt some gradual confidence-building scheme a-la-TACK.

"None of the above" is possible, but MUST come with argument and proposed text.

Let's give this until Wednesday, 22-May.

Thanks

Tobias & Yoav

vinod kumar | 2 May 2013 11:50
Picon

HPKP and Certificate Revocation Check

Hi,

I would like to discuss a possible vulnerability in Public Key Pinning scheme (http://datatracker.ietf.org/doc/draft-ietf-websec-key-pinning/ ), related to certificate revocation checking. I would appreciate if anybody can review and verify my observations.

Section 2.6 the draft states that when the UA connects to a pinned host, it must terminate the TLS connection, if there are any errors. The referred rfc, RFC 6797, clarifies that error could be related to certificate revocation checking or server identity checking.

But it is not mandatory that during TLS handshake, UA performs certificate revocation or an assertive answer is found about the revocation status of the certificate. The reasons could be:

1.      OCSP is disabled by default at the UA and the user has not changed it.

2.      OCSP checking is disabled by the user.

3.      OCSP check is performed but no answer is obtained from the OCSP server within the stipulated timeout.

So it is very much possible that the UA accepts the PKP header from the host without verifying the revocation status of the host certificate used in TLS handshake.

In the case of the host losing its private key to an attacker, the attacker may be able to block the host permanently from connecting to the UA, as explained below. The host’s CA would have revoked the certificate but the unreliability in revocation checking creates a vulnerability.

Suppose an attacker is in possession of the private key of the host and the host certificate is duly revoked by the issued CA. Attacker may succeed in diverting the UA to his server when UA tries to connect to the valid host. Attacker may mount a DNS attack or a MIM attack to achieve this. Since he posses the valid private key, the TLS connection will be successful. The only other thing he needs is that UA doesn’t get to know the revocation status of the certificate. Here, the attacker is able to make the UA accept whatever PKP headers sent in the HTTP response.

Say, the attacker has two key pairs, KeyPair1 and Keypair2, and holds a valid certificate for KeyPair1.

He constructs a PKP header,

Public-Key-Pins: max-age= (maximum possible value);

               pin-sha1= (pin corresponding to compromised key);

               pin-sha1= (pin corresponding to KeyPair1);

When UA accepts this PKP header, effectively the attacker is able to set a new backup pin.

The attacker can set a new PKP header in subsequent connection. He can use KeyPair1 in the TLS handshake.

Public-Key-Pins: max-age= (maximum possible value);

               pin-sha1= (pin corresponding to KeyPair1);

               pin-sha1= (pin corresponding to KeyPair2);

Now the UA sets both pins to be attacker’s pins and the valid host is permanently blocked from connecting to the UA.

To avoid this attack, shouldn’t we mandate revocation checking when PKP headers are accepted?


Thanks,

Vinod.

<div><div dir="ltr">

<p class="">Hi,</p>

<p class=""></p>

<p class="">I would like to discuss a possible vulnerability in
Public Key Pinning scheme (<a href="http://datatracker.ietf.org/doc/draft-ietf-websec-key-pinning/">http://datatracker.ietf.org/doc/draft-ietf-websec-key-pinning/</a>
), related to certificate revocation checking. I would appreciate if anybody
can review and verify my observations.</p>

<p class="">Section 2.6 the draft states that when the UA connects to
a pinned host, it must terminate the TLS connection, if there are any errors. The
referred rfc, RFC 6797, clarifies that error could be related to certificate
revocation checking or server identity checking.</p>

<p class=""></p>

<p class="">But it is not mandatory that during TLS handshake, UA
performs certificate revocation or an assertive answer is found about the
revocation status of the certificate. The reasons could be:</p>

<p class=""><span><span>1.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span>OCSP is disabled by default at the UA and the
user has not changed it.</p>

<p class=""><span><span>2.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span>OCSP checking is disabled by the user.</p>

<p class=""><span><span>3.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span>OCSP check is performed but no answer is
obtained from the OCSP server within the stipulated timeout.</p>

<p class=""></p>

<p class="">So it is very much possible that the UA accepts the PKP header
from the host without verifying the revocation status of the host certificate
used in TLS handshake.</p>

<p class=""></p>

<p class="">In the case of the host losing its private key to an
attacker, the attacker may be able to block the host permanently from
connecting to the UA, as explained below. The host&rsquo;s CA would have revoked the
certificate but the unreliability in revocation checking creates a vulnerability.
</p>

<p class=""></p>

<p class="">Suppose an attacker is in possession of the private key
of the host and the host certificate is duly revoked by the issued CA. Attacker
may succeed in diverting the UA to his server when UA tries to connect to the valid
host. Attacker may mount a DNS attack or a MIM attack to achieve this. Since he
posses the valid private key, the TLS connection will be successful. The only
other thing he needs is that UA doesn&rsquo;t get to know the revocation status of
the certificate. Here, the attacker is able to make the UA accept whatever PKP
headers sent in the HTTP response.</p>

<p class=""></p>

<p class="">Say, the attacker has two key pairs, KeyPair1 and
Keypair2, and holds a valid certificate for KeyPair1.</p>

<p class="">He constructs a PKP header,</p>

<p class="">Public-Key-Pins: max-age= (maximum possible value);</p>

<p class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>pin-sha1=
(pin corresponding to compromised key);</p>

<p class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>pin-sha1=
(pin corresponding to KeyPair1);</p>

<p class="">When UA accepts this PKP header, effectively the attacker
is able to set a new backup pin.</p>

<p class=""></p>

<p class="">The attacker can set a new PKP header in subsequent
connection. He can use KeyPair1 in the TLS handshake.</p>

<p class="">Public-Key-Pins: max-age= (maximum possible value);</p>

<p class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>pin-sha1=
(pin corresponding to KeyPair1);</p>

<p class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>pin-sha1=
(pin corresponding to KeyPair2);</p>

<p class="">Now the UA sets both pins to be attacker&rsquo;s pins and the
valid host is permanently blocked from connecting to the UA.</p>

<p class=""></p>

<p class="">To avoid this attack, shouldn&rsquo;t we mandate revocation
checking when PKP headers are accepted?</p>
<p class=""><br></p>
<p class="">Thanks,</p>
<p class="">Vinod.<br></p>

</div></div>
hammondjohnson | 27 Apr 2013 19:55
Favicon

Biggest Fake Conference in Computer Science

We are researchers from different parts of the world and conducted a study on  
the world’s biggest bogus computer science conference WORLDCOMP 
( http://sites.google.com/site/worlddump1 ) organized by Prof. Hamid Arabnia 
from University of Georgia, USA.

We submitted a fake paper to WORLDCOMP 2011 and again (the same paper 
with a modified title) to WORLDCOMP 2012. This paper had numerous 
fundamental mistakes. Sample statements from that paper include: 

(1). Binary logic is fuzzy logic and vice versa
(2). Pascal developed fuzzy logic
(3). Object oriented languages do not exhibit any polymorphism or inheritance
(4). TCP and IP are synonyms and are part of OSI model 
(5). Distributed systems deal with only one computer
(6). Laptop is an example for a super computer
(7). Operating system is an example for computer hardware

Also, our paper did not express any conceptual meaning.  However, it 
was accepted both the times without any modifications (and without 
any reviews) and we were invited to submit the final paper and a 
payment of $500+ fee to present the paper. We decided to use the 
fee for better purposes than making Prof. Hamid Arabnia (Chairman 
of WORLDCOMP) rich. After that, we received few reminders from 
WORLDCOMP to pay the fee but we never responded. 

We MUST say that you should look at the above website if you have any thoughts 
to submit a paper to WORLDCOMP.  DBLP and other indexing agencies have stopped 
indexing WORLDCOMP’s proceedings since 2011 due to its fakeness. See 
http://www.informatik.uni-trier.de/~ley/db/conf/icai/index.html for of one of the 
conferences of WORLDCOMP and notice that there is no listing after 2010. See Section 2 of
http://sites.google.com/site/dumpconf for comments from well-known researchers 
about WORLDCOMP. 

The status of your WORLDCOMP papers can be changed from scientific
to other (i.e., junk or non-technical) at any time. Better not to have a paper than 
having it in WORLDCOMP and spoil the resume and peace of mind forever!

Our study revealed that WORLDCOMP is a money making business, 
using University of Georgia mask, for Prof. Hamid Arabnia. He is throwing 
out a small chunk of that money (around 20 dollars per paper published 
in WORLDCOMP’s proceedings) to his puppet (Mr. Ashu Solo or A.M.G. Solo) 
who publicizes WORLDCOMP and also defends it at various forums, using 
fake/anonymous names. The puppet uses fake names and defames other conferences
to divert traffic to WORLDCOMP. He also makes anonymous phone calls and tries to 
threaten the critiques of WORLDCOMP (See Item 7 of Section 5 of above website). 
That is, the puppet does all his best to get a maximum number of papers published 
at WORLDCOMP to get more money into his (and Prof. Hamid Arabnia’s) pockets. 

Monte Carlo Resort (the venue of WORLDCOMP for more than 10 years, until 2012) has 
refused to provide the venue for WORLDCOMP’13 because of the fears of their image 
being tarnished due to WORLDCOMP’s fraudulent activities. That is why WORLDCOMP’13 
is taking place at a different resort. WORLDCOMP will not be held after 2013. 

The draft paper submission deadline is over but still there are no committee 
members, no reviewers, and there is no conference Chairman. The only contact 
details available on WORLDCOMP’s website is just an email address! 

Let us make a direct request to Prof. Hamid arabnia: publish all reviews for 
all the papers (after blocking identifiable details) since 2000 conference. Reveal 
the names and affiliations of all the reviewers (for each year) and how many 
papers each reviewer had reviewed on average. We also request him to look at 
the Open Challenge (Section 6) at https://sites.google.com/site/moneycomp1 

Sorry for posting to multiple lists. Spreading the word is the only way to stop 
this bogus conference. Please forward this message to other mailing lists and people. 

We are shocked with Prof. Hamid Arabnia and his puppet’s activities 
http://worldcomp-fake-bogus.blogspot.com   Search Google using the 
keyword worldcomp fake for additional links.

_______________________________________________
websec mailing list
websec <at> ietf.org
https://www.ietf.org/mailman/listinfo/websec
Tom Ritter | 17 Apr 2013 15:42
Favicon
Gravatar

HPKP Report Only Mode and Browser Extensions

I hear more and more talk about HPKP being used primarily in
Report-Only mode.  I think that's fair, as website operators are very
*very* nervous about bricking themselves.  But it also takes away the
ability of users to be proactive about these (possible) violations.

How do people feel about the following addition to the "Reporting Pin
Validation Failure" section (probably under a new sub-section):

  If a UA provides extensibility points to be used
  by third party extensions or plugins, it [MAY?/SHOULD?]
  provide extensibility points relating to failures in
  both enforcement and Report Only mode.

I envision a browser extension (which is naturally an opt-in
mechanism) that flags Report Only violations so users are aware of
them, and can investigate.  I envision another one, perhaps run by the
EFF, Google, or other trustworthy organization that actually sends
these reports anonymized to a central database (besides the
report-uri) where volunteers or employees could review them for
suspicious entries.

-tom
Trevor Perrin | 16 Apr 2013 02:23

Pin activation in HPKP

Hi websec,

Long email, sorry!

TLDR:  HPKP could do TACK-like "pin activation" for safer pinning.

-----

At one point, the HPKP draft mentioned "pin activation" a la TACK [1].
 In TACK's algorithm, a client has to observe a pin assertion multiple
times before "activating" a pin.  After the first observation,
subsequent observations cause the pin to be activated for a period
equal to the span in which the client has observed the assertion, or a
max of 30 days.

The goal of this is to limit damage from malicious or mistaken "bad
pins", with a side benefit of simplifying deployment:

 * If connections to a domain are being hijacked (due to DNS
hijacking, domain name theft, an intercepted Wifi connection, etc.),
and the attacker is atttempting to set a malicious pin, the resultant
pin will not last longer than the attacker has already controlled the
connection for (e.g., if you're at a coffee-shop for 2 hours, it can't
set bad pins that last more than 2 hours; if a domain name is hijacked
for 2 days, bad pins will expire 2 days afterwards; etc.)

 * If a site advertises bad pins for itself, perhaps due to a
configuration mistake, a hacker, or a disgruntled system
administrator, damage will be limited if the mistake is noticed and
corrected quickly.

 * Since pin lifetimes are automatically scaled in a way which allows
safe rollout (with quick removal an option if things go wrong), we can
potentially do without an explicit max-age, making deployment simpler
(one less knob the deployer has to turn).

-- 

I had discussed this with Chris and Ryan, and applying this algorithm
to HPKP seemed difficult.  The algorithm requires clients make
observations which either "confirm" or "contradict" an existing pin.
This has three complications in HPKP:

First, an HPKP header may assert a list of pinned keys which overlaps
but doesn't exactly match a previous header.  It's not instantly
obvious how to handle this.

Second, a TACK pin requires a matching tack to be present in every
(non-resumed) TLS handshake, or the pin is contradicted.  Thus, a bad
pin set by an attacker can be contradicted when the client visits the
legitimate site, whether the legitimate site is aware of TACK or not.
In HPKP, on the other hand, HPKP headers are *not* required to be
present in HTTP responses from pinned sites, so there wouldn't be as
much benefit from regular sites "contradicting" bad pins.

Third, "include_subdomains" (which TACK does not have) adds a wrinkle
(if a pin is set at A.com, can B.A.com activate it?, etc.)

--

On further thought, I think the first problem can be solved by
adapting TACK's "overlapping pins" notion, where a client can have 2
pins active at once: this allows the new pin to be activated *prior
to* removing the old one.

The second problem may or may not be solvable, depending on whether
HPKP is willing to require HPKP headers be present in responses from a
pinned site.  However, I think the algorithm has value even without
this.

The third problem (include_subdomains) needs more analysis.  There are
ways pin activation could work with include_subdomains, but it adds
more complexity.  I'm not quite sure the value of
"include_subdomains".  According to HSTS [2] section 14.4, it protects
cookies.  But there are other ways to protect cookies (see the TACK
draft section 8.1) which are usable by all sites, not just those
willing to pin their subdomains.  And cookies should be replaced
anyways, which I believe this WG is looking into.

--

Anyways, here's a sketch of a "pin activation" algorithm for HPKP.
This algorithm is basically the same as TACK (section 4.3.4), so it
creates opportunites for sharing code / analysis / deployment advice
etc.  I'm omitting "max-age" and "includeSubdomains", but if the group
is interested, we can discuss how to do them.

Definition of "HPKP pin":
 - a set of public-key hashes
 - "initial time" when pin was created
 - "end time" when pin ceases to be active (or 0)

Definition of "HPKP pin assertion":
 - A set of public key hashes presented in an HPKP header

A client may store 0, 1, or 2 HPKP pins for a single domain name.  A
server may present 0, 1, or 2 HPKP pin assertions in a single HTTP
response header (syntax TBD).

Client connections to domains with an active pin or pins MUST match
these pins or the connection is considered "contradicted" by the pin
(e.g. if a client has 2 active pins for "example.com", the connection
must have a certificate path that overlaps at least one key from each
pin).

If the connection is not contradicted, then the following steps are performed:
 1. Any inactive pins are deleted if they don't overlap the
certificate chain, or if there is an HPKP header that doesn't reassert
the inactive pin.
 2. If there are pins that are re-asserted by the HPKP header (i.e. a
pin assertion lists the exact same keys as the pin), their active
period is set by:

  end_time = current + MIN(30 days, current - initial_time)

 3. Any new pin assertions create new inactive pins with initial_time
= current and end_time = 0.

--

So on deploying an initial pin assertion, clients will begin creating
and activating pins.  If problems are detected in the first (minutes /
hours / days) of rollout, the assertion can be taken down, and
problems will subside fairly quickly, as no client will have yet
activated a long-lived pin.

To change pins, the server simply deploys the new assertion alongside
the old one.  After 60 days, the old assertion may be removed.  This
guarantees that a client who is contacting the server at intervals of
30 days or less will never receive less than a full 30-day active
period, to either the new or old pin, during the transition.

If the server needs to switch more quickly from the old to new
assertion it can do so, but this may create a window where clients
have deleted the old pin but the new one is not yet receiving full
30-day active periods.  By allowing "overlapping" pins and pin
assertions, we avoid this in the case where servers are making
carefully-planned transitions from one pin to another.

Anyways, yes, this is complicated to analyze but it's fairly simple to
implement.  I'm sure I explained some of this badly, so please ask
questions!  I hope we can discuss this more...

Trevor
websec issue tracker | 22 Mar 2013 22:36
Picon

#57: Re-add an upper limit to max-age

#57: Re-add an upper limit to max-age

 At IETF 86, it was decided that there should be an upper limit to the max-
 age directive

--

-- 
--------------------------------+-------------------------------
 Reporter:  palmer <at> google.com   |      Owner:  palmer <at> google.com
     Type:  defect              |     Status:  new
 Priority:  major               |  Milestone:
Component:  key-pinning         |    Version:
 Severity:  Active WG Document  |   Keywords:
--------------------------------+-------------------------------

Ticket URL: <http://tools.ietf.org/wg/websec/trac/ticket/57>
websec <http://tools.ietf.org/websec/>

Yoav Nir | 18 Mar 2013 05:21
Picon
Favicon

Some issues with key-pinning

Hi

I have reviewed this draft, and here are some comments.

Section 2.1 last paragraph says that the hash function MUST be sha1 or sha256. This is weird. First it provides no algorithm agility, so adding support for, say, SHA-3 would require a document that updates this one (section 2.4 says so explicitly). Second, SHA2-256 is slower on 64-bit platforms than SHA2-512, so right now some may prefer it. Third, in various locales, some other hash function might be required, such as GOST-34.311-95. I would much prefer that we referred to a registry of hash names ( perhaps this one ), and allow anything from there (notably, it doesn't solve the GOST issue). There should be implementation advice advising support of SHA-1 and SHA-256, perhaps even calling them "mandatory to implement", but I don't think we need to require a new spec for updating a list of algorithms. It might also be good to advise on using the same hash algorithm that is used in the signature of the certificate, as the client would be sure to be able to calculate the hash function (or it wouldn't be able to verify the certificate signature.

Some of the mandates in section 2 are mixed up. Section 2.2.1 second sentence has "… UAs MUST treat the host …" - clearly a UA mandate. But this is part of section 2.2 ("Server Processing Model").  UA mandates should be somewhere under section 2.3 ("User Agent Processing Model"). Some cleaning up is needed there.

Section 2.6 requires the same no-error-or-block behavior here as in HSTS. I wonder if we need this level of strictness, or whether requiring this only for errors involving the verification of pins. IOW, should this document require that expired certificates cause a block, when such policy can and should be communicated via HSTS?

Section 2.8 is about pinning self-signed (or self-issued) certificates. Should mention DANE (RFC 6698) type 2 or 3, because those are a more trust-worthy case than normal self-signed or self-issued certificates.

Section 4 (security considerations) should have something about why it's wrong to use this header without HSTS. 3rd paragraph of section 1 says that using them together is intended, so we should explain why.

Section 5: yes, there are actions for IANA, as they allocate HTTP headers (other than X-something).  See the text from draft -14 of HSTS:

15. IANA Considerations

Below is the Internet Assigned Numbers Authority (IANA) Permanent Message Header Field registration information per [RFC3864]. Header field name: Strict-Transport-Security Applicable protocol: HTTP Status: standard Author/Change controller: IETF Specification document(s): this one

A more structural note: The introduction looks a little thin to me. The draft dives into syntax in section 2 before the reader has any idea:
  • When and why you should want to add this header to your web server responses. What is this defending against
  • Why you would want to pin an end-entity key, and alternatively why you would want to ping something higher up the chain
  • What does it mean when there are multiple pins. AND? OR?

The third question is answered later in the draft, but I think this information should go in the introduction.


And one nit:
  • The upper-case SHOULD in the introduction seems inappropriate. RFC 2119 labels SHOULD (not sure this is even a pun) be used for cases of interoperability or for preventing harm. Here, the use is the simple English "should", and doesn't mandate anything at all, so it ought to be lower-case:
    "We propose a new HTTP header to enable a web host to express to user agents (UAs) which Subject Public Key Info (SPKI) structure(s) UAs *should* expect to be present in the host's certificate chain in future connections using TLS (see [RFC5246]).

Note: this review is with no hats. It is not part of some last-call process. Please treat this as any other review on the list.

Yoav

<div>
Hi
<div><br></div>
<div>I have reviewed this draft, and here are some comments.</div>
<div><br></div>
<div>Section 2.1 last paragraph says that the hash function MUST be sha1 or sha256. This is weird. First it provides no algorithm agility, so adding support for, say, SHA-3 would require a document that updates this one (section 2.4 says so explicitly). Second,
 SHA2-256 is slower on 64-bit platforms than SHA2-512, so right now some may prefer it. Third, in various locales, some other hash function might be required, such as GOST-34.311-95. I would much prefer that we referred to a registry of hash names ( perhaps&nbsp;<a href="http://www.iana.org/assignments/hash-function-text-names/hash-function-text-names.xml">this
 one</a>&nbsp;), and allow anything from there (notably, it doesn't solve the GOST issue). There should be implementation advice advising support of SHA-1 and SHA-256, perhaps even calling them "mandatory to implement", but I don't think we need to require a new
 spec for updating a list of algorithms. It might also be good to advise on using the same hash algorithm that is used in the signature of the certificate, as the client would be sure to be able to calculate the hash function (or it wouldn't be able to verify
 the certificate signature.</div>
<div><br></div>
<div>Some of the mandates in section 2 are mixed up. Section 2.2.1 second sentence has "&hellip; UAs MUST treat the host &hellip;" - clearly a UA mandate. But this is part of section 2.2 ("<span>Server Processing
 Model</span>"). &nbsp;UA mandates should be somewhere under section 2.3 ("<span>User Agent Processing Model</span>"). Some cleaning up is needed there.</div>
<div><br></div>
<div>Section 2.6 requires the same no-error-or-block behavior here as in HSTS. I wonder if we need this level of strictness, or whether requiring this only for errors involving the verification of pins. IOW, should this document require that expired certificates
 cause a block, when such policy can and should be communicated via HSTS?</div>
<div><br></div>
<div>Section 2.8 is about pinning self-signed (or self-issued) certificates. Should mention DANE (RFC 6698) type 2 or 3, because those are a more trust-worthy case than normal self-signed or self-issued certificates.</div>
<div><br></div>
<div>Section 4 (security considerations) should have something about why it's wrong to use this header without HSTS. 3rd paragraph of section 1 says that using them together is intended, so we should explain why.</div>
<div><br></div>
<div>Section 5: yes, there are actions for IANA, as they allocate HTTP headers (other than X-something). &nbsp;See the text from draft -14 of HSTS:</div>
<div>
<span class="h2"><h2>
<a class="selflink" name="section-15" href="http://tools.ietf.org/html/draft-ietf-websec-strict-transport-sec-14#section-15">15</a>.  IANA Considerations</h2></span>

   Below is the Internet Assigned Numbers Authority (IANA) Permanent
   Message Header Field registration information per [<a href="http://tools.ietf.org/html/rfc3864" title='"Registration Procedures for Message Header Fields"'>RFC3864</a>].

     Header field name:           Strict-Transport-Security
     Applicable protocol:         HTTP
     Status:                      standard
     Author/Change controller:    IETF
     Specification document(s):   this one

</div>
<div><br></div>
<div>A more structural note: The introduction looks a little thin to me. The draft dives into syntax in section 2 before the reader has any idea:</div>
<div>
<ul class="MailOutline">
<li>When and why you should want to add this header to your web server responses. What is this defending against</li>
<li>Why you would want to pin an end-entity key, and alternatively why you would want to ping something higher up the chain</li>
<li>What does it mean when there are multiple pins. AND? OR?</li>
</ul>
<div><br></div>
</div>
<div>The third question is answered later in the draft, but I think this information should go in the introduction.</div>
<div><br></div>
<div><br></div>
<div>And one nit:</div>
<div>
<ul class="MailOutline"><li>The upper-case SHOULD in the introduction seems inappropriate. RFC 2119 labels SHOULD (not sure this is even a pun) be used for cases of interoperability or for preventing harm. Here, the use is the simple English "should", and doesn't mandate anything
 at all, so it ought to be lower-case:<br>
"We propose a new HTTP header to enable a web host to express to user agents (UAs) which Subject Public Key Info (SPKI) structure(s) UAs *should* expect to be present in the host's certificate chain in future connections using TLS (see [RFC5246]).</li></ul>
<div><br></div>
</div>
<div>Note: this review is with no hats. It is not part of some last-call process. Please treat this as any other review on the list.</div>
<div><br></div>
<div>Yoav</div>
<div><br></div>
</div>
Phillip Hallam-Baker | 14 Mar 2013 04:49
Picon

Session Continuation = Session Bound State?

The main substantive query that seemed to be raised in the meeting was
what we are going to call this session continuation thing. I am not
that worried about confusion with HTTP-Auth. Folk who know, know.

But one of the objectives here is to replace cookies. So choosing a
name that positions the spec as a successor to authentication cookies
is actually quite important.

How about Session Bound State as the term of art?

--

-- 
Website: http://hallambaker.com/
Yoav Nir | 14 Mar 2013 03:29
Picon
Favicon

Preliminary Minutes Uploaded

Hi all

Following our meeting today, I have uploaded the preliminary meeting minutes. Thanks again to Brad Hill
for taking minutes during the meeting.

Please send any corrections directly to me.

Yoav

Link: http://www.ietf.org/proceedings/86/minutes/minutes-86-websec

Gmane