Re: [Ntp] Comments on draft-ietf-ntp-roughtime-02

Marcus Dansarie <marcus@dansarie.se> Sun, 14 June 2020 22:18 UTC

Return-Path: <marcus.dansarie.nilsson@gmail.com>
X-Original-To: ntp@ietfa.amsl.com
Delivered-To: ntp@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id BF3A83A0766 for <ntp@ietfa.amsl.com>; Sun, 14 Jun 2020 15:18:42 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.499
X-Spam-Level:
X-Spam-Status: No, score=-1.499 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wmLor02-UPvW for <ntp@ietfa.amsl.com>; Sun, 14 Jun 2020 15:18:40 -0700 (PDT)
Received: from mail-lj1-x243.google.com (mail-lj1-x243.google.com [IPv6:2a00:1450:4864:20::243]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D37873A0765 for <ntp@ietf.org>; Sun, 14 Jun 2020 15:18:39 -0700 (PDT)
Received: by mail-lj1-x243.google.com with SMTP id y11so16897224ljm.9 for <ntp@ietf.org>; Sun, 14 Jun 2020 15:18:39 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:references:from:autocrypt:message-id:date :user-agent:mime-version:in-reply-to; bh=DAYPktX/nc97Ldmci9r3xyNCnwqUbTggngvrUNUNe/o=; b=CjPAUSbuVX6xG/Oks5gH2eMvCivbGy/zx0rwSvgU1owQux2a14M9vUTNBpCSbatzOH z/ZAEGOwfJbecUxut32L9ZTlM3c8vYUAPc1+CnyzefcHn0Loj+ltHQEk+k9qQ95StD5T 0lZqQ0bfJXbRSW/mxK4VRp2e0VKBms5EE9ObUYYhD8g60BopLGgYos5E65teXoNH8nx1 O2UDG+G4pN5cJfyPwcba6ANTuRghpdXIzFEpxbQDw5q2wHH+cN7QA2kFhYWVB8+pvWoY zoIVH1FFHXWR069zImOr6S3za8jCO6P3ptYEp/NK/R60M9AiHoYLcrQ6vVYjVciwPXj5 KC3A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:references:from:autocrypt :message-id:date:user-agent:mime-version:in-reply-to; bh=DAYPktX/nc97Ldmci9r3xyNCnwqUbTggngvrUNUNe/o=; b=soxQwmd4VFe7Xp/+E57G9HhYNElWNjzO2UUsTFGpLm5Fm6x2ctF6x5NFt3y02ajgNo vK7TW9yEVujUusvwNl4g0ESkG4WWSELHL53Evv5a66BcBQFYG8WmX1oPi813KqC8YUyO dk7JfeG5mRMCdrU66B8lDuNsq0PSiI/a0slMCL9ZPeLfQHakC9h0TmIM9Vcn2xG7MuQA LyvOYXaPOe3NqpHsaemAqAHWkpVQNfEPU2SGBKGOB/LHWQUSxd31w3q3HrsWEh3Obzma ZjfFKp2HXLiyE+2RsCLWm/lG0nRIUtllGqLlt0Xw4WnhWcYtS+ZqDM8yGgoOuMAfTBto IjAA==
X-Gm-Message-State: AOAM531VU45vz0Xh+lzCDnY96PxoVcuZOm+yZJMFHofUdO3jS7Hzkn5E G82nRisfYrBG4s3iCkCqHFvpmnOmHSc=
X-Google-Smtp-Source: ABdhPJyS543BmokT0DQdsMM8p0vGwpcyZ92p0CKzNwUZjrLY+ShRza04NRvaOka13U4RkhjQ1l1oDw==
X-Received: by 2002:a05:651c:231:: with SMTP id z17mr11986299ljn.237.1592173117533; Sun, 14 Jun 2020 15:18:37 -0700 (PDT)
Received: from ?IPv6:2001:470:dfe6:0:74ea:fcd2:78a:cf98? ([2001:470:dfe6:0:74ea:fcd2:78a:cf98]) by smtp.gmail.com with ESMTPSA id a9sm3466580ljk.116.2020.06.14.15.18.36 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 14 Jun 2020 15:18:36 -0700 (PDT)
Sender: Marcus Dansarie <marcus.dansarie.nilsson@gmail.com>
To: Stuart Stock <stuart@int08h.com>, "ntp@ietf.org" <ntp@ietf.org>
References: <921CC6A5-1F9A-42F5-97C9-7DB58E2FF610@contoso.com>
From: Marcus Dansarie <marcus@dansarie.se>
Autocrypt: addr=marcus@dansarie.se; prefer-encrypt=mutual; keydata= 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
Message-ID: <f3ce1874-e519-8658-4348-4a13900124c0@dansarie.se>
Date: Mon, 15 Jun 2020 00:18:31 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0
MIME-Version: 1.0
In-Reply-To: <921CC6A5-1F9A-42F5-97C9-7DB58E2FF610@contoso.com>
Content-Type: multipart/signed; micalg="pgp-sha256"; protocol="application/pgp-signature"; boundary="uiigBoU3XJDq84s5I0xVUlNACCmdAiDp9"
Archived-At: <https://mailarchive.ietf.org/arch/msg/ntp/kRifSEdbXwPTAg9NNEn6-83m4XY>
Subject: Re: [Ntp] Comments on draft-ietf-ntp-roughtime-02
X-BeenThere: ntp@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <ntp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ntp>, <mailto:ntp-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ntp/>
List-Post: <mailto:ntp@ietf.org>
List-Help: <mailto:ntp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ntp>, <mailto:ntp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 14 Jun 2020 22:18:43 -0000

Hi!

I am the one who originally suggested many of the changes to the draft
that you mention. I have worked closely with Aanchal and Watson in
creating a lot of the text in the draft.

This mail from February and the discussion that followed contains some
background and motivation to most of the changes in question:
https://mailarchive.ietf.org/arch/msg/ntp/4ZY0wIUYtG1tgYR_bgl-HfbWWq8/

Short comments inline follow below.

Kind regards,
Marcus Dansarie

On 2020-06-14 21:34, Stuart Stock wrote:

> ## Keep the "rough" in "Roughtime"

I'd like to start out with that I definitely agree with this. Roughtime
should not be "a different/better NTP".

> The authors of the original Roughtime protocol definition [roughtime] state that a 
> deliberate goal of the Roughtime protocol was "...time synchronisation to within 10 
> seconds of the correct time." Those authors go on to state that "[i]f you have 
> _serious_ time synchronisation needs you‘ll want the machinery in NTP or even PTP..."
> 
> The draft RFC proposes addition of the DUT, DTAI, and LEAP fields run contrary to this design 
> intent. These fields provide time synchronization features that duplicate those in NTP and PTP. 
> Precise time sync should be delegated to NTP and PTP and their ecosystems.
> 
> Simplicity of the Roughtime protocol encourages simple implementations. Simplicity
> in implementation is a key to assurance that implementations are correct and secure. 
> Increasing the number of fields and field types that must be implemented runs contrary 
> to ease of implementation. Simplicity--and by extension security--should be a deliberate 
> and top-of-mind design goal of the Roughtime standardization process.
> 
> Multiple existing IETF protocols address needs of highly accurate time synchronization 
> and should be used where timing precision requires. Keep Roughtime "rough".
> 
> Suggestion: remove DUT, DTAI, and LEAP fields along with int32 type

The DUT1, DTAI, and LEAP are not meant for precise time synchronization,
i.e. applications with very high accuracy. Instead, they are there to
provide a means for transferring offsets between timescales in a secure
manner. There is currently no time protocol that does this.

Note that the DUT1, DTAI, and LEAP fields are all OPTIONAL. Any server
or client implementation is free to not implement and ignore them.

> ## The LEAP field is not necessary 
> 
> Roughtime can handle leap seconds and time uncertainty/discontinuity complications without
> addition of new tags/fields. The RADI field already provides a method for a Roughtime 
> implementation to express time uncertainty in responses [draf02]: 
> 
>     The RADI tag value is a uint32 representing the server's estimate of
>     the accuracy of MIDP in microseconds.  Servers MUST ensure that the
>     true time is within (MIDP-RADI, MIDP+RADI) at the time they compose
>     the response message.
> 
> In the case of a leap second, a Roughtime server can increase the value returned in 
> the RADI field to account for the uncertainty introduced by a leap second. The increase 
> in RADI value can persist as long as necessary (the duration of a leap second "smear" 
> for example [AWS-smear] and [Google-smear]).
>      
> Suggestion: remove DUT, DTAI, and LEAP fields along with int32 type

Leap smearing is almost considered a bad word in the NTP WG...

As mentioned above, the purpose of LEAP is not just to provide
information about an imminent leap second, but also to provide access to
verifiable leap second information. Ignoring leap seconds risks causing
large problems further on. This is something that NTP suffers from.

Smearing leap seconds as you describe and ignoring/not sending LEAP
messages is still completely within the specification.

> ## Introduction of a signed int32 type creates a new security risk 
> 
> The addition of the signed int32 field type (required to support the DUT, DTAI, and 
> LEAP fields) exposes Roughtime implementations to a new *class* of software errors
> around sign/unsigned conversions. 
> 
> The Common Weaknesses Enumeration Top 25 Most Dangerous Software Errors [CWE-TOP25] 
> lists "Integer Overflow or Wraparound" as the #8 most frequent software weakness. The 
> detail page on integer overflow [CWE-190] identifies signed/unsigned confusion, 
> unintentional wrap-around, and lack of range checks as sources of software errors.
> 
> Introducing a signed integer type into Roughtime does not guarantee these issues
> occur. However it does introduces an entirely new area of concern that would not
> exist if these signed fields were omitted. 
> 
> Suggestion: remove DUT, DTAI, and LEAP fields along with int32 type

All problems you describe here, except for "signed/unsigned confusion"
apply to all integer representations. Unsigned integers also wrap
around. I fail to see the problem here.

> ## Restore the 1024 byte minimum request size requirement
> 
> Draft 02 states that: 
> 
>     Responding to requests shorter than 1024 bytes is OPTIONAL 
>     and servers MUST NOT send responses larger than the requests 
>     they are replying to.
> 
> The minimum request size requirement exists to prevent a roughtime server from becoming
> a DDoS amplifier [CF-DDoS]. A minimum request size of of 1024 bytes ensures that even 
> a busy roughtime server signing a Merkle tree of 64 requests generates a response *smaller* 
> than the 1024 byte request minimum (response would be 744 bytes, see [int08h]).
> 
> If requests smaller than 1024 bytes are permitted, how small could a request be? A valid 
> Roughtime request *without* a PAD field would be 72 bytes long: 
> 
>      4 bytes number of fields 
>      4 bytes NONC tag 
>     64 bytes NONC value
>     
> Given that the *minimum* Server response size is 360 bytes [int08h], a minimal size request 
> presents a DDoS attacker with a potential 5x gain in size.  
> 
> Making the minimum response size OPTIONAL requires Roughtime server operators to decide 
> "how small is too small" and a wrong choice will create more DDoS amplifiers in the world.
> 
> Suggestion: mandate requests >= 1024 bytes

I think you may misunderstand the text in the draft. It is always wrong
for a server to send a response shorter than the request.

The minimum guaranteed IPv4 MTU is 576 bytes (RFC 791). By setting a
fixed minimum request size at 1024 bytes, we risk making it impossible
to use Roughtime over some IPv4 networks. The current text at least
makes it possible to write implementations that work on all IPv4 networks.


> ## Checking response vs. request size complicates server implementation
> 
> In Draft 02: 
> 
>     Responding to requests shorter than 1024 bytes is OPTIONAL 
>     and servers MUST NOT send responses larger than the requests 
>     they are replying to.
> 
> Roughtime servers can batch multiple requests into a single response making response 
> size a function of server load/batching parameters plus concurrent requests. Roughtime 
> Server implementations may gather or buffer client requests prior to constructing the 
> response. 
> 
> "...servers MUST NOT send responses larger than the requests..." will require implementations
> to perform additional tracking of per-request sizes and then compute the resulting response
> size *after* batch size has been determined. 
> 
> This is more complex and incurs additional processing compared to simply rejecting all 
> requests <1024 bytes.
> 
> Suggestion: mandate requests >= 1024 bytes

Again, I think you may misunderstand the text in the draft. There is no
requirement to perform any additional processing. It is completely fine
for a server to have a fixed >= 1024 byte requirement.

In my implementation, I have relaxed the minimum request size
requirement to the maximum size of a response, which is less than 1024
bytes. This increases interoperability while not increasing program
complexity.

> ## The "ROUGHTIM" packet format is redundant
> 
> The addition of the constant "ROUGHTIM" plus additional length field is redundant to 
> the Roughtime message format (which also has a length field). The reasoning for this 
> additional packet format is not clear.
> 
> Suggestion: use "bare" Roughtime messages as the packet format 

The ROUGHTIM magic number serves two purposes:
1. Synchronization on TCP streams.
2. Packet identification. It is not uncommon to receive garbage UDP
packets. A magic number makes it easy to identify and ignore such
packets. Network analyzers are also helped by magic numbers as they are
a simple way to identify the protocol used.

> ## Stick with SHA-512; eliminate use of truncated SHA-512/256 
> 
> Truncated SHA-512/256 is performed by a) compute SHA-512, then b) truncate the result. 
> The resulting computational effort of SHA-512 and SHA-512/256 is equivalent. 
> 
> The draft utilizes SHA-512/256 for its 32 byte output, as opposed to 64 bytes for SHA-512. The 
> motivation for this change is unclear as it complicates implementations which now need two 
> hashing primitives (SHA-512/256 initialization parameters are different than SHA-512) without
> demonstrable performance or security benefit. 
> 
> Suggestion: use SHA-512 throughout and remove use of SHA-512/256

Agree. SHA-512/256 and truncated SHA-512 have identical properties.
Using SHA-512/256 only protects against scenarios where an attacker
knows a SHA-512 value for some data and wishes to guess the SHA-512/256
value, or vice versa. I don't see how that could apply here. There is a
definite benefit to using a single hash function throughout.