@moonman There are multiple ways of solving this without using public key cryptography. I support using OpenPGP to sign your accounts etc, but there's a huge problem if you lose your keys (or someone steals them). Another approach is:
1. Get multiple accounts with multiple providers
2. Let each OnlineAccount publish that they are "owl:sameAs" (or sioc:account_of) a certain identity, [arbitraryURI].
3. If you lose one account and go elsewhere, you could update the extra accounts to list your new one, and discovery can be made by iterating a list of "all accounts known for [arbitraryURI]".
A decentralised system would assign [arbitraryURI] to an account at first discovery of it and then build a network graph (using FOAF for example) when more data comes in.
The problems with this approach (of linked data in a public space) is that discovery is a hard nut to crack and that it requires a heckofalot of logic built in to clients. But that's decentralife for ya!