pg.ddx.io  pgsql-hackers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
To: pgsql-hackers <pgsql-hackers@postgresql.org>
Subject: use of the term "verifier" with SCRAM
Date: Wed, 14 Aug 2019 07:59:16 +0200
Message-ID: <be397b06-6e4b-ba71-c7fb-54cae84a7e18@2ndquadrant.com> (raw)

I'm confused by how the code uses the term "verifier" in relation to SCRAM.

ISTM that the code uses the term as meaning whatever is or would be
stored in pg_auth.rolpassword.

I don't see this usage supported in the RFCs.  In RFC 5802,

    verifier        = "v=" base64
                    ;; base-64 encoded ServerSignature.

where

    ServerSignature := HMAC(ServerKey, AuthMessage)
    ServerKey       := HMAC(SaltedPassword, "Server Key")
    AuthMessage     := client-first-message-bare + "," +
                       server-first-message + "," +
                       client-final-message-without-proof

whereas what is stored in rolpassword is

    SCRAM-SHA-256$<iterations>:<salt>$<storedkey>:<serverkey>

where

    StoredKey       := H(ClientKey)
    ClientKey       := HMAC(SaltedPassword, "Client Key")

So while these are all related, I don't think it's accurate to call what
is in rolpassword a SCRAM "verifier".

RFC 5803 is titled "Lightweight Directory Access Protocol (LDAP) Schema
for Storing Salted Challenge Response Authentication Mechanism (SCRAM)
Secrets".  Following that, I think calling the contents of rolpassword a
"secret" or a "stored secret" would be better.

-- 
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services





view thread (5+ messages)  latest in thread

Message-ID: <be397b06-6e4b-ba71-c7fb-54cae84a7e18@2ndquadrant.com>
Permalink:  ../be397b06-6e4b-ba71-c7fb-54cae84a7e18@2ndquadrant.com/
Also on:    postgresql.org/message-id/be397b06-6e4b-ba71-c7fb-54cae84a7e18@2ndquadrant.com

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-hackers@postgresql.org
  Cc: peter.eisentraut@2ndquadrant.com
  Subject: Re: use of the term "verifier" with SCRAM
  In-Reply-To: <be397b06-6e4b-ba71-c7fb-54cae84a7e18@2ndquadrant.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox