Verifying server authenticity on local setup #20
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
We have found design fault in specification: server can't be trusted when unsealing.
This attack vector is applicable only on local-setup: when daemon and user agent are co-located on same host.
Possible solutions
It's much harder to solve because we have to support multiple platforms:
The TPM is not a solution, because it protects only from key extraction. A malicious process could still request signing by that particular key.
This funny diagram shows how the OPAQUE protocol closes the vulnerability with server spoofing by intercepting the TLS key or intercepting the socket. But this solution requires that at the time of the handshake, both the client and the server have the corresponding parts of the cryptographic key.
how does server store sign key for opaque in such way, so that server can access it, but fake server is not?
@CleverWild ping
When the server starts, it identifies itself to the Windows CNG (Cryptography Next Generation) API.
It set a PCP_PLATFORM_BINDING_PCR policy.
And finally, the Magic: Windows checks the Code Integrity (CI). If the fake_server.exe has a different hash or is unsigned, the TPM refuses to perform the signature.
Virtualization-Based Security (VBS) enclave does brrrrt.