Closed afbase closed 1 year ago
regarding your 2nd 1st question, it's an PAKE where the P stands for password, and the password is treated as such (hashing it to a curve with a password hashing algorithm) - so if you have a private key instead of a password, then you could of course use it, but your public key would go unused, and if you already have a pub/priv keypair then there are other better protocols to achieve what opaque does. actually you only need the ake then, and can skip the OP part, so that means naked 3dh...
re 4: i wrote this blogpost https://www.ctrlc.hu/~stef/blog/posts/Running_around_with_an_OPAQUE_hammer.html and later i realised the answer to be SASL, for which i wrote a mech: https://github.com/stef/libopaque/tree/master/sasl and even a mod for nginx https://github.com/stef/ngx_http_auth_sasl_module/ (but then https is already tls based)
can I use the session_key as-is for a bearer token for HTTPS requests? (This feels very wrong zipper_mouth_face)
you should use the session_key as an ephemeral HOTP shared secret and do HMAC(kdf(session_key,domain_seperator), counter++) as a bearer token.
On the other hand, Can I use ID tokens, access tokens, or refresh tokens, or SAML assertions as a client_identity
if those tokens stay constant over the life-time of an account? if these tokens are not constant over the life-time of an account, but need to be stored for some time, then you might consider this approach https://ctrlc.hu/~stef/blog/posts/How_to_recover_static_secrets_using_OPAQUE.html
@afbase it seems like @stef helped address most of your questions. Are there still things you're unsure about?
Closing due to lack of activity. @afbase, please do re-open if you still have unanswered questions!
Hello @chris-wood ,
I have some questions regarding some of the inputs, outputs, and implementation ideas i have in my head. Hopefully they don't sound too off the mark here.
Offline Registration: Can the offline registration server be different than the server in the online AKE?
I feel like the answer is yes, and if that is the case, as the offline registration server, I could then push any
RegistrationRecord
(or the subset of the registration record of theclient_public_key
and encryptedenvelope
and the online AKE server can query an HSM/KMS for the masking key) to any Online AKE server. Here is an example with a Client, (offline) Registration Server, (online) AKE'ing Microservice, and a Cloud HSM/KMS:⬆️ I feel like I'm missing a problematic assumption about the
server_private_key
here, i.e. the AKE'ing Microservice and Registration Server share theserver_private_key
. Maybe it helps if it is also on the HSM/KMS???client_private_key
?client_identity
? I don't know what is gained (or lost) by doing that. I welcome any and all pointers on thinking about this in a different way.session_key
.session_key
, can I use myclient_private_key
to sign the session key and submit that to an authorization server that has myclient_public_key
to get a some kind of authorization token like a biscuit?session_key
as-is for a bearer token for HTTPS requests? (This feels very wrong :zipper_mouth_face:)