qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* Re: [Qemu-devel] [PATCHv3] Improve documentation for TLS
       [not found] <1460053967-65141-1-git-send-email-alex@alex.org.uk>
@ 2016-04-07 19:50 ` Eric Blake
  2016-04-07 20:05   ` Alex Bligh
  2016-04-09 10:11 ` [Qemu-devel] [Nbd] " Wouter Verhelst
  1 sibling, 1 reply; 8+ messages in thread
From: Eric Blake @ 2016-04-07 19:50 UTC (permalink / raw)
  To: Alex Bligh, Wouter Verhelst
  Cc: nbd-general@lists.sourceforge.net, qemu-devel@nongnu.org,
	Daniel P. Berrange

[-- Attachment #1: Type: text/plain, Size: 4943 bytes --]

On 04/07/2016 12:32 PM, Alex Bligh wrote:
> * Call out TLS into a separate section
> 
> * Add details of the TLS protocol itself
> 
> * Emphasise that actual TLS session initiation (i.e. the TLS handshake) can
>   be initiated from either side (as required by the TLS standard I believe
>   and as actually works in practice)
> 
> * Clarify what is a requirement on servers, and what is a requirement on
>   clients, separately, specifying their behaviour in a single place
>   in the document.
> 
> * Document the four possible modes of operation of a server.
> 
> Signed-off-by: Alex Bligh <alex@alex.org.uk>
> ---
>  doc/proto.md | 341 +++++++++++++++++++++++++++++++++++++++++++++++++++++------
>  1 file changed, 307 insertions(+), 34 deletions(-)
> 


> +
> +If a client supports TLS, it SHOULD also support the INFO
> +extension, and SHOULD use `NBD_OPT_GO` if available in place
> +of `NBD_OPT_EXPORT_NAME`. The reason for this is set out in
> +the final paragraphs of the sections under 'FORCEDTLS'
> +and 'SELECTIVETLS': this gives an opportunity for the
> +server to transmit that an error going into transmission
> +mode is due to the client's failure to initiate TLS,
> +and the fact that the client may obtain information about
> +which exports are TLS-only through `NBD_OPT_INFO`.

Side note (no change needed to your text):

Qemu's initial implementation of TLS in the client is binary (you either
want TLS or plaintext; there's no way to connect to a server and then
decide whether to upgrade to TLS - a plaintext client will never use TLS
of an OPTIONALTLS server).  In TLS mode, the client always sends
NBD_OPT_STARTTLS first (and gets a sane error message if the server
can't/won't use TLS).  In plaintext mode, the client always sends
NBD_OPT_LIST first - which will get a nice NBD_OPT_ERR_TLS_REQD from a
FORCEDTLS server, but does NOT error out for a SELECTIVETLS server.  But
if it DOES get a listing, it then checks that the desired export was
present in the listing, which means a SELECTIVETLS server that requires
TLS on the particular export the client was hoping for will cause the
client to fail with a graceful error message of "export not present"
generated by the client, rather than attempting NBD_OPT_EXPORT_NAME, so
long as the SELECTIVETLS server omitted the TLS-only export in its
listing.  Only for a really old server (such as non-fixed newstyle),
where NBD_OPT_LIST cannot be attempted or fails with NBD_OPT_ERR_UNSUP,
is the client still in the dark about whether TLS is required, but in
that case, the server probably doesn't support TLS (especially since TLS
requires fixed newstyle).

But the reason I see no need to modify your text: I'm planning on
changing qemu's plaintext client to try NBD_OPT_GO rather than
NBD_OPT_LIST.  For a FORCEDTLS server, the command will fail with
NBD_REP_ERR_TLS_REQD (whether or not the server knows NBD_OPT_GO); and
for a SELECTIVETLS server, we just mandated that NBD_OPT_GO must be
recognized, so it will fail with NBD_REP_ERR_TLS_REQD for a TLS-only
export, and will succeed (in plaintext) otherwise.  Which means there is
no longer a need to fall back to NBD_OPT_LIST.


> +
> +With regard to the second, any server that does not wish
> +to be subject to a potential downgrade attack SHOULD either
> +used FORCEDTLS mode, or should force TLS on those exports
> +it is concerned about using SELECTIVE mode and TLS-only
> +exports. It is not possible to avoid downgrade attacks
> +on exports which may be served either via TLS or in plain
> +text unless the client insists on TLS. OPTIONALTLS SHOULD NOT
> +be used where man-in-the-midle attacks are a concern.

s/midle/middle/


> @@ -391,7 +679,10 @@ of the newstyle negotiation.
>  - `NBD_OPT_LIST` (3)
>  
>      Return a number of `NBD_REP_SERVER` replies, one for each export,
> -    followed by `NBD_REP_ACK`.
> +    followed by `NBD_REP_ACK`. The server MAY omit entries from this
> +    list if TLS has not been negotiated and either the server is
> +    operating in FORCEDTLS mode or the server is operating in
> +    SELECTIVETLS mode and the entry concerned is a TLS-only export.

Not quite right - in FORCEDTLS mode, the server MUST reply with
NBD_REP_ERR_TLS_REQD.  Correct would be:

The server MAY omit entries from this list if TLS has not been
negotiated and the server is operating in SELECTIVETLS mode, where the
entry concerned is a TLS-only export.

Maybe even strengthen it to SHOULD, particularly given my above side
note about qemu's usage of NBD_OPT_LIST to determine if a plaintext
client is talking to a server that wants TLS.

I'm down to just 2 findings and a side comment, which means we're close
enough that you can add:
Reviewed-by: Eric Blake <eblake@redhat.com>

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCHv3] Improve documentation for TLS
  2016-04-07 19:50 ` [Qemu-devel] [PATCHv3] Improve documentation for TLS Eric Blake
@ 2016-04-07 20:05   ` Alex Bligh
  0 siblings, 0 replies; 8+ messages in thread
From: Alex Bligh @ 2016-04-07 20:05 UTC (permalink / raw)
  To: Eric Blake
  Cc: Alex Bligh, Wouter Verhelst, nbd-general@lists.sourceforge.net,
	qemu-devel@nongnu.org, Daniel P. Berrange

[-- Attachment #1: Type: text/plain, Size: 4038 bytes --]

Eric,

> Qemu's initial implementation of TLS in the client is binary (you either
> want TLS or plaintext; there's no way to connect to a server and then
> decide whether to upgrade to TLS - a plaintext client will never use TLS
> of an OPTIONALTLS server).  In TLS mode, the client always sends
> NBD_OPT_STARTTLS first (and gets a sane error message if the server
> can't/won't use TLS).  In plaintext mode, the client always sends
> NBD_OPT_LIST first - which will get a nice NBD_OPT_ERR_TLS_REQD from a
> FORCEDTLS server, but does NOT error out for a SELECTIVETLS server.

... assuming the export is non-TLS.

>  But
> if it DOES get a listing, it then checks that the desired export was
> present in the listing, which means a SELECTIVETLS server that requires
> TLS on the particular export the client was hoping for will cause the
> client to fail with a graceful error message of "export not present"
> generated by the client, rather than attempting NBD_OPT_EXPORT_NAME, so
> long as the SELECTIVETLS server omitted the TLS-only export in its
> listing.  Only for a really old server (such as non-fixed newstyle),
> where NBD_OPT_LIST cannot be attempted or fails with NBD_OPT_ERR_UNSUP,
> is the client still in the dark about whether TLS is required, but in
> that case, the server probably doesn't support TLS (especially since TLS
> requires fixed newstyle).

Yes.

> But the reason I see no need to modify your text: I'm planning on
> changing qemu's plaintext client to try NBD_OPT_GO rather than
> NBD_OPT_LIST.  For a FORCEDTLS server, the command will fail with
> NBD_REP_ERR_TLS_REQD (whether or not the server knows NBD_OPT_GO); and
> for a SELECTIVETLS server, we just mandated that NBD_OPT_GO must be
> recognized, so it will fail with NBD_REP_ERR_TLS_REQD for a TLS-only
> export, and will succeed (in plaintext) otherwise.  Which means there is
> no longer a need to fall back to NBD_OPT_LIST.

Which is better, as support for INFO is required for TLS
anyway, whereas LIST is optional.

>> +
>> +With regard to the second, any server that does not wish
>> +to be subject to a potential downgrade attack SHOULD either
>> +used FORCEDTLS mode, or should force TLS on those exports
>> +it is concerned about using SELECTIVE mode and TLS-only
>> +exports. It is not possible to avoid downgrade attacks
>> +on exports which may be served either via TLS or in plain
>> +text unless the client insists on TLS. OPTIONALTLS SHOULD NOT
>> +be used where man-in-the-midle attacks are a concern.
> 
> s/midle/middle/

thx

>> @@ -391,7 +679,10 @@ of the newstyle negotiation.
>> - `NBD_OPT_LIST` (3)
>> 
>>     Return a number of `NBD_REP_SERVER` replies, one for each export,
>> -    followed by `NBD_REP_ACK`.
>> +    followed by `NBD_REP_ACK`. The server MAY omit entries from this
>> +    list if TLS has not been negotiated and either the server is
>> +    operating in FORCEDTLS mode or the server is operating in
>> +    SELECTIVETLS mode and the entry concerned is a TLS-only export.
> 
> Not quite right - in FORCEDTLS mode, the server MUST reply with
> NBD_REP_ERR_TLS_REQD.  Correct would be:
> 
> The server MAY omit entries from this list if TLS has not been
> negotiated and the server is operating in SELECTIVETLS mode, where the
> entry concerned is a TLS-only export.
> 
> Maybe even strengthen it to SHOULD, particularly given my above side
> note about qemu's usage of NBD_OPT_LIST to determine if a plaintext
> client is talking to a server that wants TLS.

I went with SHOULD. Note the requirement to reply with NBD_REP_ERR_TLS_REQD
in FORCEDTLS mode if TLS has not been negotiated is documented elsewhere
and of course applies to all options other then NBD_OPT_STARTTLS.

> I'm down to just 2 findings and a side comment, which means we're close
> enough that you can add:
> Reviewed-by: Eric Blake <eblake@redhat.com>

Thanks - will send another version anyway.

Alex



> --
> Eric Blake   eblake redhat com    +1-919-301-3266
> Libvirt virtualization library http://libvirt.org
> 

--
Alex Bligh





[-- Attachment #2: Message signed with OpenPGP using GPGMail --]
[-- Type: application/pgp-signature, Size: 842 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [Nbd] [PATCHv3] Improve documentation for TLS
       [not found] <1460053967-65141-1-git-send-email-alex@alex.org.uk>
  2016-04-07 19:50 ` [Qemu-devel] [PATCHv3] Improve documentation for TLS Eric Blake
@ 2016-04-09 10:11 ` Wouter Verhelst
  2016-04-09 10:26   ` Alex Bligh
  1 sibling, 1 reply; 8+ messages in thread
From: Wouter Verhelst @ 2016-04-09 10:11 UTC (permalink / raw)
  To: Alex Bligh
  Cc: Eric Blake, nbd-general@lists.sourceforge.net, Daniel P. Berrange,
	qemu-devel@nongnu.org

On Thu, Apr 07, 2016 at 07:32:47PM +0100, Alex Bligh wrote:
[...]
> +### Server-side requirements
> +
> +There are four modes of operation for a server. The
> +server MUST support one of these modes.
> +
> +* The server operates entirely without TLS ('NOTLS'); OR
> +
> +* The server makes TLS available (for all exports) and
> +  it is available at the option of the client ('OPTIONALTLS'); OR
> +
> +* The server insists upon TLS, and forces the client to
> +  upgrade by erroring any NBD options other than `NBD_OPT_STARTTLS`
> +  with `NBD_REP_ERR_TLS_REQD` ('FORCEDTLS'); this in practice means
> +  that all option negotiation (apart from the `NBD_OPT_STARTTLS`
> +  itself) is carried out with TLS; OR
> +
> +* The server provides TLS, and it is mandatory on zero or more

Since you say zero here, how is it different from OPTIONALTLS?

If "not at all", just drop optional.

[...]
> +#### OPTIONALTLS mode
> +
> +If the server receives `NBD_OPT_STARTTLS` it MUST reply with
> +`NBD_REP_ACK`. After this reply has been sent, the server MUST
> +be prepared for a TLS handshake, and all further data MUST
> +be sent and received over TLS. There is no downgrade to a
> +non-TLS connection.
> +
> +As per the TLS standard, the handshake MAY be initiated either
> +by the server (having sent the `NBD_REP_ACK`) or by the client.

I'm not *that* well versed in the details of TLS, but isn't it better to
specify which side should go first?

[...]
> +If the server receives any other option, including `NBD_OPT_INFO`
> +and unsupported options, it MUST reply with `NBD_REP_ERR_TLS_REQD`
> +if TLS has not been initiated; `NBD_OPT_INFO` is included as in this
> +mode, all exports are TLS-only. If the server receives a request to
> +enter transmission mode via `NBD_OPT_EXPORT_NAME` when TLS has not
> +been initiated, then as this request cannot error, it MUST
> +disconnect the connection. If the server receives a request to

s/disconnect/terminate/ reads slightly better.

[...]
> +The client MUST NOT issue `NBD_OPT_STARTTLS` unless the server
> +set flag NBD_FLAG_FIXED_NEWSTYLE and the client replied
> +with NBD_FLAG_C_FIXED_NEWSTYLE in the fixed newstyle
> +negotiation.

Why not "unless fixed newstyle negotiation is in effect"? No need to
repeat that definition.

[...]
> +### Security considerations
> +
> +#### TLS versions
> +
> +NBD implementations supporting TLS MUST support TLS version 1.2,
> +SHOULD support any later versions, and MAY support older versions.

I would prefer "SHOULD NOT allow TLS versions older than 1.2" here.
There are some serious flaws in older TLS versions; currently these are
still supported by most web browsers for backwards compatibility
reasons, but that does not apply for us.

[...]

-- 
< ron> I mean, the main *practical* problem with C++, is there's like a dozen
       people in the world who think they really understand all of its rules,
       and pretty much all of them are just lying to themselves too.
 -- #debian-devel, OFTC, 2016-02-12

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [Nbd] [PATCHv3] Improve documentation for TLS
  2016-04-09 10:11 ` [Qemu-devel] [Nbd] " Wouter Verhelst
@ 2016-04-09 10:26   ` Alex Bligh
  2016-04-09 10:38     ` Wouter Verhelst
  0 siblings, 1 reply; 8+ messages in thread
From: Alex Bligh @ 2016-04-09 10:26 UTC (permalink / raw)
  To: Wouter Verhelst
  Cc: Alex Bligh, Eric Blake, nbd-general@lists.sourceforge.net,
	Daniel P. Berrange, qemu-devel@nongnu.org


On 9 Apr 2016, at 11:11, Wouter Verhelst <w@uter.be> wrote:
> Since you say zero here, how is it different from OPTIONALTLS?
> 
> If "not at all", just drop optional.

As per previous message, because SELECTIVETLS requires INFO,
but OPTIONALTLS doesn't.

> I'm not *that* well versed in the details of TLS, but isn't it better to
> specify which side should go first?

I believe it's a design feature that you need not. Essentially both
parties start in a 'no handshake has taken place' state, and on the
first read or write from either end, one party starts the handshake
(and there is a provision in case they collide). Alternatively
either end can explicitly request the handshake.

There is actually an implementation advantage to the server doing it
(having just written it) which is that the server can then capture
any error (invalid credentials or whatever) and report it with whatever
logging it does for the STARTTLS option; otherwise invalid certificate
responses come with the next option it receives.

> [...]
>> +If the server receives any other option, including `NBD_OPT_INFO`
>> +and unsupported options, it MUST reply with `NBD_REP_ERR_TLS_REQD`
>> +if TLS has not been initiated; `NBD_OPT_INFO` is included as in this
>> +mode, all exports are TLS-only. If the server receives a request to
>> +enter transmission mode via `NBD_OPT_EXPORT_NAME` when TLS has not
>> +been initiated, then as this request cannot error, it MUST
>> +disconnect the connection. If the server receives a request to
> 
> s/disconnect/terminate/ reads slightly better.

OK

> [...]
>> +The client MUST NOT issue `NBD_OPT_STARTTLS` unless the server
>> +set flag NBD_FLAG_FIXED_NEWSTYLE and the client replied
>> +with NBD_FLAG_C_FIXED_NEWSTYLE in the fixed newstyle
>> +negotiation.
> 
> Why not "unless fixed newstyle negotiation is in effect"? No need to
> repeat that definition.

Can do; I just wanted to be explicit that both server and client
must support it.

> 
> [...]
>> +### Security considerations
>> +
>> +#### TLS versions
>> +
>> +NBD implementations supporting TLS MUST support TLS version 1.2,
>> +SHOULD support any later versions, and MAY support older versions.
> 
> I would prefer "SHOULD NOT allow TLS versions older than 1.2" here.
> There are some serious flaws in older TLS versions; currently these are
> still supported by most web browsers for backwards compatibility
> reasons, but that does not apply for us.

I'd be all for that. Or certainly "SHOULD NOT support LS versions older
than 1.2 by default" (gonbdserver allows you to configure minimum and
maximum TLS versions).

-- 
Alex Bligh

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [Nbd] [PATCHv3] Improve documentation for TLS
  2016-04-09 10:26   ` Alex Bligh
@ 2016-04-09 10:38     ` Wouter Verhelst
  2016-04-09 11:21       ` Alex Bligh
  0 siblings, 1 reply; 8+ messages in thread
From: Wouter Verhelst @ 2016-04-09 10:38 UTC (permalink / raw)
  To: Alex Bligh
  Cc: nbd-general@lists.sourceforge.net, Daniel P. Berrange,
	qemu-devel@nongnu.org

On Sat, Apr 09, 2016 at 11:26:23AM +0100, Alex Bligh wrote:
> 
> On 9 Apr 2016, at 11:11, Wouter Verhelst <w@uter.be> wrote:
> > Since you say zero here, how is it different from OPTIONALTLS?
> > 
> > If "not at all", just drop optional.
> 
> As per previous message, because SELECTIVETLS requires INFO,
> but OPTIONALTLS doesn't.

Um. So you're suggesting that if a client sends INFO, we're suddenly in
a whole different mode of operation?

That seems to make little sense (other than "complicate matters for no
particularly good reason")

> > I'm not *that* well versed in the details of TLS, but isn't it better to
> > specify which side should go first?
> 
> I believe it's a design feature that you need not. Essentially both
> parties start in a 'no handshake has taken place' state, and on the
> first read or write from either end, one party starts the handshake
> (and there is a provision in case they collide). Alternatively
> either end can explicitly request the handshake.
> 
> There is actually an implementation advantage to the server doing it
> (having just written it) which is that the server can then capture
> any error (invalid credentials or whatever) and report it with whatever
> logging it does for the STARTTLS option; otherwise invalid certificate
> responses come with the next option it receives.

Okay, fine then.

[...]
> > [...]
> >> +The client MUST NOT issue `NBD_OPT_STARTTLS` unless the server
> >> +set flag NBD_FLAG_FIXED_NEWSTYLE and the client replied
> >> +with NBD_FLAG_C_FIXED_NEWSTYLE in the fixed newstyle
> >> +negotiation.
> > 
> > Why not "unless fixed newstyle negotiation is in effect"? No need to
> > repeat that definition.
> 
> Can do; I just wanted to be explicit that both server and client
> must support it.

Sure, just want to make things not *too* verbose, is all.

> > [...]
> >> +### Security considerations
> >> +
> >> +#### TLS versions
> >> +
> >> +NBD implementations supporting TLS MUST support TLS version 1.2,
> >> +SHOULD support any later versions, and MAY support older versions.
> > 
> > I would prefer "SHOULD NOT allow TLS versions older than 1.2" here.
> > There are some serious flaws in older TLS versions; currently these are
> > still supported by most web browsers for backwards compatibility
> > reasons, but that does not apply for us.
> 
> I'd be all for that. Or certainly "SHOULD NOT support LS versions older
> than 1.2 by default"

Or that. The point is that doing TLS < 1.2 is stupid, especially for a
new protocol, so I think we should make it explicit that clients should
not try that save in exceptional circumstances.

-- 
< ron> I mean, the main *practical* problem with C++, is there's like a dozen
       people in the world who think they really understand all of its rules,
       and pretty much all of them are just lying to themselves too.
 -- #debian-devel, OFTC, 2016-02-12

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [Nbd] [PATCHv3] Improve documentation for TLS
  2016-04-09 10:38     ` Wouter Verhelst
@ 2016-04-09 11:21       ` Alex Bligh
  2016-04-09 11:38         ` Wouter Verhelst
  0 siblings, 1 reply; 8+ messages in thread
From: Alex Bligh @ 2016-04-09 11:21 UTC (permalink / raw)
  To: Wouter Verhelst
  Cc: Alex Bligh, nbd-general@lists.sourceforge.net, Daniel P. Berrange,
	qemu-devel@nongnu.org

Wouter,

On 9 Apr 2016, at 11:38, Wouter Verhelst <w@uter.be> wrote:
>> 
>> As per previous message, because SELECTIVETLS requires INFO,
>> but OPTIONALTLS doesn't.
> 
> Um. So you're suggesting that if a client sends INFO, we're suddenly in
> a whole different mode of operation?
> 
> That seems to make little sense (other than "complicate matters for no
> particularly good reason")

Nope, not at all. Sorry I should have been clearer.

There are four modes. Nothing depends on whether a client sends info.
The modes are:
* NOTLS
* OPTIONALTLS
* SELECTIVETLS
* FORCEDTLS

The server needs to implement at least one (even if only NOTLS
which is what the reference server currently does!), and can operate
in any mode it chooses. How it responds to the client is a product
of which mode it is in. The client doesn't control the mode in any way.

However, if it operates in SELECTIVETLS mode, it MUST also support the
INFO option. That 'MUST' requirement does not apply to 'OPTIONALTLS'.

Your question was (paraphrasing) 'why even bother having the OPTIONALTLS
mode if it's essentially a degenerate case of SELECTIVETLS'. The answer
is because a server that does not support INFO cannot support SELECTIVETLS,
but can support OPTIONALTLS.

An alternative route would be to delete OPTIONALTLS, and make some of
the MUST requirements in SELECTIVETLS say "MUST xyz unless there are
no TLS-only exports". However, this makes it rather harder to read,
so I described that case as a separate mode.

>> I'd be all for that. Or certainly "SHOULD NOT support LS versions older
>> than 1.2 by default"
> 
> Or that. The point is that doing TLS < 1.2 is stupid, especially for a
> new protocol, so I think we should make it explicit that clients should
> not try that save in exceptional circumstances.

+1. Do you want to ping me when you have had a chance to review v5 and
I will collate all of these in to a v6?

-- 
Alex Bligh

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [Nbd] [PATCHv3] Improve documentation for TLS
  2016-04-09 11:21       ` Alex Bligh
@ 2016-04-09 11:38         ` Wouter Verhelst
  2016-04-09 11:55           ` Alex Bligh
  0 siblings, 1 reply; 8+ messages in thread
From: Wouter Verhelst @ 2016-04-09 11:38 UTC (permalink / raw)
  To: Alex Bligh
  Cc: nbd-general@lists.sourceforge.net, Daniel P. Berrange,
	qemu-devel@nongnu.org

On Sat, Apr 09, 2016 at 12:21:03PM +0100, Alex Bligh wrote:
> An alternative route would be to delete OPTIONALTLS, and make some of
> the MUST requirements in SELECTIVETLS say "MUST xyz unless there are
> no TLS-only exports". However, this makes it rather harder to read,
> so I described that case as a separate mode.

I understand now.

However, although I disagree with Daniel on the idea of having a server
which can (in the same process) support both TLS-enabled and
non-TLS-enabled exports, I do agree with him that what you call
OPTIONALTLS is a bad idea, and that it should be discouraged.

Mentioning that option explicitly is counter to that goal, and I would
therefore prefer that you not add it.

Also, while we try to negotiate the protocol in such a way that things
remain compatible between implementations who implement a disjoint set
of features from the protocol, I think the long-term goal should be that
STARTTLS and INFO are supported by all implementations (or at least,
that INFO is). In that context, explicitly explaining (in much detail)
what happens when a client doesn't support INFO but does support
STARTTLS seems contraproductive.

So I'd just drop optional.

> >> I'd be all for that. Or certainly "SHOULD NOT support LS versions older
> >> than 1.2 by default"
> > 
> > Or that. The point is that doing TLS < 1.2 is stupid, especially for a
> > new protocol, so I think we should make it explicit that clients should
> > not try that save in exceptional circumstances.
> 
> +1. Do you want to ping me when you have had a chance to review v5 and
> I will collate all of these in to a v6?

I have, but did not have any further comments.

-- 
< ron> I mean, the main *practical* problem with C++, is there's like a dozen
       people in the world who think they really understand all of its rules,
       and pretty much all of them are just lying to themselves too.
 -- #debian-devel, OFTC, 2016-02-12

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [Nbd] [PATCHv3] Improve documentation for TLS
  2016-04-09 11:38         ` Wouter Verhelst
@ 2016-04-09 11:55           ` Alex Bligh
  0 siblings, 0 replies; 8+ messages in thread
From: Alex Bligh @ 2016-04-09 11:55 UTC (permalink / raw)
  To: Wouter Verhelst
  Cc: Alex Bligh, nbd-general@lists.sourceforge.net, Daniel P. Berrange,
	qemu-devel@nongnu.org

Wouter,

On 9 Apr 2016, at 12:38, Wouter Verhelst <w@uter.be> wrote:

> On Sat, Apr 09, 2016 at 12:21:03PM +0100, Alex Bligh wrote:
>> An alternative route would be to delete OPTIONALTLS, and make some of
>> the MUST requirements in SELECTIVETLS say "MUST xyz unless there are
>> no TLS-only exports". However, this makes it rather harder to read,
>> so I described that case as a separate mode.
> 
> I understand now.
> 
> However, although I disagree with Daniel on the idea of having a server
> which can (in the same process) support both TLS-enabled and
> non-TLS-enabled exports, I do agree with him that what you call
> OPTIONALTLS is a bad idea, and that it should be discouraged.
> 
> Mentioning that option explicitly is counter to that goal, and I would
> therefore prefer that you not add it.
> 
> Also, while we try to negotiate the protocol in such a way that things
> remain compatible between implementations who implement a disjoint set
> of features from the protocol, I think the long-term goal should be that
> STARTTLS and INFO are supported by all implementations (or at least,
> that INFO is). In that context, explicitly explaining (in much detail)
> what happens when a client doesn't support INFO but does support
> STARTTLS seems contraproductive.
> 
> So I'd just drop optional.

OK. I will kill it in v6.

In practice it means 'if you want to export some things with
TLS and some without then you need to implement INFO'.
This would be a *good* thing if INFO is brought into the main
standard (i.e. taken beyond experimental). Eric's just sent
patches for Qemu to qemu-devel. I need to check the implementation
on my server is still compliant, but it's basically done. So
I may argue for INFO to be put into the body of the standard.

>>>> I'd be all for that. Or certainly "SHOULD NOT support LS versions older
>>>> than 1.2 by default"
>>> 
>>> Or that. The point is that doing TLS < 1.2 is stupid, especially for a
>>> new protocol, so I think we should make it explicit that clients should
>>> not try that save in exceptional circumstances.
>> 
>> +1. Do you want to ping me when you have had a chance to review v5 and
>> I will collate all of these in to a v6?
> 
> I have, but did not have any further comments.

Great. v6 coming up.

-- 
Alex Bligh

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2016-04-09 11:55 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <1460053967-65141-1-git-send-email-alex@alex.org.uk>
2016-04-07 19:50 ` [Qemu-devel] [PATCHv3] Improve documentation for TLS Eric Blake
2016-04-07 20:05   ` Alex Bligh
2016-04-09 10:11 ` [Qemu-devel] [Nbd] " Wouter Verhelst
2016-04-09 10:26   ` Alex Bligh
2016-04-09 10:38     ` Wouter Verhelst
2016-04-09 11:21       ` Alex Bligh
2016-04-09 11:38         ` Wouter Verhelst
2016-04-09 11:55           ` Alex Bligh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).