Rev 1207 | Rev 1283 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1207 | daniel-mar | 1 | |
2 | SERVER_SECRET |
||
3 | ============= |
||
4 | |||
5 | In the base configuration, you will see something like this: |
||
6 | |||
1282 | daniel-mar | 7 | OIDplus::baseConfig()->setValue("SERVER_SECRET", "................................"); |
1207 | daniel-mar | 8 | |
9 | This value is chosen randomly by the configuration file generator (setup). |
||
10 | |||
1282 | daniel-mar | 11 | Derivation of secrets and auth keys |
12 | ----------------------------------- |
||
1207 | daniel-mar | 13 | |
1282 | daniel-mar | 14 | Important: The usage of `OIDplus::baseConfig()->getValue("SERVER_SECRET")` |
15 | is deprecated due to security considerations. |
||
16 | |||
17 | Instead, please always use `OIDplus::authUtils()->makeSecret()` |
||
18 | with a unique `$data` argument (prefer a GUID) |
||
19 | if you need a secret that is derived from the server secret. |
||
20 | |||
21 | If you want to generate an authentication key (e.g. to send via an email), |
||
22 | use `OIDplus::authUtils()->makeAuthKey()` |
||
23 | with a unique `$data` argument (prefer a GUID) |
||
24 | in combination with `OIDplus::authUtils()->validateAuthKey()`. |
||
25 | This auth key is NOT temporary by default so you need to make sure |
||
26 | that you encode a timestamp in it. |
||
27 | |||
28 | Implementation |
||
29 | -------------- |
||
30 | |||
31 | `makeAuthKey(data) = makeSecret(data) = sha3_512_hmac(data, "OIDplus:" + SERVER_SECRET)` |
||
32 | |||
33 | Currently, the implementation of `makeAuthKey` and `makeSecret` |
||
34 | is the same, but you should only use `makeAuthKey` |
||
35 | if you combine it with `validateAuthKey`, otherwise, you |
||
36 | should use `makeSecret`. This makes the code easier to understand. |
||
37 | |||
38 | Where are makeAuthKey and makeSecret being used? |
||
39 | ------------------------------------------------ |
||
40 | |||
41 | System / Core: |
||
1207 | daniel-mar | 42 | - Auth content Store (OIDplusAuthContentStoreJWT.class.php): |
1282 | daniel-mar | 43 | Key to sign JWT tokens (used for Automated AJAX requests, REST API and logins with "Remember me") using PBKDF2+HMAC |
44 | * If a private/public key pair exists: Sign the JWT using that private key. |
||
45 | * Otherwise sign it with: |
||
46 | `JWT = HS512(hash_pbkdf2("sha512", OIDplus::authUtils()->makeSecret("0be35e52-f4ef-11ed-b67e-3c4a92df8582"), "", 10000, 64/*256bit*/, false))` |
||
1207 | daniel-mar | 47 | - Session Handler (OIDplusSessionHandler.class.php): |
48 | Encryption of session contents (regular logins) |
||
1282 | daniel-mar | 49 | * if OpenSSL is installed: sha512-pbkdf2 + AES-256-CBC + sha3-512-hmac |
50 | * if OpenSSL is not installed: sha3-512-hmac |
||
51 | * In both cases, the key is `OIDplus::authUtils()->makeSecret("b118abc8-f4ec-11ed-86ca-3c4a92df8582")`. |
||
1207 | daniel-mar | 52 | |
1282 | daniel-mar | 53 | Temporary auth keys (sent via email etc.): |
54 | * used at plugin forgot RA password (public/091): |
||
55 | `makeAuthKey("93a16dbe-f4fb-11ed-b67e-3c4a92df8582:" + email + "/" + timestamp)` |
||
56 | * used at plugin ViaThinkSoft FreeOID activation (public/200): |
||
57 | `makeAuthKey("40c87e20-f4fb-11ed-86ca-3c4a92df8582:" + email + "/" + timestamp)` |
||
58 | * used at plugin invite RA (ra/092): |
||
59 | `makeAuthKey("ed840c3e-f4fa-11ed-b67e-3c4a92df8582:" + email + "/" + timestamp)` |
||
60 | * used at plugin change RA email (ra/102): |
||
61 | `makeAuthKey("5ef24124-f4fb-11ed-b67e-3c4a92df8582:" + old_email + "/" + new_email + "/" + timestamp)` |
||
1207 | daniel-mar | 62 | |
1282 | daniel-mar | 63 | Plugin OID-IP (public/100): |
64 | - Authentication token for hidden OIDs = `smallhash(OIDplus::authUtils()->makeSecret("d8f44c7c-f4e9-11ed-86ca-3c4a92df8582:" + id))` |
||
65 | |||
1207 | daniel-mar | 66 | Plugin VNag version check (admin/901): |
1282 | daniel-mar | 67 | - Webreader password = `OIDplus::authUtils()->makeSecret("65d9f488-f4eb-11ed-b67e-3c4a92df8582")` |
1207 | daniel-mar | 68 | |
1282 | daniel-mar | 69 | Plugin RDAP (frdl): |
70 | - `OIDplus::authUtils()->makeSecret("cee75760-f4f8-11ed-b67e-3c4a92df8582")` is used to generate a cache filename |
||
1207 | daniel-mar | 71 | |
1282 | daniel-mar | 72 | Plugin VTS Client Challenge Captcha: |
73 | - Challenge integrity : `OIDplus::authUtils()->makeAuthKey("797bfc34-f4fa-11ed-86ca-3c4a92df8582:" + challenge)` |
||
74 | - Cache filename : `"vts_client_challenge_" + OIDplus::authUtils()->makeSecret("461f4a9e-f4fa-11ed-86ca-3c4a92df8582:" + ipTarget + "/" + random) + ".tmp"` |
||
1207 | daniel-mar | 75 | |
1282 | daniel-mar | 76 | GUID Registry |
77 | ------------- |
||
1207 | daniel-mar | 78 | |
1282 | daniel-mar | 79 | The "real GUIDs" are documented at the [ViaThinkSoft OIDplus Registration Authority](https://oidplus.viathinksoft.com/oidplus/?goto=guid%3Aoidplus%2FauthRealms). |