LINUX.ORG.RU

Целостность данных

 ,


0

1

Задачка Есть три человека Я посредник Оппонент

Я через посредника передаю сообщение оппоненту. Оппонент должен определить не подменил ли посредник это сообщение. Связь односторонняя. Оппонент не может мне ничего сообщить о принятом сообщении.

Высокая криптостойкость не требуется. Посредник не будет взламывать шифр он просто может рандомно испортить передаваемые данные. Ему можно даже говорить открытое сообщение.

В конечном итоге нужна защита от порчи данных посредником без обратной связи с оппонентом.

Все условия

1. Я и оппонент не имеем обратной связи. Все сообщения передаются от меня через посредника в один конец

2. Мы оппонентом знаем все алгоритмы шифрования, ключи, пароли, явки.

3. Оппоненту не обязательно получать правдивые данные. Достаточно того, что он будет знать об их повреждении. Но было бы не плохо если бы он мог их восстанавливать.

Ответ на: комментарий от Harald

что мешает посреднику пересчитать твоего Рида-Соломона для поддельных данных

Посредник .... просто может рандомно испортить передаваемые данные.

anonymous ()

Цифровая подпись.

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

invy ★★★★★ ()
Ответ на: комментарий от invy

Можно упростить до одного ключа - приватного, как минимум, равного по длине хешу. Приватный ключ известен двум сторонам. И оба шифруют хеш блочными aes или потоковыми шифрами на одном ключе, есессно...

menangen ★★★★★ ()
Ответ на: комментарий от menangen

Передать ключ другой стороне тоже нужно. Без ошибок (и модификаций со стороны mitm), в итоге сложность только растет. Если ключ получателя скомпромитирован- все накрывается медным тазом. Mitm может все перещифровывать сколько ему угодно.

invy ★★★★★ ()
Последнее исправление: invy (всего исправлений: 1)

Если вы с получателем заранее договорились об общем секрете, который неизвестен человеку посередине, то правильный ответ - MAC. Практически, это почти всегда будет HMAC.

Другие варианты - AEAD шифрование, типа GCM и, разумеется, цифровые подписи.

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

ivlad ★★★★★ ()