Существует ли алгоритм для безопасного разделения сообщения на x части, требующие, по крайней мере, y части для повторной сборки?

Существует ли алгоритм для безопасного разделения сообщения на x части, требующие, по крайней мере, y части для повторной сборки? Очевидно, y <= x.

Пример:

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

Мой вопрос, действительно ли это возможно? На какие алгоритмы я мог бы посмотреть выполнить это?

Редактирование разъяснения: важная часть этого является криптографической силой. Взломщик не должен быть в состоянии восстановить сообщение, любой полностью или частично с меньше, чем y частями.

15
задан Aaron 7 March 2010 в 04:17
поделиться

7 ответов

Shamir Secret Sharing и Blakley's scheme - это два хорошо известных, доказательно безопасных способа разделить секрет так, чтобы его можно было восстановить только при объединении заранее определенного количества "долей".

18
ответ дан 1 December 2019 в 03:04
поделиться

Проверьте http://parchive.sourceforge.net/ . На основе кода Рида-Соломона есть спецификация и программное обеспечение для разделения архива на части x и создания файлов четности y .

Например. Вы разделяете один архив размером 5 Мбайт на пять файлов «данных» по 1 Мбайт и создаете еще пять файлов «четности» по 1 Мбайт. Вы можете восстановить исходный файл, используя любую комбинацию файлов данных и файлов четности, например 1 файл данных и 4 файла четности или 5 файлов четности.

Может быть, ты сможешь применить это.

РЕДАКТИРОВАТЬ: приложение должно разделить ваш архив на X частей и создать (X-Y) файлы четности, а затем передать одну часть и все файлы четности каждому получателю. Затем любой Y из них может соединить свои части вместе с файлами четности, которые они все совместно используют, для получения желаемого результата.

3
ответ дан 1 December 2019 в 03:04
поделиться

Мне кажется, что вместо того, чтобы делить сообщение на x частей, вы можете зашифровать его и разделить ключ между y людьми.

Аналогичной проблемой в реальном мире будет голосование. Для решения этой проблемы используется шифрование Эль Гамаля с повторной рандомизацией.

-- Bala

2
ответ дан 1 December 2019 в 03:04
поделиться

Похоже на RAID 5, который представляет собой x диски, требующие y<x для повторной сборки раздела. Алгоритм исправления ошибок Рида-Соломона является одной из реализаций этого типа отказоустойчивости.

0
ответ дан 1 December 2019 в 03:04
поделиться

Да, это возможно. Это называется Forward error correction. See http://en.wikipedia.org/wiki/Forward_error_correction

0
ответ дан 1 December 2019 в 03:04
поделиться

Пример кода FEC Рида Соломона, от Луиджи Риццо и обновленный командой UDPcast, от байтов к гигабайтам,

http://koders.com/c/fidD435475ABA35C752BC554D7D3E04208B2896D06C.aspx?s=fec#L3

Меньший масштаб, подсчет в битах, от ленты до аудиоконтроллеров,

http://koders.com/cpp/fidF6CF3C208FBFE2EF0DAAD9CBFEC777068A81595D.aspx

0
ответ дан 1 December 2019 в 03:04
поделиться

То, что вы ищете, - это "Алгоритм рассеивания информации" Рабина. Здесь есть хорошее объяснение и пример кода: http://bryanmills.net/archives/2007/09/information-dispersal-algorithms/

1
ответ дан 1 December 2019 в 03:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: