LINUX.ORG.RU
решено ФорумTalks

[криптография] Простой вопрос.

 


0

1

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

  1. чтобы она читалась только первым
  2. чтобы она читалась только вторым
  3. чтобы она читалась обоими

Я понимаю, что так можно сделать, если увеличить объём сообщения в третьем случае в два раза. Вопрос в том, как (и можно ли) сделать, чтобы избыточность была не такая?

С двумя людьми и тремя вариантами — это просто пример, в общем случае надо N людей и 2^N-1 вариантов. Хочется, чтобы объём выкладываемых данных не рос линейно от количества людей, которым он предназначен.

Небольшое пояснение, на всякий случай: ключи надо распределить до того, как станет ясно, кому надо раздавать информацию. Распределять 2^N-1 пар ключей на все варианты не хочется.

★★★★★

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

Ассиметричное шифрование. Организовать людей в группы и сдеоать пару (открытый, закрытый) ключей для группы. Шифровать открытым ключом для группы. Любой человек из группы, зная закрытый ключ, сможет расшифровать.

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

Наверное, плохо расписал, что надо. Сейчас допишу.

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

А, всё туплю.

  1. Генерируем N пар ключей. Раздаём каждому по одному ключу.
  2. Решаем, кому раздавать (n ≤ N). Создаём пару ключей для группы.
  3. Выкладываем групповой ключ n раз (шифрованный для каждого члена группы в отдельности).
  4. Выкладываем данные, зашифрованные групповым ключом.

Тривиальщина. Спать пора, наверное.

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

велосипед: отправить два файла, первый — зашифрованный одним из пары распределённых заранее ключей, ключ группы, второй файл — зашифрованный ключом группы целевой файл. Ключи группы генерируются уникальные для каждой комбинации новый файл — группа лиц. Лицо получило оба файла, полученным заранее ключом расшифровало ключ группы, им рапаковало файл.

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

:-)

Главное верно поставить задачу.

Во всяком случае, о прямом решении того, что ты хочешь, мне не известно.

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

Более внятно:

  1. Каждый человек генерирует пару ключей. Открытые выкладывают в общий доступ.
  2. При необходимости раздать какие-то данные подгруппе из n человек раздающий генерирует новую пару ключей (групповую). Данные шифрует открытым групповым ключом, и выкладывает в общий доступ.
  3. Раздающий шифрует закрытый групповой ключ n раз, открытым ключом каждого члена группы. Получается n строк, каждая из которых — закрытый групповой ключ, зашифрованный очередным членом группы. Они тоже выкладываются в общий доступ.

Всё.

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

При небезопасной сети нельзя отправить файл, можно только выложить в общий доступ ;).

И файлов будет n+1, я описал выше. Откуда два — не понял.

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

Это для каждого получателя я имел в виду два файла надо забрать. А так по числу получателей зашифрованных групповых ключей n и один собственно зашифрованный файл ­— n+1, итого, да. Я просто немного коряво написал, суть та же, что и постом выше

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

Кстати, насчет прямого решения. Можно автоматизировать процесс, изобрести формат файла в котором бы закрытый ключ группы передавался вместе с данными. Только сами данные шифровались бы по групповому ключу, а закрытый групповой ключ - персональным(и) ключом (n раз). Ну и прогу соответствующую написать, которая бы парсила формат.

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

Зачем? Это же тривиальщина из пары строчек.

ChALkeR ★★★★★
() автор топика

adriano32, hibou, вопрос на самом деле относился к следующему топику.

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

Зачем группы? Если нужно отправить нескольким, то можно просто приложить симметричный ключ несколько раз - зашифрованный разными асимметричными ключами для разных адресатов.

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

> ...генерирует новую пару ключей (групповую). Данные шифрует открытым групповым ключом, и выкладывает в общий доступ.

Стоп, погоди, ты что ли собрался шифровать _данные_ _асимметричным_ шифром? Зачем???

segfault ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.