|
1 |
| -# Delivering origin-bound one-time codes over SMS |
2 |
| - |
3 |
| -## Authors: |
4 |
| - |
5 |
| -- [Theresa O'Connor](https://github.com/hober) |
6 |
| - |
7 |
| -## Participate |
8 |
| - |
9 |
| -- [Issue tracker](https://github.com/WebKit/explainers/labels/one%20time%20codes) |
10 |
| - |
11 |
| -## Table of Contents |
12 |
| - |
13 |
| -<!-- START doctoc generated TOC please keep comment here to allow auto update --> |
14 |
| -<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> |
15 |
| - |
16 |
| - |
17 |
| -- [Introduction](#introduction) |
18 |
| - - [Deficiencies of the status quo](#deficiencies-of-the-status-quo) |
19 |
| - - [Goals](#goals) |
20 |
| - - [Non-goals](#non-goals) |
21 |
| -- [Proposal](#proposal) |
22 |
| - - [Extensibility](#extensibility) |
23 |
| -- [Alternative approaches](#alternative-approaches) |
24 |
| - - [No special syntax (status quo)](#no-special-syntax-status-quo) |
25 |
| -- [Stakeholder Feedback](#stakeholder-feedback) |
26 |
| -- [Acknowledgements](#acknowledgements) |
27 |
| - |
28 |
| -<!-- END doctoc generated TOC please keep comment here to allow auto update --> |
29 |
| - |
30 |
| -## Introduction |
31 |
| - |
32 |
| -Many websites make use of **one-time codes** for authentication. |
33 |
| - |
34 |
| -SMS is a popular mechanism for delivering such codes to users, but using |
35 |
| -SMS to deliver one-time codes can be risky. |
36 |
| - |
37 |
| -This proposal attempts to reduce some of the risks associated with SMS |
38 |
| -delivery of one-time codes. It does not attempt to reduce or solve all |
39 |
| -of them. For instance, it doesn't solve the SMS delivery hijacking risk, |
40 |
| -but it does attempt to reduce the phishing risk. |
41 |
| - |
42 |
| -### Deficiencies of the status quo |
43 |
| - |
44 |
| -Suppose a user receives the message "747723 is your FooBar |
45 |
| -authentication code." It's possible, even likely, that *747723* is a |
46 |
| -one-time code for use on *https://foobar.com*. But because there is no |
47 |
| -standard text format for SMS delivery of one-time codes, systems which |
48 |
| -want to make programmatic use of such codes must **rely on heuristics**, |
49 |
| -both **to locate the code** in the message and **to associate the code |
50 |
| -with a website**. Heuristics are prone to failure and may even be |
51 |
| -hazardous. |
52 |
| - |
53 |
| -### Goals |
54 |
| - |
55 |
| -The goals of this proposal are: |
56 |
| - |
57 |
| -1. To eliminate the need to rely on heuristics for extraction of |
58 |
| - one-time codes from SMS. (Ideally, end users shouldn't have to |
59 |
| - manually copy-and-paste one-time codes from SMSes to their browser.) |
60 |
| -2. To reliably associate one-time codes intended for use on a specific |
61 |
| - website with that site. (One-time codes sent by a website should |
62 |
| - ideally only be entered on the actual site which sent it.) |
63 |
| - |
64 |
| -### Non-goals |
65 |
| - |
66 |
| -We must not expose the contents of SMS messages to websites. |
67 |
| - |
68 |
| -## Proposal |
69 |
| - |
70 |
| -To address this, we propose a **lightweight text format** that services |
71 |
| -may adopt for such messages. It's about as simple as it gets. It begins |
72 |
| -with (optional) human-readable text. After the human-readable text both |
73 |
| -the code and the origin appear on a single line, with sigils denoting |
74 |
| -which is which. This is the last line of the text. Here's an example: |
75 |
| - |
76 |
| - 747723 is your FooBar authentication code. |
77 |
| - |
78 |
| - @foobar.com #747723 |
79 |
| - |
80 |
| -In this example, `"747723 is your FooBar authentication code."` is the |
81 |
| -human-readable **explanatory text**, `"@foobar.com"` identifies the |
82 |
| -**origin** (`https://foobar.com`) for which the code is to be used, and |
83 |
| -`"#747723"` identifies the **one-time code** (`747723`). `"@"` and `"#"` |
84 |
| -are **sigils** used to identify the text that follows them. Any origin |
85 |
| -which is [schemelessly same site][] as `https://foobar.com/` is an |
86 |
| -origin on which this code may be used. |
87 |
| - |
88 |
| -[schemelessly same site]: https://html.spec.whatwg.org/multipage/origin.html#schemelessly-same-site |
89 |
| - |
90 |
| -Adoption of this format would improve the reliability of systems which |
91 |
| -today heuristically extract one-time codes from SMS, with clear end-user |
92 |
| -benefit. It improves reliability of both extracting the code and also |
93 |
| -associating that code with an origin. |
94 |
| - |
95 |
| -Adoption of this proposal could improve the number of services on which |
96 |
| -a browser can offer assistance with providing SMS one-time codes to |
97 |
| -websites (e.g. an AutoFill feature), and could reduce the odds users |
98 |
| -would enter one-time codes delivered over SMS on sites other than the |
99 |
| -originating one. |
100 |
| - |
101 |
| -### Extensibility |
102 |
| - |
103 |
| -If in the future we identify additional information to include in the |
104 |
| -payload, new syntax may be introduced after the one-time code in the |
105 |
| -last line. (N.B. future spec editor: the parser must ignore unrecognized |
106 |
| -trailing content on that line, to enable this.) |
107 |
| - |
108 |
| -## Alternative approaches |
109 |
| - |
110 |
| -### No special syntax (status quo) |
111 |
| - |
112 |
| -We believe the status quo provides insufficient programmability (because |
113 |
| -it relies on heuristics) and, in particular, many typical SMS one-time |
114 |
| -code message formats in the wild lack reliable origin information. |
115 |
| - |
116 |
| -## Stakeholder Feedback |
117 |
| - |
118 |
| -- Apple / Safari / WebKit: Positive (shipped an earlier version in iOS 12 / Safari 12 for macOS) |
119 |
| -- Google / Chrome / Blink: Positive (Sam Goto and Steven Soneff gave a lot of feedback early in this work.) |
120 |
| -- Firefox / Gecko : Unknown |
121 |
| - |
122 |
| -## Acknowledgements |
123 |
| - |
124 |
| -Many thanks to |
125 |
| -Aaron Parecki, |
126 |
| -Eric Shepherd, |
127 |
| -Eryn Wells, |
128 |
| -Jay Mulani, |
129 |
| -Paul Knight, |
130 |
| -Ricky Mondello, |
131 |
| -Sam Goto, and |
132 |
| -Steven Soneff |
133 |
| -for their valuable insights. |
| 1 | +# [Delivering origin-bound one-time codes over SMS](https://github.com/wicg/sms-one-time-codes) has moved to WICG. |
0 commit comments