On Thu, Jul 06, 2023 at 11:18:01PM +0100, Dennis Jackson wrote:
> Hi all,
> 
> I've submitted the draft below that describes a new TLS certificate
> compression scheme that I'm calling 'Abridged Certs' for now. The aim is to
> deliver excellent compression for existing classical certificate chains and
> smooth the transition to PQ certificate chains by eliminating the root and
> intermediate certificates from the bytes on the wire. It uses a shared
> dictionary constructed from the CA certificates listed in the CCADB [1] and
> the associated extensions used in end entity certificates.

What does "Note that the connection will fail regardless even if this
step is not taken as neither certificate validation nor transcript
validation can succeed." mean? TLS certificate compression does not
do anything special with transcript, so transcript validation should
always succeed.


And are there zstd decoders that can reuse output buffer in oneshot
decompression for lookback? The zstd command line tool manual page
mentions default 128MB memory limit for decompression. I presume
mostly for lookback. Such limit is way too large. 


And an alternative idea:

The compressed stream is concatenation of two kinds of certificate
entries:

1) If certificate is not found in dictionary:

   opaque zstd_compressed_cert<1..16711679>;
   opaque extensions<0..65535>;

   Where if next certificate in chain is also not found, zstd uses
   empty dictionary. Otherwise it uses dictionary associated with the
   next certificate in chain.

2) If certificate is found in dictionary:

   uint8 always_0xff = 255;
   uint16 dictionary_index;
   opaque extensions<0..65535>;
  
The overall length is not compressed, because compressed_certificate
message already has it.

This allows dictionaries to be specific to CA, avoiding tradeoffs
between CAs.


As illustration, minimal compressed certificate message for certificate
issued by Let's Encrypt E1:

- 4 byte message header.
- 2 byte compression algorithm.
- 3 byte uncompressed length.
- 3 byte length of EE certificate.
- X byte zstd compressed certificate using dictionary for Let's Encrypt
  E1.
- 2 byte extension block length.
- 0 byte extension block.
- 3 byte entry for Let's Encrypt E1.
- 2 byte extension block length.
- 0 byte extension block.
- 3 byte entry for ISRG Root X2.
- 2 byte extension block length.
- 0 byte extension block.

Total: 24 + X bytes.



> On 06/07/2023 23:11, internet-dra...@ietf.org wrote:
> > A new version of I-D, draft-jackson-tls-cert-abridge-00.txt
> > has been successfully submitted by Dennis Jackson and posted to the
> > IETF repository.
> > 
> > Name:               draft-jackson-tls-cert-abridge
> > Revision:   00
> > Title:              Abridged Compression for WebPKI Certificates
> > Document date:      2023-07-06
> > Group:              Individual Submission
> > Pages:              19
> > URL:            
> > https://www.ietf.org/archive/id/draft-jackson-tls-cert-abridge-00.txt
> > Status:         
> > https://datatracker.ietf.org/doc/draft-jackson-tls-cert-abridge/
> > Html:           
> > https://www.ietf.org/archive/id/draft-jackson-tls-cert-abridge-00.html
> > Htmlized:       
> > https://datatracker.ietf.org/doc/html/draft-jackson-tls-cert-abridge




-Ilari

_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls

Reply via email to