id: Гость   вход   регистрация
текущее время 00:58 19/04/2024
Владелец: unknown (создано 11/06/2014 15:23), редакция от 11/06/2014 16:04 (автор: unknown) Печать
Категории: криптография, софт, анонимность, анализ трафика, инфобезопасность, симметричное шифрование, протоколы, tor, защита email, аутентификация, атаки, модель угрозы
https://www.pgpru.com/Новости/2014/ПростойСпособСозданияНеотслеживаемыхКоммуникаций
создать
просмотр
редакции
ссылки

11.06 // Простой способ создания неотслеживаемых коммуникаций


Многие пользователи интернета думали о том, как организовать для себя неотслеживаемый канал связи. При этом приходит в голову два решения: стеганография и сети анонимной связи.


У обоих решений есть свои недостатки. Стеганографический канал обладает малой пропускной способностью, а регулярно подбирать контент сообщений так, чтобы он не вызывал подозрение у наблюдателя — сложно. Канал анонимной связи требует от пользователей поиска и/или установки и поддержки собственных сервисов (например скрытых сервисов в сети Tor) и согласования параметров — по каким адресам искать друг друга.


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


Исследователи Филип Беато (Кафедра электротехники, исследовательская группа по компьютерной безопасности и промышленной криптографии, кафедра перспектив здравоохранения iMind католического университета Лёвен, Бельгия), Эмилиано де Кристофаро (Университетский колледж Лондона, кафедра компьютерных наук) и Каспер Рассмусен (Оксфордский Университет, кафедра компьютерных наук) также не остались в стороне от этой темы, опубликовав работу "Undetectable Communication: The Online Social Networks Case".


Вместо использования полновесной стеганографии, они предложили и формально описали концепции низкоэнтропийной стеганографии, целью которой является передача не закодированного осмысленного сообщения, а небольшого количества энтропии через обычный текст с целью вычисления сеансовых ключей и вычисления адресов для секретной связи по другим каналам. А уже по этим адресам можно получить сколь-угодно большие сообщения, используя сети анонимной связи. При этом противник не может догадаться ни о наличии таких каналов, ни о связи с ними отправителей согласующих сообщений.


К достоинствам метода относится то, что сторонам достаточно иметь лишь совместный долговременный симметричный ключ k. Больше никаких параметров в быстроменяющемся мире интернета им согласовывать не потребуется. Сообщения для согласования связи могут иметь произвольную форму: это может быть любая фраза, из которой достаточно получить уникальный хэш.


Итак, Алиса и Боб знают k. Алиса вычисляет из него ключ шифрования kENC = H (k ║ 0) путём хэширования с нулём и ключ аутентификации kMAC = H (k ║ 1) путём хэширования с единицей. В дальнейшем, для простоты оба ключа будут обозначаться как k и различаться в формулах по смыслу операций: аутентификации или шифрования.


Алиса публикует на открытом ресурсе (например, на странице своей социальной сети) произвольное сообщение tA, скорее всего представляющее собой короткий текст. Никакой специальной формы сообщению при этом придавать не обязательно. Алиса вычисляет index = MACk (tA) — псевдослучайный адрес связи. Этот адрес связи она может использовать для создания логина на файлообменном сервисе или скрытом сервисе Tor. А для сопоставления этого адреса какому-либо реальному адресу, она анонимно (через Tor) размещает ссылку на него в сервисе отображения адресов (таком как tinyurl). Затем Алиса шифрует секретное сообщение SA посредством EK (SA) и размещает его на ранее вычисленном адресе.


Только Боб, зная ключ k может проделать такие же вычисления, как и Алиса, найти адрес размещения её скрытого сообщения и расшифровать его.


Схема обмена информацией с использованием малого количества энтропии (41 Кб)

Используя такой простой протокол можно даже из одного сеанса связи вычислить массу производных ключей, которые использовать для согласования адресов, логинов, паролей для входа в сервисы и расшифровки данных. Если пользователи создают эти адреса через анонимные сети, то между ними и создаваемыми адресами не существует никакой легкообнаружимой связи. А если адреса находятся на подконтрольном им скрытом сервисе Tor, то после использования они могут уничтожать эти адреса, не оставляя следов обмена информацией даже если сам факт этого будет заподозрен или раскрыты секретные параметры связи.


Исследователи создали тестовую реализацию простейшей версии такого протокола, способного работать в виде JavaScript-плагина к браузеру для сетей Facebook, Twitter и Google+.


Данная публикация будет представлена на 12-ой международной конференции по приватности, безопасности и доверию PST2014 в Торонто, Канада, 23-24 июля 2014 года на базе кафедры компьютерных наук университета Райерсона при технической поддержке компьютерного сообщества Института инженеров электротехники и электроники.


Источник: fileУниверситетский колледж Лондона, кафедра компьютерных наук, группа информационной безопасности


 
На страницу: 1, 2, 3 След.
Комментарии [скрыть комментарии/форму]
— unknown (18/07/2014 09:57, исправлен 18/07/2014 09:59)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

Положим, MD5 нестоек и к поиску коллизий, и к атакам дополнения. Но для стойкой хэш функции поиск выражения H(M) = (M ║ H(M)) равносилен взлому.

— Гость (18/07/2014 12:16)   <#>
Есть же атаки на неправильные реализации аутентификации, когда вместо PBKDF2 и прочих KDF начинают городить свой огород (пишу по памяти):
  1. Hash(password ║ salt) (совсем плохо, ломается)
  2. Hash(salt ║ password) (лучше, но всё равно есть какие-то практические атаки)
  3. Hash(salt1 ║ password ║ salt2) (простых практических атак нет, хотя теоретически это хуже, чем нормальная KDF).

Атака на первый вариант вроде такая: клиент предъявляет серверу валидные salt и hash, не зная правильного пароля. Делается это так: он крадёт валидные hashold и saltold с предыдущей сессии, потом генерит новую saltnew и вычисляет хэш от новой соли, являющейся конкатенацией с предыдущей:

hash(password ║ saltold ║ saltnew) = hash( hash(password ║ saltold) ║ saltnew ).

Там, наверно, ещё важно, сколько дописывается к конец текста, от которого берётся хэш, но смысл, думаю, вам понятен.
— unknown (18/07/2014 12:39)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Многие из этих схем исправляли недостатки старых хэшей, которые не полностью соответствовали модели случайного оракула.

С нормальным хэшем, типа Keccak, претендующем на полноценную PRF, такие извращённые схемы, по крайней мере, частично — будут не нужны. HMAC уже точно, не нужен. Я упоминал об этом на примере Blinker.
— Гость (18/07/2014 14:27)   <#>
Дело, я так понимаю, не в том, что раньше хэши были уязвимыми, а теперь нет, а в том, что KeccaK позволил, в том числе, отказаться от режимов. Вышеупомянутые уязвимости, как я понимаю, остаются валидными, какой бы хэш ни подразумевался под hash. Это просто свойство того, что хэш от текста считается поблочно.
— unknown (18/07/2014 14:58, исправлен 18/07/2014 15:01)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
hash(password ║ saltold ║ saltnew) = hash( hash(password ║ saltold) ║ saltnew ).

Это какие-то неправильные хэши. Не представляю себе такого без коллизии внутренней функции хэширования.



Каждый поданный на вход блок меняет внутреннее состояние хэша. А каждый последующий блок сцепляется с внутренним состоянием от предыдущего блока. И в хэше учитывается длина сообщения.

— Гость (27/07/2014 20:33)   <#>

Это обычные хэши предыдущего поколения (те что были до KeccaK'а).


Всё так, вот только внутреннее состояние хэша выдается наружу на последней итерации, стало быть можно взять результат хэша и досчитать его для каких-то дополнительных данных — это называется «length extension attack», и есть готовые проги, которые это делают. Это тривиальная практическая атака, она работает для MD5, SHA-1 и SHA-2.
— Гость (27/07/2014 20:41)   <#>

HashPump. This tool supports the Length Extension Attack for MD5, SHA1, SHA256 and SHA512. SHA224 and SHA384 are not vulnerable to this attack due to their reduced output of their state variables

Проблема хэшей в том, что они выдают всё внутреннее состояние, поэтому такая атака и возможна. KeccaK выдает только часть, поэтому против него не работает.
— Гость (27/07/2014 21:00)   <#>

Я тут плохо написал — это не двойное хеширование hash(hash()). Там используется внутренняя функция от хэша, а не хэш в неизменном виде. Грубо говоря, можно пояснить так: есть старый хэш от неизвестных данных, и есть данные, которые надо дописать. Мы можем вычислить такой новый хэш, который был бы равен хэшу от (неизвестные данные + блок паддинга + дополняющие данные):

y = hash(x)
z = hash(x + padding + new_data)

Хэш z можно вычислить, не зная x.

(z,padding) = attack_function(x, new_data).

attack_function — это не сам хэш, а производная от него функция. z — итоговый новый хэш, получающийся в результате атаки (x нам неизвестен). padding — блок дополнения, который неизбежно придется добавить к потоку, и который нами не
контролируется. После блока дополнения к потоку добавляем уже произвольные данные. Т.е., padding вычисляется (его нельзя изменять произвольно), а new_data — произвольные данные, навязанные нами.
— Гость (08/10/2014 14:15)   <#>
Подскажите, пожалуйста, что делает этот скрипт?
— SATtva (08/10/2014 14:50)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Это регулярное выражение для команды sed (кстати, unknown там потерял закрывающую кавычку). Команда удаляет из начала строки все символы до первого пробела (включая и сам пробел).
— Гость (08/10/2014 15:03)   <#>
Спасибо, в закрывающей кавычке было дело. :-)
— unknown (08/10/2014 16:50)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
's/^.* //'
Вот такой вот смайлик. Старые коменты уже не поправить, но это не пошаговое руководство к действию, а только пример, как можно реализовать идею подручными средствами.
— Гость (10/04/2015 17:30)   <#>
Подскажите, пожалуйста, что конкретно означает опция из man echo (используется в примерах в начале топика)

-n do not output the trailing newline
— unknown (10/04/2015 17:33)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Не делать перевод строки после вывода.
— Гость (10/04/2015 17:45)   <#>
Вынужден, все же, спросить уточнение, почему нижеуказанные команды дают неодинаковый хеш:

echo "123" | md5sum
echo -n "123" | md5sum
На страницу: 1, 2, 3 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3