Одна из наиболее острых проблем в информационных технологиях –
это защита данных от разрушения. Как говорил один мудрый человек:
«энтропия слепа, но терпелива»... «Энтропия» не имеет собственной
воли и не разрушает целенаправленно конкретный порядок в конкре-
тной структуре, но у нее есть единственная цель – глобальный хаос, и
она случайным образом, вслепую, наносит свои удары по любым упоря-
доченным структурам, делая из них бесформенную бессмыслицу. «Энт-
ропия» вечна, фундаментальна и непобедима. Сколько не восстанавли-
вай порядок, она снова терпеливо стремится везде достичь беспорядка.
Чтобы противостоять «энтропии» необходимо непрерывно затрачивать
энергию, проявлять изобретательность и применять спец. технологии.
В течение большей части второй половины прошлого века математики
и специалисты по аппаратным и программным средствам ЭВМ и пробле-
мам передачи данных упорно бились над тем, чтобы выработать техно-
логию, позволяющую кодировать информацию таким образом, чтобы
при разрушении случайно выбранных ее блоков, эти блоки можно было
восстановить. После того, как была заложена математическая основа
для кодирования, разработаны эффективные алгоритмы кодирования и
декодирования, технология ближе к концу прошлого века стала более
или менее устоявшейся, и, честно говоря, вообще превратилась в шир-
потреб, которым пользуются все повседневно и даже не подозревают
о ее существовании. Технология применяется при приеме / передаче
данных в сетях и при чтении / записи данных на большинстве носите-
лей информации, «на лету» обнаруживая и по возможности исправляя
искаженные блоки данных.
И здесь, если пользователям и домохозяйкам можно простить их невеже-
ственно-потребительское отношение к высоким технологиям, то уж ува-
жающие себя специалисты по системным и сетевым технологиям обяза-
ны быть знакомы с тонкостями и деталями технологии. Ну, а уж уважа-
ющие себя программисты, как в "подтверждение" своей высокой квали-
фикации, должны иметь свои собственные корректно работающие про-
граммные реализации тех непростых алгоритмов, которые используются
в этой технологии.
К сожалению, в большинстве ВУЗ коды Рида-Соломона изучают поверх-
ностно, «галопом по Европе», в рамках курса «Передачи информации»,
и из-за сложности понимания используемой в технологии нестандартной
алгебры конечных полей, которая редко где изучается в рамках обще-
образовательной программы, технология остается неосвоенной. Здесь
нужно сказать, что сами преподаватели зачастую недостаточно глубо-
ко разбираются в технологии, поскольку для них – это лишь небольшая
часть их курса, или же излишне углубляются в теорию в ущерб аспектов
практической реализации, и делая тем самым, технологию для студента
«скучной и непонятной». Я уж не говорю о том, что далеко не все спе-
циалисты по системным и сетевым технологиям имеют профильное IT-
образование, и им вообще это незнакомо.
Также, к сожалению, большинство литературы и статей по кодам Рида-
Соломона либо слишком перегружены теоремами и доказательствами и
требуют высокой математической подготовки для понимания материала
либо же наоборот упрощены до абсурда так, что ключевые алгоритмы
объясняются не на схемах алгоритмов, а прямо примере листингов кодов
Си или Паскаля, что никуда не годится с академической точки зрения...
Поэтому, я попытался разработать доступный для понимания материал
(вполне достаточно знаний алгебры на уровне средней школы) с особым
акцентом на саму суть технологии и на детальное описание алгоритмов
кодирования и декодирования, чтобы любой мог "с ходу" разобраться и
запрограммировать их. Кроме того, в материале в каждом подразделе
имеется достаточно количество наглядных примеров.
http://icc.mpei.ru/lang/rus/docs/articles/rscmath.pdf
(Для просмотра требуется программа Adobe Acrobat Reader)
Практическую ценность кодов Рида-Соломона трудно переоценить. С
помощью них можно не только обнаруживать, но и частично восстана-
вливать информацию практически «из пепла». К сожалению коды Рида-
Соломона у большинства специалистов ассоциируются только с помехо-
устойчивым кодированием в каналах передачи данных. В действитель-
ности, их можно применять везде, где необходимо предотвратить, как
неумышленную, так и неумышленную модификацию данных:
- Обнаружение и коррекция неумышленных ошибок (помех)
*при пере-даче данных по каналам связи, ошибок в данных
*на носителях информации при их сбое или отказе.
- Обнаружение и коррекция (при поддержке системы открытых и *
*закрытых ключей) умышленной модификации информационных *
*сообщений с целью дезинформации.
- Обнаружение и коррекция умышленной модификации информации
*об авторе или исполняемого кода с целью «взлома» программного *
*обеспечения.
- Защита программного обеспечения или данных от копирования с *
*лицензионного диска, при использовании специальных «настоящих»
*и «ложных» ошибок в секторах.
- Восстановление одного или нескольких томов многотомного архива,
*искаженных или вообще потерянных при загрузке из сети. Аналогич-
*но, восстановление данных одного или нескольких дисков в многодис-
*ковых системах RAID.
- Обнаружение и коррекция ошибок в цепях ДНК в генной инженерии.
P.S. Как известно, специфика российского рынка IT такова, что бытует
мнение, что в IT «нечего считать» и математика вообще не при делах.
Программисты что-то разрабатывают, сетевые специалисты что-то ад-
министрируют, дилеры чем-то торгуют, ну а фундаментальные теорети-
ческие основы – это что-то вроде балласта, "лежит в мозгу" и занимает
только место. Что касается хакеров, то они в большинстве своем увере-
ны, что официальная техническая документация и добытые бессонными
ночами неофициальные детали, а также исходные либо дизассемблиро-
ванные листинги программ – панацея на все случае жизни.
Однако, даже такие титаны хакерской мысли, как Крис Касперски, при-
знают, что когда дело касается защиты информации от умышленного
или неумышленного искажения – без математики никуда. Без нее непо-
нятные манипуляции с битыми и байтами в исходных кодах программы
вам будут казаться «чистым шаманством», и никогда не поймете истин-
ного смысла всех этих манипуляций. А, как известно, «шаманский взг-
ляд» на вещи – это всегда следствие невежества.