Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Практическая криптография алгоритмы и их программирование
.pdf
Глава 6. Кpиптогpафическое сжатие 211
X:\cryptobook\text\data>type text.txt
Hello, this is the test string repeated 10 times.
Hello, this is the test string repeated 10 times.
Hello, this is the test string repeated 10 times.
Hello, this is the test string repeated 10 times.
Hello, this is the test string repeated 10 times.
Hello, this is the test string repeated 10 times.
Hello, this is the test string repeated 10 times.
Hello, this is the test string repeated 10 times.
Hello, this is the test string repeated 10 times.
Hello, this is the test string repeated 10 times.
X:\cryptobook\text\src>dir
Том в устройстве X имеет метку SECRETDISK
Серийный номер тома: 242F-24DA
Содержимое папки X:\cryptobook\text\src
26.02.2002 00:53 <DIR> .
26.02.2002 00:53 <DIR> ..
13.12.2001 10:03 3 507 lucifer.cpp
28.07.2001 13:54 8 300 ahuffman.cpp
28.07.2001 14:04 3 893 lz77.cpp
05.03.2002 11:42 5 159 aac.cpp
05.03.2002 11:56 427 bitfile.h
05.03.2002 11:56 1 528 bitfile.cpp
17.03.2002 01:36 302 text.acc
13 файлов 125 368 байтов
2 папок 151 248 896 байтов свободно
Попробуем применить обычный адаптивный алгоритм арифметического сжатия и нашу новую криптографическую разработку к блоку текста. После применения арифметического сжатия исходный файл приобрел размер в 302 байта, что
составляет 3/5 от исходного объема (см. листинг 6.12). После применения к данным алгоритма криптографического сжатия их объем уменьшился до 408 байтов,
что, конечно, является не столь впечатляющим результатом. Тем не менее результат достаточно хорош, и, пожонглировав различными способами модификации
алгоритма, длиной ключа и прочими параметрами рассмотренного алгоритма,
можно добиться весьма неплохих результатов. Осталось лишь обратиться к читателю с просьбой оценить криптографическую стойкость предложенного метода.
Список литературы
1. D. Huffman, A method for the construction of minimum redundancy codes, Proc.
of the IRE 40 (1952) 1098—1101.
2. Д. Мастрюков, Алгоритмы сжатия информации. Арифметическое кодирова-
ние, М: Московская Правда, Монитор ¹ 1, 1994.
3. А. В. Аграновский, А. В. Балакин, Р. А. Хади, Классические шифры и методы
их криптоанализа, М: Машиностроение, Информационные технологии ¹ 10, 2001.
стр. 40—46.

212 Глава 6. Кpиптогpафическое сжатие
4. I.H. Witten, R.M. Neal, J.G. Cleary, Arithmetic coding for data compression, Communications of the ACM, June 1987 Volume 30, Number 6, pp. 520—540.
5. A. Moffat, R. M. Neal, I. H. Witten, Arithmetic Coding Revisited, ACM Transactions on Information Systems, Vol. 16, No. 3, July 1998, pp. 256—294.
6. J. Daemen, R. Govaerts, Block Ciphers Based on Modular Arithmetic, Proceedings
of the 3rd Symposium on State and Progress of Research in Cryptography, 1993, pp.
80-89.
7. E. Biham, New Types of Cryptanalytic Attacks Using Related Keys, Advances in
Cryptology, EUROCRYPT '93, Springer-Verlag, 1994, pp. 398—409.
8. E. Biham, A. Shamir, Differential Cryptanalysis of the Data Encryption Standard,
Springer-Verlag, 1993, pp. 187—199.
9. D. Huffman, A method for the construction of minimum redundancy codes. In the
Proceedings of the Institute of Radio Engineers 40 (1951), pp. 1098—1101.
10. D. Knuth, Dynamic Huffman coding. J. Algorithms 6 (1985), 163—180.
11. J. S. Vitter, Design and analysis of dynamic Huffman codes. J. ACM 34, 4 (Oct.
1987), 825—845.
12. Bell TC, Cleary JG, and Witten, I. H. 1990. Text Compression. Prentice-Hall,
Inc., Upper Saddle River, NJ.
13. Bentley J. L., Sleator D.D., 1986. A locally adaptive data compression scheme.
Commun. ACM 29, 4 (Apr.), 320—330.
14. Bookstein A, Klein S. Is Huffman coding dead?. Computing 50, 4, 279—296.
15. Burrows W, Wheeler D, 1994. A block-sorting lossless data compression algorithm. Tech. Rep. 124. Digital Equipment Corp., Maynard, MA.
16. Capocelli R, De Santis A, New bounds on the redundancy of Huffman codes.
IEEE Trans. Inf. Theor. IT-37, 1095—1104.
17. Chevion D., Karnin E. High efficiency, multiplication free approximation of arithmetic coding. In Proceedings of the 1991 IEEE Data Compression Conference, J. A. Storer and J. Reif, Eds. IEEE Computer Society Press, Los Alamitos, CA, 43—52.
18. Cleary J., Witten I. Data compression using adaptive coding and partial string
matching. IEEE Trans. Commun. COM-32, 396—402.
19. Cormack G., Horspool R., Algorithms for adaptive Huffman codes. Inf. Process.
Lett. 18, 3 (Mar.), 159—165.
20. Cormack G., Horspool R., Data compression using dynamic Markov modelling.
Comput. J. 30, 6 (Dec.), 541—550.
21. Cormen T., Leiserson C., Introduction to Algorithms. MIT Press, Cambridge,
MA.
22. Fenwick P., A new data structure for cumulative frequency tables. Softw. Pract.
Exper. 24, 3 (Mar.), 327—336.
23. Feygin G. Gulak P., Minimizing excess code length and VLSI complexity in the
multiplication free approximation of arithmetic coding. Inf. Process. Manage. 30, 6,
805—816.
24. Gallager R. Variations on a theme by Huffman. IEEE Trans. Inf. Theor. IT-24,6
(Nov.), 668—674.
25. Gallager R. Van Voorhis D. Optimal source codes for geometrically distributed integer alphabets. IEEE Trans. Inf. Theor. IT-21, 2 (Mar.), 228—230.
26. Golomb S. Run-length encodings. IEEE Trans. Inf. Theor. IT-12, 3 (July),
399—401.

Глава 6. Кpиптогpафическое сжатие 213
27. Hamaker D. Compress and compact discussed further. Commun. ACM 31, 9
(Sept.), 1139—1140.
28. Harman D. Overview of the second text retrieval conference (TREC-2). Inf. Process. Manage. 31, 3 (May—June), 271—289.
29. Horsppol R., Cormack G. Constructing word-based text compression algorithms.
In Proceedings of the 1992 IEEE Data Compression Conference, J. Storer and M.Cohn,
Eds. IEEE Computer Society Press, Los Alamitos, CA, 62—71.
30. Howard P. G., Vitter, J. S. Analysis of arithmetic coding for data compression.
Inf. Process. Manage. 28, 6 (Nov.—Dec.), 749—763.
31. Howard P. G., Vitter, J. S. Arithmetic coding for data compression. Proc. IEEE
82, 6, 857—865.
32. Huffman D, A method for the construction of minimum-redundancy codes. Proc.
Inst. Radio Eng. 40, 9 (Sept.), 1098—1101.
33. Jiang, J. Novel design of arithmetic coding for data compression. IEE Proc. Comput. Dig. Tech. 142, 6 (Nov.), 419—424.
34. Jones, D. W. Application of splay trees to data compression. Commun. ACM 31,8
(Aug.), 996—1007.
35. Langdon, G. G. 1984. An introduction to arithmetic coding. IBM J. Res. Dev. 28,
2 (Mar.), 135—149. ACM Transactions on Information Systems, Vol. 16, No. 3, July
1998.
36. Langdon,G.G., Rissanen, J. Compresson of black-and-white images with arithmetic coding. IEEE Trans. Commun. COM-29, 858—867.
37. Moffat, A. Word-based text compression. Softw. Pract. Exper. 19, 2 (Feb.),
185-198.
38. Moffat, A. Implementing the PPM data compression scheme. IEEE Trans. Commun. 38, 11 (Nov.), 1917—1921.
39. Moffat, A. Linear time adaptive arithmetic coding. IEEE Trans. Inf. Theor. 36,2
(Mar.), 401—406.
40. Moffat, A. Critique of «Novel design of arithmetic coding for data compression».
IEEE Proc. Comput. Digit. Tech.
41. Moffat,A. Turpin, A. On the implementaiton of minimum-redundancy prefix codes. IEEE Trans. Commun. 45, 10 (Oct.), 1200—1207.
42. Moffat, A. Bell, T. C. An empirical evaluation of coding methods for multi-symbol
alphabets. Inf. Process. Manage. 30, 6, 791—804.
43. Pennebraker W.B., Mitchell J.L., An overview of the basic prinicples of the Q-coder adaptive binary arithmetic coder. IBM J. Res. Dev. 32,6 (Nov.), 717—726.
44. Rissanen, J. Generalised Kraft inequality and arithmetic coding. IBM J. Res. Dev.
20, 198—203.
45. Rissanen J., Langdon, G. G. Arithmetic coding. IBM J. Res. Dev. 23, 2 (Mar.),
149—162.
46. Rissanen J., Langdon, G. G. Universal modeling and coding. IEEE Trans. Inf. Theor. IT-27, 1 (Jan.), 12—23.
47. Rissanen J., MOHIUDDIN, K. M. A multiplication-free multialphabet arithmetic
code. IEEE Trans. Comm. 37, 2 (Feb.), 93—98.
48. Rubin, F. Arithmetic stream coding using fixed precision registers. IEEE Trans.
Inf. Theor. IT-25, 6 (Nov.), 672—675.

214 Глава 6. Кpиптогpафическое сжатие
49. Schindler, M. A fast renormalisation for arithmetic coding. In Proceedings of the
1998
50. IEEE Data Compression Conference (Snowbird, UT), J. A. Storer and M. Cohn,
Eds. IEEE Computer Society Press, Los Alamitos, CA, 572.
51. Witten I.H., Bell T. C. The zero frequency problem: Estimating the probabilities
of novel events in adaptive text compression. IEEE Trans. Inf. Theor. 37, 4 (July),
1085—1094.
52. Witten,I.H.,Moffat, A., Managing Gigabytes: Compressing and Indexing Documents and Images. Van Nostrand Reinhold Co., New York, NY.
53. J. Ziv, A. LEMPEL, A universal algorithm for sequential data compression. IEEE
Trans. Inf. Theor. IT-23, 3, 337—343.

Глава 7
Прикладные задачи шифрования
For generations, people have defined and protected their property and their privacy using locks, fences, signatures, seals,
account books, and meters. These have been supported by a
whole host of social constructs ranging from international treaties through national laws to manners and customs. This is
changing, and quickly. Most records are now electronic, from
bank accounts to registers of company shares and real property; and transactions are increasingly electronic, as shopping
moves to the Internet. Just as important, but less obvious, are
the many everyday systems that have been quietly automated.
R.Anderson.
Security Engineering: A Guide to
Dependable Distributed Systems
На сегодняшний день уже трудно представить коммерческие сетевые приложения, не обеспечивающие хотя бы элементарных механизмов защиты передаваемых данных. Действительно, со времен незащищенных сетей кампусов утекло
много времени и теперь, когда большие корпоративные сети приобретают открытую архитектуру и объединяются в огромный конгломерат зачастую абсолютно
различных (с точки зрения организации и управления) сетей, перед разработчиками сетевых приложений и администраторами сетей стоят весьма актуальные
вопросы защиты информации. Сложность задач обеспечения информационной безопасности все время возрастает, что заставляет обращаться к вопросу защиты
информации уже не только как к вопросу об обеспечении защиты передаваемых
данных, но и к вопросу защищенности интрасетей как вычислительных комплексов в целом. Такой подход подразумевает наличие комплекса согласованных между собой мер по обеспечению слаженной работы систем информационной защиты
сети, который позволит противостоять уже не только известным видам атак извне
сети, но и любым другим действиям злоумышленников.
Одну из первостепенных ролей здесь играет криптография. Рассматривая открытые системы и Интернет с точки зрения защиты информации, можно выделить следующие основные уровни информационной безопасности:
•
рабочие терминалы, с которых осуществляется непосредственный доступ
к интрасети, использование ее ресурсов, доступ к управлению интрасетью
ит.д.;
•
локальная сеть как группа компьютеров, объединенная по какому-либо признаку в соответствии с топологией сети;
•
межсетевые экраны и межсетевое взаимодействие.
Каждый из перечисленных пунктов требует к себе пристального внимания
при разработке систем защиты информации. Неверно выбранная модель системы
защиты или малейшая несогласованность методов защиты одного уровня с оста
-

216 Глава 7. Прикладные задачи шифрования
льными могут повлечь за собой появление «узких» мест в системе защиты, как,
например, ошибочное использование криптографических средств защиты информации. В результате даже криптостойкие средства могут быть подвергнуты
успешной атаке со стороны злоумышленника. Ярким примером таких ошибок является, например, повторное использование паролей и вычисленных псевдослучайных последовательностей.
Такие логические ошибки организации защиты с помощью криптосредств
обычно обнаруживаются уже после того, как посредством их использования проиcходит нарушение установленного режима безопасности. В этом контексте логические ловушки — самые трудные и содержатся в области, охватываемой последним из перечисленных выше пунктов. Проектирование и реализация модели защиты информации на уровне межсетевого взаимодействия является технически
наиболее сложным процессом.
Пример одного из таких тонких мест в проектировании средств криптографической защиты информации является простейший вопрос о дополнении данных до
размера, кратного размеру блока используемого шифра. Дело в том, конфиденциальные данные могут иметь произвольный размер, а блочные средства шифрования для зашифрования информации вообще говоря, используют блоки данных и
довольно больших размеров (обычно 64, 128 и более битов). Естественный вопрос, который возникает при шифровании: как дополнять и дополнять ли вообще
защищаемые данные до размера, кратного размеру блока шифра?
Если всегда заполнять неиспользуемый остаток блок данных нулями (по
умолчанию) или единичным битом и остальными нулевыми, то можно столкнуться с проблемой, когда криптоаналитик воспользуется этой информацией и получит дополнительную пару (открытый текст, шифротекст). Возможный способ разрешения этой проблемы — заполнение недостающих битов значением, которое
является инверсией значения последнего бита данных. В этом случае криптоаналитик будет вынужден еще и гадать по поводу того, какой бит данных был последним — нулевой или единичный. Еще один способ заключается в вычислении
свертки или криптографического хэша от части или всего объема данных и заполнение недостающих битов в конце блока битами получившегося хэша. Это наиболее эффективный вариант с точки зрения стойкости, но наиболее медленный с
точки зрения скорости обработки информации. Обычно недостающие биты заполняют случайными или псевдослучайными значениями, а последние несколько битов (три или четыре) являются значением реальной длины данных в этом последнем блоке.
Использование однократного гаммирования
С точки зрения теории криптоанализа метод шифрования однократной случайной равновероятной гаммой той же длины, что и открытый текст, является невскрываемым (далее для краткости авторы будут употреблять термин «однократное гаммирование», держа в уме все вышесказанное). Обоснование, которое привел Шеннон, основываясь на введенном им же понятии информации, не дает

Глава 7. Прикладные задачи шифрования 217
возможности усомниться в этом — из-за равных априорных вероятностей криптоаналитик не может сказать о дешифровке, верна она или нет. Кроме того, даже
раскрыв часть сообщения, дешифровщик не сможет хоть сколько-нибудь поправить положение — информация о вскрытом участке гаммы не дает информации
об остальных ее частях.
Логично было бы предположить, что для организации канала конфиденциальной связи в открытых сетях следовало бы воспользоваться именно схемой шифрования однократного гаммирования. Ее преимущества вроде бы очевидны. Есть,
правда, один весомый недостаток, который сразу бросается в глаза, — это необходимость иметь огромные объемы данных, которые можно было бы использовать
в качестве гаммы. Для этих целей обычно пользуются датчиками настоящих случайных чисел (в западной литературе аналогичный термин носит название True
Random Number Generator или TRNG). Это уже аппаратные устройства, которые
по запросу выдают набор случайных чисел, генерируя их с помощью очень большого количества физических параметров окружающей среды. Статистические характеристики таких наборов весьма близки к характеристикам «белого шума»,
что означает равновероятное появление каждого следующего числа в наборе.
А это, в свою очередь, означает для нас действительно равновероятную гамму
38
.
К сожалению, для того чтобы организовать конфиденциальный канал передачи данных, потребуется записать довольно большое количество этих данных и об-
39
меняться ими по секретному каналу
. Уже одно это условие делает однократное
гаммирование во многих случаях неприемлемым. В самом деле, зачем передавать
что-то по открытому незащищенному каналу, когда есть возможность передать
все это по секретному защищенному? И хотя на простой вопрос, является ли метод использования однократной случайной равновероятной гаммы стойким к
взлому, существует положительный ответ, его использование может оказаться
попросту невозможным.
Да и к тому же метод однократного гаммирования криптостоек только в определенных, можно даже сказать, тепличных условиях. Что же касается общего
случая, то все не так просто.
Показать слабости шифра однократного гаммирования можно, говоря наукообразно, с помощью примера или, что называется, «на пальцах». Представим следующую ситуацию.
Допустим, в тайной деловой переписке используется метод однократного наложения гаммы на открытый текст. Напомним, что «наложение» гаммы не что
иное, как сложение ее элементов с элементами открытого текста по некоторому
38
Многие известные фирмы занимаются производством таких устройств. В их число входит даже IBM, которая имеет свою собственную лабораторию, исследующую статистические
свойства подобных генераторов случайных чисел. В конце 2000 года на рынок компьютерных
комплектующих поступили экспериментальные серии материнских плат от IBM, которые дополнительно содержали запатентованный IBM генератор случайных чисел. Его свойства хоро
шо задокументированы, а с выборками больших объемов были проведены масштабные стати
стические тесты.
39
Например записав данные на DVD-диск и послав его специальным курьером с охраной.
Хотя в этом случае нет гарантии того, что этого курьера не перехватят и не подкупят.
-
-

218 Глава 7. Прикладные задачи шифрования
фиксированному модулю. Значение модуля представляет собой известную часть
алгоритма шифрования.
Чтобы дальнейшие рассуждения были как можно более понятны, рассмотрим
следующее свойство шифротекста. Предположим, что мы знаем часть гаммы, которая была использована для зашифрования текста «Приветствую, мой ненаглядный сосед!» в формате ASCII, кодировка WIN-1251 (см. листинг 7.1).
Листинг 7.1
Приветствую, _мой
CF F0 E8 E2 E5 F2 F1 F2 E2 F3 FE 2C 20 EC EE E9
_ненаглядный_сос
20 ED E5 ED E0 E3 EB FF E4 ED FB E9 20 F1 EE F1
åä!
E5 E4 21
Верхние строки в этих трех парах строк соответствуют символам открытого
текста, а нижние строки представляют собой соответствующие шестнадцатеричные их обозначения.
Для зашифрования была использована гамма из листинга 7.2 (значения чисел даны тоже в шестнадцатеричном формате).
Листинг 7.2
BD 8E 1E 72 9C 26 43 AD E7 8B 89 7C 91 06 DE E2
2B DC F9 C9 E1 6D BB 91 43 68 F3 6D 85 2F 0A 74
0F AA 7A 8D A1 8C F8 4A 5D 52 7B BB 7C 01 25 93
Пусть криптоаналитику стали доступны ее первые десять байтов и он также
знает, что было использовано наложение гаммы как сложение по модулю два
40
В языке Си существует общеизвестный оператор «^», который ее выполняет. Алгоритм шифрования на языке Си описывается короткой и простой функцией (см.
листинг 7.3).
Листинг 7.3
char text[1024] = "Приветствую, мой ненаглядный сосед!";
char gamma[1024] = {
0xBD, 0x8E, 0x1E, 0x72, 0x9C, 0x26, 0x43, 0xAD, 0xE7, 0x8B, 0x89,
0x7C, 0x91, 0x06, 0xDE, 0xE2, 0x2B, 0xDC, 0xF9, 0xC9, 0xE1, 0x6D,
0xBB, 0x91, 0x43, 0x68, 0xF3, 0x6D, 0x85, 0x2F, 0x0A, 0x74, 0x0F,
0xAA, 0x7A, 0x8D, 0xA1, 0x8C, 0xF8, 0x4A, 0x5D, 0x52, 0x7B, 0xBB,
0x7C, 0x01, 0x25, 0x93
};
for(inti=0;i<strlen(text); i++)
text[i] ^= gamma[i];
40
Сложение по модулю 2 представляет собой сложение в поле характеристики два, в про
стонародье именуемое операцией XOR или «Исключающее ИЛИ».
.
-

Глава 7. Прикладные задачи шифрования 219
А ее результат выполнения, то есть зашифрованный текст, выглядит, как показано в листинге 7.4.
Листинг 7.4
72 7E F6 90 79 D4 B2 5F 05 78 77 50 B1 EA 30 0B
0B 31 1C 24 01 8E 50 6E A7 85 08 84 A5 DE E4 85
EA 4A 5B
Поскольку криптоаналитику известны первые десять байтов гаммы, он может
дешифровать первые десять байтов шифротекста с помощью все той же программы из листинга 7.3. Но кроме этого, он может использовать известные ему байты
гаммы, чтобы подделать начало сообщения, заменив десять байтов оригинального
шифротекста на свои собственные. Для этого он может выбрать поддельное сообщение, например «До свидания». Затем зашифровать его гаммированием и поместить в начало шифротекста вместо зашифрованной части исходного сообщения — слова «Приветствую». В этом случае гамма будет выглядеть так, как в листинге 7.5 (жирным выделен замещенный участок).
Листинг 7.5
79 60 3E 83 7E CE A7 4D 0A 63 76 50 B1 EA 30 0B
0B 31 1C 24 01 8E 50 6E A7 85 08 84 A5 DE E4 85
EA 4A 5B
Получатель, расшифровав сообщение, увидит фразу «До свидания, мой ненаглядный сосед!», а не оригинальную «Приветствую, мой ненаглядный сосед!».
При этом у него не будет никакой возможности проверить, действительно ли это
написал отправитель или кто-то другой. Так что, скорее всего, он поверит присланному сообщению.
Вернемся теперь немного назад и попробуем проанализировать зашифрованный однократной гаммой документ, содержащий что-либо более существенное.
К примеру, коммерческую тайну. Поставим себя на место криптоаналитика, задачей которого стало вскрытие перехваченного зашифрованного документа.
Этот документ вполне может быть контрактом на оказание услуг в сфере защиты информации конкурирующей фирмы «Рога и Копыта». Как и большинство
деловых бумаг, подобный контракт имеет фиксированный бумажный формуляр
(примитивный вариант изображен в листинге 7.6), в который попросту вписываются нужные значения полей — фамилии, суммы и ставятся подписи. При переводе в электронный вид этот документ принимает вполне определенную фиксированную электронную форму в формате какого-нибудь текстового процессора.
Листинг 7.6
ДОГОВОРN____
Я, ___________________, именуемый в дальнейшем...
...заключаю договор на сумму _______ ...
Подпись ЗАКАЗЧИКА Подпись ИСПОЛНИТЕЛЯ

220 Глава 7. Прикладные задачи шифрования
Криптоаналитик наверняка легко может получить копию этого электронного
документа. Он может сделать это, например, под предлогом заключения договора
о тестировании компьютеров на предмет возможной утечки информации. Исследуя эту копию, он узнает тип и электронный формат документа, который у него
уже есть в зашифрованном виде. Таким образом, он становится обладателем так
называемой вторичной информации о шифре.
С высокой долей вероятности может оказаться, что к нему в руки попал документ, например, в формате Microsoft Word. Этот формат содержит очень много
избыточной информации, которая сама по себе может быть полезна для криптоанализа (подробнее об этом см. раздел «Защита текстовых документов Microsoft
Word»).
Самое главное в любом формате — перечень значений различных полей.
Многие поля формата текстовых файлов Microsoft Word (MSWord) просто заполняются фиксированными значениями. Тогда, по сути, криптоаналитик сразу же
получает довольно много пар «открытый текст — зашифрованный текст», поскольку многие участки того файла, который находится в его руках, либо вовсе фиксированы, либо легко угадываются.
Это наверняка дало бы криптоаналитику множество преимуществ, если бы
документ был зашифрован каким-нибудь блочным шифром, но, к сожалению, совершенно бесполезно в случае однократного использования равновероятной
гаммы.
Анализируя шифротекст, мы можем сложить известные нам значения полей
формата MSWord с зашифрованным текстом и получить участки гаммы. Но, к сожалению, эта информация ничем не поможет нам в поиске возможных значений
для остальных участков гаммы, поскольку они вырабатывались независимо друг
от друга и знание одной части не дает ни капли информации о других частях.
С другой стороны, получив текстовый формуляр в электронном виде и сравнивая его с зашифрованным текстом, мы можем с некоторой уверенностью указать на местоположение тех или иных элементов текста в зашифрованном документе. То есть, имея стандартный формуляр, мы можем опираться не только на
легко угадываемые значения полей формата MSWord, но и уже на текстовые сообщения, которые хранятся в файле в этом формате.
Посмотрим на добытый криптоаналитиком формуляр типового документа.
Для этого можно использовать HEX-редактор или даже быстренько набросать
программку вывода содержимого файла с помощью функции print_hex() (см. главу «Отступление для программистов»).
По смещению 500h (в десятичном эквиваленте 500h = 1280) байтов в содержимом файла можно найти отлично видимый невооруженным взглядом текст уже
знакомого документа, приведенный выше
41
(см. листинг 7.7).
41
В последних версиях формата документов Microsoft Word текст записывается в формате
Unicode, то есть по два байта на символ; к счастью, и эта трудность достаточно просто преодо
левается использованием соответствующего средства для просмотра и редактирования доку
ментов в формате Unicode, например, встроенного в командную оболочку менеджера файлов
Far.
-
-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
