ECHO

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

ECHO — хеш-функция, выдвинутая как кандидат на конкурс SHA-3, проводимый Национальным институтом стандартов и технологий (США). Алгоритм разработан в Orange Labs, его авторы:

  • Ryad Benadjila
  • Olivier Billet
  • Henri Gilbert
  • Gilles Macario-Rat
  • Thomas Peyrin
  • Matt Robshaw
  • Yannick Seurin




Краткий обзор

В качестве аргументов для хеш-функции выступают сообщение и «соль» (которая далее обозначается как <math>\mbox{SALT}</math>). Длина последнего аргумента составляет 128 бит, при этом по умолчанию его значение принимается равным 0. Размер выхода ECHO может меняться от 128 до 512 бит.

Алгоритм вычисления ECHO основан на построении Меркле-Дамгаарда и, в соответствии с этим построением, представляет собой последовательное применение функции сжатия (определена ниже), зависящей от переменной цепочки <math>V_{i-1}</math>, блока сообщения <math>M_{i}</math> и, возможно, других параметров. При определении самой функции сжатия в ECHO используются операции AES.

Обозначения

ECHO работает со 128-битными словами, поэтому любое сообщение <math>M</math> перед вычислением хеш-функции дополняется так, чтобы его длина была кратна 128. Дополненное сообщение <math>M'</math> можно представить битовой строкой длины <math>n</math>

<math>b_0b_1...b_{n-2}b_{n-1}</math>

или последовательностью из <math>s=\frac{n}{8}</math> байт (<math>\|</math> обозначает конкатенацию)

<math>B_{0}</math> <math>=</math> b_1 \| ... \| b_7</math>
<math>B_{1}</math> <math>=</math> b_9 \| ... \| b_{15}</math>
<math>\vdots</math>
<math>B_{s-1}</math> <math>=</math> b_{n-7} \| ... \| b_{n-1}</math>

ECHO использует операции из AES, которые работают с байтовыми массивами размером 4 на 4. Соответственно, принимается следующая упаковка строки байт в массив:

<math>B_0 \| B_1 \| ... \| B_{15}\longrightarrow</math>
<math>B_{0}</math> <math>B_{4}</math> <math>B_{8}</math> <math>B_{12}</math>
<math>B_{1}</math> <math>B_{5}</math> <math>B_{9}</math> <math>B_{13}</math>
<math>B_{2}</math> <math>B_{6}</math> <math>B_{10}</math> <math>B_{14}</math>
<math>B_{3}</math> <math>B_{7}</math> <math>B_{11}</math> <math>B_{15}</math>

Аналогично, входное сообщение можно представить как последовательность <math>r=\frac{n}{128}</math> 128-битовых слов

<math>w_{0}</math> <math>=</math> <math>B_0 \| B_1 \| ... \| B_{15}</math> <math>=</math> b_1 \| ... \| b_{127}</math>
<math>w_{1}</math> <math>=</math> B_{17} \| ... \| B_{31}</math> <math>=</math> b_{129} \| ... \| b_{255}</math>
<math>\vdots</math> <math>\vdots</math>
<math>w_{r-1}</math> <math>=</math> B_{s-15} \| ... \| B_{s-1}</math> <math>=</math> b_{n-127} \| ... \| b_{n-1}</math>

Упаковка шестнадцати 128-битных слов в массив:

<math>w_0 \| w_1 \| ... \| w_{15}\longrightarrow</math>
<math>w_{0}</math> <math>w_{4}</math> <math>w_{8}</math> <math>w_{12}</math>
<math>w_{1}</math> <math>w_{5}</math> <math>w_{9}</math> <math>w_{13}</math>
<math>w_{2}</math> <math>w_{6}</math> <math>w_{10}</math> <math>w_{14}</math>
<math>w_{3}</math> <math>w_{7}</math> <math>w_{11}</math> <math>w_{15}</math>

Функция сжатия

В зависимости от желаемой битовой длины <math>\mbox{HSIZE}</math> результата хеширования в ECHO применяются две функции сжатия: <math>\mbox{COMPRESS}_{512}</math> и <math>\mbox{COMPRESS}_{1024}</math>. Нижний индекс равен длине <math>\mbox{CSIZE}</math> переменной цепочки. На итерации <math>i</math> обе функции принимают 4 параметра:

  1. Текущее значение переменной цепочки <math>V_{i-1}</math> с битовой длиной <math>\mbox{CSIZE}</math>.
  2. Текущий блок сообщения с битовой длиной <math>\mbox{MSIZE} = 2048 - \mbox{CSIZE}</math>.
  3. Полное число <math>C_i</math> бит сообщения, обработанных к концу данной итерации. Если текущий блок <math>M</math> — последний, то <math>C_i</math> может оказаться меньше или равно значению <math>i*\mbox{MSIZE}</math>. В противном случае выполняется равенство <math>C_i = i*\mbox{MSIZE}</math>. Размер счётчик <math>C_i</math> можно выбрать равным 64 или 128 битам.
  4. <math>\mbox{SALT}</math>.

То, какая функция сжатия используется, зависит от выбранной битовой длины значения хеш-функции. Для <math>\mbox{HSIZE}</math> от 128 до 256 бит применяется <math>\mbox{COMPRESS}_{512}</math>:

<math>V_i = \mbox{COMPRESS}_{512}(V_{i-1}, M_i, C_i, \mbox{SALT})</math>,

для <math>\mbox{HSIZE}</math> от 257 до 512 бит переменная цепочки вычисляется по формуле

<math>V_i = \mbox{COMPRESS}_{1024}(V_{i-1}, M_i, C_i, \mbox{SALT})</math>

Результатом работы обеих функций является некоторое значение с фиксированной битовой длиной. Поэтому для получения величин размера <math>\mbox{HSIZE}</math> конечный результат сокращается на необходимое число бит.

Инициализация

В начале хеширования счетчик <math>C</math> устанавливается в 0: <math>C_0 = 0</math>. Начальное значение переменной цепочки устанавливается таким образом, что каждое её слово является 128 битовым представлением числа <math>\mbox{HSIZE}</math>, то есть размера результата хеширования. В том случае, когда используется <math>\mbox{COMPRESS}_{512}</math> (<math>\mbox{HSIZE}</math> лежит в пределах от 128 до 256 бит) переменная цепочки <math>V_0</math> состоит из 4 слов:

<math>V_0 = (v_{0}^{0},v_{0}^{1},v_{0}^{2},v_{0}^{3}),</math>

<math>v_{0}^i = \begin{cases} \mbox{E0000000 00000000 00000000 00000000}, & \mbox{HSIZE} = 224 \\ \mbox{00010000 00000000 00000000 00000000}, & \mbox{HSIZE} = 256 \end{cases}\mbox{ },\mbox{ }0 \le i \le 3</math>

Когда применяется <math>\mbox{COMPRESS}_{1024}</math> (<math>\mbox{HSIZE}</math> от 257 до 512 бит),

<math>V_0 = (v_{0}^{0},v_{0}^{1},v_{0}^{2},v_{0}^{3}, v_{0}^{4},v_{0}^{5},v_{0}^{6},v_{0}^{7}),</math>

<math>v_{0}^i = \begin{cases} \mbox{80010000 00000000 00000000 00000000}, & \mbox{HSIZE} = 384 \\ \mbox{00020000 00000000 00000000 00000000}, & \mbox{HSIZE} = 512 \end{cases}\mbox{ },\mbox{ }0 \le i \le 7</math>

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

Результатом дополнения сообщения <math>M</math> является сообщение <math>M'</math>, длина которого кратна 128. Обозначим через <math>L</math> длину исходного сообщения. Тогда <math>M'</math> получается в несколько шагов:

  1. К концу сообщения <math>M</math> приписать бит «1».
  2. Приписать <math>x</math> битов «0», где <math>x = \mbox{MSIZE} - ((L+144)\mbox{ }\bmod \mbox{MSIZE}) - 1</math>
  3. Приписать 16-битное представление числа <math>\mbox{HSIZE}</math>
  4. Наконец, приписать 128-битное представление числа <math>L</math>

Дополненное сообщение <math>M'</math> записывается в виде

<math> M' = \overbrace{M}^{L} \| 1 \| \overbrace{0.....0}^{x} \| \overbrace{\mbox{HSIZE}}^{16} \| \overbrace{L}^{128} </math>

COMPRESS512

Дополненное сообщение <math>M'</math> делится на <math>t</math> блоков <math>M_{1} ... M_{t}</math>, каждый длиной <math>\mbox{MSIZE} = 1536</math> бит. Эти блоки друг за другом подаются на вход функции <math>\mbox{COMPRESS}_{512}</math>, при этом в итоге вычисляется <math>t+1</math> значений переменной цепочки:

<math> V_i = \mbox{COMPRESS}_{512}(V_{i-1}, M_i, C_i, \mbox{SALT})\mbox{ },\mbox{ }0 \le i \le t </math>

Каждый блок <math>M_i</math> можно представить в виде двенадцати 128-битовых слов:

<math> M_i = m_{i}^{0} \| m_{i}^{1} \| m_{i}^{2} \| m_{i}^{3} \| m_{i}^{4} \| m_{i}^{5} \| m_{i}^{6} \| m_{i}^{7} \| m_{i}^{8} \| m_{i}^{9} \| m_{i}^{10} \| m_{i}^{11} </math>

Переменная цепочки <math>V_{i-1}</math> аналогичным образом записывается в виде последовательности из 4 слов:

<math> V_{i-1} = v_{i-1}^{0} \| v_{i-1}^{1} \| v_{i-1}^{2} \| v_{i-1}^{3} </math>

Дальнейшие операции проводятся над матрицей состояния <math>S</math> из 4 строк и 4 столбцов:

<math>S</math> <math>=</math>
<math>w_{0}</math> <math>w_{4}</math> <math>w_{8}</math> <math>w_{12}</math>
<math>w_{1}</math> <math>w_{5}</math> <math>w_{9}</math> <math>w_{13}</math>
<math>w_{2}</math> <math>w_{6}</math> <math>w_{10}</math> <math>w_{14}</math>
<math>w_{3}</math> <math>w_{7}</math> <math>w_{11}</math> <math>w_{15}</math>

В начале <math>i</math>-ой итерации вычисления значения <math>\mbox{COMPRESS}_{512}</math> <math>V_i</math> и <math>M_i</math> упаковываются в матрицу <math>S</math> следующим образом:

<math>S</math> <math>=</math>
<math>v_{i-1}^{0}</math> <math>m_{i}^{0}</math> <math>m_{i}^{4}</math> <math>m_{i}^{8}</math>
<math>v_{i-1}^{1}</math> <math>m_{i}^{1}</math> <math>m_{i}^{5}</math> <math>m_{i}^{9}</math>
<math>v_{i-1}^{2}</math> <math>m_{i}^{2}</math> <math>m_{i}^{6}</math> <math>m_{i}^{10}</math>
<math>v_{i-1}^{3}</math> <math>m_{i}^{3}</math> <math>m_{i}^{7}</math> <math>m_{i}^{11}</math>

Вычисление <math>\mbox{COMPRESS}_{512}</math> происходит в 8 раундов, называемых в ECHO <math>\mbox{BIG.ROUND}</math>. Каждый такой раунд состоит из последовательного применения 3 функций:

<math>\mbox{BIG.SUBWORDS}(S, \mbox{ SALT}, \mbox{ }\kappa)</math>

<math>\mbox{BIG.SHIFTROWS}(S)</math>

<math>\mbox{BIG.MIXCOLUMNS}(S)</math>

BIG.SUBWORDS(S, SALT, κ)

<math>\mbox{BIG.SUBWORDS}(S, \mbox{ SALT}, \mbox{ }\kappa)</math> — это 2 AES раунда. Обозначим действие одного раунда AES с ключом <math>k</math> на 128-битное слово <math>w</math> как

<math>w' = \mbox{AES}(w, k)</math>

Здесь <math>\mbox{AES}</math> состоит из операций <math>\mbox{SubBytes}</math>, <math>\mbox{ShiftRows}</math>, <math>\mbox{MixColumns}</math> и <math>\mbox{AddRoundKey}</math>. Ключи <math>k</math> для вычисления <math>w'</math> создаются из параметров <math>\mbox{SALT}</math> и <math>\kappa</math>. Последний представляет собой внутренний счетчик, который инициализируется значением <math>C_i</math> и увеличивается во время вычисления <math>\mbox{COMPRESS}_{512}</math>. Важно заметить, что, если в последнем блоке <math>M_t</math> биты исходного сообщения отсутствуют (что могло случится, например, при длине сообщения <math>L</math>, кратной <math>\mbox{MSIZE}</math>), то <math>C_t</math> полагается равным 0.

Значения ключей для двух раундов AES получаются следующим образом:

<math>k_1=\kappa\|\overbrace{0..0}^{64}\mbox{, } k_2 = \mbox{SALT},</math>

если счетчик <math>C_i</math> выбран 64-битным, и

<math>k_1=\kappa\mbox{ , } k_2 = \mbox{SALT}</math>

для 128-битного счетчика.

Операцию <math>\mbox{BIG.SUBWORDS}(S, \mbox{ SALT}, \mbox{ }\kappa)</math> можно описать равенствами

<math>w_{0}' = AES(AES(w_{0},k_1), k_2)</math>, увеличить <math>\kappa</math> на 1 по модулю <math>2^{64}</math> (<math>2^{128}</math>)

<math>w_{1}' = AES(AES(w_{1},k_1), k_2)</math>, увеличить <math>\kappa</math> на 1 по модулю <math>2^{64}</math> (<math>2^{128}</math>)

<math>...</math>

<math>w_{15}' = AES(AES(w_{15},k_1), k_2)</math>, увеличить <math>\kappa</math> на 1 по модулю <math>2^{64}</math> (<math>2^{128}</math>)

Счетчик <math>\kappa</math> увеличивается на протяжении всех восьми раундов (которые выше названы <math>\mbox{BIG.ROUND}</math>), то есть, например, в начале второго раунда <math>\kappa = C_i + 16</math>.

BIG.SHIFTROWS(S)

Операция <math>\mbox{BIG.SHIFTROWS}(S)</math> проводит циклический сдвиг влево строк матрицы состояния <math>S</math>:

<math>w_{i+4j}' = w_{i+4((i+j)\bmod 4)}, \mbox{ }0\le i,j\le 3</math>.

Более наглядно:

<math>w_{0}</math> <math>w_{4}</math> <math>w_{8}</math> <math>w_{12}</math>
<math>w_{1}</math> <math>w_{5}</math> <math>w_{9}</math> <math>w_{13}</math>
<math>w_{2}</math> <math>w_{6}</math> <math>w_{10}</math> <math>w_{14}</math>
<math>w_{3}</math> <math>w_{7}</math> <math>w_{11}</math> <math>w_{15}</math>
<math>\longrightarrow</math> <math>\mbox{ }</math>
<math>w_{0}</math> <math>w_{4}</math> <math>w_{8}</math> <math>w_{12}</math>
<math>w_{5}</math> <math>w_{9}</math> <math>w_{13}</math> <math>w_{1}</math>
<math>w_{10}</math> <math>w_{14}</math> <math>w_{2}</math> <math>w_{6}</math>
<math>w_{15}</math> <math>w_{3}</math> <math>w_{7}</math> <math>w_{11}</math>

BIG.MIXCOLUMNS(S)

<math>\mbox{BIG.MIXCOLUMNS}(S)</math> состоит из последовательного применения операции <math>\mbox{MixColumns}</math>, определенной в AES. Рассмотрим столбцы матрицы <math>S</math>, состоящие из 128-битных слов <math>w_{i}, ..., w_{i+3}</math>, где <math>i \in \{0, 4, 8, 12\}</math>. Элементы столбцов можно представить в виде байтовых строк:

<math>w_{i}</math> <math>=</math> <math>(B_{16i},B_{16i+1}, ..., B_{16i+15})</math>
<math>w_{i+1}</math> <math>=</math> <math>(B_{16i+16},B_{16i+17}, ..., B_{16i+31})</math>
<math>w_{i+2}</math> <math>=</math> <math>(B_{16i+32},B_{16i+33}, ..., B_{16i+47})</math>
<math>w_{i+3}</math> <math>=</math> <math>(B_{16i+48},B_{16i+49}, ..., B_{16i+63})</math>

Тогда <math>\mbox{BIG.MIXCOLUMNS}(S)</math> вычисляется как

<math> \begin{pmatrix} B_{16i+j}' \\ B_{16i+16+j}' \\ B_{16i+32+j}' \\ B_{16i+48+j}' \end{pmatrix} = \begin{pmatrix} 02 & 03 & 01 & 01 \\ 01 & 02 & 03 & 01 \\ 01 & 01 & 02 & 03 \\ 03 & 01 & 01 & 02 \end{pmatrix} \cdot \begin{pmatrix} B_{16i+j} \\ B_{16i+16+j} \\ B_{16i+32+j} \\ B_{16i+48+j} \end{pmatrix} ,\mbox{ } i \in \{0, 4, 8, 12\},\mbox{ } 0 \le j \le 15 </math>

Последняя формула представляет собой операцию <math>\mbox{MixColumns}</math>, в которой сложение и умножение определены в поле <math>GF(2^8)</math> по модулю многочлена <math>x^8+x^4+x^3+x+1</math>.

Окончание вычисления COMPRESS512

Функцию <math>\mbox{COMPRESS}_{512}</math> можно описать, используя определенные выше операции:

<math>\mbox{for i := 1 to 8 do}</math>

<math>\mbox{begin}</math>
<math>\mbox{BIG.SUBWORDS}(S, \mbox{ SALT}, \mbox{ }\kappa)</math>
<math>\mbox{BIG.SHIFTROWS}(S)</math>
<math>\mbox{BIG.MIXCOLUMNS}(S)</math>
<math>\mbox{end}</math>
<math>\mbox{BIG.FINAL}</math>

Операция <math>\mbox{BIG.FINAL}</math> вычисляет значение переменной цепочки <math>V_{i}</math>, используя полученную в результате применения 8 раундов матрицу состояния <math>S</math>, блок сообщения <math>M_i</math> и предыдущее значение переменной цепочки <math>V_{i-1}</math>:

<math>v_{i}^{0}</math> <math>=</math> <math>v_{i-1}^{0} \oplus m_{i}^{0} \oplus m_{i}^{4} \oplus m_{i}^{8} \oplus w_{0} \oplus w_{4} \oplus w_{8} \oplus w_{12}</math>
<math>v_{i}^{1}</math> <math>=</math> <math>v_{i-1}^{1} \oplus m_{i}^{1} \oplus m_{i}^{5} \oplus m_{i}^{8} \oplus w_{1} \oplus w_{5} \oplus w_{9} \oplus w_{13}</math>
<math>v_{i}^{2}</math> <math>=</math> <math>v_{i-1}^{2} \oplus m_{i}^{2} \oplus m_{i}^{6} \oplus m_{i}^{9} \oplus w_{2} \oplus w_{6} \oplus w_{10} \oplus w_{14}</math>
<math>v_{i}^{3}</math> <math>=</math> <math>v_{i-1}^{3} \oplus m_{i}^{3} \oplus m_{i}^{7} \oplus m_{i}^{10} \oplus w_{3} \oplus w_{7} \oplus w_{11} \oplus w_{15}</math>

Здесь за <math>w_{0}, ..., w_{15}</math> обозначены элементы матрицы <math>S</math>, <math>\oplus</math> — операция исключающего ИЛИ.

Конечное значение хеш-функции

Конечное значение переменной цепочки — это строка из 512 бит:

<math>v_{t}^{0}\|v_{t}^{1}\|v_{t}^{2}\|v_{t}^{3}</math>

Результатом хеширования с битовой длиной <math>\mbox{HSIZE}</math>, принимающей значения от 128 до 256, являются <math>\mbox{HSIZE}</math> крайних левых бит переменной цепочки. Например, для значения хеш-функции <math>h</math> с длиной <math>\mbox{HSIZE} = 256</math>:

<math>h = v_{t}^{0} \| v_{t}^{1}.</math>

COMPRESS1024

Для значений <math>\mbox{HSIZE}</math>, больших 256 (но не превышающих 512) бит применяется функция сжатия <math>\mbox{COMPRESS}_{1024}</math>. Операции в <math>\mbox{COMPRESS}_{1024}</math> совпадают с операциями в <math>\mbox{COMPRESS}_{512}</math>, за исключением нескольких отличий:

1.  Дополненное сообщение <math>M'</math> разбивается на <math>t</math> блоков <math>M_{1}...M_{t}</math>, каждый из которых имеет длину 1024 бит.
2.  Переменная цепочки состоит из восьми 128-битовых слов <math>V_i = v_{i}^0...v_{i}^7</math> и инициализируется так, как описано выше.
3.  В начале сжатия переменная цепочки и блок сообщения упаковываются в матрицу 4 на 4 следующим образом:
<math>v_{i-1}^{0}</math> <math>v_{i-1}^{4}</math> <math>m_{i}^{0}</math> <math>m_{i}^{4}</math>
<math>v_{i-1}^{1}</math> <math>v_{i-1}^{5}</math> <math>m_{i}^{1}</math> <math>m_{i}^{5}</math>
<math>v_{i-1}^{2}</math> <math>v_{i-1}^{6}</math> <math>m_{i}^{2}</math> <math>m_{i}^{6}</math>
<math>v_{i-1}^{3}</math> <math>v_{i-1}^{7}</math> <math>m_{i}^{3}</math> <math>m_{i}^{7}</math>
4.  Вычисление состоит из десяти итераций <math>\mbox{BIG.ROUND}</math> (а не из восьми, как в <math>\mbox{COMPRESS}_{512}</math>).
5.  Операция <math>\mbox{BIG.FINAL}</math> для <math>\mbox{COMPRESS}_{1024}</math> переопределяется следующим образом:
<math>v_{i}^{0}</math> <math>=</math> <math>v_{i-1}^{0}\oplus m_{i}^{0} \oplus w_{0} \oplus w_{8}</math> <math>v_{i}^{4}</math> <math>=</math> <math>v_{i-1}^{4}\oplus m_{i}^{4} \oplus w_{4} \oplus w_{12}</math>
<math>v_{i}^{1}</math> <math>=</math> <math>v_{i-1}^{1}\oplus m_{i}^{1} \oplus w_{1} \oplus w_{9}</math> <math>v_{i}^{5}</math> <math>=</math> <math>v_{i-1}^{5}\oplus m_{i}^{5} \oplus w_{5} \oplus w_{13}</math>
<math>v_{i}^{2}</math> <math>=</math> <math>v_{i-1}^{2}\oplus m_{i}^{2} \oplus w_{2} \oplus w_{10}</math> <math>v_{i}^{6}</math> <math>=</math> <math>v_{i-1}^{6}\oplus m_{i}^{6} \oplus w_{6} \oplus w_{14}</math>
<math>v_{i}^{3}</math> <math>=</math> <math>v_{i-1}^{3}\oplus m_{i}^{3} \oplus w_{3} \oplus w_{11}</math> <math>v_{i}^{7}</math> <math>=</math> <math>v_{i-1}^{7}\oplus m_{i}^{7} \oplus w_{7} \oplus w_{15}</math>

Конечное значение хеш-функции

Длина переменной цепочки для <math>\mbox{COMPRESS}_{1024}</math> — 1024 бит, поэтому её конечное значение:

<math>V_{t}=v_{t}^{0} \| v_{t}^{1} \| v_{t}^{2} \| v_{t}^{3} \| v_{t}^{4} \| v_{t}^{5} \| v_{t}^{6} \| v_{t}^{7}</math>

Как и в <math>\mbox{COMPRESS}_{512}</math>, результатом хеширования <math>h</math> являются <math>\mbox{HSIZE}</math> крайних левых бит <math>V_{t}</math>. Например, для <math>\mbox{HSIZE} = 384</math>

<math>h = v_{t}^{0} \| v_{t}^{1} \| v_{t}^{2} \| v_{t}^{3} </math>

Источники

  • [csrc.nist.gov/groups/ST/hash/sha-3/Round2/submissions_rnd2.html Кандидаты SHA-3, прошедшие во второй раунд] (англ.). [www.webcitation.org/66pZBvYRB Архивировано из первоисточника 11 апреля 2012].
  • [crypto.rd.francetelecom.com/echo/ Страничка хеш-функции ECHO] (англ.). [www.webcitation.org/66pZCM8V9 Архивировано из первоисточника 11 апреля 2012].

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

Ссылки

  • [csrc.nist.gov/groups/ST/hash/documents/FR_Notice_Nov07.pdf Конкурс SHA-3] (англ.). [www.webcitation.org/66pZCt13n Архивировано из первоисточника 11 апреля 2012].
  • [csrc.nist.gov/groups/ST/hash/documents/DUNKELMAN_talk.pdf HAIFA] (англ.). — HAsh Iterative FrAmework. [www.webcitation.org/66pZDIpHk Архивировано из первоисточника 11 апреля 2012].

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

Николай в два слова купил за шесть тысяч семнадцать жеребцов на подбор (как он говорил) для казового конца своего ремонта. Пообедав и выпив немножко лишнего венгерского, Ростов, расцеловавшись с помещиком, с которым он уже сошелся на «ты», по отвратительной дороге, в самом веселом расположении духа, поскакал назад, беспрестанно погоняя ямщика, с тем чтобы поспеть на вечер к губернатору.
Переодевшись, надушившись и облив голову холодной подои, Николай хотя несколько поздно, но с готовой фразой: vaut mieux tard que jamais, [лучше поздно, чем никогда,] явился к губернатору.
Это был не бал, и не сказано было, что будут танцевать; но все знали, что Катерина Петровна будет играть на клавикордах вальсы и экосезы и что будут танцевать, и все, рассчитывая на это, съехались по бальному.
Губернская жизнь в 1812 году была точно такая же, как и всегда, только с тою разницею, что в городе было оживленнее по случаю прибытия многих богатых семей из Москвы и что, как и во всем, что происходило в то время в России, была заметна какая то особенная размашистость – море по колено, трын трава в жизни, да еще в том, что тот пошлый разговор, который необходим между людьми и который прежде велся о погоде и об общих знакомых, теперь велся о Москве, о войске и Наполеоне.
Общество, собранное у губернатора, было лучшее общество Воронежа.
Дам было очень много, было несколько московских знакомых Николая; но мужчин не было никого, кто бы сколько нибудь мог соперничать с георгиевским кавалером, ремонтером гусаром и вместе с тем добродушным и благовоспитанным графом Ростовым. В числе мужчин был один пленный итальянец – офицер французской армии, и Николай чувствовал, что присутствие этого пленного еще более возвышало значение его – русского героя. Это был как будто трофей. Николай чувствовал это, и ему казалось, что все так же смотрели на итальянца, и Николай обласкал этого офицера с достоинством и воздержностью.
Как только вошел Николай в своей гусарской форме, распространяя вокруг себя запах духов и вина, и сам сказал и слышал несколько раз сказанные ему слова: vaut mieux tard que jamais, его обступили; все взгляды обратились на него, и он сразу почувствовал, что вступил в подобающее ему в губернии и всегда приятное, но теперь, после долгого лишения, опьянившее его удовольствием положение всеобщего любимца. Не только на станциях, постоялых дворах и в коверной помещика были льстившиеся его вниманием служанки; но здесь, на вечере губернатора, было (как показалось Николаю) неисчерпаемое количество молоденьких дам и хорошеньких девиц, которые с нетерпением только ждали того, чтобы Николай обратил на них внимание. Дамы и девицы кокетничали с ним, и старушки с первого дня уже захлопотали о том, как бы женить и остепенить этого молодца повесу гусара. В числе этих последних была сама жена губернатора, которая приняла Ростова, как близкого родственника, и называла его «Nicolas» и «ты».
Катерина Петровна действительно стала играть вальсы и экосезы, и начались танцы, в которых Николай еще более пленил своей ловкостью все губернское общество. Он удивил даже всех своей особенной, развязной манерой в танцах. Николай сам был несколько удивлен своей манерой танцевать в этот вечер. Он никогда так не танцевал в Москве и счел бы даже неприличным и mauvais genre [дурным тоном] такую слишком развязную манеру танца; но здесь он чувствовал потребность удивить их всех чем нибудь необыкновенным, чем нибудь таким, что они должны были принять за обыкновенное в столицах, но неизвестное еще им в провинции.
Во весь вечер Николай обращал больше всего внимания на голубоглазую, полную и миловидную блондинку, жену одного из губернских чиновников. С тем наивным убеждением развеселившихся молодых людей, что чужие жены сотворены для них, Ростов не отходил от этой дамы и дружески, несколько заговорщически, обращался с ее мужем, как будто они хотя и не говорили этого, но знали, как славно они сойдутся – то есть Николай с женой этого мужа. Муж, однако, казалось, не разделял этого убеждения и старался мрачно обращаться с Ростовым. Но добродушная наивность Николая была так безгранична, что иногда муж невольно поддавался веселому настроению духа Николая. К концу вечера, однако, по мере того как лицо жены становилось все румянее и оживленнее, лицо ее мужа становилось все грустнее и бледнее, как будто доля оживления была одна на обоих, и по мере того как она увеличивалась в жене, она уменьшалась в муже.


Николай, с несходящей улыбкой на лице, несколько изогнувшись на кресле, сидел, близко наклоняясь над блондинкой и говоря ей мифологические комплименты.
Переменяя бойко положение ног в натянутых рейтузах, распространяя от себя запах духов и любуясь и своей дамой, и собою, и красивыми формами своих ног под натянутыми кичкирами, Николай говорил блондинке, что он хочет здесь, в Воронеже, похитить одну даму.
– Какую же?
– Прелестную, божественную. Глаза у ней (Николай посмотрел на собеседницу) голубые, рот – кораллы, белизна… – он глядел на плечи, – стан – Дианы…
Муж подошел к ним и мрачно спросил у жены, о чем она говорит.
– А! Никита Иваныч, – сказал Николай, учтиво вставая. И, как бы желая, чтобы Никита Иваныч принял участие в его шутках, он начал и ему сообщать свое намерение похитить одну блондинку.
Муж улыбался угрюмо, жена весело. Добрая губернаторша с неодобрительным видом подошла к ним.
– Анна Игнатьевна хочет тебя видеть, Nicolas, – сказала она, таким голосом выговаривая слова: Анна Игнатьевна, что Ростову сейчас стало понятно, что Анна Игнатьевна очень важная дама. – Пойдем, Nicolas. Ведь ты позволил мне так называть тебя?
– О да, ma tante. Кто же это?
– Анна Игнатьевна Мальвинцева. Она слышала о тебе от своей племянницы, как ты спас ее… Угадаешь?..
– Мало ли я их там спасал! – сказал Николай.
– Ее племянницу, княжну Болконскую. Она здесь, в Воронеже, с теткой. Ого! как покраснел! Что, или?..
– И не думал, полноте, ma tante.
– Ну хорошо, хорошо. О! какой ты!
Губернаторша подводила его к высокой и очень толстой старухе в голубом токе, только что кончившей свою карточную партию с самыми важными лицами в городе. Это была Мальвинцева, тетка княжны Марьи по матери, богатая бездетная вдова, жившая всегда в Воронеже. Она стояла, рассчитываясь за карты, когда Ростов подошел к ней. Она строго и важно прищурилась, взглянула на него и продолжала бранить генерала, выигравшего у нее.
– Очень рада, мой милый, – сказала она, протянув ему руку. – Милости прошу ко мне.
Поговорив о княжне Марье и покойнике ее отце, которого, видимо, не любила Мальвинцева, и расспросив о том, что Николай знал о князе Андрее, который тоже, видимо, не пользовался ее милостями, важная старуха отпустила его, повторив приглашение быть у нее.
Николай обещал и опять покраснел, когда откланивался Мальвинцевой. При упоминании о княжне Марье Ростов испытывал непонятное для него самого чувство застенчивости, даже страха.
Отходя от Мальвинцевой, Ростов хотел вернуться к танцам, но маленькая губернаторша положила свою пухленькую ручку на рукав Николая и, сказав, что ей нужно поговорить с ним, повела его в диванную, из которой бывшие в ней вышли тотчас же, чтобы не мешать губернаторше.
– Знаешь, mon cher, – сказала губернаторша с серьезным выражением маленького доброго лица, – вот это тебе точно партия; хочешь, я тебя сосватаю?
– Кого, ma tante? – спросил Николай.
– Княжну сосватаю. Катерина Петровна говорит, что Лили, а по моему, нет, – княжна. Хочешь? Я уверена, твоя maman благодарить будет. Право, какая девушка, прелесть! И она совсем не так дурна.
– Совсем нет, – как бы обидевшись, сказал Николай. – Я, ma tante, как следует солдату, никуда не напрашиваюсь и ни от чего не отказываюсь, – сказал Ростов прежде, чем он успел подумать о том, что он говорит.
– Так помни же: это не шутка.
– Какая шутка!
– Да, да, – как бы сама с собою говоря, сказала губернаторша. – А вот что еще, mon cher, entre autres. Vous etes trop assidu aupres de l'autre, la blonde. [мой друг. Ты слишком ухаживаешь за той, за белокурой.] Муж уж жалок, право…
– Ах нет, мы с ним друзья, – в простоте душевной сказал Николай: ему и в голову не приходило, чтобы такое веселое для него препровождение времени могло бы быть для кого нибудь не весело.
«Что я за глупость сказал, однако, губернаторше! – вдруг за ужином вспомнилось Николаю. – Она точно сватать начнет, а Соня?..» И, прощаясь с губернаторшей, когда она, улыбаясь, еще раз сказала ему: «Ну, так помни же», – он отвел ее в сторону:
– Но вот что, по правде вам сказать, ma tante…
– Что, что, мой друг; пойдем вот тут сядем.
Николай вдруг почувствовал желание и необходимость рассказать все свои задушевные мысли (такие, которые и не рассказал бы матери, сестре, другу) этой почти чужой женщине. Николаю потом, когда он вспоминал об этом порыве ничем не вызванной, необъяснимой откровенности, которая имела, однако, для него очень важные последствия, казалось (как это и кажется всегда людям), что так, глупый стих нашел; а между тем этот порыв откровенности, вместе с другими мелкими событиями, имел для него и для всей семьи огромные последствия.
– Вот что, ma tante. Maman меня давно женить хочет на богатой, но мне мысль одна эта противна, жениться из за денег.
– О да, понимаю, – сказала губернаторша.
– Но княжна Болконская, это другое дело; во первых, я вам правду скажу, она мне очень нравится, она по сердцу мне, и потом, после того как я ее встретил в таком положении, так странно, мне часто в голову приходило что это судьба. Особенно подумайте: maman давно об этом думала, но прежде мне ее не случалось встречать, как то все так случалось: не встречались. И во время, когда Наташа была невестой ее брата, ведь тогда мне бы нельзя было думать жениться на ней. Надо же, чтобы я ее встретил именно тогда, когда Наташина свадьба расстроилась, ну и потом всё… Да, вот что. Я никому не говорил этого и не скажу. А вам только.
Губернаторша пожала его благодарно за локоть.
– Вы знаете Софи, кузину? Я люблю ее, я обещал жениться и женюсь на ней… Поэтому вы видите, что про это не может быть и речи, – нескладно и краснея говорил Николай.
– Mon cher, mon cher, как же ты судишь? Да ведь у Софи ничего нет, а ты сам говорил, что дела твоего папа очень плохи. А твоя maman? Это убьет ее, раз. Потом Софи, ежели она девушка с сердцем, какая жизнь для нее будет? Мать в отчаянии, дела расстроены… Нет, mon cher, ты и Софи должны понять это.
Николай молчал. Ему приятно было слышать эти выводы.
– Все таки, ma tante, этого не может быть, – со вздохом сказал он, помолчав немного. – Да пойдет ли еще за меня княжна? и опять, она теперь в трауре. Разве можно об этом думать?
– Да разве ты думаешь, что я тебя сейчас и женю. Il y a maniere et maniere, [На все есть манера.] – сказала губернаторша.
– Какая вы сваха, ma tante… – сказал Nicolas, целуя ее пухлую ручку.


Приехав в Москву после своей встречи с Ростовым, княжна Марья нашла там своего племянника с гувернером и письмо от князя Андрея, который предписывал им их маршрут в Воронеж, к тетушке Мальвинцевой. Заботы о переезде, беспокойство о брате, устройство жизни в новом доме, новые лица, воспитание племянника – все это заглушило в душе княжны Марьи то чувство как будто искушения, которое мучило ее во время болезни и после кончины ее отца и в особенности после встречи с Ростовым. Она была печальна. Впечатление потери отца, соединявшееся в ее душе с погибелью России, теперь, после месяца, прошедшего с тех пор в условиях покойной жизни, все сильнее и сильнее чувствовалось ей. Она была тревожна: мысль об опасностях, которым подвергался ее брат – единственный близкий человек, оставшийся у нее, мучила ее беспрестанно. Она была озабочена воспитанием племянника, для которого она чувствовала себя постоянно неспособной; но в глубине души ее было согласие с самой собою, вытекавшее из сознания того, что она задавила в себе поднявшиеся было, связанные с появлением Ростова, личные мечтания и надежды.
Когда на другой день после своего вечера губернаторша приехала к Мальвинцевой и, переговорив с теткой о своих планах (сделав оговорку о том, что, хотя при теперешних обстоятельствах нельзя и думать о формальном сватовстве, все таки можно свести молодых людей, дать им узнать друг друга), и когда, получив одобрение тетки, губернаторша при княжне Марье заговорила о Ростове, хваля его и рассказывая, как он покраснел при упоминании о княжне, – княжна Марья испытала не радостное, но болезненное чувство: внутреннее согласие ее не существовало более, и опять поднялись желания, сомнения, упреки и надежды.
В те два дня, которые прошли со времени этого известия и до посещения Ростова, княжна Марья не переставая думала о том, как ей должно держать себя в отношении Ростова. То она решала, что она не выйдет в гостиную, когда он приедет к тетке, что ей, в ее глубоком трауре, неприлично принимать гостей; то она думала, что это будет грубо после того, что он сделал для нее; то ей приходило в голову, что ее тетка и губернаторша имеют какие то виды на нее и Ростова (их взгляды и слова иногда, казалось, подтверждали это предположение); то она говорила себе, что только она с своей порочностью могла думать это про них: не могли они не помнить, что в ее положении, когда еще она не сняла плерезы, такое сватовство было бы оскорбительно и ей, и памяти ее отца. Предполагая, что она выйдет к нему, княжна Марья придумывала те слова, которые он скажет ей и которые она скажет ему; и то слова эти казались ей незаслуженно холодными, то имеющими слишком большое значение. Больше же всего она при свидании с ним боялась за смущение, которое, она чувствовала, должно было овладеть ею и выдать ее, как скоро она его увидит.