You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<p>This could lead to a spoofing attack, in which a merchant presents incorrect
1361
1361
data to the user. For example, the merchant could tell the bank (in the
1362
1362
backend) that it is initiating a purchase of $100, but then pass $1 to the SPC
1363
-
API (and thus show the user a $1 transaction to verify).</p>
1363
+
API (and thus show the user a $1 transaction to verify). Or the merchant
1364
+
could provide the correct transaction details but pass Secure Payment
1365
+
Confirmation credentials that don’t match what the <adata-link-type="dfn" href="https://w3c.github.io/webauthn/#relying-party" id="ref-for-relying-party③⑦">Relying Party</a> expects.</p>
1364
1366
<p>Secure Payment Confirmation actually makes defeating this kind of attack easier
1365
1367
than it currently is on the web. In online payments today, the bank has to
1366
1368
trust that the merchant showed the user the correct amount in their checkout
<h3class="heading settled" data-level="11.2" id="sctn-privacy-probing-credential-ids"><spanclass="secno">11.2. </span><spanclass="content">Probing for credential ids</span><aclass="self-link" href="#sctn-privacy-probing-credential-ids"></a></h3>
1420
1422
<p>As per WebAuthn’s section on <ahref="https://www.w3.org/TR/webauthn-3/#sctn-assertion-privacy">Authentication
1421
1423
Ceremony Privacy</a>, implementors of Secure Payment Confirmation must make sure
1422
-
not to enable malicious callers (who now may not even be the <adata-link-type="dfn" href="https://w3c.github.io/webauthn/#relying-party" id="ref-for-relying-party③⑦">Relying Party</a>)
1424
+
not to enable malicious callers (who now may not even be the <adata-link-type="dfn" href="https://w3c.github.io/webauthn/#relying-party" id="ref-for-relying-party③⑧">Relying Party</a>)
accessed then the caller can conclude that at least one of the passed
1434
1436
credentials is available to the user.</p>
1435
1437
<h3class="heading settled" data-level="11.3" id="sctn-privacy-joining-payment-instruments"><spanclass="secno">11.3. </span><spanclass="content">Joining different payment instruments</span><aclass="self-link" href="#sctn-privacy-joining-payment-instruments"></a></h3>
1436
-
<p>If a <adata-link-type="dfn" href="https://w3c.github.io/webauthn/#relying-party" id="ref-for-relying-party③⑧">Relying Party</a> uses the same credentials for a given user across
1438
+
<p>If a <adata-link-type="dfn" href="https://w3c.github.io/webauthn/#relying-party" id="ref-for-relying-party③⑨">Relying Party</a> uses the same credentials for a given user across
1437
1439
multiple payment instruments, this might allow a merchant to join information
1438
1440
about payment instruments that might otherwise not be linked. That is, across
1439
1441
two different transactions that a user U performs with payment instruments P1
(e.g. their address), however it could become a privacy attack if, e.g.,
1445
1447
payment tokenization becomes commonplace.</p>
1446
1448
<p>One possible way to defeat this may be to hash the credential IDs with a random
1447
-
salt from the Account Provider (<adata-link-type="dfn" href="https://w3c.github.io/webauthn/#relying-party" id="ref-for-relying-party③⑨">Relying Party</a>):</p>
1449
+
salt from the Account Provider (<adata-link-type="dfn" href="https://w3c.github.io/webauthn/#relying-party" id="ref-for-relying-party④⓪">Relying Party</a>):</p>
1448
1450
<ol>
1449
1451
<lidata-md>
1450
1452
<p>Merchant requests the list of credential IDs from the Account Provider.</p>
<p>See <ahref="https://github.com/w3c/secure-payment-confirmation/issues/77">this issue</a> for more details.</p>
1469
1471
<h3class="heading settled" data-level="11.4" id="sctn-privacy-credential-id-tracking-vector"><spanclass="secno">11.4. </span><spanclass="content">Credential ID(s) as a tracking vector</span><aclass="self-link" href="#sctn-privacy-credential-id-tracking-vector"></a></h3>
1470
-
<p>Even for a single payment instrument, the credential ID(s) returned by the <adata-link-type="dfn" href="https://w3c.github.io/webauthn/#relying-party" id="ref-for-relying-party④⓪">Relying Party</a> could be used by a malicious entity as a tracking vector, as
1472
+
<p>Even for a single payment instrument, the credential ID(s) returned by the <adata-link-type="dfn" href="https://w3c.github.io/webauthn/#relying-party" id="ref-for-relying-party④①">Relying Party</a> could be used by a malicious entity as a tracking vector, as
1471
1473
they are strong, cross-site identifiers. However in order to obtain them from
1472
-
the <adata-link-type="dfn" href="https://w3c.github.io/webauthn/#relying-party" id="ref-for-relying-party④①">Relying Party</a>, the merchant already needs an as-strong identifier to
1473
-
give to the <adata-link-type="dfn" href="https://w3c.github.io/webauthn/#relying-party" id="ref-for-relying-party④②">Relying Party</a> (e.g., the credit card number).</p>
1474
+
the <adata-link-type="dfn" href="https://w3c.github.io/webauthn/#relying-party" id="ref-for-relying-party④②">Relying Party</a>, the merchant already needs an as-strong identifier to
1475
+
give to the <adata-link-type="dfn" href="https://w3c.github.io/webauthn/#relying-party" id="ref-for-relying-party④③">Relying Party</a> (e.g., the credit card number).</p>
1474
1476
<p>As above, a possible solution to this would be to hash the credential ID(s)
1475
1477
with a random salt, making them non-consistent across calls.</p>
<li><ahref="#ref-for-relying-party③⑦">11.2. Probing for credential ids</a>
1821
-
<li><ahref="#ref-for-relying-party③⑧">11.3. Joining different payment instruments</a><ahref="#ref-for-relying-party③⑨">(2)</a>
1822
-
<li><ahref="#ref-for-relying-party④⓪">11.4. Credential ID(s) as a tracking vector</a><ahref="#ref-for-relying-party④①">(2)</a><ahref="#ref-for-relying-party④②">(3)</a>
<li><ahref="#ref-for-relying-party③⑧">11.2. Probing for credential ids</a>
1823
+
<li><ahref="#ref-for-relying-party③⑨">11.3. Joining different payment instruments</a><ahref="#ref-for-relying-party④⓪">(2)</a>
1824
+
<li><ahref="#ref-for-relying-party④①">11.4. Credential ID(s) as a tracking vector</a><ahref="#ref-for-relying-party④②">(2)</a><ahref="#ref-for-relying-party④③">(3)</a>
0 commit comments