[dns-operations] TLD key size/stats corrected

Viktor Dukhovni ietf-dane at dukhovni.org
Thu Jul 11 11:07:26 UTC 2019


On Wed, Jul 10, 2019 at 11:24:18AM -0400, Viktor Dukhovni wrote:

[ There was an error in my SQL query, making the previously
  posted key size and age stats substantially incorrect (I
  inadvertently took the age from the TLD table, not the DNSKEY
  table).  Updated stats below. This looks better than previously
  posted, as the TLD records have been around longer than
  their various keys. ]

> Presently the TLD ZSK age in quarters (90 day quanta, rounded down)
> and RSA bit size frequencies are:

     tld | age in quarters | rsa bits
    -----+-----------------+----------
     178 |              6+ |     1024
     473 |              6+ |     1280
      52 |              6+ |     2048
       1 |              6+ |     4096
       8 |               5 |     1024
      23 |               4 |     1024
       2 |               4 |     1280
       3 |               4 |     2048
       2 |               3 |     1024
       6 |               3 |     2048
      29 |               2 |     1024
       8 |               2 |     2048
      21 |               1 |     1024
      18 |               1 |     1280
      67 |               1 |     2048
     501 |               0 |     1024
       6 |               0 |     1152
     159 |               0 |     1280
      59 |               0 |     2048

> My data only goes back to Oct-2017, so the 6-quarter number is only
> a lower-bound, so the 6 quarter data points are likely in many cases
> older.  Updates would be especially welcome for the 178 TLDs with
> "aging" 1024-bit ZSKs.

> For comparison, the TLD KSK RSA ages and bit size frequencies are:

     tld  | age in quarters | rsa bits
    ------+-----------------+----------
	5 |              6+ |     1280
     1100 |              6+ |     2048
       11 |              6+ |     4096
       77 |               5 |     2048
       47 |               4 |     2048
	1 |               4 |     4096
       13 |               3 |     2048
	1 |               2 |     1024
       36 |               2 |     2048
	1 |               2 |     4096
       86 |               1 |     2048
	2 |               1 |     4096
	1 |               0 |     1280
       64 |               0 |     2048
	4 |               0 |     4096

> Here, the keys are primarily 2048-bit and up, and should not
> need frequent replacement, but there are still five TLDs with
> "aging" 1280-bit keys that should arguably still be rotated
> more frequently than every 630+ days:

      tld   | age in quarters | rsa bits
    --------+-----------------+----------
     bom    |              6+ |     1280
     final  |              6+ |     1280
     globo  |              6+ |     1280
     rio    |              6+ |     1280
     uol    |              6+ |     1280

-- 
	Viktor.

Relevant Schema:

	      tld:   qname  -- name of TLD
	"#dnskey":   qname, -- name of domain (TLD or other)
		       alg, -- DNSKEY algorithm number
		     flags, -- DNSKEY flags
		       kid, -- "dnskey_key" foreign key
		     stime, -- epoch time of inclusion in DNSKEY RRset
		     etime  -- epoch time of removal from DNSKEY RRset
     "dnskey_key":     seq, -- primary key (referenced by "#dnskey".kid)
		       key  -- DNSKEY byte array

Corrected PostgreSQL query:

    WITH N AS (SELECT extract(epoch from date_trunc('second', now())) AS n)
    SELECT count(distinct T.qname) AS tld,
           floor((N.n - D.stime) / 86400 / 90) AS "age in quarters",
           8*(length(K.key) - 1 - get_byte(K.key, 0)) AS "rsa bits"
    FROM N,
         tld T
         JOIN "#dnskey" D ON D.qname = T.qname
	 JOIN dnskey_key K ON K.seq = D.kid
	 WHERE D.etime IS NULL
           AND ((D.flags & 257) = 256)
           AND D.alg IN (5,7,8,10)
         GROUP BY 2,3
         ORDER BY 2 desc, 3;



More information about the dns-operations mailing list