kiltum (kiltum) wrote,
kiltum
kiltum

Сегодня утром шел и в мой воспаленный мозг пришла идея. Сначала немного истории. Как известно, потоковое шифрование - одно из самых вредных. Алгоритму нужна одновременно и скорость и невскрываемость. С другой стороны, известно, что имея поток битов А, мы засвегда на него можем наложить поток В. И пока поток В не будет повторяться или использовать повторяющиеся комбинации, результирующий поток невскрываем даже теоретически. Алгоритм простой и примитивный. Однако откуда взять поток B?

Один способ - заранее обменяться. Ну там заранее сидюк второй стороне дать или договориться, что потоком будет текст "войны и мира", размещенный на lib.ru. Это приемлимо, если надо небольшие объемы передать.

Второй способ - использовать генератор псевдослучайных последовательностей. То есть на вход генератору подаем какую-либо стартовую последовательность и он, сколько бы его не запускали с этой последовательностью, выдаст всегда один и тот же поток битов. Самый лучший вариант, за одним исключением - очень тяжело добиться "белого шума". В одних случаях (например, игра Elite на спектруме - там с его помощью генерировались галактики и имена планет) это нафиг не надо, а в других жуть как надо.

Вот относительно второго способа и возникла идея: рассматриваем поток В как 8{16,32,64} битовых каналов, объединенных в байты. И в каждом канале запускаем какую-нибудь периодическую функцию типа f(t)=sin(t/y+x), где t - "время", а y и х - коэффициенты, определяющие частоту и смещение. И устраиваем простенький АЦП, который передевет "аналоговый" поток в последовательность битов.

Ну и для каждого потока коэффициенты x и y брать из пароля, заранее подготовленной последовательности и прочего юзер-зависимого окружения ...

Баян, да?
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 11 comments