Technology Preview for secure value recovery
This is very similar to a design Apple announced for iCloud Keychain several years ago at Black Hat.<p>iCloud Keychain synchronizes keychains across iOS devices, storing their contents encrypted under the user&#x27;s passphrase on Apple&#x27;s cloud servers. In theory, Apple has no access to this data, since they don&#x27;t know the relevant passphrase. In practice, however, passphrases are weak, even under PBKDF2. An attacker that got access to Apple&#x27;s cloud environment would simply dictionary attack the encrypted blobs, and would probably succeed a lot of the time.<p>So instead of the obvious naive design, Apple stores enough secret data in an HSM so that you can&#x27;t attempt a decryption without the involvement of the HSM. At the same time, the HSM enforces an attempt counter, preventing brute force attacks. To scale the design, Apple partitions customers into &quot;clubs&quot; of HSMs, with the attempt counter synchronized among the HSMs of the club using a distributed commit algorithm.<p>(Somewhat infamously, Ivan Krstic detailed how they protected the HSMs themselves from malicious attacks by putting their software update signing keys through a &quot;physical hash function&quot; called &quot;Vitamix blender&quot;.)<p>What Signal is doing here is essentially what Apple did, but using SGX instead of an HSM, and RAFT as the consensus algorithm to synchronize the counters. You might reasonably prefer the Apple approach to SGX, but at the same time, the data that Signal is storing is a lot less sensitive than the data Apple stores.<p>Probably the biggest end-user takeaway from this announcement is that it&#x27;s the start of a process where Signal is able to durably and securely store social graph information for its users (without revealing the social graphs directly to Signal itself, unlike virtually every other secure messaging system). Once they can do that, they&#x27;ll have ended most of their dependence on phone numbers.