> Каюсь, не слышал до этого о технологии. Подскажите, а ключ к алгоритму
> по вылову нужных битов по Диффи-Хеллману получается или там как-то по-своему?
> Честно, читал английскую википедию - не смог разобраться из-за языкового барьера.Самое понятное объяснение я видел собственно в статье Ривеста самого:
http://people.csail.mit.edu/rivest/chaffing-980701.txt
Если коротко, то суть не хитра: кроме просто нужного нам сообщения отсылаем ещё одно или несколько вместе с ним, но снабжаем их MAC-ами. У нужного нам сообщения MAC будет валиден, отличен от остальных. Да, он зашумляет канал -- собственно это и называется chaffing, а процесс отсеивания неинтересующих нас данных -- winnowing. Если предположить что сообщение имеет размер один бит, то мы всегда можем отсылать по два бита (0 и 1), снабжая одного из них валидным MAC-ом. Для внешнего наблюдателя это поток 010101 с MAC-ами (рандомом) -- он не знает какие биты "валидны", за счёт чего и получается конфиденциальность.
Он же ещё сразу предлагает тут подумать об использовании All-or-nothing-transformation для оптимизации. Перед тем как применить chaffing, мы преобразуем (это преобразование не использует никаких ключей, не имеет никакой секретности) его в AONT package и от него только часть используем для chaffing. Не "сломав" chaffing-and-winnowing, мы не сможет из-за AONT преобразования получить хотя бы даже часть оригинального сообщения. В GoVPN в качестве AONT используется OAEP (есть не одна работа доказывающая что OAEP является AONT-ом отличным) с 128-бит рандомной строчкой дополнительной. И chaffing применяется не ко всему пакету, а только к 128-бит его.