Brainstorming request
I need an idea for an authentication algorithm with some unusual requirements.
The algorithm would be used to verify that the sender of a message is legitimate.
Restrictions:
- The "transport layer" is e-mail
- the sender ('Alice') is a human being
- Alice only has access to a web browser and internet access (including a webmail account) as her tools; therefore she can't do very complicated calculations
- The receiver ('Bob') is a computer with no direct access from the internet.
- Bob has an email account that it checks periodically.
- Bob can send email.
- No sending info to a 3rd party: Alice and Bob can't send any out-of-band info. Reading some publicly available info (such as the time from a time server) is ok.
Assumptions:
- Alice can access some information locally: maybe she carries a notebook, or we could even assume her web mail account is hack-proof, therefore sensitive information can be stored there.
- Alice and Bob can exchange sensitive information directly at a time prior to the authentication (private keys?)
Non-goals:
- encoding of the actual payload of the message is not necessary.
- speed/latency are not (big) issues
Some ideas to get you started:
Plain old hard-coded password.
Problems:- brute force attack (not likely)
- eavesdroping possible if the communication is done in clear text, then replay attacks possible
Simple algorithm based on current date/time
Example: Alice adds the current date, hour and minute and sends the result as the auth token, which Bob can verify. Let's assume that read-only access to a time server does not violate rule #7 (no 3rd party).
Problems:- security through obscurity: the algorithm is somewhat safe only because it is not publicly available (well, it is now... oops!)
Some sort of challenge-response mechanism - Alice sends a request for authentication, Bob replies with a challenge, Alice sends the expected response and the actual payload.
What are the details of the mechanism? I don't know :)
What can you think of? I'm hoping to see some creative answers ;-)
Edit:
Maybe an example would make rule #3 clearer: let's assume that Alice is using a proprietary closed-source device <cough>
iPhone <cough>
to access the Internet, or she is standing in front of a public internet kiosk.