Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практическая криптография алгоритмы и их программирование

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
Глава 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, Com­munications 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 Transacti­ons 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 algo­rithm. 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 arith­metic coding. In Proceedings of the 1991 IEEE Data Compression Conference, J. A. Sto­rer 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 in­teger 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. Pro­cess. 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. Com­put. 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 arithme­tic 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. Com­mun. 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 co­des. 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-co­der 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. The­or. 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 Docu­ments 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 pro­perty 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 trea­ties 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 proper­ty; 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.
-
-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]