Warning: a load of techno-babbling follows :wink:
As I have thought about preventing the signature stealing I would have to do something like a mini-Web Of Trust. So I ask you: Hey guys where are you?
Especially theCU|CUdyin. Your opinion for a good implementation is needed. As I do not want to implement something nobody likes.
Btw.: Admins do sleep.
General stuff
-------------
"The enemy knows the system being used" -- Claude E. Shannon
You can always disassemble/reverse-engineer an application. If this point is happening, then your security can be screwed up.
Examples:
1 commercial data-safe got owned a couple of years ago, when 1 person figured out, that the whole password-check for the encryption was done with an if-statement -- the password wasn't used to generate the key. An possible attacker had to only change 1 bit to unencrypt any data-safe protected with that software.
There's a lot of secure encryption software out there, that is using 'custom high-security 5,000,000-bits' algorithm. It does usually figures out, that the so-called encryption is nothing else than a simple xor. Such sort of software is getting called snake-oil (refer to
http://www.schneier.com/crypto-gram-9902.html for further details of how to detect such software).
See also
http://en.wikipedia.org/wiki/Kerckhoffs'_principle for yet some other principles.
Use an open development approach.
Best example for this strategy was/is the AES-selection. Multiple teams with public known and specified algorithms tried to brake their own as well as the algorithm(s) from other parties.
Use trustworthy pre-built components.
The old saying 'the chain is only as strong as its weakest link' does also apply to security. F.e., if you've all of your sensitive data encrypted with a password that is easy to be guessed, then you do only slightly improve your security. Most security-breaches come from a problem with the protocol, not with the algorithms themselves. Best example the above stated data-safe. Yet another good example is the design of the X.509-certificates, which is nullyfying some attacks due to some specific details of its block-structure.
Specific to trem/this thread
----------------------------
If you go for a web-of-trust, you'll get a thing like onetime-IDs for free on top of it.
You don't have to do the whole web-of-trust or ID-thing within trem itself. You could also go for typing-in that ID as soon as you're going to join a server, and could distribute the IDs through a website. A server would only have to contact the server and check through a secure way, that the IDs valid. Security-problem at this point is, that an attacker could try a brute-force attack, i.e. guessing a load of possible IDs per second and using the one that is valid. As long as the IDs are some sort of strongly non-linear (so not 0x0000 followed by 0x0001 followed by 0x0002 ...), then the chances are small (but keep the birthday-paradoxon in mind). You can also block a certain IP for a while, if said IP is trying way too many requests per time-scale. Problem here would be a possible DoS through malicious ppl hopping onto specific servers. The DoS would affect the server as well as legitimate players, but not anything else.
I'd suggest alot of reading security-specific literature, esp. about protocols and standards. The IMO best point of starting with it is still Bruce Schneier's "Applied Cryptography" while some of the algorithms therein (namely DES among others) are somewhat aged and outdated.
Specific to bsel2's mini-web of trust:
--------------------------------------
Go for batts-are-included packs like OpenSSL (or maybe find a way to interface with GnuPG). Alot of applications are using the OpenSSL-libs so you can suppose that they're tested (in case of AES/Rijndael, it was even certified).
Also make sure to use a peer-review / open-source approach. The more user's the more brains thinking about/finding actual problems.
Btw.: Admins do sleep.
I'm obviously not asleep, while I'm still maybe dreaming about trem's (hopefully) upcoming web of trust :wink: Seriously, I know alot of admins trying their best to keep the game fun, but sometime's it's only that much annoying, that you're going to say 'f**k it' and then doing something different like mowing the lawn.