1
0
mirror of https://github.com/openbsd/src.git synced 2024-12-22 07:27:59 -08:00
OpenBSD
Go to file
job e489b84834 Schedule future rejection of ultra long-lived TA certificates
The RPKI ecosystem suffers from a partially unmitigated risk related to
long-lived Trust Anchor certificate issuances.

Issues could arise when a on-path attackers (or, operational errors such
as restoring a super old backup of a webserver) bring back into
circulation old (but still valid) TA certificate. Older certificates
remain valid for the duration of their validity period, because TA
certificates - being top of the chain - cannot be revoked.

Real world examples of old potential replayable certificates that today
still would pass validation are here:
https://mailarchive.ietf.org/arch/msg/sidrops/NxzvSFH0sPXEmyfOS99cLApFKqM/

The trouble with these replayable TA certificates is that when an
on-path entity ends up presenting such an outdated-but-still-valid
certificate to the RP, accepting such a cert will damage the RP's local
validated cache. Parts of the validated output will disappear, in an
unpredictably manner.

Periodic reissuance of TA certs is important because TA certificates are
not entirely static, which of course is why replay might even be an issue
in the first place!. There are 3 'dynamic' fields in TA certificates:

  - the validity period (notBefore, notAfter)
  - the SubjectInfoAccess (where can the RP find the first repository?)
  - the extensions for IP addresses & AS identifiers (RFC 3779 INRs)
    (the RFC 3779 extensions are of critical importance to the
    RPKI's chain validation algorithm)

RIRs will want RPs to validate using the 'latest' issuance of the TA
certificate, because a TA cert from 10 years ago obviously will be 10
years behind on operational decisions, potential SIA migrations,
resource transfers, new IANA assignments, or any other updates to the
RIR's current holdings.

How to repair this situation?

The plan to overcome this risk has three steps:

step 1) RPs to prefer shorter-lived Trust Anchor certificates over
        longer-lived ones. (rpki-client already implemented this)
        https://datatracker.ietf.org/doc/html/draft-ietf-sidrops-rpki-ta-tiebreaker

step 2) RPs ship with scheduled future refusal of ultra long-lived Trust
        Anchor certificates (that's the below diff).

step 3) Consequently, RIRs have to reissue shorter-lived TA certificates
        to avoid being rejected by RPs.

The end result is that after anno 2026 / 2027, if 100 year or 10 year
certs somehow be brought back into circulation, RPs will simply refuse
such long-lived certs, despite them technically being 'valid'.

Why this works:

The ta-tiebreaker mechanism provides an incentive for TA operators to
reissue with reasonable (1 or 2 year) validity periods, as those certs
will be preferred. In turn, RPs scheduling refusal of long-lived certs
at a predetermined future point in time, relieves TA operators from
worrying about previously issued certs with ultra long lifetimes. It is
a win win for everyone in the ecosystem.

Scheduling details:

- February 2nd 2026 for phase 1, because 02-02-2026 is an unambiguous
  date both in the US and elsewhere.
- March 3rd 2027 for phase 2, because 03-03-2027 also is unambiguous and
  visually is very distinct from the phase 1 date.

The hope is that with this schedule global coordination less will be less
error-prone, and everyone should get adequate preparation time.

Discussed with various RIRs

with & OK tb@
2024-12-18 16:38:40 +00:00
bin use a more readable explanation of directory creation; 2024-11-30 06:59:12 +00:00
distrib add libutil, missed with fsck_ext2fs commit (oops, I didn't realise it was 2024-12-18 14:09:18 +00:00
etc Make the example bgpd.conf work with 4byte ASN out of the box. 2024-12-18 16:00:26 +00:00
games Emit a warning if all fortunes in the file are too short or too long 2024-10-21 06:39:03 +00:00
gnu Install riscv_vector.h 2024-12-17 13:22:38 +00:00
include a.out is no longer the commonly encountered binary file format, the world has 2024-10-16 18:47:47 +00:00
lib mlkem: fix whitespace 2024-12-18 10:55:21 +00:00
libexec gettytab's dx flag is supposed to set decctlq, which is the opposite of 2024-11-09 11:22:18 +00:00
regress Close fp before exit since we clean up other stuff 2024-12-17 07:20:10 +00:00
sbin use opendev() for fsck_ext2fs, based on code adding this to fsck_ffs 2024-12-18 10:36:05 +00:00
share rewrite a sentence, add a width specifier to a list, and some "a" -> "an"; 2024-12-16 21:39:29 +00:00
sys go back to r1.326, before i fiddled with packet generation and bpf. 2024-12-18 02:25:30 +00:00
usr.bin add missing option "-d" to flex(1)'s usage. 2024-12-18 12:33:57 +00:00
usr.sbin Schedule future rejection of ultra long-lived TA certificates 2024-12-18 16:38:40 +00:00
.gitignore Ignore CVS directories for easier git + CVS coexistence. 2023-07-07 15:44:54 +00:00
Makefile minor cranking of libraries exposes a problem, details too long to explain. 2020-04-05 20:14:14 +00:00
Makefile.cross riscv64 is a LP64_ARCH, list it as such. 2021-05-03 00:04:31 +00:00