ciphered to shuffled

This commit is contained in:
2025-06-26 13:34:23 -05:00
parent 1e5fd26464
commit 6ea7486d76

View File

@@ -53,32 +53,32 @@ sequenceDiagram
Server -->> Mobile Client: Store ChaCha20 256-bit key Server -->> Mobile Client: Store ChaCha20 256-bit key
end end
rect rgb(191, 223, 255) rect rgb(191, 223, 255)
Server ->> Server: Ciphered Keypad Index Array =<br/>ChaCha20FisherYates(Keypad Index Array, SharedKey, Nonce) Server ->> Server: Shuffled Keypad Index Array =<br/>ChaCha20FisherYates(Keypad Index Array, SharedKey, Nonce)
Server ->> Mobile Client: Ciphered Keypad Index Array + Nonce Server ->> Mobile Client: Shuffled Keypad Index Array + Nonce
end end
Note right of Server: Server also sends the 96-bit nonce in plain-text.<br/>The Serve must never use the same nonce twice.<br/>It must be randonly generated for every authentication.<br/>The only additional overhead is the 96-bit nonce. Note right of Server: Server also sends the 96-bit nonce in plain-text.<br/>The Server must never use the same nonce twice.<br/>It must be randonly generated for every authentication.<br/>The only additional overhead is the 96-bit nonce.
rect rgb(191, 223, 255) rect rgb(191, 223, 255)
Mobile Client ->> Mobile Client: Keypad Index Array =<br/>Reverse(Ciphered Keypad Index Array, SharedKey, Nonce) Mobile Client ->> Mobile Client: Keypad Index Array =<br/>Reverse(Shuffled Keypad Index Array, SharedKey, Nonce)
end end
Mobile Client ->> User: Render Keypad Mobile Client ->> User: Render Keypad
User ->> Server: Set nKode User ->> Server: Set nKode
Server ->> Server: Disperse Keypad Server ->> Server: Disperse Keypad
rect rgb(191, 223, 255) rect rgb(191, 223, 255)
Server ->> Server: Ciphered Keypad Index Array =<br/>ChaCha20FisherYates(Keypad Index Array, SharedKey, Nonce) Server ->> Server: Shuffled Keypad Index Array =<br/>ChaCha20FisherYates(Keypad Index Array, SharedKey, Nonce)
Server ->> Mobile Client: Ciphered Keypad Index Array + Nonce Server ->> Mobile Client: Shuffled Keypad Index Array + Nonce
end end
rect rgb(191, 223, 255) rect rgb(191, 223, 255)
Mobile Client ->> Mobile Client: Keypad Index Array =<br/>Reverse(Ciphered Keypad Index Array, SharedKey, Nonce) Mobile Client ->> Mobile Client: Keypad Index Array =<br/>Reverse(Shuffled Keypad Index Array, SharedKey, Nonce)
end end
Mobile Client ->> User: Render Keypad Mobile Client ->> User: Render Keypad
User ->> Server: Confirm nKode User ->> Server: Confirm nKode
Note over User,Server: Login Note over User,Server: Login
rect rgb(191, 223, 255) rect rgb(191, 223, 255)
Server ->> Server: Ciphered Keypad Index Array =<br/>ChaCha20FisherYates(Keypad Index Array, SharedKey, Nonce) Server ->> Server: Shuffled Keypad Index Array =<br/>ChaCha20FisherYates(Keypad Index Array, SharedKey, Nonce)
Server ->> Mobile Client: Ciphered Keypad Index Array + Nonce Server ->> Mobile Client: Shuffled Keypad Index Array + Nonce
end end
rect rgb(191, 223, 255) rect rgb(191, 223, 255)
Mobile Client ->> Mobile Client: Keypad Index Array =<br/>Reverse(Ciphered Keypad Index Array, SharedKey, Nonce) Mobile Client ->> Mobile Client: Keypad Index Array =<br/>Reverse(Shuffled Keypad Index Array, SharedKey, Nonce)
end end
Mobile Client ->> User: Render Keypad Mobile Client ->> User: Render Keypad
User ->> Server: Successful Login User ->> Server: Successful Login