Алгоритм аутентификации бедного человека? - PullRequest
10 голосов
/ 20 февраля 2009

Запрос на мозговой штурм

Мне нужна идея алгоритма аутентификации с некоторыми необычными требованиями.

Алгоритм будет использоваться для проверки того, что отправитель сообщения является законным.

Ограничения:

  1. «Транспортный слой» - это электронная почта
    • отправитель (' Алиса ') - человек
    • Алиса имеет доступ только к веб-браузеру и доступу в Интернет (включая учетную запись веб-почты) в качестве своих инструментов; поэтому она не может делать очень сложные вычисления
    • Ресивером (' Bob ') является компьютер без прямого доступа из Интернета.
    • Боб имеет учетную запись электронной почты, которую он периодически проверяет.
    • Боб может отправить электронное письмо.
    • Нет отправки информации третьим лицам: Алиса и Боб не может отправлять какую-либо внеполосную информацию. Чтение некоторой общедоступной информации (например, времени с сервера времени) можно.

Предположения:

  • Алиса может получить некоторую информацию локально: возможно, у нее есть ноутбук, или мы можем даже предположить, что ее учетная запись веб-почты защищена от взлома, поэтому там может храниться конфиденциальная информация.
  • Алиса и Боб могут обмениваться конфиденциальной информацией непосредственно за время до аутентификации (личные ключи?)

Non-цели:

  • кодирование фактической полезной нагрузки сообщения не требуется.
  • скорость / задержка не являются (большими) проблемами

Некоторые идеи, с которых можно начать:

  1. Простой старый жестко запрограммированный пароль.
    Проблемы :

    • атака грубой силой (маловероятно)
    • подслушивание возможно, если общение осуществляется открытым текстом, тогда возможны повторные атаки
  2. Простой алгоритм, основанный на текущей дате / времени
    Пример: Алиса добавляет текущую дату, час и минуту и ​​отправляет результат в качестве токена аутентификации, который Bob может проверить. Предположим, что доступ только для чтения к серверу времени не нарушает правило № 7 (без участия третьих лиц).
    Проблемы

    • безопасность через неизвестность : алгоритм несколько безопасен только потому, что он не является общедоступным (ну, теперь он ... упс!)
  3. Какой-то механизм ответа на вызов - Алиса отправляет запрос на аутентификацию, Боб отвечает с запросом, Алиса отправляет ожидаемый ответ и фактическая полезная нагрузка.
    Какие детали механизма? Я не знаю:)

Что может ты подумать? Я надеюсь увидеть креативные ответы; -)

Edit:

Может быть, пример прояснит правило # 3: предположим, что Алиса использует проприетарное устройство с закрытым исходным кодом <cough> iPhone <cough> для доступа в Интернет, или она стоит перед общественным интернет-киоском.

Ответы [ 13 ]

0 голосов
/ 20 февраля 2009

Хм ... это будет считаться вечеринкой?

Установите брата Боба - Чарли, который доступен из Интернета через HTTPS. Чтобы отправить сообщение Бобу Алисе, сначала нужно войти в систему Чарли (используя простой старый пароль), а затем Чарли даст ей одноразовый токен. Затем она отправляет свое электронное письмо вместе с токеном Бобу.

0 голосов
/ 20 февраля 2009

Простой способ защитить данные при передаче без обмена паролями - это трехсторонний XOR:

  1. Алиса создает несколько байтов, используя свой собственный ключ.
  2. Она XOR данные с этими байтами, чтобы сделать их нечитаемыми.
  3. Алиса отправляет зашифрованные данные Бобу
  4. Боб создает несколько байтов, используя свой собственный ключ.
  5. Он XOR данные этими байтами.
  6. Боб отправляет данные с двойным шифрованием обратно Алисе
  7. Алиса снова применяет свой шаблон XOR. Теперь данные кодируются только шаблоном Боба
  8. Алиса отправляет данные обратно Бобу
  9. Боб теперь может декодировать данные с помощью своего собственного шаблона
0 голосов
/ 20 февраля 2009

Я могу придумать несколько способов:

Установите службу шифрования https, аналогичную:

http://webnet77.com/cgi-bin/helpers/blowfish.pl

или

http://cybermachine.awardspace.com/encryption.php/

Или вы можете ввести одноразовые пароли в сочетании с шифрованием XOR

Или вы можете написать простое Java-приложение (если Java может выполняться на машине), которое можно загрузить через www и обеспечить шифрование с открытым ключом.

...