RFC 9257

Guidance for External Pre-Shared Key (PSK) Usage in TLS

๐Ÿ“… published July 2022, from ietf

๐ŸŽ€ RFC 9257: Guidance for External Pre-Shared Key (PSK) Usage in TLS ๐Ÿฆ‹

okay bestie, this is the doc that tells us how to use external PSKs in TLS without messing it up ๐Ÿ’… it's Informational, not a Standards Track thing, and it came out July 2022 โœจ the main authors are R. Housley (Vigil Security), J. Hoyland (Cloudflare Ltd.), M. Sethi (Aalto University), and C. A. Wood (Cloudflare) ๐Ÿซถ it's ISSN 2070-1721 and it doesn't obsolete or update anything, so it's its own little main character ๐Ÿ‘‘

Now let's get into it ๐ŸŒธ

Abstract

so this doc gives usage guidance for external PSKs in TLS 1.3 (the one from [RFC8446]) ๐Ÿ’– it lists the security properties PSKs give you under certain assumptions, then shows how breaking those assumptions leads to attacks ๐Ÿ˜ญ it also has advice for apps to help them meet the assumptions, talks about PSK use cases and how they get provisioned, and finally lists the privacy and security stuff TLS 1.3 doesn't give you when external PSKs are in play ๐Ÿ™ˆ

Status of This Memo

this one's not an Internet Standards Track spec, it's just published for info ๐Ÿงš it still went through the IETF process: it's consensus from the IETF community, got public review, and was approved by the IESG ๐Ÿ”ฅ not every IESG-approved doc is a candidate for a Standard though, see Section 2 of RFC 7841 for that ๐Ÿ’…

if you want the current status, errata, or to send feedback, go to https://www.rfc-editor.org/info/rfc9257 ๐ŸŒˆ

Copyright (c) 2022 IETF Trust and the authors, all rights reserved ๐ŸŽ€ this doc is under BCP 78 and the IETF Trust's Legal Provisions (https://trustee.ietf.org/license-info) as of publication, so read those if you care about your rights ๐Ÿซถ if you pull code components out of this doc, they have to include Revised BSD License text (Section 4.e of the Trust Legal Provisions) and come without warranty, as the Revised BSD License says ๐Ÿ’œ

Table of Contents

1.  Introduction
2.  Conventions and Definitions
3.  Notation
4.  PSK Security Properties
  4.1.  Shared PSKs
  4.2.  PSK Entropy
5.  External PSKs in Practice
  5.1.  Use Cases
  5.2.  Provisioning Examples
  5.3.  Provisioning Constraints
6.  Recommendations for External PSK Usage
  6.1.  Stack Interfaces
    6.1.1.  PSK Identity Encoding and Comparison
    6.1.2.  PSK Identity Collisions
7.  Privacy Considerations
8.  Security Considerations
9.  IANA Considerations
10. References
  10.1.  Normative References
  10.2.  Informative References
Acknowledgements
Authors' Addresses

1. Introduction โœจ

okay so this doc is all about external PSKs in TLS 1.3 [RFC8446] ๐Ÿ’– the guidance also applies to DTLS 1.3 [RFC9147] and Compact TLS 1.3 [CTLS], and for readability we just say "TLS" to mean all of those ๐Ÿฆ‹

external PSKs are symmetric secret keys given to the TLS implementation as external inputs ๐Ÿ”‘ they get provisioned out of band, meaning not through TLS itself ๐Ÿงš

this doc lists the TLS security properties PSKs give you under certain assumptions, and shows how breaking those assumptions leads to attacks ๐Ÿ˜ญ it talks about use cases, provisioning, and TLS stack support in light of those assumptions, and it gives apps advice for various use cases so they can meet the assumptions ๐Ÿ’…

ngl there are tons of resources on password generation and verification to make things more secure ๐Ÿ™ˆ but for external PSKs in TLS? nothing like that exists yet ๐Ÿ’€ this doc is here to close that gap ๐Ÿซถ

2. Conventions and Definitions ๐ŸŽ€

the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this doc are interpreted as described in BCP 14 [RFC2119] [RFC8174], but only when they show up in all capitals like that ๐Ÿ’œ lowercase versions are just regular words, bestie ๐ŸŒธ

3. Notation ๐Ÿฆ‹

for this doc, a "logical node" is a computing presence that other parties can talk to over TLS ๐Ÿงš a logical node could be made of multiple physical instances under common admin control, like a server farm ๐Ÿ“ an "endpoint" is a client or server taking part in a connection ๐Ÿ’–

4. PSK Security Properties ๐Ÿ’…

using a PSK you've already set up lets TLS nodes authenticate the endpoint identities ๐Ÿ” it also has other perks, including resistance to attacks from quantum computers (more in Section 4.2) ๐ŸŒˆ BUT these keys don't give you privacy protection for endpoint identities, and they don't give you non-repudiation either, which means one endpoint in a connection can deny the conversation happened ๐Ÿ˜ญ see Section 7 for more on that ๐Ÿ™ˆ

PSK authentication security quietly assumes one big thing: each PSK is known to exactly one client and one server, and they never switch roles ๐Ÿซถ if that assumption gets violated, TLS's security gets seriously weakened, as we'll see below ๐Ÿ’€

4.1. Shared PSKs โญ

as Section 5.1 talks about, [AASS19] shows attack scenarios where multiple clients or multiple servers share a PSK ๐Ÿ‘€ if you do this naively and everyone shares one common key, then TLS only authenticates group membership, and the whole system is honestly pretty brittle ๐Ÿ˜ฌ there are a few obvious weaknesses:

  1. any group member can impersonate any other group member ๐Ÿ’€
  2. if a PSK gets combined with the result of a fresh ephemeral key exchange, then compromising a group member who knows the resulting shared secret lets an attacker passively read traffic (and actively modify it) ๐Ÿ˜ญ
  3. if a PSK does not get combined with a fresh ephemeral key exchange, then compromising any group member lets the attacker passively read all traffic (and actively modify it), including past traffic ๐Ÿซ 

also, a malicious non-member can reroute handshakes between honest group members so they connect in unintended ways, as described below ๐Ÿ™ˆ there's a partial mitigation for this class of attack: each group member includes the Server Name Indication (SNI) extension [RFC6066] and ends the connection if the presented SNI doesn't match the receiving member's known identity ๐Ÿ›ก๏ธ see [Selfie] for details ๐ŸŽ€

so let's walk through the rerouting attack with three peers, A, B, and C, who all know the PSK ๐Ÿงš here's how it goes:

  1. A sends a ClientHello to B. ๐Ÿ’Œ
  2. the attacker intercepts the message and redirects it to C. ๐Ÿ˜ˆ
  3. C responds with a second flight (ServerHello, ...) to A. ๐Ÿ“จ
  4. A sends a Finished message to B. A thinks it finished the handshake, ostensibly with B ๐Ÿฅบ
  5. the attacker redirects the Finished message to C. and now C has completed the handshake with A ๐Ÿ’€

in this attack, peer authentication isn't provided ๐Ÿ˜ญ also, if C supports a weaker set of ciphersuites than B, cryptographic algorithm downgrade attacks might be possible ๐Ÿ‘€ this rerouting is a type of identity misbinding attack [Krawczyk] [Sethi] ๐Ÿฆ‹ the Selfie attack [Selfie] is a special case of rerouting against a group member that can act as both a TLS server and a client ๐Ÿชž in the Selfie attack, a malicious non-member reroutes a connection from the client to the server on the same endpoint ๐Ÿ™ˆ

finally, on top of all this, sharing a PSK across nodes can mess up deployments too ๐Ÿ˜ฉ for example, you can't revoke individual group members without setting up a brand new PSK for all the members who haven't been revoked ๐Ÿฅฒ

4.2. PSK Entropy ๐ŸŒˆ

the entropy of external PSKs can also affect TLS security properties ๐Ÿง  for example, if a high-entropy PSK is used, then PSK-only key establishment modes give you the expected security properties for TLS: same session keys between peers, secrecy of session keys, peer authentication, and downgrade protection ๐Ÿ’– see Appendix E.1 of [RFC8446] for an explanation of those ๐Ÿ“– BUT these modes lack forward security ๐Ÿ˜ฌ you can get forward security by using a PSK-DH mode or by using PSKs with short lifetimes โณ

now if a low-entropy PSK is used, things get spicy ๐ŸŒถ๏ธ PSK-only key establishment modes are open to passive exhaustive search attacks, which will reveal the traffic keys ๐Ÿ’€ PSK-DH modes are open to active attacks where the attacker impersonates one side ๐Ÿ˜ฑ the exhaustive search phase of these attacks can be run offline if the attacker captures a single handshake using the PSK ๐Ÿ•ต๏ธ but those attacks won't compromise the traffic keys for that connection, because those also depend on the Diffie-Hellman (DH) exchange ๐Ÿ™Œ low-entropy keys are only secure against active attack if a Password-Authenticated Key Exchange (PAKE) is used with TLS ๐Ÿ” at the time of writing, the Crypto Forum Research Group (CFRG) is working on recommended PAKEs (see [CPACE] and [OPAQUE] for the symmetric and asymmetric cases, respectively) ๐Ÿงš

5. External PSKs in Practice ๐Ÿ“

PSK ciphersuites were first specified for TLS back in 2005 ๐Ÿ•ฐ๏ธ PSKs are now an integral part of the TLS 1.3 spec [RFC8446] ๐Ÿ’œ TLS 1.3 also uses PSKs for session resumption, and it tells these resumption PSKs apart from external PSKs that were provisioned out of band ๐Ÿซถ this section covers known use cases and provisioning processes for external PSKs with TLS ๐ŸŽ€


more to come in part 2 bestie, don't go anywhere ๐Ÿงš๐Ÿ’–

5.1. Use Cases โœจ

okay bestie, this is the good part ๐Ÿฆ‹ Here's a list of example use cases where pairwise external PSKs (i.e., external PSKs that are shared between only one server and one client) have been used for authentication in TLS. There was zero attempt to rank them, so no drama about which one is #1 ๐Ÿ’…

  • Device-to-device communication with out-of-band synchronized keys. PSKs get provisioned out of band for talking to known identities ๐Ÿ”, and the identity to use is discovered through a different online protocol. so cute ๐Ÿงš
  • Intra-data-center communication. Machine-to-machine communication inside a single data center or Point of Presence (PoP) may use externally provisioned PSKs ๐Ÿ–ฅ๏ธ. This is mainly so TLS connections can carry early data โšก. See Section 8 for considerations when using early data with external PSKs.
  • Certificateless server-to-server communication. Machine-to-machine communication may use externally provisioned PSKs ๐Ÿค–. This is mainly for setting up TLS connections without the overhead of provisioning and managing PKI certificates. no certs, no problem ๐Ÿ™Œ
  • Internet of Things (IoT) and devices with limited computational capabilities. [RFC7925] defines TLS and DTLS profiles for resource-constrained devices ๐ŸŒธ and suggests the use of PSK ciphersuites for compliant devices. The Open Mobile Alliance Lightweight Machine-to-Machine (LwM2M) Technical Specification [LwM2M] says that LwM2M servers MUST support the PSK mode of DTLS ๐Ÿ’œ.
  • Securing RADIUS [RFC2865] with TLS. PSK ciphersuites are optional for this use case, as specified in [RFC6614] ๐ŸŽ€.
  • 3GPP server-to-user equipment authentication. The Generic Authentication Architecture (GAA) defined by 3GPP mentions that TLS PSK ciphersuites can be used between server and user equipment for authentication [GAA] ๐Ÿ“ฑ.
  • Smart Cards. The German electronic Identity (eID) card supports authentication of a card holder to online services with TLS PSK [SmartCard] ๐Ÿ‡ฉ๐Ÿ‡ช๐Ÿ’ณ.
  • Quantum resistance. Some deployments may use PSKs (or combine them with certificate-based authentication as described in [RFC8773]) because of the protection they provide against quantum computers โš›๏ธ๐Ÿ›ก๏ธ. protect the future era, periodt ๐Ÿ”ฅ

There are also use cases where PSKs are shared between more than two entities ๐Ÿ‘ฏ. Some examples are below (as noted by Akhmetzyanova, et al. [AASS19]):

  • Group chats. In this use case, group participants may be provisioned an external PSK out of band for setting up authenticated connections with other members of the group ๐Ÿ’ฌโœจ. bestie group chat energy, literally.
  • IoT and devices with limited computational capabilities. Many PSK provisioning examples are possible here ๐Ÿคฏ. For example, IoT devices may all share the same PSK and use it to talk to a central server (one key for n devices) ๐Ÿ”‘, have their own key for talking to a central server (n keys for n devices) ๐Ÿ—๏ธ, or have pairwise keys for talking to each other (n^2 keys for n devices) ๐Ÿ˜ตโ€๐Ÿ’ซ.

5.2. Provisioning Examples ๐Ÿง

The exact provisioning process depends on the system requirements and threat model ๐Ÿ•ต๏ธโ€โ™€๏ธ. Whenever possible, avoid sharing a PSK between nodes. Sometimes sharing a PSK among several nodes is unavoidable, though ๐Ÿ˜ฉ. When PSK sharing happens, other accommodations SHOULD be used as discussed in Section 6.

Here are some examples of PSK provisioning processes:

  • Many industrial protocols assume that PSKs are distributed and assigned manually via one of these approaches: (1) typing the PSK into the devices or (2) using a trust-on-first-use (TOFU) approach, with a device completely unprotected before the first login took place ๐Ÿญ. Lots of devices have a very limited UI. For example, they may only have a numeric keypad or even fewer buttons ๐Ÿ”ข. When the TOFU approach isn't suitable, entering the key would mean typing it on a constrained UI, and ngl that's painful ๐Ÿ˜ญ.
  • Some devices provision PSKs via an out-of-band, cloud-based syncing protocol โ˜๏ธ๐Ÿ”„.
  • Some secrets may be baked into hardware or software device components ๐Ÿ”ฉ. Moreover, when this is done at manufacturing time, secrets may be printed on labels or included in a Bill of Materials for ease of scanning or import ๐Ÿท๏ธ๐Ÿ“ฆ.

5.3. Provisioning Constraints ๐Ÿšง

PSK provisioning systems are often constrained in application-specific ways ๐Ÿ’…. For example, although one goal of provisioning is to ensure that each pair of nodes has a unique key pair, some systems don't want to distribute pairwise shared keys to get there ๐Ÿ™…โ€โ™€๏ธ. As another example, some systems require the provisioning process to embed application-specific information in either PSKs or their identities. Identities may sometimes need to be routable, as is currently under discussion for [EAP-TLS-PSK] ๐Ÿ›ฃ๏ธ.


6. Recommendations for External PSK Usage ๐Ÿ“๐Ÿ‘‘

Recommended requirements for applications using external PSKs are as follows ๐Ÿซถ:

  1. Each PSK SHOULD be derived from at least 128 bits of entropy, MUST be at least 128 bits long, and SHOULD be combined with an ephemeral key exchange, e.g., by using the "psk_dhe_ke" Pre-Shared Key Exchange Mode in TLS 1.3 for forward secrecy ๐Ÿ”’โœจ. As discussed in Section 4, low-entropy PSKs (i.e., those derived from less than 128 bits of entropy) are subject to attack and SHOULD be avoided ๐Ÿšซ. If only low-entropy keys are available, then key establishment mechanisms such as PAKE that mitigate the risk of offline dictionary attacks SHOULD be employed ๐Ÿง . Note that no such mechanisms have been standardized yet, and further, these mechanisms won't necessarily follow the same architecture as the process for incorporating external PSKs described in [RFC9258] ๐Ÿคทโ€โ™€๏ธ.
  2. Unless other accommodations are made to mitigate the risks of PSKs known to a group, each PSK MUST be restricted in its use to at most two logical nodes: one logical node in a TLS client role and one logical node in a TLS server role. (The two logical nodes MAY be the same, in different roles.) Two acceptable accommodations are described in [RFC9258]: (1) exchanging client and server identifiers over the TLS connection after the handshake and (2) incorporating identifiers for both the client and the server into the context string for an external PSK importer ๐ŸŽ€.
  3. Nodes SHOULD use external PSK importers [RFC9258] when configuring PSKs for a client-server pair, when applicable ๐Ÿ”‘. Importers make provisioning external PSKs easier and less error-prone by deriving a unique, imported PSK from the external PSK for each key derivation function a node supports ๐Ÿช„. See the Security Considerations of [RFC9258] for more information ๐Ÿ“–.
  4. Where possible, the main PSK (that which is fed into the importer) SHOULD be deleted after the imported keys have been generated ๐Ÿ—‘๏ธ. This prevents an attacker from bootstrapping a compromise of one node into the ability to attack connections between any node. Otherwise, the attacker can recover the main key and then re-run the importer itself ๐Ÿ˜ฑ.
โš ๏ธ bestie, this part is serious: if the main PSK sticks around after the imported keys exist, one compromised node can become a compromise of the whole group. delete it when you can ๐Ÿ’€

6.1. Stack Interfaces ๐Ÿงฉ

Most major TLS implementations support external PSKs ๐ŸŽ‰. Stacks that support external PSKs provide interfaces that applications may use when configuring PSKs for individual connections. Here are some of the existing stacks at the time of writing:

  • OpenSSL and BoringSSL: Applications can specify support for external PSKs via distinct ciphersuites in TLS 1.2 and below ๐Ÿงถ. They can also configure callbacks that are invoked for PSK selection during the handshake. These callbacks must provide a PSK identity and key. The exact format of the callback depends on the negotiated TLS protocol version, with new callback functions added specifically to OpenSSL for TLS 1.3 [RFC8446] PSK support ๐Ÿ†•. The PSK length is validated to be between 1-256 bytes (inclusive), and the PSK identity may be up to 128 bytes long ๐Ÿ“.
  • mbedTLS: Client applications configure PSKs before creating a connection by providing the PSK identity and value inline ๐Ÿ“. Servers must implement callbacks similar to those in OpenSSL. Both PSK identity and key lengths may be between 1-16 bytes long (inclusive) ๐Ÿฆ‹.
  • gnuTLS: Applications configure PSK values as either raw byte strings or hexadecimal strings ๐Ÿ”ข. The PSK identity and key size are not validated ๐Ÿ™ˆ.
  • wolfSSL: Applications configure PSKs with callbacks similar to OpenSSL ๐Ÿบ.

6.1.1. PSK Identity Encoding and Comparison ๐Ÿ”ค

Section 5.1 of [RFC4279] mandates that the PSK identity should first be converted to a character string and then encoded to octets using UTF-8. This was done to avoid interoperability problems, especially when the identity is configured by human users ๐Ÿง‘โ€๐Ÿ’ป. On the other hand, [RFC7925] advises implementations against assuming any structured format for PSK identities, and it recommends byte-by-byte comparison for any operation ๐Ÿ”. When PSK identities are configured manually, it's important to remember that visually identical strings may, in fact, differ due to encoding issues ๐Ÿ‘€.

TLS 1.3 [RFC8446] follows the same practice of specifying the PSK identity as a sequence of opaque bytes (shown as opaque identity<1..2^16-1> in the specification), so it gets compared on a byte-by-byte basis ๐Ÿงฎ. [RFC8446] also requires that PSK identities are at least 1 byte and at most 65535 bytes in length ๐Ÿ“. Although [RFC8446] doesn't place strict requirements on the format of PSK identities, the format can vary depending on the deployment ๐ŸŒˆ:

  • The PSK identity MAY be a user-configured string when used in protocols like Extensible Authentication Protocol (EAP) [RFC3748]. For example, gnuTLS treats PSK identities as usernames ๐Ÿ‘ค.
  • PSK identities MAY have a domain name suffix for roaming and federation. In applications and settings where the domain name suffix is privacy sensitive, this practice is NOT RECOMMENDED ๐Ÿ™…โ€โ™€๏ธ.
  • Deployments should take care that the length of the PSK identity is sufficient to avoid collisions ๐Ÿง.

6.1.2. PSK Identity Collisions ๐Ÿ’ฅ

It's possible, though unlikely, that an external PSK identity may clash with a resumption PSK identity ๐ŸŽฒ. The TLS stack implementation and the sequencing of PSK callbacks influence how the application behaves when identity collisions happen ๐ŸŒ€. When a server receives a PSK identity in a TLS 1.3 ClientHello, some TLS stacks execute the application's registered callback function before checking the stack's internal session resumption cache. This means that if a PSK identity collision occurs, the application's external PSK usage will typically take precedence over the internal session resumption path ๐Ÿƒโ€โ™€๏ธ.

Because resumption PSK identities are assigned by the TLS stack implementation, it is RECOMMENDED that these identifiers be assigned in a manner that lets resumption PSKs be distinguished from external PSKs, so collision concerns go away altogether โœจ๐Ÿฆ‹

7. Privacy Considerations ๐Ÿ”’โœจ

Okay bestie, privacy is its own whole thing ๐Ÿฆ‹ PSK privacy properties are orthogonal to the security properties we covered in Section 4, so being secure and being private are two different vibes ๐Ÿ’… TLS honestly does very little to keep PSK identity info private ๐Ÿ™ˆ The identifier shows up in cleartext inside a ClientHello, so anyone watching learns something about the external PSK or its identifier ๐Ÿ‘€ That means a passive adversary can link two or more connections that use the same external PSK on the wire. Depending on the PSK identity, a passive attacker might even figure out which device, person, or enterprise is running the TLS client or TLS server ๐Ÿ˜ญ And an active attacker can use the PSK identity to suppress handshakes or application data from one specific device by blocking, delaying, or rate-limiting traffic ๐Ÿ’€ Techniques for mitigating these risks need further analysis, so they're out of scope for this document ๐Ÿซถ

Also, external PSKs are intrinsically linkable by PSK receivers ๐Ÿงš Servers can link successive connections that use the same external PSK together. Preventing this type of linkability is out of scope, bestie.

8. Security Considerations ๐Ÿ›ก๏ธ

Security considerations are sprinkled throughout this document, but it bears repeating (dramatic, I know ๐Ÿ’…). There are concerns with external PSKs about proper identification of TLS 1.3 endpoints, plus extra risks when external PSKs are known to a group ๐Ÿšจ

It is NOT RECOMMENDED to share the same PSK between more than one client and server. ๐Ÿ™…โ€โ™€๏ธ However, as discussed in Section 5.1, there are application scenarios that may rely on sharing the same PSK among multiple nodes. [RFC9258] helps in mitigating rerouting and Selfie-style reflection attacks when the PSK is shared among multiple nodes โœจ This is achieved by correctly using the node identifiers in the ImportedIdentity.context construct specified in [RFC9258]. One solution would be for each endpoint to pick one globally unique identifier to use in all PSK handshakes. That identifier could be, for example, one of its Media Access Control (MAC) addresses, a 32-byte random number, or its Universally Unique IDentifier (UUID) [RFC4122]. Note that such persistent, global identifiers have privacy implications, so check out Section 7 ๐Ÿฆ‹

Each endpoint SHOULD know the identifier of the other endpoint it wants to connect with, and SHOULD compare it with the other endpoint's identifier used in ImportedIdentity.context. ๐Ÿ” However, it is important to remember that endpoints sharing the same group PSK can always impersonate each other. Not ideal, bestie ๐Ÿ˜ญ

Considerations for external PSK usage go beyond proper identification ๐Ÿ’– When early data is used with an external PSK, the random value in the ClientHello is the only source of entropy that contributes to key diversity between sessions. So when an external PSK is used more than one time, the random number source on the client has a significant role in protecting the early data ๐ŸŽ€


9. IANA Considerations ๐ŸŒธ

This document has no IANA actions. Nothing to register here, periodt ๐Ÿ’…

10. References ๐Ÿ“š

10.1. Normative References

These are the must-read sources ๐Ÿค“

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.

   [RFC8446]  Rescorla, E., "The Transport Layer Security (TLS) Protocol
              Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
              <https://www.rfc-editor.org/info/rfc8446>.

   [RFC9258]  Benjamin, D. and C. A. Wood, "Importing External Pre-
              Shared Keys (PSKs) for TLS 1.3", RFC 9258,
              DOI 10.17487/RFC9258, July 2022,
              <https://www.rfc-editor.org/info/rfc9258>.

10.2. Informative References

These are the deep-dive reads for when you're obsessed ๐Ÿง๐Ÿ’œ

   [AASS19]   Akhmetzyanova, L., Alekseev, E., Smyshlyaeva, E., and A.
              Sokolov, "Continuing to reflect on TLS 1.3 with external
              PSK", April 2019, <https://eprint.iacr.org/2019/421.pdf>.

   [CPACE]    Abdalla, M., Haase, B., and J. Hesse, "CPace, a balanced
              composable PAKE", Work in Progress, Internet-Draft, draft-
              irtf-cfrg-cpace-06, 24 July 2022,
              <https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-
              cpace-06>.

   [CTLS]     Rescorla, E., Barnes, R., Tschofenig, H., and B. M.
              Schwartz, "Compact TLS 1.3", Work in Progress, Internet-
              Draft, draft-ietf-tls-ctls-06, 9 July 2022,
              <https://datatracker.ietf.org/doc/html/draft-ietf-tls-
              ctls-06>.

   [EAP-TLS-PSK]
              Mattsson, J. P., Sethi, M., Aura, T., and O. Friel, "EAP-
              TLS with PSK Authentication (EAP-TLS-PSK)", Work in
              Progress, Internet-Draft, draft-mattsson-emu-eap-tls-psk-
              00, 9 March 2020, <https://datatracker.ietf.org/doc/html/
              draft-mattsson-emu-eap-tls-psk-00>.

   [GAA]      ETSI, "Digital cellular telecommunications system (Phase
              2+); Universal Mobile Telecommunications System (UMTS);
              LTE; 3G Security; Generic Authentication Architecture
              (GAA); System description", version 12.0.0, ETSI TR 133
              919, October 2014, <https://www.etsi.org/deliver/
              etsi_tr/133900_133999/133919/12.00.00_60/
              tr_133919v120000p.pdf>.

   [Krawczyk] Krawczyk, H., "SIGMA: The 'SIGn-and-MAc' Approach to
              Authenticated Diffie-Hellman and Its Use in the IKE
              Protocols", DOI 10.1007/978-3-540-45146-4_24, 2003,
              <https://link.springer.com/content/
              pdf/10.1007/978-3-540-45146-4_24.pdf>.

   [LwM2M]    Open Mobile Alliance, "Lightweight Machine to Machine
              Technical Specification", version 1.0, February 2017,
              <http://www.openmobilealliance.org/release/LightweightM2M/
              V1_0-20170208-A/OMA-TS-LightweightM2M-
              V1_0-20170208-A.pdf>.

   [OPAQUE]   Bourdrez, D., Krawczyk, H., Lewi, K., and C. A. Wood, "The
              OPAQUE Asymmetric PAKE Protocol", Work in Progress,
              Internet-Draft, draft-irtf-cfrg-opaque-09, 6 July 2022,
              <https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-
              opaque-09>.

   [RFC2865]  Rigney, C., Willens, S., Rubens, A., and W. Simpson,
              "Remote Authentication Dial In User Service (RADIUS)",
              RFC 2865, DOI 10.17487/RFC2865, June 2000,
              <https://www.rfc-editor.org/info/rfc2865>.

   [RFC3748]  Aboba, B., Blunk, L., Vollbrecht, J., Carlson, J., and H.
              Levkowetz, Ed., "Extensible Authentication Protocol
              (EAP)", RFC 3748, DOI 10.17487/RFC3748, June 2004,
              <https://www.rfc-editor.org/info/rfc3748>.

   [RFC4122]  Leach, P., Mealling, M., and R. Salz, "A Universally
              Unique IDentifier (UUID) URN Namespace", RFC 4122,
              DOI 10.17487/RFC4122, July 2005,
              <https://www.rfc-editor.org/info/rfc4122>.

   [RFC4279]  Eronen, P., Ed. and H. Tschofenig, Ed., "Pre-Shared Key
              Ciphersuites for Transport Layer Security (TLS)",
              RFC 4279, DOI 10.17487/RFC4279, December 2005,
              <https://www.rfc-editor.org/info/rfc4279>.

   [RFC6066]  Eastlake 3rd, D., "Transport Layer Security (TLS)
              Extensions: Extension Definitions", RFC 6066,
              DOI 10.17487/RFC6066, January 2011,
              <https://www.rfc-editor.org/info/rfc6066>.

   [RFC6614]  Winter, S., McCauley, M., Venaas, S., and K. Wierenga,
              "Transport Layer Security (TLS) Encryption for RADIUS",
              RFC 6614, DOI 10.17487/RFC6614, May 2012,
              <https://www.rfc-editor.org/info/rfc6614>.

   [RFC7925]  Tschofenig, H., Ed. and T. Fossati, "Transport Layer
              Security (TLS) / Datagram Transport Layer Security (DTLS)
              Profiles for the Internet of Things", RFC 7925,
              DOI 10.17487/RFC7925, July 2016,
              <https://www.rfc-editor.org/info/rfc7925>.

   [RFC8773]  Housley, R., "TLS 1.3 Extension for Certificate-Based
              Authentication with an External Pre-Shared Key", RFC 8773,
              DOI 10.17487/RFC8773, March 2020,
              <https://www.rfc-editor.org/info/rfc8773>.

   [RFC9147]  Rescorla, E., Tschofenig, H., and N. Modadugu, "The
              Datagram Transport Layer Security (DTLS) Protocol Version
              1.3", RFC 9147, DOI 10.17487/RFC9147, April 2022,
              <https://www.rfc-editor.org/info/rfc9147>.

   [Selfie]   Drucker, N. and S. Gueron, "Selfie: reflections on TLS 1.3
              with PSK", DOI 10.1007/s00145-021-09387-y, May 2021,
              <https://eprint.iacr.org/2019/347.pdf>.

   [Sethi]    Sethi, M., Peltonen, A., and T. Aura, "Misbinding Attacks
              on Secure Device Pairing and Bootstrapping",
              DOI 10.1145/3321705.3329813, May 2019,
              <https://arxiv.org/pdf/1902.07550>.

   [SmartCard]
              Bundesamt fรผr Sicherheit in der Informationstechnik,
              "Technical Guideline TR-03112-7 eCard-API-Framework -
              Protocols", version 1.1.5, April 2015, <https://www.bsi.bu
              nd.de/SharedDocs/Downloads/DE/BSI/Publikationen/
              TechnischeRichtlinien/TR03112/TR-
              03112-api_teil7.pdf?__blob=publicationFile&v=1>.

Acknowledgements ๐Ÿซถ๐ŸŒˆ

This document is the output of the TLS External PSK Design Team, comprised of the following members: Benjamin Beurdouche, Bjรถrn Haase, Christopher Wood, Colm MacCarthaigh, Eric Rescorla, Jonathan Hoyland, Martin Thomson, Mohamad Badra, Mohit Sethi, Oleg Pekar, Owen Friel, and Russ Housley. ๐Ÿ‘‘

This document was improved by high-quality reviews by Ben Kaduk and John PreuรŸ Mattsson. Huge thanks to them, they're literally the GOATs ๐Ÿ’–

Authors' Addresses ๐Ÿ’Œ

   Russ Housley
   Vigil Security, LLC
   Email: housley@vigilsec.com


   Jonathan Hoyland
   Cloudflare Ltd.
   Email: jonathan.hoyland@gmail.com


   Mohit Sethi
   Aalto University
   Email: mohit@iki.fi


   Christopher A. Wood
   Cloudflare
   Email: caw@heapingbits.net
๐Ÿ“ฆ where this page comes from