Re: [Cbor] [COSE] [Rats] RAM requirements for COSE/CWT

Laurence Lundblade <lgl@island-resort.com> Tue, 01 March 2022 22:21 UTC

Return-Path: <lgl@island-resort.com>
X-Original-To: cbor@ietfa.amsl.com
Delivered-To: cbor@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 05C563A108E for <cbor@ietfa.amsl.com>; Tue, 1 Mar 2022 14:21:25 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.906
X-Spam-Level:
X-Spam-Status: No, score=-1.906 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001] autolearn=unavailable autolearn_force=no
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 rAQaFaCubT6h for <cbor@ietfa.amsl.com>; Tue, 1 Mar 2022 14:21:19 -0800 (PST)
Received: from p3plsmtpa12-03.prod.phx3.secureserver.net (p3plsmtpa12-03.prod.phx3.secureserver.net [68.178.252.232]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5688D3A1091 for <cbor@ietf.org>; Tue, 1 Mar 2022 14:21:18 -0800 (PST)
Received: from [192.168.1.7] ([75.80.148.139]) by :SMTPAUTH: with ESMTPSA id PArunvS7X9EzPPArunV2M4; Tue, 01 Mar 2022 15:21:18 -0700
X-CMAE-Analysis: v=2.4 cv=O8z8ADxW c=1 sm=1 tr=0 ts=621e9c5e a=qS/Wyu6Nw1Yro6yF1S+Djg==:117 a=qS/Wyu6Nw1Yro6yF1S+Djg==:17 a=NEAV23lmAAAA:8 a=gKmFwSsBAAAA:8 a=iop919EFVVZG0SD-EnMA:9 a=7Zwj6sZBwVKJAoWSPKxL6X1jA+E=:19 a=QEXdDO2ut3YA:10 a=pOcCc5LdgyTJHc8busUA:9 a=16XlOQV-uZ3bXccZ:21 a=_W_S_7VecoQA:10 a=nnPW6aIcBuj1ljLj_o6Q:22
X-SECURESERVER-ACCT: lgl@island-resort.com
From: Laurence Lundblade <lgl@island-resort.com>
Message-Id: <D20BAD71-EF8D-4849-9E90-6C19EF879896@island-resort.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_FC0DE943-45F6-40C7-B1F2-886D0B411BA6"
Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.1\))
Date: Tue, 1 Mar 2022 14:21:17 -0800
In-Reply-To: <2A13AF29-6309-4FA3-9A84-59D4E0C8F089@tzi.org>
Cc: "rats@ietf.org" <rats@ietf.org>, cbor@ietf.org, "cose@ietf.org" <cose@ietf.org>
To: Carsten Bormann <cabo@tzi.org>
References: <e8995f0c-ad85-f702-da6b-051ffdc4cb08@gmail.com> <DBBPR08MB5915B874FD16107A7B0105AAFA3A9@DBBPR08MB5915.eurprd08.prod.outlook.com> <1a16c80d-40cd-baba-b1ce-2033dd0db294@gmail.com> <D22D0D63-F76C-48B3-A034-F8B5B2BB6005@tzi.org> <2c8be442-9899-d117-155c-f6f2096b7055@gmail.com> <92C7CF7C-ED23-41B3-AB32-8438C4C88C20@tzi.org> <14c8d106-3b4b-f973-94b8-018852ff4769@gmail.com> <8C2C6592-D5B9-430A-B878-E1009E9BCF22@tzi.org> <AB9F0C55-9C23-43F1-A83F-91D4159C888F@island-resort.com> <59939C29-5370-4385-AE61-A21ADDC0D194@tzi.org> <ED025590-3CA0-42B8-B50E-030D94FA88D6@island-resort.com> <E74C7303-E7D5-45EA-886C-158DB6D83844@tzi.org> <E5AD55D7-33B2-4E50-83EA-5BD1C1462F01@island-resort.com> <2A13AF29-6309-4FA3-9A84-59D4E0C8F089@tzi.org>
X-Mailer: Apple Mail (2.3608.120.23.2.1)
X-CMAE-Envelope: MS4xfMGgtd6kyUWSEDOH/UPR0yH+r5W1C/4rAyx/iv3+sCNVFZON5vwAhmEYqdFQGVZHC2ujNoEyO/e5tCCnHLhutHVxsSFdhr7MmYaepxWQ2T1fzGwzvmVg Z78sw6zTRRfHBGqFMniKjUmz1moFO4T8tBEjk4xaQrZT2GkJO2lE8/+Exdrs5aimXcGD7LWb8Sej+B8YwTNrKtEp45ugfURohwvTcUv5Rx1/ragE8otB1+4w +RhVNYfvWxTOmNQvCPFVRQ==
Archived-At: <https://mailarchive.ietf.org/arch/msg/cbor/XMxSNMNBr3PUjRsCltBwUOGU8kg>
Subject: Re: [Cbor] [COSE] [Rats] RAM requirements for COSE/CWT
X-BeenThere: cbor@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Concise Binary Object Representation \(CBOR\)" <cbor.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/cbor>, <mailto:cbor-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/cbor/>
List-Post: <mailto:cbor@ietf.org>
List-Help: <mailto:cbor-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/cbor>, <mailto:cbor-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 01 Mar 2022 22:21:25 -0000

Got it. Made PR to remove half-precision exclusion <https://github.com/ietf-rats-wg/eat/pull/172> from location. Thanks for the discussion and foot notes!

Checked a few decoders and can see that half-precision decoding is often supported.

LL

> On Feb 23, 2022, at 1:08 PM, Carsten Bormann <cabo@tzi.org> wrote:
> 
>>> 
>>> This discussion was more about lat/lon.  
>>> cti (label 7) is a byte string, so there is no such problem there.
>> 
>> Lat/long needs double precision float to be useful to beings the size of humans on a planet of earth's size. Half-precision has so little precision on a planet of earth's size that it is useless for location.
> 
> That is not what this is about.
> 
> Saying “You need 16 bits to express the unsigned integer weight of a street vehicle in kg” does not mean that I can’t encode the weight of my bike in 8 bits.
> What the current text in EAT says is equivalent to "you can’t ever use 8 bits because some vehicles need 16".  That is not smart.
> 
>> I mis-remembered “iat” as “cti”. Iat is a time stamp. A uint64 can represent everything needed for a time stamp, 1 second precision and +/- 500 million years. Float adds no value.
> 
> Right, but that is OK: It is a restriction at the data model level.  You are asking the application not to feed floats into the generic encoder.
> 
> (Note that we strengthened the little wall between integer and floating point for RFC 8949, after seeing that RFC 7049 was confusing people a lot.)
> 
>> 
>> So EAT
>> - disallows half-precision in location, but allows doubles to relieve a decoder from implementing half-precision
> 
> Bad.  Half-precision (binary16) is not a different type at the data model level, it is just an efficient way to represent certain numbers in your data model.
> Binary16 has a significand [sic] precision of 11 bits.  Binary32 has 24 bits.
> So if you feed random binary32 lat/lon (~ meter precision) to your generic encoder, every 8192th will be encoded in half-precision (*).
> 
> Since lat/lon values are probably approximately evenly distributed, that by itself is not a reason to implement half-precision.
> The fact that CBOR preferred encoding does employ half-precision is.
> Deviating from that by disallowing binary16 is expensive: You no longer can employ generic encoders.
> 
> Don’t do that.
> 
>> - disallows float for iat to relieve a decoder from implementing float, assuming it is not implementing location (many EAT implementations will not support location)
> 
> Good(**).  That selection of integer second timestamps is a part of your data model.  
> You can do that, and no generic encoder will suddenly turn your integer iat number into a float.
> (Again, with RFC 7049, it possibly could have, but we fixed that.)
> 
> Grüße, Carsten
> 
> (*) Note that a similar thing happens in JSON: numbers that happen to be whole numbers will be encoded without fractional parts (10.0 becomes 10).
> In certain decoder implementations, that makes them a different “type" than 10.0 or 1e1 or 0.1e2 etc., causing breakage.
> But the JSON data model only has numbers, not integers as a separate, incompatible type, so these decoders are broken with applications that simply expect numbers.
> (Find ISO 6093:1985 for some fascinating history in this space :-)
> 
> (**) ((I’m not making any representation on whether applications need to know with a precision of smaller than a second when your EAT was issued.  
> I really can’t imagine that, but that is proof by lack of imagination; I do assess that the cost of enabling that is higher than the benefits.  
> But that is true until someone has a convincing counterexample…  
> Consolation is that these people can introduce a float iat = “fiat” :-)))
>