(Отказ от ответственности: я не читал подробности об атаке Ваниша или Сибил, что может быть похоже на то, что происходит ниже)
Прежде всего: сообщения электронной почты, как правило, довольно малы, особеннопо сравнению с 50-мегабайтным видео YouTube вы можете скачать 10 раз в день или больше.На этом я основываю предположение о том, что хранение и пропускная способность здесь не являются реальной проблемой.
Шифрование, в общем смысле этого слова, вводит в вашу систему части, которые трудно понять и, следовательно, трудно проверить.(подумайте о типичной магии openssl, которую все просто выполняют, но 99% людей действительно понимают; если какой-то шаг X в HOWTO скажет: «Теперь перейдите на сайт X и загрузите * .cer * .pem и * .csr» для проверки шагов.1 к X-1, я думаю, что 1 из 10 человек просто сделает это)
Объединив два наблюдения, я предлагаю безопасную (*) и понятную систему:
Скажем, у вас естьсообщение М 10 кб.Возьмите N раз 10 кб от /dev/(u)random
, возможно, от аппаратных случайных источников, назовите его K (0) - K (N-1).Используйте простую операцию xor для вычисления
K(N) = M^K(0)^K(1)^...^K(N-1)
сейчас, по определению
M = K(0)^K(1)^...^K(N)
, т. Е. Чтобы понять сообщение, вам нужны все K.Храните K с N различными (более или менее доверенными) сторонами, используя любой протокол, который вам нравится, под случайными 256-битными именами.
Чтобы отправить сообщение, отправьте N ссылок на K.
Чтобы уничтожить сообщение, убедитесь, что по крайней мере один К. удален.
(*) Что касается безопасности, система будет столь же безопасной, как и самая безопасная сторона, принимающая К.
Не принимайтефиксированное N, не имейте фиксированного количества K на одном узле на сообщение (т. е. помещайте 0-10 K одного сообщения на одном узле), чтобы сделать грубую атаку тяжелой, даже для тех, кто имеет доступ ко всемузлы, хранящие ключи.
Примечание: это, конечно, потребует некоторого дополнительного программного обеспечения, как и любое решение, но сложность необходимых плагинов / инструментов минимальна.