Hamsi

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

Hamsiкриптографическая хеш-функция, в основу которой положены алгоритмы Grindahl[1] и Serpent[2]. Эта хэш-функция не запатентована и является общественным достоянием. Существуют две разновидности алгоритма: Hamsi-256 и Hamsi-512. В основе алгоритма лежат функция разложения и циклическая трансформация. Циклическая трансформация работает с четырьмя строками матрицы состояний. Число столбцов этой матрицы равно 4 для Hamsi-256, 8 для Hamsi-512. Элементами матрицы являются слова размером 32 бита.





История

Hamsi была одним из участников в открытом конкурсе[3] SHA-3 Национального института стандартов и технологий[4] по разработке новых криптографических хэш-функций, которые преобразуют сообщения переменной длины в сжатые текстовые строки фиксированной длины, что может быть использовано для электронно-цифровых подписей, аутентификации сообщений и других применений. В первом раунде соревнования приняли участие 51 кандидат. 14 из них (включая Hamsi) прошли во второй тур[5]. Однако Hamsi не попала в число 5 кандидатов последнего тура, объявленных 10 декабря 2010 года[6].

Описание

Общая структура

Hamsi использует такие преобразования, как конкатенация (англ. Concatenation), перестановка (англ. Permutation) и округление (англ. Truncation), которые также используются в других алгоритмах хэширования, например Snefru[7] и Grindahl. В алгоритме также применяется функции расширения текста сообщения (англ. Message expansion) и распространения связывающего значения (англ. Chaining value) на каждой итерации. Для нелинейных перестановок (англ. Non-linear Permitations) используются линейные преобразования и один S-box из блочного шифрования Serpent. Общую структуру Hamsi можно представить в виде:

1 Message Expansion E : {0, 1}<math>^m</math> → {0, 1}<math>^n</math>
2 Concatenation C : {0, 1}<math>^n</math> x {0, 1}<math>^n</math> → {0, 1}<math>^s</math>
3 Non-linear Permutations P,P<math>_f</math> : {0, 1}<math>^s</math> → {0, 1}<math>^s</math>
4 Truncation T : {0, 1}<math>^s</math> → {0, 1}<math>^n</math>

Обозначения:

F<math>_n</math> Конечное поле из n элементов
<<< Циклический сдвиг влево
<math>\oplus</math> Исключающее ИЛИ (XOR)
<< Битовый сдвиг влево
[n, m, d] Код длины n, размерностью m и минимальным расстоянием d

Значения m, n и s для различных вариантов Hamsi представлены в следующей таблице:

m n s
Hamsi-256 32 256 512
Hamsi-512 64 512 1024

Пусть (M1||M2||M3|| . . . ||M<math>_\ell</math>||) уже дополненное сообщение, тогда разновидности Hamsi могут быть описаны следующим образом:

Hamsi-256:

h<math>_i</math> = (T ◦ P ◦ C(E(M<math>_i</math>), h<math>_i</math>−1)) ⊕ h<math>_i</math>−1, h<math>_0</math> = <math>i</math>v256, 0 < <math>i</math> < <math>\ell</math>

h = (T ◦ P<math>_f</math> ◦ C(E(M<math>_\ell</math>), h<math>_\ell</math>−1)) ⊕ h<math>_\ell</math>−1

Hamsi-512:

h<math>_i</math> = (T ◦ P ◦ C(E(M<math>_i</math>), h<math>_i</math>−1)) ⊕ h<math>_i</math>−1, h<math>_0</math> = <math>i</math>v512, 0 < <math>i</math> < <math>\ell</math>

h = (T ◦ P<math>_f</math> ◦ C(E(M<math>_\ell</math>), h<math>_\ell</math>−1)) ⊕ h<math>_\ell</math>−1

Начальные значения

Начальным значением для алгоритма является начальное значение связывающего значения h<math>_0</math>. Оно получено с помощью кодировки UTF-8 следующего сообщения: «Ozgul Kucuk, Katholieke Universiteit Leuven, Departement Elektrotechniek, Computer Security and Industrial Cryptography, Kasteelpark Arenberg 10, bus 2446, B-3001 Leuven-Heverlee, Belgium.» Начальные значения для различных разновидностей алгоритма представлены в следующей таблице:

<math>i</math>v256
0x76657273, 0x69746569, 0x74204c65, 0x7576656e
0x2c204b61, 0x74686f6c, 0x69656b65, 0x20556e69
<math>i</math>v512
0x73746565, 0x6c706172, 0x6b204172, 0x656e6265
0x72672031, 0x302c2062, 0x75732032, 0x3434362c
0x20422d33, 0x30303120, 0x4c657576, 0x656e2d48
0x65766572, 0x6c65652c, 0x2042656c, 0x6769756d

Дополнение сообщения

Hamsi оперирует с блоками сообщений длиной 32 и 64 бита для алгоритмов Hamsi-256 и Hamsi-512 соответственно. Если длина блока меньше чем необходимо, тогда происходит дополнение сообщения (англ. Message padding). Дополнение происходит следующим образом. К сообщению справа добавляется один бит значением '1', а затем добавляются биты со значениями равными '0' до тех пор пока длина сообщения не станет равной 32 или 64. Пример:

Есть сообщение длиной 24 бита

1010 0110 1110 1111 1111 0000

После дополнения до 32-х битного оно будет выглядеть так

1010 0110 1110 1111 1111 0000 1000 0000

Расширение сообщения

Hamsi использует линейные коды[8] для расширения сообщений. Для Hamsi-256 расширение сообщения длиной 32 бита в сообщение длиной 256 бит производится с помощью кода [128, 16, 70] над полем F<math>_4</math>[9]. Для Hamsi-512 расширение сообщения длиной 64 бита в сообщение длиной 512 бит производится с помощью кода [256, 32, 131] над полем F<math>_4</math>.

Конкатенация

К словам расширенного сообщения (m<math>_0</math>,m<math>_1</math>, . . . ,m<math>_i</math>) приписывается связывающее значение (c<math>_0</math>, c<math>_1</math>, . . . , c<math>_j</math>). Значения i и j равны 7 для Hamsi-256 и 15 для Hamsi-512. Затем над полученным сообщением будет произведена нелинейная перестановка P. Метод конкатенации определяет порядок следования битов на входе Р.

В Hamsi-256

C: {0, 1}<math>^{256}</math>x{0, 1}<math>^{256}</math> → {0, 1}<math>^{512}</math>, а подробнее

C(m<math>_0</math>,m1, . . . ,m7, c0, c1, . . . , c7) = (m0,m1, c0, c1, c2, c3,m2,m3,m4, m5, c4, c5, c6, c7,m6,m7)

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

m0 m1 c0 c1
c2 c3 m2 m3
m4 m5 c4 c5
c6 c7 m6 m7

В Hamsi-512

C: {0, 1}<math>^{512}</math> × {0, 1}<math>^{512}</math> → {0, 1}<math>^{1024}</math>, а подробнее

C(m0,m1, . . . ,m14,m15, c0, c1, . . . , c14, c15) = (m0,m1, c0, c1,m2,m3, c2, c3, c4, c5,m4,m5, c6, c7,m6,m7,m8, m9, c8, c9,m10,m11, c10, c11, c12, c13,m12,m13, c14, c15,m14,m15)

Нелинейная перестановка P

Нелинейная перестановка состоит из трех этапов

  • Над входными битами, константами и счетчиком выполняется операция XOR
  • Затем следует применение 4-битных S-боксов
  • И наконец несколько применений линейного преобразования L

Все это повторяется столько раз, сколько задано количество циклов. На вход каждый раз поступает сообщение (s0, s1, s2, . . . , sj), где j равно 15 для Hamsi-256 и 31 для Hamsi-512.

1) Прибавление констант и счетчика

На этом этапе над входным сообщением, константами и счетчиком выполняется операция XOR. Счетчик определяет номер выполненного цикла. Для первого цикла c равен 0, для второго с = 1 и так далее. Используемые константы приведены в следующей таблице:

α0 = 0xff00f0f0 α1 = 0xccccaaaa α2 = 0xf0f0cccc α3 = 0xff00aaaa
α4 = 0xccccaaaa α5 = 0xf0f0ff00 α6 = 0xaaaacccc α7 = 0xf0f0ff00
α8 = 0xf0f0cccc α9 = 0xaaaaff00 α10 = 0xccccff00 α11 = 0xaaaaf0f0
α12 = 0xaaaaf0f0 α13 = 0xff00cccc α14 = 0xccccf0f0 α15 = 0xff00aaaa
α16 = 0xccccaaaa α17 = 0xff00f0f0 α18 = 0xff00aaaa α19 = 0xf0f0cccc
α20 = 0xf0f0ff00 α21 = 0xccccaaaa α22 = 0xf0f0ff00 α23 = 0xaaaacccc
α24 = 0xaaaaff00 α25 = 0xf0f0cccc α26 = 0xaaaaf0f0 α27 = 0xccccff00
α28 = 0xff00cccc α29 = 0xaaaaf0f0 α30 = 0xff00aaaa α31 = 0xccccf0f0

В Hamsi-256

(s0, s1, . . . , s15) := (s0 ⊕ α0, s1 ⊕ α1 ⊕ c, s2, . . . , s15 ⊕ α15)

В Hamsi-512

(s0, s1, . . . , s31) := (s0 ⊕ α0, s1 ⊕ α1 ⊕ c, s2, . . . , s31 ⊕ α31)

2) Этап подстановки

На этом этапе происходит подстановка 4-битных S-боксов, взятых из алгоритма Serpent. Hamsi очень удобно спроектирован для параллельного вычисления. Все 128 идентичных S-боксов (256 для Hamsi-512) могут обсчитываться в одно и то же время, что ускоряет работу алгоритма. S-box используемый в Hamsi:

x 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
s[x] 8 6 7 9 3 C A F D 1 E 4 0 B 5 2

3) Этап преобразования

Этап преобразования основан на нескольких применениях линейного преобразования L: {0, 1}<math>^{128}</math> → {0, 1}<math>^{128}</math>. L оперирует с 32-битными словами. В общем виде преобразование можно записать в виде (si, sj, sk, sl) := L(si, sj, sk, sl).

Более подробное описание преобразования L(a, b, c, d):

a := a <<< 13

c := c <<< 3

b := b ⊕ a ⊕ c

d := d ⊕ c ⊕ (a << 3)

b := b <<< 1

d := d <<< 7

a := a ⊕ b ⊕ d

c := c ⊕ d ⊕ (b << 7)

a := a <<< 5

c := c <<< 22

Округление

Округление T : {0, 1}512 → {0, 1}256 в Hamsi-256 определяется следующим образом:

T (s0, s1, s2, . . . , s14, s15) = (s0, s1, s2, s3, s8, s9, s10, s11)

В Hamsi-512 округление T : {0, 1}1024 → {0, 1}512 определяется так:

T (s0, s1, s2, . . . , s30, s31) = (s0, s1, s2, s3, s4, s5, s6, s7, s16, s17, s18, s19, s20, s21, s22, s23)

Округление осуществляется после финального цикла нелинейной перестановки.

Нелинейная перестановка Pf

Нелинейные перестановки P и Pf отличаются только константами. Также Pf применяется только к последнему блоку сообщений как финальное преобразование.

Константы для Pf:

α0 = 0xcaf9639c α1 = 0x0ff0f9c0 α2 = 0x639c0ff0 α3 = 0xcaf9f9c0
α4 = 0x0ff0f9c0 α5 = 0x639ccaf9 α6 = 0xf9c00ff0 α7 = 0x639ccaf9
α8 = 0x639c0ff0 α9 = 0xf9c0caf9 α10 = 0x0ff0caf9 α11 = 0xf9c0639c
α12 = 0xf9c0639c α13 = 0xcaf90ff0 α14 = 0x0ff0639c α15 = 0xcaf9f9c0
α16 = 0x0ff0f9c0 α17 = 0xcaf9639c α18 = 0xcaf9f9c0 α19 = 0x639c0ff0
α20 = 0x639ccaf9 α21 = 0x0ff0f9c0 α22 = 0x639ccaf9 α23 = 0xf9c00ff0
α24 = 0xf9c0caf9 α25 = 0x639c0ff0 α26 = 0xf9c0639c α27 = 0x0ff0caf9
α28 = 0xcaf90ff0 α29 = 0xf9c0639c α30 = 0xcaf9f9c0 α31 = 0x0ff0639c

Количество циклов

Количество циклов для различных вариантов Hamsi приведены в таблице:

Hamsi-256 Hamsi-512
P циклов 3 6
Pf циклов 6 12

Во втором туре соревнования SHA-3 появилась новая модификация алгоритма под названием Hamsi-256/8. Её отличие от Hamsi-256 в том, что количество Pf циклов теперь равно 8.

Напишите отзыв о статье "Hamsi"

Примечания

  1. L. R. Knudsen, C. Rechberger, S. S. Thomsen (2007). «[www2.mat.dtu.dk/people/Lars.R.Knudsen/grindahl/grindahl.pdf Grindahl — a family of hash functions]». Lecture Notes in Computer Science 4593: 39-57. DOI:10.1007/978-3-540-74619-5_3.
  2. [www.cl.cam.ac.uk/~rja14/serpent.html Serpent: A proposal for the advanced encryption standard].
  3. [csrc.nist.gov/groups/ST/hash/sha-3/index.html NIST.gov — Computer Security Division — Computer Security Resource Center]
  4. [www.nist.gov/ National Institute of Standards and Technology]
  5. [csrc.nist.gov/groups/ST/hash/sha-3/Round2/submissions_rnd2.html NIST.gov — Computer Security Division — Computer Security Resource Center]
  6. [csrc.nist.gov/groups/ST/hash/sha-3/Round2/documents/Round2_Report_NISTIR_7764.pdf Status Report on the Second Round of the SHA-3]
  7. Merkle R.C. A Fast Software One-Way Hash Function. Journal of Cryptology, 3(1):43-58, 1990
  8. J.H. van Lint. Introduction to Coding Theory
  9. Bounds on the minimum distance of linear codes. codetables.de.BKLC/

Литература

  • Özgül Kücük. [ehash.iaik.tugraz.at/uploads/9/95/Hamsi.pdf The Hash Function Hamsi] (PDF) (31 October 2008). Проверено 11 декабря 2008. [www.webcitation.org/66qlcDcpA Архивировано из первоисточника 11 апреля 2012].
  • homes.esat.kuleuven.be/~okucuk/hamsi/index.html
  • www.cosic.esat.kuleuven.be/publications/article-1203.pdf

Отрывок, характеризующий Hamsi

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


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