SEAL (криптографический алгоритм)

Поделись знанием:
Перейти к: навигация, поиск

SEAL (англ. Software-optimized Encryption Algorithm, программно-оптимизированный алгоритм шифрования) — симметричный поточный алгоритм шифрования данных, оптимизированный для программной реализации.

Разработан в IBM Филом Рогэвеем (англ.) (англ. Phil Rogaway) и Доном Копперсмитом (англ. Don Coppersmith) в 1993 году. Алгоритм оптимизирован и рекомендован для 32-битных процессоров. Для работы ему требуется кэш-память на несколько килобайт и восемь 32-битовых регистров. Скорость шифрования — примерно 4 машинных такта на байт текста. Для кодирования и декодирования используется 160-битный ключ. Чтобы избежать нежелательной потери скорости по причине медленных операций обработки ключа, SEAL предварительно выполняет с ним несколько преобразований, получая в результате три таблицы определенного размера. Непосредственно для шифрования и расшифрования текста вместо самого ключа используются эти таблицы.

Алгоритм считается очень надёжным, очень быстрым[1] и защищён патентом США № 5454039[2] с декабря 1993 года.






История

В 1991 году Ральф Меркл (англ. [www.merkle.com/ Ralph C. Merkle]) описал рентабельность программно-ориентированных шифров. По его мнению, наиболее эффективными из них были Khufu, FEAL и RC4. Однако постоянно увеличивающиеся потребности клиентов в надежной криптографии требовали поиска новых и доработки старых решений.

Летом 1992 года началась разработка первой версии нового программно-оптимизированного алгоритма SEAL 1.0. Разработчики взяли основные идеи и принцип работы из блочного шифра Ральфа Меркла (англ. [www.merkle.com/ Ralph C. Merkle]) Khufu, который показался им самым совершенным на тот момент. Они решили добиться лучших характеристик проекта (в основном скорости), сузив круг аппаратуры, на которой возможна его реализация. Выбор был сделан в пользу 32-битных машин минимум с восемью регистрами общего назначения и кэшем не менее 8 Кбайт. В марте 1993 года было принято решение создать блочный шифр, но структура из семейства псевдослучайных функций, разработанная к октябрю того же года, работала быстрее, что склонило разработчиков в к поточному шифрованию. Эта структура состояла из четырех регистров, каждый из которых изменял своего «соседа» в зависимости от таблицы, полученной из ключа. После некоторого количества таких модификаций значения регистров добавляются в ключевую последовательность, которая растет с каждой итерацией до тех пор, пока не достигнет определенной длины. При разработке почти все внимание уделялось внутреннему циклу алгоритма, так как процедуру инициализации регистров и метод генерации таблиц из ключа оказывали незначительное влияние на его защищенность. В окончательном виде проект SEAL 1.0 появился только в декабре 1993 года.

В 1996 году Helena Handschuh (англ.) и Henri Gilbert (англ.) описали атаки на упрощенную версию SEAL 1.0 и на сам SEAL 1.0. Им потребовалось <math>2^{30}</math> текстов, каждый длиной в четыре 32-битных слова, чтобы найти зависимость псевдослучайной функции от ключа. В результате, в следующих версиях алгоритма SEAL 3.0 и SEAL 2.0 были сделаны некоторые доработки и изменения. Например, в версии 1.0 каждая итерация с ключевой последовательностью завершалась модификацией только двух регистров, а в версии 3.0 — модифицировались все четыре. Еще SEAL 3.0 и SEAL 2.0 использовали для генерации таблиц алгоритм SHA-1 (англ. Secure Hash Algorithm-1) вместо первоначального SHA, что сделало их более устойчивыми к криптоанализу.

Описание

При описании алгоритма используются следующие операции и обозначения:

Создание таблиц шифрования из ключа

Чтобы избежать потери скорости шифрования на медленных операциях алгоритм использует три таблицы: R, S и T. Эти таблицы вычисляются с помощью процедуры из алгоритма SHA-1 и зависят только от ключа. Заполнение данных таблиц можно описать с помощью функции G, которая из 160-битной строки <math>a</math> и 32-битного числа <math>i</math> возвращает 160-битное значение <math>G_a(i)</math>.

Введем следующие функции и переменные в зависимости от индекса <math>t</math>:

  • для <math>0 \le t \le 19</math> установим <math>K_t = \mbox{0x}5a827999</math> и <math>f_t (B, C, D) = (B \And C) \lor (B \And D);</math>
  • для <math>20 \le t \le 39</math> установим <math>K_t = \mbox{0x}6ed9eba1</math> и <math>f_t (B, C, D) = B \oplus C \oplus D;</math>
  • для <math>40 \le t \le 59</math> установим <math>K_t = \mbox{0x}8f1bbcdc</math> и <math>f_t (B, C, D) = (B \And C) \lor (B \And D) \lor (C \And D);</math>
  • для <math>60 \le t \le 79</math> установим <math>K_t = \mbox{0x}ca62c1d6</math> и <math>f_t (B, C, D) = B \oplus C \oplus D.</math>

Затем 160-битная строка <math>a</math> разбивается на пять 32-битных слов так, что <math>a = H_0 \lVert H_1 \lVert H_2 \lVert H_3 \lVert H_4.</math>

Также создается шестнадцать 32-битных слов <math>W_0 = i,~~W_1 = W_2 =...= W_{15} = 0^{32}.</math>

Затем выполняются финальные вычисления:

  1. <math>\mbox{For}~t = 16~\mbox{to}~79~\mbox{do}~W_t = (W_{t-3} \oplus W_{t-8} \oplus W_{t-14} \oplus W_{t-16}) \lll 1;</math>
  2. <math>A = H_0;~B = H_1;~C = H_2;~D = H_3;~E = H_4;</math>
  3. <math>\mbox{For}~t = 0~\mbox{to}~79~\mbox{do}</math>
    <math>\mbox{TEMP} = A \lll 5 + f_t(B, C, D) + E + W_t + K_t;</math>
    <math>E = D;~D = C;~C = B \lll 30;~B = A;~A = TEMP;</math>
  4. <math>H_0 = H_0 + A;~H_1 = H_1 + B;~H_2 = H_2 + C;~H_3 = H_3 + D; H_4 = H_4 + E;</math>
  5. <math>G_a(i) = H_0 \lVert H_1 \lVert H_2 \lVert H_3 \lVert H_4.</math>

Введем функцию <math>\Gamma_a(i) = H^i_{i~mod~5}</math> где <math>H_0^{5j} \lVert H_1^{5j+1} \lVert H_2^{5j+2} \lVert H_3^{5j+3} \lVert H_4^{5j+4} = G_a(j)</math> для <math>j = \mathcal {b} i/5 \mathcal {c}.</math>

Тогда таблицы:

<math>T[i] = \Gamma_a(i),~~0 \le i < 512;</math>

<math>S[j] = \Gamma_a(\mbox{0x}1000 + j),~~0 \le j < 256;</math>

<math>R[k] = \Gamma_a(\mbox{0x}2000 + k),~~0 \le k < 256.</math>

Далее ключ <math>a</math> в алгоритме не используется.

Инициализация служебных регистров

Перед генерацией псевдослучайной функции нужно подготовить четыре 32-битовых служебных регистра (<math>A</math>, <math>B</math>, <math>C</math> и <math>D</math>) и четыре 32-битовых слова (<math>n_1</math>, <math>n_2</math>, <math>n_3</math> и <math>n_4</math>). Их значения определяются из таблиц <math>R</math> и <math>T</math>, 32-битового числа <math>n</math> и некоторого числа <math>l</math> в следующей процедуре.

<math>\mbox{procedure}~\mbox{Initialize}~(n, l, A, B, C, D, n_1, n_2, n_3, n_4)</math>

<math>A \leftarrow n \oplus R[4l];</math>
<math>B \leftarrow (n \ggg 8) \oplus R[4l + 1];</math>
<math>C \leftarrow (n \ggg 16) \oplus R[4l + 2];</math>
<math>D \leftarrow (n \ggg 24) \oplus R[4l + 3];</math>

<math>\mbox{for}~j \leftarrow 1~\mbox{to}~2~\mbox{do}</math>

<math>P \leftarrow A \And \mbox{0x}7fc;~~B \leftarrow B + T[P/4];~~A \leftarrow A \ggg 9;</math>
<math>P \leftarrow B \And \mbox{0x}7fc;~~C \leftarrow C + T[P/4];~~B \leftarrow B \ggg 9;</math>
<math>P \leftarrow C \And \mbox{0x}7fc;~~D \leftarrow D + T[P/4];~~C \leftarrow C \ggg 9;</math>
<math>P \leftarrow D \And \mbox{0x}7fc;~~A \leftarrow A + T[P/4];~~D \leftarrow D \ggg 9;</math>

<math>(n_1, n_2, n_3, n_4) \leftarrow (D, B, A, C);</math>

<math>P \leftarrow A \And \mbox{0x}7fc;~~B \leftarrow B + T[P/4];~~A \leftarrow A \ggg 9;</math>
<math>P \leftarrow B \And \mbox{0x}7fc;~~C \leftarrow C + T[P/4];~~B \leftarrow B \ggg 9;</math>
<math>P \leftarrow C \And \mbox{0x}7fc;~~D \leftarrow D + T[P/4];~~C \leftarrow C \ggg 9;</math>
<math>P \leftarrow D \And \mbox{0x}7fc;~~A \leftarrow A + T[P/4];~~D \leftarrow D \ggg 9;</math>

Создание псевдослучайной функции

Для шифрования текста необходимо создать псевдослучайную функцию.

<math>\mbox{function}~\mbox{SEAL}~(a, n, L)</math>

<math>y = 0^L;</math>

<math>\mbox{for}~l \leftarrow 0~\mbox{to}~\infty~\mbox{do}</math>

      <math>\mbox{Initialize}~(n, l, A, B, C, D, n_1, n_2, n_3, n_4);</math>

      <math>\mbox{for}~i \leftarrow 1~\mbox{to}~64~\mbox{do}</math>

            <math>P \leftarrow A \And \mbox{0x}7fc;~~B \leftarrow B + T[P/4];~~A \leftarrow A \ggg 9;~~B \leftarrow B \oplus A;</math>

            <math>Q \leftarrow B \And \mbox{0x}7fc;~~C \leftarrow C \oplus T[Q/4];~~B \leftarrow B \ggg 9;~~C \leftarrow C + B;</math>

            <math>P \leftarrow (P + C) \And \mbox{0x}7fc;~~D \leftarrow D + T[P/4];~~C \leftarrow C \ggg 9;~~D \leftarrow D \oplus C;</math>

            <math>Q \leftarrow (Q + D) \And \mbox{0x}7fc;~~A \leftarrow A \oplus T[Q/4];~~D \leftarrow D \ggg 9;~~A \leftarrow A + D;</math>

            <math>P \leftarrow (P + A) \And \mbox{0x}7fc;~~B \leftarrow B \oplus T[P/4];~~A \leftarrow A \ggg 9;</math>

            <math>Q \leftarrow (Q + B) \And \mbox{0x}7fc;~~C \leftarrow C + T[Q/4];~~B \leftarrow B \ggg 9;</math>

            <math>P \leftarrow (P + C) \And \mbox{0x}7fc;~~D \leftarrow D \oplus T[P/4];~~C \leftarrow C \ggg 9;</math>

            <math>Q \leftarrow (Q + D) \And \mbox{0x}7fc;~~A \leftarrow A + T[Q/4];~~D \leftarrow D \ggg 9;</math>

            <math>y \leftarrow y~\lVert~B + S[4i-4]~\lVert~C \oplus S[4i-3]~\lVert~D + S[4i-2]~\lVert~A \oplus S[4i-1];</math>

            <math>\mbox{if}~|y| \ge L~\mbox{then}~\mbox{return}~~y_0y_1...y_{L-1};</math>

            <math>\mbox{if}~odd(i)~\mbox{then}~(A, B, C, D) \leftarrow (A + n_1, B + n_2, C \oplus n_1, D \oplus n_2);</math>

                                <math>\mbox{else}~(A, B, C, D) \leftarrow (A + n_3, B + n_4, C \oplus n_3, D \oplus n_4);</math>

Процесс шифрования состоит из большого числа итераций, каждая из которых завершается генерацией псевдослучайной функции. Количество пройденных итераций показывает счетчик l. Все они подразделяются на несколько этапов с похожими операциями. На каждом этапе старшие 9 битов одного из регистров (A, B, C или D) используются в качестве указателя, по которому из таблицы T выбирается значение. Это значение складывается арифметически или поразрядно по модулю 2 (XOR) со следующим регистром (снова один из A, B, C или D). Затем первый выбранный регистр преобразуется циклическим сдвигом вправо на 9 позиций. Далее либо значение второго регистра модифицируется сложением или XORом с содержимым первого (уже сдвинутым) и выполняется переход к следующему этапу, либо этот переход выполняется сразу. После 8 таких этапов значения A, B, C и D складываются (арифметически или XORом) с определенными словами из таблицы S и добавляются в ключевую последовательность y. Завершающий этап итерации заключается в прибавлении к регистрам дополнительных 32-битных значений (n1, n2 или n3, n4). Причем выбор конкретного значения зависит от четности номера данной итерации.

Свойства и практическое применение

При разработке этого алгоритма главное внимание отводилось следующим свойствам и идеям:

  • использование большой (примерно 2 Kбайта) таблицы T, получаемой из большого 160-битного ключа;
  • чередование арифметических операций (сложение и побитовый XOR);
  • использование внутреннего состояния системы, которое явно не проявляется в потоке данных (значения n1, n2, n3 и n4, которые изменяют регистры в конце каждой итерации);
  • использование отличных друг от друга операций в зависимости от этапа итерации и её номера.

Для шифрования и расшифрования каждого байта текста шифр SEAL требует около четырех машинных тактов. Он работает со скоростью примерно 58 Мбит/с на 32-битном процессоре с тактовой частотой 50 МГц и является одним из самых быстрых шифров.

Напишите отзыв о статье "SEAL (криптографический алгоритм)"

Примечания

  1. P.Rogaway (англ.), D.Coppersmith [www.cs.ucdavis.edu/~rogaway/papers/seal-abstract.html A Software-Optimized Encryption Algorithm]. — 1998.
  2. [www.google.com/patents/US5454039 U.S. Patent 5 454 039] «Software-efficient pseudorandom function and the use thereof for encryption»

Источники

  • Шнайер Б. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си = Applied Cryptography. Protocols, Algorithms and Source Code in C. — М.: Триумф, 2002. — С. 446—448. — 816 с. — 3000 экз. — ISBN 5-89392-055-4.
  • P.Rogaway (англ.), D.Coppersmith [www.cs.ucdavis.edu/~rogaway/papers/seal-abstract.html A Software-Optimized Encryption Algorithm]. — 1998.
  • H.Handschuh (англ.), H.Gilbert (англ.) <math>X^2</math>-Cryptanalysis of the SEAL Encryption Algorithm. — 1997.

Ссылки

  • [www.google.com/patents/US5675652 U.S. Patent 5 675 652] «Computer readable device implementing a software-efficient pseudorandom function encryption»
  • [cartman-cipher.narod.ru/mirror/seal3.c Неофициальная реализация алгоритма SEAL 3.0 на языке C]
  • [cartman-cipher.narod.ru/mirror/sealdelphi.dpr Неофициальная реализация алгоритма SEAL 3.0 на языке Delphi]

Отрывок, характеризующий SEAL (криптографический алгоритм)

– Наше дело солдатское. А вот барин, так удивительно. Вот так барин!
– По местам! – крикнул молоденький офицер на собравшихся вокруг Пьера солдат. Молоденький офицер этот, видимо, исполнял свою должность в первый или во второй раз и потому с особенной отчетливостью и форменностью обращался и с солдатами и с начальником.
Перекатная пальба пушек и ружей усиливалась по всему полю, в особенности влево, там, где были флеши Багратиона, но из за дыма выстрелов с того места, где был Пьер, нельзя было почти ничего видеть. Притом, наблюдения за тем, как бы семейным (отделенным от всех других) кружком людей, находившихся на батарее, поглощали все внимание Пьера. Первое его бессознательно радостное возбуждение, произведенное видом и звуками поля сражения, заменилось теперь, в особенности после вида этого одиноко лежащего солдата на лугу, другим чувством. Сидя теперь на откосе канавы, он наблюдал окружавшие его лица.
К десяти часам уже человек двадцать унесли с батареи; два орудия были разбиты, чаще и чаще на батарею попадали снаряды и залетали, жужжа и свистя, дальние пули. Но люди, бывшие на батарее, как будто не замечали этого; со всех сторон слышался веселый говор и шутки.
– Чиненка! – кричал солдат на приближающуюся, летевшую со свистом гранату. – Не сюда! К пехотным! – с хохотом прибавлял другой, заметив, что граната перелетела и попала в ряды прикрытия.
– Что, знакомая? – смеялся другой солдат на присевшего мужика под пролетевшим ядром.
Несколько солдат собрались у вала, разглядывая то, что делалось впереди.
– И цепь сняли, видишь, назад прошли, – говорили они, указывая через вал.
– Свое дело гляди, – крикнул на них старый унтер офицер. – Назад прошли, значит, назади дело есть. – И унтер офицер, взяв за плечо одного из солдат, толкнул его коленкой. Послышался хохот.
– К пятому орудию накатывай! – кричали с одной стороны.
– Разом, дружнее, по бурлацки, – слышались веселые крики переменявших пушку.
– Ай, нашему барину чуть шляпку не сбила, – показывая зубы, смеялся на Пьера краснорожий шутник. – Эх, нескладная, – укоризненно прибавил он на ядро, попавшее в колесо и ногу человека.
– Ну вы, лисицы! – смеялся другой на изгибающихся ополченцев, входивших на батарею за раненым.
– Аль не вкусна каша? Ах, вороны, заколянились! – кричали на ополченцев, замявшихся перед солдатом с оторванной ногой.
– Тое кое, малый, – передразнивали мужиков. – Страсть не любят.
Пьер замечал, как после каждого попавшего ядра, после каждой потери все более и более разгоралось общее оживление.
Как из придвигающейся грозовой тучи, чаще и чаще, светлее и светлее вспыхивали на лицах всех этих людей (как бы в отпор совершающегося) молнии скрытого, разгорающегося огня.
Пьер не смотрел вперед на поле сражения и не интересовался знать о том, что там делалось: он весь был поглощен в созерцание этого, все более и более разгорающегося огня, который точно так же (он чувствовал) разгорался и в его душе.
В десять часов пехотные солдаты, бывшие впереди батареи в кустах и по речке Каменке, отступили. С батареи видно было, как они пробегали назад мимо нее, неся на ружьях раненых. Какой то генерал со свитой вошел на курган и, поговорив с полковником, сердито посмотрев на Пьера, сошел опять вниз, приказав прикрытию пехоты, стоявшему позади батареи, лечь, чтобы менее подвергаться выстрелам. Вслед за этим в рядах пехоты, правее батареи, послышался барабан, командные крики, и с батареи видно было, как ряды пехоты двинулись вперед.
Пьер смотрел через вал. Одно лицо особенно бросилось ему в глаза. Это был офицер, который с бледным молодым лицом шел задом, неся опущенную шпагу, и беспокойно оглядывался.
Ряды пехотных солдат скрылись в дыму, послышался их протяжный крик и частая стрельба ружей. Через несколько минут толпы раненых и носилок прошли оттуда. На батарею еще чаще стали попадать снаряды. Несколько человек лежали неубранные. Около пушек хлопотливее и оживленнее двигались солдаты. Никто уже не обращал внимания на Пьера. Раза два на него сердито крикнули за то, что он был на дороге. Старший офицер, с нахмуренным лицом, большими, быстрыми шагами переходил от одного орудия к другому. Молоденький офицерик, еще больше разрумянившись, еще старательнее командовал солдатами. Солдаты подавали заряды, поворачивались, заряжали и делали свое дело с напряженным щегольством. Они на ходу подпрыгивали, как на пружинах.
Грозовая туча надвинулась, и ярко во всех лицах горел тот огонь, за разгоранием которого следил Пьер. Он стоял подле старшего офицера. Молоденький офицерик подбежал, с рукой к киверу, к старшему.
– Имею честь доложить, господин полковник, зарядов имеется только восемь, прикажете ли продолжать огонь? – спросил он.
– Картечь! – не отвечая, крикнул старший офицер, смотревший через вал.
Вдруг что то случилось; офицерик ахнул и, свернувшись, сел на землю, как на лету подстреленная птица. Все сделалось странно, неясно и пасмурно в глазах Пьера.
Одно за другим свистели ядра и бились в бруствер, в солдат, в пушки. Пьер, прежде не слыхавший этих звуков, теперь только слышал одни эти звуки. Сбоку батареи, справа, с криком «ура» бежали солдаты не вперед, а назад, как показалось Пьеру.
Ядро ударило в самый край вала, перед которым стоял Пьер, ссыпало землю, и в глазах его мелькнул черный мячик, и в то же мгновенье шлепнуло во что то. Ополченцы, вошедшие было на батарею, побежали назад.
– Все картечью! – кричал офицер.
Унтер офицер подбежал к старшему офицеру и испуганным шепотом (как за обедом докладывает дворецкий хозяину, что нет больше требуемого вина) сказал, что зарядов больше не было.
– Разбойники, что делают! – закричал офицер, оборачиваясь к Пьеру. Лицо старшего офицера было красно и потно, нахмуренные глаза блестели. – Беги к резервам, приводи ящики! – крикнул он, сердито обходя взглядом Пьера и обращаясь к своему солдату.
– Я пойду, – сказал Пьер. Офицер, не отвечая ему, большими шагами пошел в другую сторону.
– Не стрелять… Выжидай! – кричал он.
Солдат, которому приказано было идти за зарядами, столкнулся с Пьером.
– Эх, барин, не место тебе тут, – сказал он и побежал вниз. Пьер побежал за солдатом, обходя то место, на котором сидел молоденький офицерик.
Одно, другое, третье ядро пролетало над ним, ударялось впереди, с боков, сзади. Пьер сбежал вниз. «Куда я?» – вдруг вспомнил он, уже подбегая к зеленым ящикам. Он остановился в нерешительности, идти ему назад или вперед. Вдруг страшный толчок откинул его назад, на землю. В то же мгновенье блеск большого огня осветил его, и в то же мгновенье раздался оглушающий, зазвеневший в ушах гром, треск и свист.
Пьер, очнувшись, сидел на заду, опираясь руками о землю; ящика, около которого он был, не было; только валялись зеленые обожженные доски и тряпки на выжженной траве, и лошадь, трепля обломками оглобель, проскакала от него, а другая, так же как и сам Пьер, лежала на земле и пронзительно, протяжно визжала.


Пьер, не помня себя от страха, вскочил и побежал назад на батарею, как на единственное убежище от всех ужасов, окружавших его.
В то время как Пьер входил в окоп, он заметил, что на батарее выстрелов не слышно было, но какие то люди что то делали там. Пьер не успел понять того, какие это были люди. Он увидел старшего полковника, задом к нему лежащего на валу, как будто рассматривающего что то внизу, и видел одного, замеченного им, солдата, который, прорываясь вперед от людей, державших его за руку, кричал: «Братцы!» – и видел еще что то странное.
Но он не успел еще сообразить того, что полковник был убит, что кричавший «братцы!» был пленный, что в глазах его был заколон штыком в спину другой солдат. Едва он вбежал в окоп, как худощавый, желтый, с потным лицом человек в синем мундире, со шпагой в руке, набежал на него, крича что то. Пьер, инстинктивно обороняясь от толчка, так как они, не видав, разбежались друг против друга, выставил руки и схватил этого человека (это был французский офицер) одной рукой за плечо, другой за гордо. Офицер, выпустив шпагу, схватил Пьера за шиворот.
Несколько секунд они оба испуганными глазами смотрели на чуждые друг другу лица, и оба были в недоумении о том, что они сделали и что им делать. «Я ли взят в плен или он взят в плен мною? – думал каждый из них. Но, очевидно, французский офицер более склонялся к мысли, что в плен взят он, потому что сильная рука Пьера, движимая невольным страхом, все крепче и крепче сжимала его горло. Француз что то хотел сказать, как вдруг над самой головой их низко и страшно просвистело ядро, и Пьеру показалось, что голова французского офицера оторвана: так быстро он согнул ее.
Пьер тоже нагнул голову и отпустил руки. Не думая более о том, кто кого взял в плен, француз побежал назад на батарею, а Пьер под гору, спотыкаясь на убитых и раненых, которые, казалось ему, ловят его за ноги. Но не успел он сойти вниз, как навстречу ему показались плотные толпы бегущих русских солдат, которые, падая, спотыкаясь и крича, весело и бурно бежали на батарею. (Это была та атака, которую себе приписывал Ермолов, говоря, что только его храбрости и счастью возможно было сделать этот подвиг, и та атака, в которой он будто бы кидал на курган Георгиевские кресты, бывшие у него в кармане.)
Французы, занявшие батарею, побежали. Наши войска с криками «ура» так далеко за батарею прогнали французов, что трудно было остановить их.
С батареи свезли пленных, в том числе раненого французского генерала, которого окружили офицеры. Толпы раненых, знакомых и незнакомых Пьеру, русских и французов, с изуродованными страданием лицами, шли, ползли и на носилках неслись с батареи. Пьер вошел на курган, где он провел более часа времени, и из того семейного кружка, который принял его к себе, он не нашел никого. Много было тут мертвых, незнакомых ему. Но некоторых он узнал. Молоденький офицерик сидел, все так же свернувшись, у края вала, в луже крови. Краснорожий солдат еще дергался, но его не убирали.
Пьер побежал вниз.
«Нет, теперь они оставят это, теперь они ужаснутся того, что они сделали!» – думал Пьер, бесцельно направляясь за толпами носилок, двигавшихся с поля сражения.
Но солнце, застилаемое дымом, стояло еще высоко, и впереди, и в особенности налево у Семеновского, кипело что то в дыму, и гул выстрелов, стрельба и канонада не только не ослабевали, но усиливались до отчаянности, как человек, который, надрываясь, кричит из последних сил.


Главное действие Бородинского сражения произошло на пространстве тысячи сажен между Бородиным и флешами Багратиона. (Вне этого пространства с одной стороны была сделана русскими в половине дня демонстрация кавалерией Уварова, с другой стороны, за Утицей, было столкновение Понятовского с Тучковым; но это были два отдельные и слабые действия в сравнении с тем, что происходило в середине поля сражения.) На поле между Бородиным и флешами, у леса, на открытом и видном с обеих сторон протяжении, произошло главное действие сражения, самым простым, бесхитростным образом.
Сражение началось канонадой с обеих сторон из нескольких сотен орудий.
Потом, когда дым застлал все поле, в этом дыму двинулись (со стороны французов) справа две дивизии, Дессе и Компана, на флеши, и слева полки вице короля на Бородино.
От Шевардинского редута, на котором стоял Наполеон, флеши находились на расстоянии версты, а Бородино более чем в двух верстах расстояния по прямой линии, и поэтому Наполеон не мог видеть того, что происходило там, тем более что дым, сливаясь с туманом, скрывал всю местность. Солдаты дивизии Дессе, направленные на флеши, были видны только до тех пор, пока они не спустились под овраг, отделявший их от флеш. Как скоро они спустились в овраг, дым выстрелов орудийных и ружейных на флешах стал так густ, что застлал весь подъем той стороны оврага. Сквозь дым мелькало там что то черное – вероятно, люди, и иногда блеск штыков. Но двигались ли они или стояли, были ли это французы или русские, нельзя было видеть с Шевардинского редута.
Солнце взошло светло и било косыми лучами прямо в лицо Наполеона, смотревшего из под руки на флеши. Дым стлался перед флешами, и то казалось, что дым двигался, то казалось, что войска двигались. Слышны были иногда из за выстрелов крики людей, но нельзя было знать, что они там делали.
Наполеон, стоя на кургане, смотрел в трубу, и в маленький круг трубы он видел дым и людей, иногда своих, иногда русских; но где было то, что он видел, он не знал, когда смотрел опять простым глазом.
Он сошел с кургана и стал взад и вперед ходить перед ним.
Изредка он останавливался, прислушивался к выстрелам и вглядывался в поле сражения.
Не только с того места внизу, где он стоял, не только с кургана, на котором стояли теперь некоторые его генералы, но и с самых флешей, на которых находились теперь вместе и попеременно то русские, то французские, мертвые, раненые и живые, испуганные или обезумевшие солдаты, нельзя было понять того, что делалось на этом месте. В продолжение нескольких часов на этом месте, среди неумолкаемой стрельбы, ружейной и пушечной, то появлялись одни русские, то одни французские, то пехотные, то кавалерийские солдаты; появлялись, падали, стреляли, сталкивались, не зная, что делать друг с другом, кричали и бежали назад.