DSA

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

NIST

Создан:

1991 год

Опубликован:

1994 год

Размер ключа:

закрытый: 160-256 бит, открытый: 1024-3072 бит

Размер подписи:

два числа по 160-256 бит

DSA (англ. Digital Signature Algorithm - алгоритм цифровой подписи) — криптографический алгоритм с использованием открытого ключа для создания электронной подписи, но не для шифрования (в отличие от RSA и схемы Эль-Гамаля). Подпись создается секретно, но может быть публично проверена. Это означает, что только один субъект может создать подпись сообщения, но любой может проверить её корректность. Алгоритм основан на вычислительной сложности взятия логарифмов в конечных полях.

Алгоритм был предложен Национальным институтом стандартов и технологий (США) в августе 1991 и является запатентованным ([www.google.com/patents/US5231668 U.S. Patent 5 231 668], автор патента - David W. Kravitz) НИСТ сделал этот патент доступным для использования без лицензионных отчислений. DSA является частью DSS (англ. Digital Signature Standard - стандарт цифровой подписи), впервые опубликованного в 1994 (документ FIPS-186 (Federal Information Processing Standards) [www.itl.nist.gov/fipspubs/fip186.htm]). Стандарт несколько раз обновлялся [csrc.nist.gov/publications/fips/archive/fips186-2/fips186-2.pdf] [csrc.nist.gov/publications/fips/fips186-3/fips_186-3.pdf], последняя версия FIPS-186-4 [nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf] (июль 2013).





Описание алгоритма

DSA включает в себя два алгоритма (S, V): для создания подписи сообщения (S) и для ее проверки (V).

Оба алгоритма в начале вычисляют хэш сообщения, используя криптографическую хэш-функцию. Алгоритм S использует хэш и секретный ключ для создания подписи, алгоритм V использует хэш сообщения, подпись и открытый ключ для проверки подписи.

Стоит подчеркнуть, что фактически подписывается не сообщение (произвольной длины), а его хэш (160 - 256 бит), поэтому неизбежны коллизии и одна подпись, вообще говоря, действительна для нескольких сообщений с одинаковым хэшем. Поэтому выбор достаточно "хорошей" хэш-функции очень важен для всей системы в целом. В первой версии стандарта использовалась SHA-1, в последней версии также можно использовать любой алгоритм семейства SHA-2. В августе 2015 был опубликован [nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf стандарт] FIPS-202, описывающий новую хэш-функцию SHA-3. Возможно в скором времени в DSS также включат SHA-3.

Для работы системы требуется база соответствия между реальными реквизитами автора (это может быть как частное лицо, так и организация) и открытыми ключами, а также всеми необходимыми параметрами схемы цифровой подписи (хеш-функция, простые числа). Например, подобной базой может служить центр сертификации.


Параметры схемы цифровой подписи

Для построения системы цифровой подписи нужно выполнить следующие шаги:

  1. Выбор криптографической хеш-функции H(x).
  2. Выбор простого числа q, размерность которого N в битах совпадает с размерностью в битах значений хэш-функции H(x).
  3. Выбор простого числа p, такого, что (p-1) делится на q. Битовая длина p обозначается L (<math>2^{L-1} < p < 2^{L}</math>).
  4. Выбор числа g такого, что его мультипликативный порядок по модулю p равен q. Для его вычисления можно воспользоваться формулой <math>g = h^{(p-1)/q}\mod p</math>, где h — некоторое произвольное число, <math>h \in (1; p - 1)</math> такое, что <math> g \neq 1 </math>. В большинстве случаев значение h = 2 удовлетворяет этому требованию.

Как упомянуто выше, а также в DSS (Digital Signature Standard), первоочередным параметром схемы цифровой подписи является используемая криптографическая хеш-функция, необходимая для преобразования текста сообщения в число, которое собственно и будет подписано. Важной характеристикой этой функции является битовая длина выходной последовательности, обозначаемая далее N (160 для функции SHA-1). В первой версии стандарта DSS рекомендована функция SHA-1 и, соответственно, битовая длина подписываемого числа 160 бит. Сейчас SHA-1 уже не является достаточно безопасной. В стандарте указаны следующие возможные пары значений чисел L и N:

  1. L = 1024, N = 160
  2. L = 2048, N = 224
  3. L = 2048, N = 256
  4. L = 3072, N = 256

В соответствии с этим стандартом рекомендованы хеш-функции семейства SHA-2. Правительственные организации США должны использовать один из этих вариантов. Проектирующий систему может выбрать любую допустимую хеш-функцию. Поэтому далее не будет заостряться внимание на использовании конкретной хеш-функции.

Стойкость криптосистемы на основе DSA не превосходит стойкость используемой хеш-функции и стойкость пары (L,N), чья стойкость не больше стойкости каждого из чисел по отдельности. Ранее рекомендовалась длина p L = 1024 бита. В данный момент для систем, которые должны быть стойкими до 2010 (2030) года, рекомендуется длина в 2048 (3072) бита.

Открытый и секретный ключи

  1. Секретный ключ представляет собой число <math>x \in (0, q)</math>
  2. Открытый ключ вычисляется по формуле <math>y=g^x \mod p</math>

Открытыми параметрами являются числа (p, q, g, y). Закрытый параметр только один — число x. При этом числа (p, q, g) могут быть общими для группы пользователей, а числа x и y являются соответственно закрытым и открытым ключами конкретного пользователя. При подписании сообщения используются секретные числа x и k, причем число k должно выбираться случайным образом (на практике псевдослучайным) при подписывании каждого следующего сообщения.

Поскольку (p, q, g) могут быть использованы для нескольких пользователей, на практике часто делят пользователей по некоторым критериям на группы с одинаковыми (p, q, g). Поэтому эти параметры называют доменными параметрами (Domain Parameters).

Подпись сообщения

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

1 Выбор случайного числа <math>k \in (0,q)</math>
2 Вычисление <math>r=(g^k \mod p)\mod q</math>
3 Выбор другого k, если r=0
4 Вычисление <math>s=k^{-1}(H(m)+x\cdot r)\mod q</math>
5 Выбор другого k, если s=0
6 Подписью является пара (r,s) общей длины 2*N

Вычислительно сложные операции это возведение в степень по модулю (вычисление <math>g^k\bmod p</math>), для которого существуют быстрые алгоритмы, вычисление хэша <math>H(x)</math>, где сложность зависит от выбранного алгоритма хэширования и размера входного сообщения, и нахождение обратного элемента <math>k^{-1} \bmod q</math> используя, например, расширенный алгоритм Евклида или малую теорему Ферма в виде <math>k^{-1}\bmod q = k^{q-2}\bmod q</math>.

Проверка подписи

Проверка подписи выполняется по алгоритму:

1 Вычисление <math>w=s^{-1} \mod q</math>
2 Вычисление <math>u_1 = H(m)\cdot w \mod q</math>
3 Вычисление <math>u_2 = r\cdot w \mod q</math>
4 Вычисление <math>v = (g^{u_1}\cdot y^{u_2} \mod p) \mod q </math>
5 Подпись верна, если <math>v = r </math>

При проверке вычислительно сложные операции это два возведения в степень <math>g^{u_1} y^{u_2} </math>, вычисление хэша <math>H(x)</math> и нахождение обратного элемента <math>s^{-1} \bmod q</math>.

Корректность схемы

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

Во-первых, если <math>g=h^{(p-1)/q} \mod p</math>, то из этого по Малой теореме Ферма следует <math>g^q=h^{p-1}=1 \mod p</math>. Поскольку g>1 и q простое число, то g должно иметь мультипликативный порядок q по модулю p.

Для подписи сообщения вычисляется

<math>s=k^{-1}(H(m)+x \cdot r) \mod{q}.</math>

Из этого следует

<math>k=H(m) \cdot s^{-1}+x \cdot r \cdot s^{-1}=H(m) \cdot w + x \cdot r \cdot w \mod{q}.</math>

Так как g имеет порядок q, получим

<math>g^k=g^{H(m) \cdot w \mod q}g^{x \cdot r \cdot w \mod q}=g^{H(m) \cdot w \mod q}y^{r \cdot w \mod q}=g^{u1}y^{u2} \mod{p}.</math>

Наконец, корректность схемы DSA следует из

<math>r=(g^k \mod p) \mod q=(g^{u1}y^{u2} \mod p) \mod q=v.</math>

Пример работы

Приведем пример работы алгоритма для небольших чисел. Пусть значение хэш - функции нашего сообщения <math>H = 9</math>.

Генерация параметров

  1. <math>H = 9_{10} = 1001_2</math>
  2. длина хэша <math>4</math>, значит можно выбрать <math>q = 11_{10} = 1011_2</math>
  3. выберем <math>p = 23</math>, так как <math>23-1 = 22 = 2*q</math>
  4. выберем <math>g = 2^2 = 4</math>

Создание ключей

  1. в качестве секретного ключа выберем <math>x = 7</math>
  2. тогда открытый ключ <math>y=g^x \bmod p = 4^7 \bmod 23 = 8</math>

Подпись сообщения

  1. выберем <math>k = 3</math>
  2. тогда <math>r=(g^k \bmod p)\bmod q = (4^3 \bmod 23) \bmod 11 = 7</math>
  3. <math>r \ne 0</math>, идем дальше
  4. <math>s=k^{-1}(H(m)+x\cdot r)\bmod q = 4(9+7\cdot 9)\bmod 11 = 1</math>, где учтено, что <math>3^{-1} \bmod 11 = 4</math>
  5. <math>s \ne 0</math>, идем дальше
  6. подписью является пара чисел <math>(r,s) = (7,1)</math>

проверка подписи

  1. <math>w=s^{-1} \bmod q = 1^{-1} \bmod 11 = 1</math>
  2. <math>u_1 = H(m)\cdot w \bmod q = 9\cdot1 \bmod 11 = 9</math>
  3. <math>u_2 = r\cdot w \bmod q = 7\cdot1 \bmod 11 = 7</math>
  4. <math>v = (g^{u_1}\cdot y^{u_2} \bmod p) \bmod q = (4^9\cdot8^7 \bmod 23) \bmod 11 = 7</math>
  5. получили, что <math>v = r</math>, значит формула верна!

Реализация алгоритма

Поскольку НИСТ сделал алгоритм свободным к использованию, то алгоритм можно свободно реализовывать программным, аппаратным или любым другим образом. НИСТ разработал программу проверки соответствия реализации алгоритма стандарту. Информация об этой системе доступна в документе [csrc.nist.gov/groups/STM/cavp/documents/dss/DSAVS.pdf]. Примеры работы алгоритма имеются в этом документе [csrc.nist.gov/groups/ST/toolkit/documents/Examples/DSA2_All.pdf]. Реализации систем цифровой подписи должны использовать криптографические алгоритмы, алгоритмы генерации криптографических ключей и способы распределения ключей, безопасность которых так или иначе подтверждена. К таким алгоритмам и методам относятся алгоритмы и методы:

  1. описанные в документах FIPS (Federal Information Processing Standard)
  2. принятые в рекомендациях FIPS или NIST
  3. указанные в списке функций с подтвержденной безопасностью в документе FIPS 140-2.

Система проверки реализации алгоритма

Для определения соответствия реализации стандарту создана система для проверки реализации алгоритма (The Digital Signature Algorithm Validation System (DSAVS)). Система включает 5 отдельных тестов для проверки каждой из частей системы подписи, так что каждая компонента системы может быть протестирована на соответствие стандарту независимо от другой. Тестируемые компоненты реализации:

  1. Генерация доменных параметров
  2. Проверка доменных параметров
  3. Генерация пары открытый-закрытый ключ
  4. Создание подписи
  5. Проверка подписи

Для проведения проверки реализации, разработчик должен подать соответствующую заявку на тестирование его реализации в авторизованную лабораторию тестирования криптографических модулей (Cryptographic Module Testing Laboratory (CMT laboratory)). Реализация, на проверку которой подана заявка, называется тестируемой реализацией (Implementation Under Test (IUT)). Запрос на тестирование реализации наряду со специфической информацией, необходимой для проведения тестов, содержит общую информацию о разработчике и тестируемой реализации. А именно, следующую информацию:

  1. Товарный знак разработчика
  2. Название продукта, содержащего реализацию
  3. Версия этого продукта
  4. Способ реализации (программно, аппаратно, программно-аппаратно)
  5. Поддерживаемая конфигурация оборудования и операционная система (в случае программной или программно-аппаратной реализации)
  6. Краткое описание тестируемой реализации или продукта (семейства продуктов), в котором производитель реализовал тестируюмую систему (2-3 предложения)
  7. Поддерживаемые размеры числа p
  8. поддерживаемые значения доменных параметров, если реализация работает только с конкретными значениями доменных параметров

Генерация псевдопростых чисел для использования в алгоритме

При работе алгоритма DSA требуется два простых числа (p и q), следовательно необходим генератор псевдослучайных псевдопростых чисел. В соответствии с DSS псевдопростые числа должны генерироваться с помощью методов, безопасность которых подтверждена в документах FIPS. Один из таких методов описан в дополнении к документу FIPS 186. При этом для проверки на простоту рекомендовано использовать вероятностный тест Миллера — Рабина (в соответствии с FIPS 186 рекомендовано число итераций 50).

Простые числа должны удовлетворять условиям:

  1. <math>2^{N - 1} < q < 2^{N}</math>
  2. <math>2^{L-1} < p < 2^{L}</math>
  3. <math>(p-1)</math> делится на <math>q</math>

Для генерации обоих чисел используется начальное число (SEED), которое может определяться уникальными данными домена, для которого планируется генерация доменных параметров, или быть случайным.

Рекомендованный алгоритм генерации

Пусть L представлена в виде <math>L - 1 = n*N + b</math>, где n и b — целые числа, причем b лежит в диапазоне от 0 включая до N. Генерация псевдопростых чисел p и q выполняется следующим образом:

1. Выбор битовой последовательности длиной от N, далее обозначаемой SEED. Обозначим длину этой последовательности в битах seedlen.
2. Вычисляем <math>U=H(SEED) \oplus H(SEED+1 \mod 2^{seedlen})</math>
3. Формирование числа q из числа U путём выставления младшего и старшего значащих бит в 1. Что значит побитовое булево сложение с числами 1 и <math>2^{N-1}</math>. Заметим, что при этом <math>2^{N-1} < q < 2^{N}</math>. 
4. Проверка, является ли полученное q простым.
5. Если окажется, что q составное, то переход на шаг 1
6. Введем переменные counter = 0 и offset = 2. 
7. Для всех k = 0,...,n вычислим <math>V_k = H(SEED + offset + k \mod 2^{seedlen})</math>.
8. Введем целое число <math>W = V_0 + V_1*2^{N} + ... + V_{n-1}*2^{(n-1)*N} + (V_n \mod 2b) * 2^{n*N}</math> и число <math>X = W + 2^{L-1}</math>. Отметим, что <math>0 <= W < 2^{L-1}</math>, следовательно <math>2^{L-1} <= X < 2L</math>. 
9. Пусть <math>c = X \mod 2q</math> и <math>p = X - (c - 1)</math>. При этом <math>p=1 \mod 2q</math>. 
10. Если <math>p < 2^{L-1}</math>, то переходим на шаг 13. 
11. Проверка p на простоту. 
12. Если p проходит тест на простоту, то переходим на шаг 15.
13. Выполнение операций counter = counter + 1 и offset = offset + n + 1. 
14. Если <math>counter >= 2^{12} = 4096</math>, то переходим на шаг 1, иначе переход на шаг 7. 
15. Запоминаем значения SEED и counter для последующего использования (чтобы удостовериться в правильной генерации p и q).

Генерация псевдослучайных чисел для использования в алгоритме

Для работы алгоритма требуется также генератор случайных или псевдослучайных чисел. Этот генератор нужен для создания частного пользовательского ключа (x), а также для создания секретного случайного числа k, которое вырабатывается заново для подписи каждого документа. Как и простые числа p и q, эти случайные или псевдослучайные числа должны быть получены с помощью алгоритмов, безопасность которых подтверждена FIPS. Один из таких методов описан в дополнении C к стандарту ANSI X9.17 (Financial Institution Key Management (Wholesale)). Далее описываются методы, приведенные в дополнении к стандарту DSS (документ FIPS 186[www.itl.nist.gov/fipspubs/fip186.htm]).
Эти алгоритмы используют одностороннюю функцию G(t, c), где t — это N-битное число, c — b-битное, а результат функции G(t, c) — N-битное. Один из способов построения такой функции — использование хеш-функции. Другой метод — использовать алгоритм симметричного шифрования. Эти методы для случая использования SHA-1 (N = 160) описаны в документе FIPS-186.

Способ получения <math>m</math> значений секретного ключа

1. Выбор секретного значения XKEY 
2. Число t = 67452301 EFCDAB89 98BADCFE 10325476 C3D2E1F0 (в шестнадцатеричной записи)
3. Цикл по j с 0 до m - 1
 
   <math>XSEED_j = </math><необязательное значение, может быть получено путём ввода пользователем>; 
   <math>XVAL = XKEY + XSEED_j \mod 2^b</math>; 
   <math>x_j = G(t,XVAL) \mod q</math>;
   <math>XKEY = 1 + XKEY + x_j \mod 2^b</math>;
 

Способ предварительного вычисления нескольких секретных значений k и r

1. Выбор секретного случайного значения KKEY. 
2. Число t = EFCDAB89 98BADCFE 10325476 C3D2E1F0 67452301 (в шестнадцатеричной записи)
3. Цикл по j с 0 до m - 1
 
   <math>k = G(t,KKEY) \mod q</math>;
   <math>k_j^{-1} = k^{-1} \mod q</math>;
   <math>r_j = g^k \mod p \mod q</math>;
   <math>KKEY = 1 + KKEY + k \mod 2b</math>;
 
4. Обозначим следующие m сообщений как <math>M_0, ..., M_{m-1}</math>. Цикл по j от 0 до m - 1
 
   h = SHA(Mj);
   <math>s_j = k_j^{-1}(h + x \cdot r_j) \mod q</math>
   Цифровая подпись для <math>M_j</math> - <math>(r_j,s_j)</math>;
 
5. t = h;
6. Переход к шагу 3;

Шаг 3 позволяет предварительно вычислить величины, необходимые для подписания следующих m сообщений. К шагу 4 можно переходить в любой момент, когда первое из этих m сообщений имеется в наличии. Когда следующее сообщение ещё не доступно, исполнение шага 4 может быть приостановлено. Как только этапы 4 и 5 завершились, можно перейти к исполнению этапа 3 для работы со следующей группой из m сообщений. Кроме памяти для KKEY, необходимо выделить память для хранения двух массивов длины m (один массив для значений <math>r_0, ..., r_{m-1}^{}</math> и второй для чисел <math>k_0^{-1}, ...,k_{m-1}^{-1}</math>), полученных на этапе 3. Память для чисел <math>s_0, ..., s_{m-1}^{}</math> надо выделять только если необходим сохранять подписи для группы сообщений, иначе же <math>s_j</math> на этапе 4 могут быть заменены на одну переменную s.

См. также

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

Ссылки

  • [www.nist.gov/public_affairs/releases/digsigst.htm FACT SHEET ON DIGITAL SIGNATURE STANDARD]

Ссылки на стандарты (англоязычные)

  • [www.itl.nist.gov/fipspubs/fip186.htm Announcing the Standard for Digital Signature Standard (FIPS PUB 186)]
  • [csrc.nist.gov/publications/fips/archive/fips186-2/fips186-2.pdf FIPS PUB 186-2]
  • [csrc.nist.gov/publications/fips/fips186-3/fips_186-3.pdf FIPS PUB 186-3]
  • [nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf FIPS PUB 186-4]
  • FIPS PUB [nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf 202]
  • [csrc.nist.gov/groups/STM/cavp/documents/dss/DSAVS.pdf Digital Signature Algorithm Validation System]
  • [csrc.nist.gov/groups/STM/cmvp/documents/fips140-2/FIPS1402IG.pdf FIPS PUB 140-2 (Security Requirements for Cryptographic Modules)]
  • [csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf FIPS PUB 180-3 (Secure Hash Standard)]

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

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


Анатоль последнее время переселился к Долохову. План похищения Ростовой уже несколько дней был обдуман и приготовлен Долоховым, и в тот день, когда Соня, подслушав у двери Наташу, решилась оберегать ее, план этот должен был быть приведен в исполнение. Наташа в десять часов вечера обещала выйти к Курагину на заднее крыльцо. Курагин должен был посадить ее в приготовленную тройку и везти за 60 верст от Москвы в село Каменку, где был приготовлен расстриженный поп, который должен был обвенчать их. В Каменке и была готова подстава, которая должна была вывезти их на Варшавскую дорогу и там на почтовых они должны были скакать за границу.
У Анатоля были и паспорт, и подорожная, и десять тысяч денег, взятые у сестры, и десять тысяч, занятые через посредство Долохова.
Два свидетеля – Хвостиков, бывший приказный, которого употреблял для игры Долохов и Макарин, отставной гусар, добродушный и слабый человек, питавший беспредельную любовь к Курагину – сидели в первой комнате за чаем.
В большом кабинете Долохова, убранном от стен до потолка персидскими коврами, медвежьими шкурами и оружием, сидел Долохов в дорожном бешмете и сапогах перед раскрытым бюро, на котором лежали счеты и пачки денег. Анатоль в расстегнутом мундире ходил из той комнаты, где сидели свидетели, через кабинет в заднюю комнату, где его лакей француз с другими укладывал последние вещи. Долохов считал деньги и записывал.
– Ну, – сказал он, – Хвостикову надо дать две тысячи.
– Ну и дай, – сказал Анатоль.
– Макарка (они так звали Макарина), этот бескорыстно за тебя в огонь и в воду. Ну вот и кончены счеты, – сказал Долохов, показывая ему записку. – Так?
– Да, разумеется, так, – сказал Анатоль, видимо не слушавший Долохова и с улыбкой, не сходившей у него с лица, смотревший вперед себя.
Долохов захлопнул бюро и обратился к Анатолю с насмешливой улыбкой.
– А знаешь что – брось всё это: еще время есть! – сказал он.
– Дурак! – сказал Анатоль. – Перестань говорить глупости. Ежели бы ты знал… Это чорт знает, что такое!
– Право брось, – сказал Долохов. – Я тебе дело говорю. Разве это шутка, что ты затеял?
– Ну, опять, опять дразнить? Пошел к чорту! А?… – сморщившись сказал Анатоль. – Право не до твоих дурацких шуток. – И он ушел из комнаты.
Долохов презрительно и снисходительно улыбался, когда Анатоль вышел.
– Ты постой, – сказал он вслед Анатолю, – я не шучу, я дело говорю, поди, поди сюда.
Анатоль опять вошел в комнату и, стараясь сосредоточить внимание, смотрел на Долохова, очевидно невольно покоряясь ему.
– Ты меня слушай, я тебе последний раз говорю. Что мне с тобой шутить? Разве я тебе перечил? Кто тебе всё устроил, кто попа нашел, кто паспорт взял, кто денег достал? Всё я.
– Ну и спасибо тебе. Ты думаешь я тебе не благодарен? – Анатоль вздохнул и обнял Долохова.
– Я тебе помогал, но всё же я тебе должен правду сказать: дело опасное и, если разобрать, глупое. Ну, ты ее увезешь, хорошо. Разве это так оставят? Узнается дело, что ты женат. Ведь тебя под уголовный суд подведут…
– Ах! глупости, глупости! – опять сморщившись заговорил Анатоль. – Ведь я тебе толковал. А? – И Анатоль с тем особенным пристрастием (которое бывает у людей тупых) к умозаключению, до которого они дойдут своим умом, повторил то рассуждение, которое он раз сто повторял Долохову. – Ведь я тебе толковал, я решил: ежели этот брак будет недействителен, – cказал он, загибая палец, – значит я не отвечаю; ну а ежели действителен, всё равно: за границей никто этого не будет знать, ну ведь так? И не говори, не говори, не говори!
– Право, брось! Ты только себя свяжешь…
– Убирайся к чорту, – сказал Анатоль и, взявшись за волосы, вышел в другую комнату и тотчас же вернулся и с ногами сел на кресло близко перед Долоховым. – Это чорт знает что такое! А? Ты посмотри, как бьется! – Он взял руку Долохова и приложил к своему сердцу. – Ah! quel pied, mon cher, quel regard! Une deesse!! [О! Какая ножка, мой друг, какой взгляд! Богиня!!] A?
Долохов, холодно улыбаясь и блестя своими красивыми, наглыми глазами, смотрел на него, видимо желая еще повеселиться над ним.
– Ну деньги выйдут, тогда что?
– Тогда что? А? – повторил Анатоль с искренним недоумением перед мыслью о будущем. – Тогда что? Там я не знаю что… Ну что глупости говорить! – Он посмотрел на часы. – Пора!
Анатоль пошел в заднюю комнату.
– Ну скоро ли вы? Копаетесь тут! – крикнул он на слуг.
Долохов убрал деньги и крикнув человека, чтобы велеть подать поесть и выпить на дорогу, вошел в ту комнату, где сидели Хвостиков и Макарин.
Анатоль в кабинете лежал, облокотившись на руку, на диване, задумчиво улыбался и что то нежно про себя шептал своим красивым ртом.
– Иди, съешь что нибудь. Ну выпей! – кричал ему из другой комнаты Долохов.
– Не хочу! – ответил Анатоль, всё продолжая улыбаться.
– Иди, Балага приехал.
Анатоль встал и вошел в столовую. Балага был известный троечный ямщик, уже лет шесть знавший Долохова и Анатоля, и служивший им своими тройками. Не раз он, когда полк Анатоля стоял в Твери, с вечера увозил его из Твери, к рассвету доставлял в Москву и увозил на другой день ночью. Не раз он увозил Долохова от погони, не раз он по городу катал их с цыганами и дамочками, как называл Балага. Не раз он с их работой давил по Москве народ и извозчиков, и всегда его выручали его господа, как он называл их. Не одну лошадь он загнал под ними. Не раз он был бит ими, не раз напаивали они его шампанским и мадерой, которую он любил, и не одну штуку он знал за каждым из них, которая обыкновенному человеку давно бы заслужила Сибирь. В кутежах своих они часто зазывали Балагу, заставляли его пить и плясать у цыган, и не одна тысяча их денег перешла через его руки. Служа им, он двадцать раз в году рисковал и своей жизнью и своей шкурой, и на их работе переморил больше лошадей, чем они ему переплатили денег. Но он любил их, любил эту безумную езду, по восемнадцати верст в час, любил перекувырнуть извозчика и раздавить пешехода по Москве, и во весь скок пролететь по московским улицам. Он любил слышать за собой этот дикий крик пьяных голосов: «пошел! пошел!» тогда как уж и так нельзя было ехать шибче; любил вытянуть больно по шее мужика, который и так ни жив, ни мертв сторонился от него. «Настоящие господа!» думал он.
Анатоль и Долохов тоже любили Балагу за его мастерство езды и за то, что он любил то же, что и они. С другими Балага рядился, брал по двадцати пяти рублей за двухчасовое катанье и с другими только изредка ездил сам, а больше посылал своих молодцов. Но с своими господами, как он называл их, он всегда ехал сам и никогда ничего не требовал за свою работу. Только узнав через камердинеров время, когда были деньги, он раз в несколько месяцев приходил поутру, трезвый и, низко кланяясь, просил выручить его. Его всегда сажали господа.
– Уж вы меня вызвольте, батюшка Федор Иваныч или ваше сиятельство, – говорил он. – Обезлошадничал вовсе, на ярманку ехать уж ссудите, что можете.
И Анатоль и Долохов, когда бывали в деньгах, давали ему по тысяче и по две рублей.
Балага был русый, с красным лицом и в особенности красной, толстой шеей, приземистый, курносый мужик, лет двадцати семи, с блестящими маленькими глазами и маленькой бородкой. Он был одет в тонком синем кафтане на шелковой подкладке, надетом на полушубке.
Он перекрестился на передний угол и подошел к Долохову, протягивая черную, небольшую руку.
– Федору Ивановичу! – сказал он, кланяясь.
– Здорово, брат. – Ну вот и он.
– Здравствуй, ваше сиятельство, – сказал он входившему Анатолю и тоже протянул руку.
– Я тебе говорю, Балага, – сказал Анатоль, кладя ему руки на плечи, – любишь ты меня или нет? А? Теперь службу сослужи… На каких приехал? А?
– Как посол приказал, на ваших на зверьях, – сказал Балага.
– Ну, слышишь, Балага! Зарежь всю тройку, а чтобы в три часа приехать. А?
– Как зарежешь, на чем поедем? – сказал Балага, подмигивая.
– Ну, я тебе морду разобью, ты не шути! – вдруг, выкатив глаза, крикнул Анатоль.
– Что ж шутить, – посмеиваясь сказал ямщик. – Разве я для своих господ пожалею? Что мочи скакать будет лошадям, то и ехать будем.
– А! – сказал Анатоль. – Ну садись.
– Что ж, садись! – сказал Долохов.
– Постою, Федор Иванович.
– Садись, врешь, пей, – сказал Анатоль и налил ему большой стакан мадеры. Глаза ямщика засветились на вино. Отказываясь для приличия, он выпил и отерся шелковым красным платком, который лежал у него в шапке.
– Что ж, когда ехать то, ваше сиятельство?
– Да вот… (Анатоль посмотрел на часы) сейчас и ехать. Смотри же, Балага. А? Поспеешь?
– Да как выезд – счастлив ли будет, а то отчего же не поспеть? – сказал Балага. – Доставляли же в Тверь, в семь часов поспевали. Помнишь небось, ваше сиятельство.
– Ты знаешь ли, на Рожество из Твери я раз ехал, – сказал Анатоль с улыбкой воспоминания, обращаясь к Макарину, который во все глаза умиленно смотрел на Курагина. – Ты веришь ли, Макарка, что дух захватывало, как мы летели. Въехали в обоз, через два воза перескочили. А?
– Уж лошади ж были! – продолжал рассказ Балага. – Я тогда молодых пристяжных к каурому запрег, – обратился он к Долохову, – так веришь ли, Федор Иваныч, 60 верст звери летели; держать нельзя, руки закоченели, мороз был. Бросил вожжи, держи, мол, ваше сиятельство, сам, так в сани и повалился. Так ведь не то что погонять, до места держать нельзя. В три часа донесли черти. Издохла левая только.


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


Марья Дмитриевна, застав заплаканную Соню в коридоре, заставила ее во всем признаться. Перехватив записку Наташи и прочтя ее, Марья Дмитриевна с запиской в руке взошла к Наташе.
– Мерзавка, бесстыдница, – сказала она ей. – Слышать ничего не хочу! – Оттолкнув удивленными, но сухими глазами глядящую на нее Наташу, она заперла ее на ключ и приказав дворнику пропустить в ворота тех людей, которые придут нынче вечером, но не выпускать их, а лакею приказав привести этих людей к себе, села в гостиной, ожидая похитителей.