Генератор псевдослучайных чисел

Поделись знанием:
(перенаправлено с «Псевдослучайное число»)
Перейти к: навигация, поиск

Генератор псевдослучайных чисел (ГПСЧ, англ. pseudorandom number generator, PRNG) — алгоритм, порождающий последовательность чисел, элементы которой почти независимы друг от друга и подчиняются заданному распределению (обычно равномерному).

Современная информатика широко использует псевдослучайные числа в самых разных приложениях — от метода Монте-Карло и имитационного моделирования до криптографии. При этом от качества используемых ГПСЧ напрямую зависит качество получаемых результатов. Это обстоятельство подчёркивает известный афоризм математика ORNL Роберта Кавью (англ.): «генерация случайных чисел слишком важна, чтобы оставлять её на волю случая».





Источники случайных чисел

Источники настоящих случайных чисел найти крайне трудно. Физические шумы, такие, как детекторы событий ионизирующей радиации, дробовой шум в резисторе или космическое излучение, могут быть такими источниками. Однако применяются такие устройства в приложениях сетевой безопасности редко. Сложности также вызывают грубые атаки на подобные устройства.

Криптографические приложения используют для генерации случайных чисел особенные алгоритмы. Эти алгоритмы заранее определены и, следовательно, генерируют последовательность чисел, которая теоретически не может быть статистически случайной. В то же время, если выбрать хороший алгоритм, полученная численная последовательность — псевдослучайных чисел — будет проходить большинство тестов на случайность. Одной из характеристик такой последовательности является период повторения, который должен быть больше рабочего интервала, из которого берутся числа.

Генератор псевдослучайных чисел включён в состав многих современных процессоров, например, RdRand входит в набор инструкций IA-32.[1]

Альтернативным решением является создание набора из большого количества случайных чисел и опубликование его в некотором словаре, называемом «одноразовым блокнотом». Тем не менее, и такие наборы обеспечивают очень ограниченный источник чисел по сравнению с тем количеством, которое требуется приложениям сетевой безопасности. Хотя данные наборы действительно обеспечивают статистическую случайность, они недостаточно безопасны, так как злоумышленник может получить копию словаря.

Детерминированные ГПСЧ

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

Любой ГПСЧ с ограниченными ресурсами рано или поздно зацикливается — начинает повторять одну и ту же последовательность чисел. Длина циклов ГПСЧ зависит от самого генератора и составляет около 2n/2, где n — размер внутреннего состояния в битах, хотя линейные конгруэнтные и LFSR-генераторы обладают максимальными циклами порядка 2n. Если порождаемая последовательность ГПСЧ сходится к слишком коротким циклам, то такой ГПСЧ становится предсказуемым и непригодным для практических приложений.

Большинство простых арифметических генераторов хотя и обладают большой скоростью, но страдают от многих серьёзных недостатков:

  • Слишком короткий период/периоды.
  • Последовательные значения не являются независимыми.
  • Некоторые биты «менее случайны», чем другие.
  • Неравномерное одномерное распределение.
  • Обратимость.

В частности, алгоритм RANDU, десятилетиями использовавшийся на мейнфреймах, оказался очень плохим[2][3], что вызвало сомнения в достоверности результатов многих исследований, использовавших этот алгоритм.

Наиболее распространены линейный конгруэнтный метод, метод Фибоначчи с запаздываниями, регистр сдвига с линейной обратной связью, регистр сдвига с обобщённой обратной связью.

Из современных ГПСЧ широкое распространение также получил «вихрь Мерсенна», предложенный в 1997 году Мацумото и Нисимурой. Его достоинствами являются колоссальный период (219937−1), равномерное распределение в 623 измерениях (линейный конгруэнтный метод даёт более или менее равномерное распределение максимум в 5 измерениях), быстрая генерация случайных чисел (в 2-3 раза быстрее, чем стандартные ГПСЧ, использующие линейный конгруэнтный метод). Однако существуют алгоритмы, распознающие последовательность, порождаемую вихрем Мерсенна, как неслучайную.

ГПСЧ с источником энтропии или ГСЧ

Наравне с существующей необходимостью генерировать легко воспроизводимые последовательности случайных чисел, также существует необходимость генерировать совершенно непредсказуемые или попросту абсолютно случайные числа. Такие генераторы называются генераторами случайных чисел (ГСЧ — англ. random number generator, RNG). Так как такие генераторы чаще всего применяются для генерации уникальных симметричных и асимметричных ключей для шифрования, они чаще всего строятся из комбинации криптостойкого ГПСЧ и внешнего источника энтропии (и именно такую комбинацию теперь и принято понимать под ГСЧ).

Почти все крупные производители микрочипов поставляют аппаратные ГСЧ с различными источниками энтропии, используя различные методы для их очистки от неизбежной предсказуемости. Однако на данный момент скорость сбора случайных чисел всеми существующими микрочипами (несколько тысяч бит в секунду) не соответствует быстродействию современных процессоров.

В современных исследованиях осуществляются попытки использования измерения физических свойств объектов (например, температуры) или даже квантовых флуктуаций вакуума в качестве источника энтропии для ГСЧ.[4]

В персональных компьютерах авторы программных ГСЧ используют гораздо более быстрые источники энтропии, такие, как шум звуковой карты или счётчик тактов процессора. Сбор энтропии являлся наиболее уязвимым местом ГСЧ. Эта проблема до сих пор полностью не разрешена во многих устройствах (например, смарт-картах), которые таким образом остаются уязвимыми. Многие ГСЧ используют традиционные испытанные, хотя и медленные, методы сбора энтропии вроде измерения реакции пользователя (движение мыши и т. п.), как, например, в PGP и Yarrow[5], или взаимодействия между потоками, как, например, в Java SecureRandom.

Пример простейшего ГСЧ с источником энтропии

Если в качестве источника энтропии использовать текущее время, то для получения целого числа от 0 до N достаточно вычислить остаток от деления текущего времени в миллисекундах на число N+1. Недостатком этого ГСЧ является то, что в течение одной миллисекунды он выдает одно и то же число.

Примеры ГСЧ и источников энтропии

Источник энтропии ГПСЧ Достоинства Недостатки
/dev/random в UNIX/Linux Счётчик тактов процессора, однако собирается только во время аппаратных прерываний LFSR, с хешированием выхода через SHA-1 Есть во всех Unix, надёжный источник энтропии Очень долго «нагревается», может надолго «застревать», либо работает как ГПСЧ (/dev/urandom)
Yarrow от Брюса Шнайера[5] Традиционные методы AES-256 и SHA-1 маленького внутреннего состояния Гибкий криптостойкий дизайн Медленный
Microsoft CryptoAPI Текущее время, размер жёсткого диска, размер свободной памяти, номер процесса и NETBIOS-имя компьютера MD5-хеш внутреннего состояния размером в 128 бит Встроен в Windows, не «застревает» Сильно зависит от используемого криптопровайдера (CSP).
Java SecureRandom Взаимодействие между потоками SHA-1-хеш внутреннего состояния (1024 бит) Большое внутреннее состояние Медленный сбор энтропии
Chaos от Ruptor[6] Счётчик тактов процессора, собирается непрерывно Хеширование 4096-битового внутреннего состояния на основе нелинейного варианта Marsaglia-генератора Пока самый быстрый из всех, большое внутреннее состояние, не «застревает» Оригинальная разработка, свойства приведены только по утверждению автора
RRAND от Ruptor[7] Счётчик тактов процессора Зашифровывание внутреннего состояния поточным шифром EnRUPT в authenticated encryption режиме (aeRUPT) Очень быстр, внутреннее состояние произвольного размера по выбору, не «застревает» Оригинальная разработка, свойства приведены только по утверждению автора. Шифр EnRUPT не является криптостойким.
RdRand от intel Шумы токов Построение ПСЧ на основе "случайного" битового считывания значений от токов Очень быстр, не «застревает» Оригинальная разработка, свойства приведены только по утверждению статьи из habrahabr[habrahabr.ru] - уточнить.
ГПСЧ Stratosphera от ORION Счетчик тактов процессора, собирается непрерывно (также используется соль в виде случайно выбранного целого числа) Построение ПСЧ на основе алгоритма от Intel с многоразовой инициализацией и сдвигом Достаточно быстр, не «застревает», проходит все тесты DIEHARD[8] Оригинальная разработка, свойства приведены только исходя из информации на сайте oriondevteam.com[www.oriondevteam.com/] - (уточнение от 23-10-2013).

ГПСЧ в криптографии

Разновидностью ГПСЧ являются ГПСБ (PRBG) — генераторы псевдо-случайных бит, а также различных поточных шифров. ГПСЧ, как и поточные шифры, состоят из внутреннего состояния (обычно размером от 16 бит до нескольких мегабайт), функции инициализации внутреннего состояния ключом или зерном (англ. seed), функции обновления внутреннего состояния и функции вывода. ГПСЧ подразделяются на простые арифметические, сломанные криптографические и криптостойкие. Их общее предназначение — генерация последовательностей чисел, которые невозможно отличить от случайных вычислительными методами.

Хотя многие криптостойкие ГПСЧ или поточные шифры предлагают гораздо более «случайные» числа, такие генераторы гораздо медленнее обычных арифметических и могут быть непригодны во всякого рода исследованиях, требующих, чтобы процессор был свободен для более полезных вычислений.

В военных целях и в полевых условиях применяются только засекреченные синхронные криптостойкие ГПСЧ (поточные шифры), блочные шифры не используются. Примерами известных криптостойких ГПСЧ являются RC4, ISAAC, SEAL, Snow, совсем медленный теоретический алгоритм Блюм — Блюма — Шуба, а также счётчики с криптографическими хеш-функциями или криптостойкими блочными шифрами вместо функции вывода.

Примеры криптостойких ГПСЧ

Циклическое шифрование

В данном случае используется способ генерации ключа сессии из мастер-ключа. Счетчик с периодом N используется в качестве входа в шифрующее устройство. Например, в случае использования 56-битного ключа DES может использоваться счетчик с периодом 256. После каждого созданного ключа значение счетчика повышается на 1. Таким образом, псевдослучайная последовательность, полученная по данной схеме, имеет полный период: каждое выходное значение Х0, Х1,…XN-1 основано на разных значениях счетчика, поэтому Х0 ≠ X1 ≠ XN-1. Так как мастер-ключ является секретным, легко показать, что любой секретный ключ не зависит от знания одного или более предыдущих секретных ключей.

ANSI X9.17

ГПСЧ из стандарта ANSI X9.17 используется во многих приложениях финансовой безопасности и PGP. В основе этого ГПСЧ лежит тройной DES. Генератор ANSI X9.17 состоит из следующих частей:

  1. Вход: генератором управляют два псевдослучайных входа. Один является 64-битным представлением текущих даты и времени, которые меняются каждый раз при создании числа. Другой является 64-битным исходным значением. Оно инициализируется некоторым произвольным значением и изменяется в ходе генерации последовательности псевдослучайных чисел.
  2. Ключи: генератор использует три модуля тройного DES. Все три используют одну и ту же пару 56-битных ключей, которая держится в секрете и применяется только при генерации псевдослучайного числа.
  3. Выход: выход состоит из 64-битного псевдослучайного числа и 64-битного значения, которое будет использоваться в качестве начального значения при создании следующего числа.
  • DTi — значение даты и времени на начало i-ой стадии генерации.
  • Vi — начальное значение для i-ой стадии генерации.
  • Ri — псевдослучайное число, созданное на i-ой стадии генерации.
  • K1, K2 — ключи, используемые на каждой стадии.

Тогда:

Ri = EDEK1,K2 [ EDEK1,K2 [ DTi] Vi ]
Vi+1 = EDEK1,K2 [ EDEK1,K2 [ DTi] Ri]

Схема включает использование 112-битного ключа и трех EDE-шифрований. На вход даются два псевдослучайных значения: значение даты и времени и начальное значение текущей итерации, на выходе получаются начальное значение для следующей итерации и очередное псевдослучайное значение. Даже если псевдослучайное число Ri будет скомпрометировано, вычислить Vi+1 из Ri не является возможным за разумное время, и, следовательно, следующее псевдослучайное значение Ri+1, так как для получения Vi+1 дополнительно выполняются три операции EDE.

Аппаратные ГПСЧ

Кроме устаревших, хорошо известных LFSR-генераторов, широко применявшихся в качестве аппаратных ГПСЧ в XX веке, к сожалению, очень мало известно о современных аппаратных ГПСЧ (поточных шифрах), так как большинство из них разработано для военных целей и держатся в секрете. Почти все существующие коммерческие аппаратные ГПСЧ запатентованы или держатся в секрете. Аппаратные ГПСЧ ограничены строгими требованиями к расходуемой памяти (чаще всего использование памяти запрещено), быстродействию (1-2 такта) и площади (несколько сотен FPGA- или ASIC-ячеек). Из-за таких строгих требований к аппаратным ГПСЧ очень трудно создать криптостойкий генератор, поэтому до сих пор все известные аппаратные ГПСЧ были взломаны. Примерами таких генераторов являются Toyocrypt и LILI-128, которые оба являются LFSR-генераторами, и оба были взломаны с помощью алгебраических атак.

Из-за недостатка хороших аппаратных ГПСЧ производители вынуждены применять имеющиеся под рукой гораздо более медленные, но широко известные блочные шифры (DES, AES) и хеш-функции (SHA-1) в поточных режимах.

Применение ГСЧ в лотереях

К:Википедия:Статьи без источников (тип: не указан)

Генератор случайных чисел для лотерей — аппаратно-программный комплекс, применяющийся в розыгрышах, в которых необходимо угадывать комбинацию из определенного количества чисел. Любое из возможных чисел имеет одинаковую вероятность появления.

Попытки создать генератор случайных чисел относятся к 3500 году до н. э. и связаны с древнеегипетской настольной игрой Сенет. В Сенете два игрока играют за две стороны. Ходы определяются с помощью 4 плоских палочек, что и может считаться генератором случайных чисел того времени. Бросают все четыре палочки сразу. Подсчет очков происходит следующим образом: 1 палочка упала белой стороной вверх — 1 очко и дополнительный бросок; 2 — 2 очка; 3 — 3 очка, 4 — 4 и дополнительный бросок. Одна из сторон палочки черная и если все четыре палочки падали черной стороной вверх — это максимальный результат — 5 очков и дополнительный бросок.

Известный генератор случайных чисел ERNIE применялся на протяжении многих лет для определения выигрышных номеров британской лотереи.

Главные требования к ГСЧ, используемому для проведения розыгрышей:

  • Каждое число получено случайно, не имея ничего общего с другими числами в последовательности;
  • Каждое число из целого ряда имеет равные шансы на выпадение;
  • Каждое число имеет заданную вероятность появления в любой заданной области значений.

Самый распространенный метод генерации случайных чисел называется линейный конгруэнтный метод, но есть ещё и другой — аддитивный конгруэнтный метод. Эти методы генерируют последовательность чисел, удовлетворяющую условию случайности. Основой для использования этих и других методов генерации случайных чисел служит программное обеспечение, бесконечно генерирующее числа, независимо от того, находится в данное время участник в процессе игры или нет. Благодаря этому исключается возможность того, что игрок сможет самостоятельно определить метод генерации, использующийся в данный момент, и «угадать» выпадающие числа.

Например, по законам США требуется, чтобы генератор случайных чисел в игровых автоматах функционировал все время. Кроме того, этим вопросом занимаются непосредственно сами поставщики программного обеспечения.

В российских государственных лотереях («Гослото «5 из 36», «Гослото «6 из 45», «Гослото «7 из 49», «Спортлото 6 из 49», «Рапидо», «Кено-Спортлото», «Топ-3», «12/24», «Всё по сто») для определения победителей используется генератор случайных чисел — аппаратно-программный комплекс, сертифицированный АНО МИЦ и отвечающий рекомендациям ФГУП ВНИИМС.

При использовании ГСЧ для розыгрышей лотерей необходимо соблюдение следующих требований:

  • Тестирование потока чисел на случайность.
  • Исключение возможностей вмешательства с целью подтасовки результатов розыгрыша.
  • Передача результатов розыгрыша в центр обработки ставок в момент определения выигрышной комбинации с точностью до миллисекунды.
  • Возможность резервирования с автоматическим переключением на запасное оборудование в случае неисправности.

См. также

Напишите отзыв о статье "Генератор псевдослучайных чисел"

Примечания

  1. [software.intel.com/sites/default/files/m/d/4/1/d/8/441_Intel_R__DRNG_Software_Implementation_Guide_final_Aug7.pdf Intel Digital Random Number Generator (DRNG): Software Implementation Guide, Revision 1.1] (PDF). Intel Corporation (7 августа 2012). Проверено 25 ноября 2012. [www.webcitation.org/6GhG1P7iR Архивировано из первоисточника 18 мая 2013].
  2. Дональд Кнут. Глава 3.3. Спектральный критерий // Искусство программирования. Указ. соч. — С. 129—130.
  3. William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery. Numerical Recipes in C: The Art of Scientific Computing. — 2nd ed. — Cambridge University Press, 1992. — P. 277. — ISBN 0-521-43108-5.
  4. [lenta.ru/news/2012/04/16/randomiser/ Из квантового вакуума получили случайные числа]
  5. 1 2 [www.schneier.com/yarrow.html Yarrow]
  6. [cryptolib.com/crypto/chaos/ Index of /crypto/chaos]
  7. [cryptolib.com/crypto/rrand/ Index of /crypto/rrand]
  8. Тесты diehard — Википедия

Литература

Ссылки

  • В. А. Успенский. [www.mccme.ru/free-books/dubna/vau-random.pdf Четыре алгоритмических лица случайности]. — МЦНМО, 2006. — 48 с. — ISBN 978-5-94057-485-9.
  • Юрий Лифшиц. Лекция 9: Псевдослучайные генераторы // [yury.name/crypto.html Современные задачи криптографии]. — Курс лекций.
  • Л. Бараш [web.archive.org/web/20141018205118/www.comphys.ru/files/bit-2.pdf Алгоритм AKS проверки чисел на простоту и поиск констант генераторов псевдослучайных чисел] // Безопасность информационных технологий. — 2005. — № 2. — С. 27-38.
  • Жельников В. Псевдослучайные последовательности чисел // [cins.ict.nsc.ru/citonod/My/Crypto/zhelnik.html Кpиптография от папируса до компьютера]. — М.: ABF, 1996. — 335 с. — ISBN 5-87484-054-0.
  • [erngui.com/rng/ Cryptographic Random Numbers] (англ.)
  • [random.mat.sbg.ac.at/ Theory and Practice of Random Number Generation] (англ.)
  • Zvi Gutterman, Benny Pinkas, Tzachy Reinman. [eprint.iacr.org/2006/086 Analysis of the Linux Random Number Generator] (англ.)
  • [csrc.nist.gov/publications/nistpubs/800-22-rev1/SP800-22rev1.pdf A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications] (англ.) NIST SP 800-22

Отрывок, характеризующий Генератор псевдослучайных чисел

Немец засмеялся, вышел совсем из двери коровника, сдернул
колпак и, взмахнув им над головой, закричал:
– Und die ganze Welt hoch! [И весь свет ура!]
Ростов сам так же, как немец, взмахнул фуражкой над головой и, смеясь, закричал: «Und Vivat die ganze Welt»! Хотя не было никакой причины к особенной радости ни для немца, вычищавшего свой коровник, ни для Ростова, ездившего со взводом за сеном, оба человека эти с счастливым восторгом и братскою любовью посмотрели друг на друга, потрясли головами в знак взаимной любви и улыбаясь разошлись – немец в коровник, а Ростов в избу, которую занимал с Денисовым.
– Что барин? – спросил он у Лаврушки, известного всему полку плута лакея Денисова.
– С вечера не бывали. Верно, проигрались, – отвечал Лаврушка. – Уж я знаю, коли выиграют, рано придут хвастаться, а коли до утра нет, значит, продулись, – сердитые придут. Кофею прикажете?
– Давай, давай.
Через 10 минут Лаврушка принес кофею. Идут! – сказал он, – теперь беда. – Ростов заглянул в окно и увидал возвращающегося домой Денисова. Денисов был маленький человек с красным лицом, блестящими черными глазами, черными взлохмоченными усами и волосами. На нем был расстегнутый ментик, спущенные в складках широкие чикчиры, и на затылке была надета смятая гусарская шапочка. Он мрачно, опустив голову, приближался к крыльцу.
– Лавг'ушка, – закричал он громко и сердито. – Ну, снимай, болван!
– Да я и так снимаю, – отвечал голос Лаврушки.
– А! ты уж встал, – сказал Денисов, входя в комнату.
– Давно, – сказал Ростов, – я уже за сеном сходил и фрейлен Матильда видел.
– Вот как! А я пг'одулся, бг'ат, вчег'а, как сукин сын! – закричал Денисов, не выговаривая р . – Такого несчастия! Такого несчастия! Как ты уехал, так и пошло. Эй, чаю!
Денисов, сморщившись, как бы улыбаясь и выказывая свои короткие крепкие зубы, начал обеими руками с короткими пальцами лохматить, как пес, взбитые черные, густые волосы.
– Чог'т меня дег'нул пойти к этой кг'ысе (прозвище офицера), – растирая себе обеими руками лоб и лицо, говорил он. – Можешь себе пг'едставить, ни одной каг'ты, ни одной, ни одной каг'ты не дал.
Денисов взял подаваемую ему закуренную трубку, сжал в кулак, и, рассыпая огонь, ударил ею по полу, продолжая кричать.
– Семпель даст, паг'оль бьет; семпель даст, паг'оль бьет.
Он рассыпал огонь, разбил трубку и бросил ее. Денисов помолчал и вдруг своими блестящими черными глазами весело взглянул на Ростова.
– Хоть бы женщины были. А то тут, кг'оме как пить, делать нечего. Хоть бы дг'аться ског'ей.
– Эй, кто там? – обратился он к двери, заслышав остановившиеся шаги толстых сапог с бряцанием шпор и почтительное покашливанье.
– Вахмистр! – сказал Лаврушка.
Денисов сморщился еще больше.
– Сквег'но, – проговорил он, бросая кошелек с несколькими золотыми. – Г`остов, сочти, голубчик, сколько там осталось, да сунь кошелек под подушку, – сказал он и вышел к вахмистру.
Ростов взял деньги и, машинально, откладывая и ровняя кучками старые и новые золотые, стал считать их.
– А! Телянин! Здог'ово! Вздули меня вчег'а! – послышался голос Денисова из другой комнаты.
– У кого? У Быкова, у крысы?… Я знал, – сказал другой тоненький голос, и вслед за тем в комнату вошел поручик Телянин, маленький офицер того же эскадрона.
Ростов кинул под подушку кошелек и пожал протянутую ему маленькую влажную руку. Телянин был перед походом за что то переведен из гвардии. Он держал себя очень хорошо в полку; но его не любили, и в особенности Ростов не мог ни преодолеть, ни скрывать своего беспричинного отвращения к этому офицеру.
– Ну, что, молодой кавалерист, как вам мой Грачик служит? – спросил он. (Грачик была верховая лошадь, подъездок, проданная Теляниным Ростову.)
Поручик никогда не смотрел в глаза человеку, с кем говорил; глаза его постоянно перебегали с одного предмета на другой.
– Я видел, вы нынче проехали…
– Да ничего, конь добрый, – отвечал Ростов, несмотря на то, что лошадь эта, купленная им за 700 рублей, не стоила и половины этой цены. – Припадать стала на левую переднюю… – прибавил он. – Треснуло копыто! Это ничего. Я вас научу, покажу, заклепку какую положить.
– Да, покажите пожалуйста, – сказал Ростов.
– Покажу, покажу, это не секрет. А за лошадь благодарить будете.
– Так я велю привести лошадь, – сказал Ростов, желая избавиться от Телянина, и вышел, чтобы велеть привести лошадь.
В сенях Денисов, с трубкой, скорчившись на пороге, сидел перед вахмистром, который что то докладывал. Увидав Ростова, Денисов сморщился и, указывая через плечо большим пальцем в комнату, в которой сидел Телянин, поморщился и с отвращением тряхнулся.
– Ох, не люблю молодца, – сказал он, не стесняясь присутствием вахмистра.
Ростов пожал плечами, как будто говоря: «И я тоже, да что же делать!» и, распорядившись, вернулся к Телянину.
Телянин сидел всё в той же ленивой позе, в которой его оставил Ростов, потирая маленькие белые руки.
«Бывают же такие противные лица», подумал Ростов, входя в комнату.
– Что же, велели привести лошадь? – сказал Телянин, вставая и небрежно оглядываясь.
– Велел.
– Да пойдемте сами. Я ведь зашел только спросить Денисова о вчерашнем приказе. Получили, Денисов?
– Нет еще. А вы куда?
– Вот хочу молодого человека научить, как ковать лошадь, – сказал Телянин.
Они вышли на крыльцо и в конюшню. Поручик показал, как делать заклепку, и ушел к себе.
Когда Ростов вернулся, на столе стояла бутылка с водкой и лежала колбаса. Денисов сидел перед столом и трещал пером по бумаге. Он мрачно посмотрел в лицо Ростову.
– Ей пишу, – сказал он.
Он облокотился на стол с пером в руке, и, очевидно обрадованный случаю быстрее сказать словом всё, что он хотел написать, высказывал свое письмо Ростову.
– Ты видишь ли, дг'уг, – сказал он. – Мы спим, пока не любим. Мы дети пг`axa… а полюбил – и ты Бог, ты чист, как в пег'вый день создания… Это еще кто? Гони его к чог'ту. Некогда! – крикнул он на Лаврушку, который, нисколько не робея, подошел к нему.
– Да кому ж быть? Сами велели. Вахмистр за деньгами пришел.
Денисов сморщился, хотел что то крикнуть и замолчал.
– Сквег'но дело, – проговорил он про себя. – Сколько там денег в кошельке осталось? – спросил он у Ростова.
– Семь новых и три старых.
– Ах,сквег'но! Ну, что стоишь, чучела, пошли вахмистг'а, – крикнул Денисов на Лаврушку.
– Пожалуйста, Денисов, возьми у меня денег, ведь у меня есть, – сказал Ростов краснея.
– Не люблю у своих занимать, не люблю, – проворчал Денисов.
– А ежели ты у меня не возьмешь деньги по товарищески, ты меня обидишь. Право, у меня есть, – повторял Ростов.
– Да нет же.
И Денисов подошел к кровати, чтобы достать из под подушки кошелек.
– Ты куда положил, Ростов?
– Под нижнюю подушку.
– Да нету.
Денисов скинул обе подушки на пол. Кошелька не было.
– Вот чудо то!
– Постой, ты не уронил ли? – сказал Ростов, по одной поднимая подушки и вытрясая их.
Он скинул и отряхнул одеяло. Кошелька не было.
– Уж не забыл ли я? Нет, я еще подумал, что ты точно клад под голову кладешь, – сказал Ростов. – Я тут положил кошелек. Где он? – обратился он к Лаврушке.
– Я не входил. Где положили, там и должен быть.
– Да нет…
– Вы всё так, бросите куда, да и забудете. В карманах то посмотрите.
– Нет, коли бы я не подумал про клад, – сказал Ростов, – а то я помню, что положил.
Лаврушка перерыл всю постель, заглянул под нее, под стол, перерыл всю комнату и остановился посреди комнаты. Денисов молча следил за движениями Лаврушки и, когда Лаврушка удивленно развел руками, говоря, что нигде нет, он оглянулся на Ростова.
– Г'остов, ты не школьнич…
Ростов почувствовал на себе взгляд Денисова, поднял глаза и в то же мгновение опустил их. Вся кровь его, бывшая запертою где то ниже горла, хлынула ему в лицо и глаза. Он не мог перевести дыхание.
– И в комнате то никого не было, окромя поручика да вас самих. Тут где нибудь, – сказал Лаврушка.
– Ну, ты, чог'това кукла, повог`ачивайся, ищи, – вдруг закричал Денисов, побагровев и с угрожающим жестом бросаясь на лакея. – Чтоб был кошелек, а то запог'ю. Всех запог'ю!
Ростов, обходя взглядом Денисова, стал застегивать куртку, подстегнул саблю и надел фуражку.
– Я тебе говог'ю, чтоб был кошелек, – кричал Денисов, тряся за плечи денщика и толкая его об стену.
– Денисов, оставь его; я знаю кто взял, – сказал Ростов, подходя к двери и не поднимая глаз.
Денисов остановился, подумал и, видимо поняв то, на что намекал Ростов, схватил его за руку.
– Вздог'! – закричал он так, что жилы, как веревки, надулись у него на шее и лбу. – Я тебе говог'ю, ты с ума сошел, я этого не позволю. Кошелек здесь; спущу шкуг`у с этого мег`завца, и будет здесь.
– Я знаю, кто взял, – повторил Ростов дрожащим голосом и пошел к двери.
– А я тебе говог'ю, не смей этого делать, – закричал Денисов, бросаясь к юнкеру, чтоб удержать его.
Но Ростов вырвал свою руку и с такою злобой, как будто Денисов был величайший враг его, прямо и твердо устремил на него глаза.
– Ты понимаешь ли, что говоришь? – сказал он дрожащим голосом, – кроме меня никого не было в комнате. Стало быть, ежели не то, так…
Он не мог договорить и выбежал из комнаты.
– Ах, чог'т с тобой и со всеми, – были последние слова, которые слышал Ростов.
Ростов пришел на квартиру Телянина.
– Барина дома нет, в штаб уехали, – сказал ему денщик Телянина. – Или что случилось? – прибавил денщик, удивляясь на расстроенное лицо юнкера.
– Нет, ничего.
– Немного не застали, – сказал денщик.
Штаб находился в трех верстах от Зальценека. Ростов, не заходя домой, взял лошадь и поехал в штаб. В деревне, занимаемой штабом, был трактир, посещаемый офицерами. Ростов приехал в трактир; у крыльца он увидал лошадь Телянина.
Во второй комнате трактира сидел поручик за блюдом сосисок и бутылкою вина.
– А, и вы заехали, юноша, – сказал он, улыбаясь и высоко поднимая брови.
– Да, – сказал Ростов, как будто выговорить это слово стоило большого труда, и сел за соседний стол.
Оба молчали; в комнате сидели два немца и один русский офицер. Все молчали, и слышались звуки ножей о тарелки и чавканье поручика. Когда Телянин кончил завтрак, он вынул из кармана двойной кошелек, изогнутыми кверху маленькими белыми пальцами раздвинул кольца, достал золотой и, приподняв брови, отдал деньги слуге.
– Пожалуйста, поскорее, – сказал он.
Золотой был новый. Ростов встал и подошел к Телянину.
– Позвольте посмотреть мне кошелек, – сказал он тихим, чуть слышным голосом.
С бегающими глазами, но всё поднятыми бровями Телянин подал кошелек.
– Да, хорошенький кошелек… Да… да… – сказал он и вдруг побледнел. – Посмотрите, юноша, – прибавил он.
Ростов взял в руки кошелек и посмотрел и на него, и на деньги, которые были в нем, и на Телянина. Поручик оглядывался кругом, по своей привычке и, казалось, вдруг стал очень весел.
– Коли будем в Вене, всё там оставлю, а теперь и девать некуда в этих дрянных городишках, – сказал он. – Ну, давайте, юноша, я пойду.
Ростов молчал.
– А вы что ж? тоже позавтракать? Порядочно кормят, – продолжал Телянин. – Давайте же.
Он протянул руку и взялся за кошелек. Ростов выпустил его. Телянин взял кошелек и стал опускать его в карман рейтуз, и брови его небрежно поднялись, а рот слегка раскрылся, как будто он говорил: «да, да, кладу в карман свой кошелек, и это очень просто, и никому до этого дела нет».
– Ну, что, юноша? – сказал он, вздохнув и из под приподнятых бровей взглянув в глаза Ростова. Какой то свет глаз с быстротою электрической искры перебежал из глаз Телянина в глаза Ростова и обратно, обратно и обратно, всё в одно мгновение.
– Подите сюда, – проговорил Ростов, хватая Телянина за руку. Он почти притащил его к окну. – Это деньги Денисова, вы их взяли… – прошептал он ему над ухом.
– Что?… Что?… Как вы смеете? Что?… – проговорил Телянин.
Но эти слова звучали жалобным, отчаянным криком и мольбой о прощении. Как только Ростов услыхал этот звук голоса, с души его свалился огромный камень сомнения. Он почувствовал радость и в то же мгновение ему стало жалко несчастного, стоявшего перед ним человека; но надо было до конца довести начатое дело.
– Здесь люди Бог знает что могут подумать, – бормотал Телянин, схватывая фуражку и направляясь в небольшую пустую комнату, – надо объясниться…
– Я это знаю, и я это докажу, – сказал Ростов.
– Я…
Испуганное, бледное лицо Телянина начало дрожать всеми мускулами; глаза всё так же бегали, но где то внизу, не поднимаясь до лица Ростова, и послышались всхлипыванья.
– Граф!… не губите молодого человека… вот эти несчастные деньги, возьмите их… – Он бросил их на стол. – У меня отец старик, мать!…
Ростов взял деньги, избегая взгляда Телянина, и, не говоря ни слова, пошел из комнаты. Но у двери он остановился и вернулся назад. – Боже мой, – сказал он со слезами на глазах, – как вы могли это сделать?
– Граф, – сказал Телянин, приближаясь к юнкеру.
– Не трогайте меня, – проговорил Ростов, отстраняясь. – Ежели вам нужда, возьмите эти деньги. – Он швырнул ему кошелек и выбежал из трактира.


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