How can I implement the security levels teamspeak 3 identities?
How are security levels implemented, so that the time to improve one can increase exponentially but the time to verify one at the server-side stays the same (or at least increases just linear)?
While reading some blogs regarding the security levels of identities in Teamspeak 3, I saw the following lines - TeamSpeak (TS) is a proprietary voice-over-Internet Protocol (VoIP) application for audio communication between users on a chat channel, much like a telephone conference call. Users typically use headphones with a microphone. The client software connects to a TeamSpeak server of the user's choice, from which the user may join chat channels.
I can't tell for sure. But if you are looking for a similar feature as the Security level Teamspeak, I would implement it as following: An ID contains a private and a public part (That's what Teamspeak does). So I guess it's some asnyc encryption key you can generate yourself.
Now just generate a sequence of numbers e.g. s = [1..n] and hash them.
As soon as the first M bits of the generated hash match the first M bits of the public key you take it as a valid prof of work for the Security level of M.
You needed n rounds of hashing to find the hash, but to prof it, the server must only hash the result s once and check how many bits match to your public key. The dificulty for you will rise exponentially.
This is in fact similar to what Bitcoin does. But Bitcoin tries to get a certain numbers of Zeros in front of the hash and you don't hash a random number but the b-tree of the block you want to mine plus a nonce (random number).
From Teamspeak: Generate an ID e.g. IHoxfrQNl152vs80N4wYvsEmNd8= Export it to see the secret: e.g. 205VFy/YWQLyDeTxIIQvyy4hGQYxWloFH0R9VW4VRCxQHkcOdFdyX2YHMztQDQQeDA1gNG9Ce0N6CipVHkMie2lzX3ReRX4HFQhqFiB5FBQEEi0DVhhCUltiOE4GcmV2W3FkDX1OdXcrUUxwUUloQVBHRjYvM3EzWCtGeUpkRHlWTTFXZGh1VHJRZVA0Q3hMWE1ITXVxNlU1TTQ=
If you now increase the security, just the first part of the export changes. From 8 → 9 → 24 it gets from 205 to 247 to 520935.
My highest key has some number around 29147155819 at level 34.
I think this number will somehow hash to something that is related to my public key. So anyone can proof it with a single round of hashing, but my PC needed 29147155819 rounds of hashing to find it, which took quite a while Btw: The max security is 128, so I guess that's the length in bits of the public key. I hope I was able to help - Tarion