OCRA

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

OCRA (OATH Challenge-Response Algorithm, [tools.ietf.org/html/rfc6287 RFC 6287].) — алгоритм, объединяющий в себе возможности аутентификации клиента, взаимной аутентификации и подписи транзакций, использующий одноразовые пароли. Является модификацией алгоритма HOTP. Основным отличием OCRA от HOTP является то, что в качестве входных данных используется случайное значение, принятое от сервера, а не счетчик событий.





История

Сотрудничество OATH разрабатывало алгоритмы аутентификации на базе одноразовых паролей с 2004 года. Из-за стремительного развития мобильной индустрии эти алгоритмы пользовались большой популярностью. В конце 2005 года был опубликован HOTP. Алгоритм HOTP для создания одноразовых паролей использует счетчик, не зависящий от времени. Это позволяет избежать рассинхронизации при большом расстоянии между клиентом и сервером.[1][2]

OATH в 2008 году представила алгоритм TOTP, являющийся модификацией HOTP.[3] TOTP для аутентификации генерирует пароль, зависящий от времени, в отличие от HOTP, где пароль создавался на основе счетчика. Этот пароль действителен лишь в течение некоторого временного промежутка. Благодаря этому частично решается проблема рассинхронизации узлов, находящихся далеко друг от друга, при этом нет потери связи из-за случайного или предумышленного сброса счетчиков.[4]

Осенью 2010 года OATH модифицировала TOTP, представив алгоритм OCRA. Основное его преимущество даёт тот факт, что есть возможность прохождения аутентификации сервером. Алгоритм также способен создавать электронную цифровую подпись, причем сервер также можно аутентифицировать.[1]

Общая схема

<math>OCRA = CryptoFunction (K, DataInput)</math>

Использованы обозначения:[5]

  • <math>CryptoFunction</math> — функция, выполняющая вычисления, используя секретный ключ K и структуру DataInput.
    По умолчанию используется HOTP с шестизначным значением на базе SHA-1 (HOTP-SHA1-6).
    Рекомендуется использовать следующие криптофункции:
    • HOTP-SHA1-4
    • HOTP-SHA1-6
    • HOTP-SHA1-8
    • HOTP-SHA256-6
    • HOTP-SHA512-6
  • <math>K</math> — секретный ключ, известный обеим сторонам.
  • <math>DataInput</math> — структура, содержащая набор различных входных данных.
    Параметры DataInput:
    <math>DataInput = (OCRASuite | 00 | C | Q | P | S | T)</math>
    Обозначения:
    • <math>00</math> — разделитель.
    • <math>C</math> — счетчик длиной в 8 байт, должен быть синхронизирован между обеими сторонами.
    • <math>Q</math> — запрос длиной в 128 байт, в случае меньшей длины его нужно дополнить нулями.
    • <math>P</math> — это хэш-функция от PIN-кода, который знают клиент и сервер.
    • <math>S</math> — строка до 512 байт. Описывает состояние сессии. Длина указана в OCRASuite.
    • <math>T</math> — количество прошедших промежутков времени от условной точки отсчета, за которую принята дата 1 января 1970 года, длина 8 байт. Единицы измерения указаны в OCRASuite.
    • <math>OCRASuite</math> - строка, содержащая набор параметров для формирования ответа. Для двусторонней аутентификации и подписи клиент и сервер должны обменяться двумя строками OCRASuite: одна для сервера, другая клиента.
      Структура : <math><Algorithm>:<CryptoFunction>:<DataInput></math>, где:
      • <math>Algorithm</math> — указывает версию OCRA. Значение: OCRA-v, где v - это номер версии OCRA (1 или 2).
      • <math>CryptoFunction</math> — указывает функцию, которая будет использоваться для вычисления значения OCRA.
      • <math>DataInput</math> — отражает список допустимых входов для данного вычисления.
        <math>([C] - QFxx - [PH | Snnn | TG])</math> — параметры DataInput для режима “запрос-ответ”.
        <math>([C] - QFxx - [PH | TG])</math> — параметры DataInput для простой подписи.
        В квадратных скобках даны необязательные входы.
        Каждый параметр вычислений описывается одной буквой (кроме Q) и отделяется дефисами.
        • <math>Q</math> — указывает на дальнейшее определение формата F. Возможные значения переменной F: A — буквенно-цифровой, N — числовой, H — шестнадцатеричный. Возможная длина xx — от 04 до 64. По умолчанию формат запроса имеет значение N08 (цифровой, длиной в 8 символов).
        • <math>P</math> — указывает на последующее определение хэш-функции (H), применяемой к PIN-коду (SHA1, SHA256 или SHA512). По умолчанию SHA1.
        • <math>S</math> — говорит об указании длины сессии (nnn). По умолчанию 064.
        • <math>T</math> — указание шага времени G. ([1-59]S - количество секунд, [1-59]M - количество минут, [0-48]H - количество часов).

Типичные режимы работы

Односторонняя аутентификация

В этом режиме сервер должен отправить случайный запрос клиенту, который, в свою очередь, должен предоставить корректный ответ, чтобы пройти аутентификацию. Обе стороны должны заранее согласовать секретный ключ K.[4] [5]

При этом должны использоваться следующие параметры:[5]

  • C — счетчик, необязательный параметр.
  • Q — запрос, обязательный параметр, формируется сервером.
  • P — хэш-функция от PIN-кода, необязательный параметр.
  • S — состояние сессии, необязательный параметр.
  • T — шаг времени, необязательный параметр.

Алгоритм действий:[5]

  1. Сервер посылает запрос Q клиенту.
  2. Клиент формирует R = OCRA(K, {[C] | Q | [P | S | T]}) и отсылает на сервер ответ R.
  3. Сервер проверяет ответ R. Если ответ корректный, посылает клиенту OK, в противном случае — NOK.

Взаимная аутентификация

В данном режиме клиент и сервер аутентифицируют друг друга. Клиент посылает случайный запрос серверу, который формирует ответ и отправляет клиенту вместе со своим запросом. Клиент сначала проверяет ответ сервера, чтобы убедиться, что тот корректен. После этого клиент формирует свой ответ и отправляет его серверу. Сервер проверяет ответ клиента и тем самым завершает процесс взаимной аутентификации. Обе стороны должны заранее согласовать секретный ключ K.[4] [5]

Параметры сервера для ответа:[5]

  • C — счетчик, необязательный параметр.
  • QC — запрос, обязательный параметр, формируется клиентом.
  • QS — запрос, обязательный параметр, формируется сервером.
  • S — состояние сессии, необязательный параметр.
  • T — шаг времени, необязательный параметр.

Параметры клиента для ответа:[5]

  • C — счетчик, необязательный параметр.
  • QS — запрос, обязательный параметр, формируется сервером.
  • QC — запрос, обязательный параметр, формируется клиентом.
  • P — хэш-функция от PIN-кода, необязательный параметр.
  • S — состояние сессии, необязательный параметр.
  • T — шаг времени, необязательный параметр.

Алгоритм действий:[5]

  1. Клиент отправляет серверу запрос QC.
  2. Сервер формирует RS = OCRA(K, [C] | QC | QS | [S | T]). Отправляет клиенту RS и свой запрос QS.
  3. Клиент проверяет ответ сервера и вычисляет свой ответ RC = OCRA(K, [C] | QS | QC | [P | S | T]). Посылает серверу RC.
  4. Сервер проверяет ответ клиента и в случае успеха отправляет подтверждение аутентификации.

Простая подпись

Сервер должен передать клиенту какое-то значение на подпись. Этим значением может быть, например, информация, которую нужно подписать, или хэш-функция от этой информации. Обе стороны должны заранее согласовать секретный ключ K.[5]

Используются следующие параметры:[5]

  • C — счетчик, необязательный параметр.
  • QS — запрос на подпись, обязательный параметр, формируется сервером.
  • P — хэш-функция от PIN-кода, необязательный параметр.
  • T — шаг времени, необязательный параметр.

Алгоритм действий:[5]

  1. Сервер посылает запрос Q на подпись клиенту.
  2. Клиент формирует SIGN = OCRA(K, [C] | QS | [P | T]) и отсылает на сервер ответ SIGN.
  3. Сервер проверяет ответ R. Если ответ корректный, посылает клиенту OK.

Подпись с аутентификацией сервера

В этом случае клиент сначала проверяет подлинность сервера, а уже потом вычисляет и отправляет электронную подпись. Клиент сначала отправляет случайное значение в качестве запроса на сервер, после чего сервер посылает клиенту свой ответ на его запрос и информацию на подпись. Обе стороны должны заранее согласовать секретный ключ K.[5]

Параметры сервера для ответа:[5]

  • C — счетчик, необязательный параметр.
  • QC — запрос, обязательный параметр, формируется клиентом.
  • QS — запрос на подпись, обязательный параметр, формируется сервером.
  • T — шаг времени, необязательный параметр.

Параметры клиента для ответа:[5]

  • C — счетчик, необязательный параметр.
  • QC — запрос, обязательный параметр, формируется клиентом.
  • QS — запрос на подпись, обязательный параметр, формируется сервером.
  • P — хэш-функция от PIN-кода, необязательный параметр.
  • T — шаг времени, необязательный параметр.

Алгоритм действий:[5]

  1. Клиент отправляет серверу запрос QC.
  2. Сервер формирует RS = OCRA(K, [C] | QC | QS | [T]). Отправляет клиенту RS и свой запрос QS на подпись.
  3. Клиент проверяет ответ сервера и вычисляет свой ответ SIGN = OCRA( K, [C] | QS | QC | [P | T]). Посылает серверу SIGN.
  4. Сервер проверяет ответ клиента и в случае успеха отправляет подтверждение аутентификации OK.

Требования к реализации

  • Алгоритм должен поддерживать аутентификацию по методу “запрос-ответ”.
  • Алгоритм должен поддерживать алгоритм подписи на основе симметричного ключа.
  • Алгоритм должен поддерживать аутентификацию сервера.
  • Рекомендуется использовать в качестве криптофункции HOTP.
  • Рекомендуется длину и формат входного запроса реализовать конфигурируемыми.
  • Рекомендуется длину и формат выходного ответа реализовать конфигурируемыми.
  • Запрос может быть реализован с возможностью проверки целостности, например, можно использовать биты четности для простых проверок на ошибки.
  • Ключ должен быть уникальным для каждого генератора, и ключ должен быть случайным числом.
  • Алгоритм может включать в себя дополнительные атрибуты данных, такие как информация о времени или номере сеанса, которые будут включены в расчет. Эти данные входы могут использоваться по отдельности или все вместе. [5]

Надежность алгоритма

Системы аутентификации, построенные на базе одноразовых паролей, являются достаточно надежными. При этом OCRA обладает рядом преимуществ по сравнению со своими предшественниками, алгоритмами TOTP и HOTP.[4]

Один из серьёзных методов атаки - подмена сервера аутентификации, что может оказаться эффективным при атаках на TOTP и HOTP. При этом злоумышленник получает данные от пользователя и может использовать их для связи с сервером. Однако в случае алгоритма OCRA, работающего по методу “запрос-ответ”, злоумышленник должен выступать в качестве посредника между пользователем и сервером. Злоумышленнику придется подменять ещё и адрес клиента, чтобы получать данные с сервера и использовать их для связи с клиентом.[4]

Также алгоритм OCRA может быть реализован устойчивым к атаке, основанной на рассинхронизации таймеров или счетчиков, которой подвержены HOTP и TOTP, так как эти параметры в OCRA можно комбинировать. При введении счетчика отправка повторного сообщения злоумышленником, работающим по методу "человек посередине" (Man-in-the-middle), будет неудачной, так как счетчик на стороне сервера (или клиента, смотря кого пытается сымитировать злоумышленник) изменится и сообщение будет проверяться уже не тем значением, с помощью которого оно создавалось. Можно менять и промежуток времени, в течение которого пароль действителен, в зависимости от расстояния между клиентом и сервером, избегая рассинхронизации.[4]

Сравнение с аналогами

Основными конкурентами OCRA среди алгоритмов, работающих по методу "запрос-ответ" являются SCRAM и CHAP. По сравнению с ними, OCRA имеет как преимущества, так и недостатки. Все три алгоритма поддерживают взаимную аутентификацию, но изначально в CHAP эта возможность не задумывалась как важная часть алгоритма. Также в CHAP каждая передача данных осуществляется в виде пакета с указанием предназначения данного пакета, его длины и т.д. Это увеличивает объем пересылаемых данных и может ухудшить работу алгоритма при медленном соединении. Но такая форма сообщений позволяет проводить некоторые дополнительные операции, например, изменение секретного слова, хранящегося и у сервера и у клиента. В OCRA такая возможность отсутствует, алгоритм не поддерживает возможность изменять секрет. В SCRAM у сервера и клиента имеются массивы ключей, защищенные солью. Это позволяет менять ключ при каждом новом сеансе аутентификации. Также в SCRAM есть возможность обнаружения атаки методом "человек посередине". При успешном обнаружении такой атаки связь между клиентом и сервером останавливается. OCRA и SCRAM, в отличие от CHAP, в качестве аргумента криптофункции используют случайное значение, полученное с сервера. OCRA обладает возможностью создания электронной подписи, в то время как в SCRAM с помощью подписи проводится аутентификация. Сервер (клиент) посылает клиенту (серверу) параметры для криптофункции и зашифрованный текст. После этого клиент (сервер) расшифровывает текст, подписывает его и отправляет серверу (клиенту). При подтверждении подлинности подписи аутентификация считается пройденной. OCRA, в отличие от своих конкурентов, обладает возможностью использования счетчиков и таймеров в качестве дополнительной защиты от взлома. [6] [7]

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

Примечания

Источники

  • Nathan Willis [lwn.net/Articles/419968/ OATH: yesterday, today, and tomorrow] (англ.) // isode.com. — 2010-12-15.
  • Joann Killeen, Madison Alexander. [www.openauthentication.org/news/20080408 OATH Submits TOTP: Time-Based One Time Password Specification to IETF] (англ.). [www.webcitation.org/6DtdCt3JN Архивировано из первоисточника 24 января 2013].
  • Давлетханов Марат [www.bytemag.ru/articles/detail.php?ID=9101 Концепция одноразовых паролей в построении системы аутентификации] (рус.) // Byte/Россия : журнал. — 2006-07, 2006-08. — № 7-8 (95).
  • Binod Vaidya, Jong Hyuk Park, and Joel J.P.C. Rodrigues [netgna.it.ubi.pt/files/2009-ISA_NASSUE.pdf HOTP-Based User Authentication Scheme in Home Networks] (англ.) // Lecture Notes in Computer Science[en]. — 2009. — No. 5576. — P. 672-681.
  • [tools.ietf.org/html/rfc6287 RFC 6287(англ.). — 2011. — ISSN [www.sigla.ru/table.jsp?f=8&t=3&v0=2070-1721&f=1003&t=1&v1=&f=4&t=2&v2=&f=21&t=3&v3=&f=1016&t=3&v4=&f=1016&t=3&v5=&bf=4&b=&d=0&ys=&ye=&lng=&ft=&mt=&dt=&vol=&pt=&iss=&ps=&pe=&tr=&tro=&cc=UNION&i=1&v=tagged&s=0&ss=0&st=0&i18n=ru&rlf=&psz=20&bs=20&ce=hJfuypee8JzzufeGmImYYIpZKRJeeOeeWGJIZRrRRrdmtdeee88NJJJJpeeefTJ3peKJJ3UWWPtzzzzzzzzzzzzzzzzzbzzvzzpy5zzjzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzztzzzzzzzbzzzzzzzzzzzzzzzzzzzzzzzzzzzvzzzzzzyeyTjkDnyHzTuueKZePz9decyzzLzzzL*.c8.NzrGJJvufeeeeeJheeyzjeeeeJh*peeeeKJJJJJJJJJJmjHvOJJJJJJJJJfeeeieeeeSJJJJJSJJJ3TeIJJJJ3..E.UEAcyhxD.eeeeeuzzzLJJJJ5.e8JJJheeeeeeeeeeeeyeeK3JJJJJJJJ*s7defeeeeeeeeeeeeeeeeeeeeeeeeeSJJJJJJJJZIJJzzz1..6LJJJJJJtJJZ4....EK*&debug=false 2070-1721].
  • [tools.ietf.org/html/rfc5802 RFC 5802(англ.). — 2010. — ISSN [www.sigla.ru/table.jsp?f=8&t=3&v0=2070-1721&f=1003&t=1&v1=&f=4&t=2&v2=&f=21&t=3&v3=&f=1016&t=3&v4=&f=1016&t=3&v5=&bf=4&b=&d=0&ys=&ye=&lng=&ft=&mt=&dt=&vol=&pt=&iss=&ps=&pe=&tr=&tro=&cc=UNION&i=1&v=tagged&s=0&ss=0&st=0&i18n=ru&rlf=&psz=20&bs=20&ce=hJfuypee8JzzufeGmImYYIpZKRJeeOeeWGJIZRrRRrdmtdeee88NJJJJpeeefTJ3peKJJ3UWWPtzzzzzzzzzzzzzzzzzbzzvzzpy5zzjzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzztzzzzzzzbzzzzzzzzzzzzzzzzzzzzzzzzzzzvzzzzzzyeyTjkDnyHzTuueKZePz9decyzzLzzzL*.c8.NzrGJJvufeeeeeJheeyzjeeeeJh*peeeeKJJJJJJJJJJmjHvOJJJJJJJJJfeeeieeeeSJJJJJSJJJ3TeIJJJJ3..E.UEAcyhxD.eeeeeuzzzLJJJJ5.e8JJJheeeeeeeeeeeeyeeK3JJJJJJJJ*s7defeeeeeeeeeeeeeeeeeeeeeeeeeSJJJJJJJJZIJJzzz1..6LJJJJJJtJJZ4....EK*&debug=false 2070-1721].
  • [tools.ietf.org/html/rfc1994 RFC 1994(англ.). — 1996.

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

– Что? Министр? Какой министр? Кто велел? – заговорил он своим пронзительным, жестким голосом. – Для княжны, моей дочери, не расчистили, а для министра! У меня нет министров!
– Ваше сиятельство, я полагал…
– Ты полагал! – закричал князь, всё поспешнее и несвязнее выговаривая слова. – Ты полагал… Разбойники! прохвосты! Я тебя научу полагать, – и, подняв палку, он замахнулся ею на Алпатыча и ударил бы, ежели бы управляющий невольно не отклонился от удара. – Полагал! Прохвосты! – торопливо кричал он. Но, несмотря на то, что Алпатыч, сам испугавшийся своей дерзости – отклониться от удара, приблизился к князю, опустив перед ним покорно свою плешивую голову, или, может быть, именно от этого князь, продолжая кричать: «прохвосты! закидать дорогу!» не поднял другой раз палки и вбежал в комнаты.
Перед обедом княжна и m lle Bourienne, знавшие, что князь не в духе, стояли, ожидая его: m lle Bourienne с сияющим лицом, которое говорило: «Я ничего не знаю, я такая же, как и всегда», и княжна Марья – бледная, испуганная, с опущенными глазами. Тяжелее всего для княжны Марьи было то, что она знала, что в этих случаях надо поступать, как m lle Bourime, но не могла этого сделать. Ей казалось: «сделаю я так, как будто не замечаю, он подумает, что у меня нет к нему сочувствия; сделаю я так, что я сама скучна и не в духе, он скажет (как это и бывало), что я нос повесила», и т. п.
Князь взглянул на испуганное лицо дочери и фыркнул.
– Др… или дура!… – проговорил он.
«И той нет! уж и ей насплетничали», подумал он про маленькую княгиню, которой не было в столовой.
– А княгиня где? – спросил он. – Прячется?…
– Она не совсем здорова, – весело улыбаясь, сказала m llе Bourienne, – она не выйдет. Это так понятно в ее положении.
– Гм! гм! кх! кх! – проговорил князь и сел за стол.
Тарелка ему показалась не чиста; он указал на пятно и бросил ее. Тихон подхватил ее и передал буфетчику. Маленькая княгиня не была нездорова; но она до такой степени непреодолимо боялась князя, что, услыхав о том, как он не в духе, она решилась не выходить.
– Я боюсь за ребенка, – говорила она m lle Bourienne, – Бог знает, что может сделаться от испуга.
Вообще маленькая княгиня жила в Лысых Горах постоянно под чувством страха и антипатии к старому князю, которой она не сознавала, потому что страх так преобладал, что она не могла чувствовать ее. Со стороны князя была тоже антипатия, но она заглушалась презрением. Княгиня, обжившись в Лысых Горах, особенно полюбила m lle Bourienne, проводила с нею дни, просила ее ночевать с собой и с нею часто говорила о свекоре и судила его.
– Il nous arrive du monde, mon prince, [К нам едут гости, князь.] – сказала m lle Bourienne, своими розовенькими руками развертывая белую салфетку. – Son excellence le рrince Kouraguine avec son fils, a ce que j'ai entendu dire? [Его сиятельство князь Курагин с сыном, сколько я слышала?] – вопросительно сказала она.
– Гм… эта excellence мальчишка… я его определил в коллегию, – оскорбленно сказал князь. – А сын зачем, не могу понять. Княгиня Лизавета Карловна и княжна Марья, может, знают; я не знаю, к чему он везет этого сына сюда. Мне не нужно. – И он посмотрел на покрасневшую дочь.
– Нездорова, что ли? От страха министра, как нынче этот болван Алпатыч сказал.
– Нет, mon pere. [батюшка.]
Как ни неудачно попала m lle Bourienne на предмет разговора, она не остановилась и болтала об оранжереях, о красоте нового распустившегося цветка, и князь после супа смягчился.
После обеда он прошел к невестке. Маленькая княгиня сидела за маленьким столиком и болтала с Машей, горничной. Она побледнела, увидав свекора.
Маленькая княгиня очень переменилась. Она скорее была дурна, нежели хороша, теперь. Щеки опустились, губа поднялась кверху, глаза были обтянуты книзу.
– Да, тяжесть какая то, – отвечала она на вопрос князя, что она чувствует.
– Не нужно ли чего?
– Нет, merci, mon pere. [благодарю, батюшка.]
– Ну, хорошо, хорошо.
Он вышел и дошел до официантской. Алпатыч, нагнув голову, стоял в официантской.
– Закидана дорога?
– Закидана, ваше сиятельство; простите, ради Бога, по одной глупости.
Князь перебил его и засмеялся своим неестественным смехом.
– Ну, хорошо, хорошо.
Он протянул руку, которую поцеловал Алпатыч, и прошел в кабинет.
Вечером приехал князь Василий. Его встретили на прешпекте (так назывался проспект) кучера и официанты, с криком провезли его возки и сани к флигелю по нарочно засыпанной снегом дороге.
Князю Василью и Анатолю были отведены отдельные комнаты.
Анатоль сидел, сняв камзол и подпершись руками в бока, перед столом, на угол которого он, улыбаясь, пристально и рассеянно устремил свои прекрасные большие глаза. На всю жизнь свою он смотрел как на непрерывное увеселение, которое кто то такой почему то обязался устроить для него. Так же и теперь он смотрел на свою поездку к злому старику и к богатой уродливой наследнице. Всё это могло выйти, по его предположению, очень хорошо и забавно. А отчего же не жениться, коли она очень богата? Это никогда не мешает, думал Анатоль.
Он выбрился, надушился с тщательностью и щегольством, сделавшимися его привычкою, и с прирожденным ему добродушно победительным выражением, высоко неся красивую голову, вошел в комнату к отцу. Около князя Василья хлопотали его два камердинера, одевая его; он сам оживленно оглядывался вокруг себя и весело кивнул входившему сыну, как будто он говорил: «Так, таким мне тебя и надо!»
– Нет, без шуток, батюшка, она очень уродлива? А? – спросил он, как бы продолжая разговор, не раз веденный во время путешествия.
– Полно. Глупости! Главное дело – старайся быть почтителен и благоразумен с старым князем.
– Ежели он будет браниться, я уйду, – сказал Анатоль. – Я этих стариков терпеть не могу. А?
– Помни, что для тебя от этого зависит всё.
В это время в девичьей не только был известен приезд министра с сыном, но внешний вид их обоих был уже подробно описан. Княжна Марья сидела одна в своей комнате и тщетно пыталась преодолеть свое внутреннее волнение.
«Зачем они писали, зачем Лиза говорила мне про это? Ведь этого не может быть! – говорила она себе, взглядывая в зеркало. – Как я выйду в гостиную? Ежели бы он даже мне понравился, я бы не могла быть теперь с ним сама собою». Одна мысль о взгляде ее отца приводила ее в ужас.
Маленькая княгиня и m lle Bourienne получили уже все нужные сведения от горничной Маши о том, какой румяный, чернобровый красавец был министерский сын, и о том, как папенька их насилу ноги проволок на лестницу, а он, как орел, шагая по три ступеньки, пробежал зa ним. Получив эти сведения, маленькая княгиня с m lle Bourienne,еще из коридора слышные своими оживленно переговаривавшими голосами, вошли в комнату княжны.
– Ils sont arrives, Marieie, [Они приехали, Мари,] вы знаете? – сказала маленькая княгиня, переваливаясь своим животом и тяжело опускаясь на кресло.
Она уже не была в той блузе, в которой сидела поутру, а на ней было одно из лучших ее платьев; голова ее была тщательно убрана, и на лице ее было оживление, не скрывавшее, однако, опустившихся и помертвевших очертаний лица. В том наряде, в котором она бывала обыкновенно в обществах в Петербурге, еще заметнее было, как много она подурнела. На m lle Bourienne тоже появилось уже незаметно какое то усовершенствование наряда, которое придавало ее хорошенькому, свеженькому лицу еще более привлекательности.
– Eh bien, et vous restez comme vous etes, chere princesse? – заговорила она. – On va venir annoncer, que ces messieurs sont au salon; il faudra descendre, et vous ne faites pas un petit brin de toilette! [Ну, а вы остаетесь, в чем были, княжна? Сейчас придут сказать, что они вышли. Надо будет итти вниз, а вы хоть бы чуть чуть принарядились!]
Маленькая княгиня поднялась с кресла, позвонила горничную и поспешно и весело принялась придумывать наряд для княжны Марьи и приводить его в исполнение. Княжна Марья чувствовала себя оскорбленной в чувстве собственного достоинства тем, что приезд обещанного ей жениха волновал ее, и еще более она была оскорблена тем, что обе ее подруги и не предполагали, чтобы это могло быть иначе. Сказать им, как ей совестно было за себя и за них, это значило выдать свое волнение; кроме того отказаться от наряжения, которое предлагали ей, повело бы к продолжительным шуткам и настаиваниям. Она вспыхнула, прекрасные глаза ее потухли, лицо ее покрылось пятнами и с тем некрасивым выражением жертвы, чаще всего останавливающемся на ее лице, она отдалась во власть m lle Bourienne и Лизы. Обе женщины заботились совершенно искренно о том, чтобы сделать ее красивой. Она была так дурна, что ни одной из них не могла притти мысль о соперничестве с нею; поэтому они совершенно искренно, с тем наивным и твердым убеждением женщин, что наряд может сделать лицо красивым, принялись за ее одеванье.
– Нет, право, ma bonne amie, [мой добрый друг,] это платье нехорошо, – говорила Лиза, издалека боком взглядывая на княжну. – Вели подать, у тебя там есть масака. Право! Что ж, ведь это, может быть, судьба жизни решается. А это слишком светло, нехорошо, нет, нехорошо!
Нехорошо было не платье, но лицо и вся фигура княжны, но этого не чувствовали m lle Bourienne и маленькая княгиня; им все казалось, что ежели приложить голубую ленту к волосам, зачесанным кверху, и спустить голубой шарф с коричневого платья и т. п., то всё будет хорошо. Они забывали, что испуганное лицо и фигуру нельзя было изменить, и потому, как они ни видоизменяли раму и украшение этого лица, само лицо оставалось жалко и некрасиво. После двух или трех перемен, которым покорно подчинялась княжна Марья, в ту минуту, как она была зачесана кверху (прическа, совершенно изменявшая и портившая ее лицо), в голубом шарфе и масака нарядном платье, маленькая княгиня раза два обошла кругом нее, маленькой ручкой оправила тут складку платья, там подернула шарф и посмотрела, склонив голову, то с той, то с другой стороны.
– Нет, это нельзя, – сказала она решительно, всплеснув руками. – Non, Marie, decidement ca ne vous va pas. Je vous aime mieux dans votre petite robe grise de tous les jours. Non, de grace, faites cela pour moi. [Нет, Мари, решительно это не идет к вам. Я вас лучше люблю в вашем сереньком ежедневном платьице: пожалуйста, сделайте это для меня.] Катя, – сказала она горничной, – принеси княжне серенькое платье, и посмотрите, m lle Bourienne, как я это устрою, – сказала она с улыбкой предвкушения артистической радости.
Но когда Катя принесла требуемое платье, княжна Марья неподвижно всё сидела перед зеркалом, глядя на свое лицо, и в зеркале увидала, что в глазах ее стоят слезы, и что рот ее дрожит, приготовляясь к рыданиям.
– Voyons, chere princesse, – сказала m lle Bourienne, – encore un petit effort. [Ну, княжна, еще маленькое усилие.]
Маленькая княгиня, взяв платье из рук горничной, подходила к княжне Марье.
– Нет, теперь мы это сделаем просто, мило, – говорила она.
Голоса ее, m lle Bourienne и Кати, которая о чем то засмеялась, сливались в веселое лепетанье, похожее на пение птиц.
– Non, laissez moi, [Нет, оставьте меня,] – сказала княжна.
И голос ее звучал такой серьезностью и страданием, что лепетанье птиц тотчас же замолкло. Они посмотрели на большие, прекрасные глаза, полные слез и мысли, ясно и умоляюще смотревшие на них, и поняли, что настаивать бесполезно и даже жестоко.
– Au moins changez de coiffure, – сказала маленькая княгиня. – Je vous disais, – с упреком сказала она, обращаясь к m lle Bourienne, – Marieie a une de ces figures, auxquelles ce genre de coiffure ne va pas du tout. Mais du tout, du tout. Changez de grace. [По крайней мере, перемените прическу. У Мари одно из тех лиц, которым этот род прически совсем нейдет. Перемените, пожалуйста.]
– Laissez moi, laissez moi, tout ca m'est parfaitement egal, [Оставьте меня, мне всё равно,] – отвечал голос, едва удерживающий слезы.
M lle Bourienne и маленькая княгиня должны были признаться самим себе, что княжна. Марья в этом виде была очень дурна, хуже, чем всегда; но было уже поздно. Она смотрела на них с тем выражением, которое они знали, выражением мысли и грусти. Выражение это не внушало им страха к княжне Марье. (Этого чувства она никому не внушала.) Но они знали, что когда на ее лице появлялось это выражение, она была молчалива и непоколебима в своих решениях.
– Vous changerez, n'est ce pas? [Вы перемените, не правда ли?] – сказала Лиза, и когда княжна Марья ничего не ответила, Лиза вышла из комнаты.
Княжна Марья осталась одна. Она не исполнила желания Лизы и не только не переменила прически, но и не взглянула на себя в зеркало. Она, бессильно опустив глаза и руки, молча сидела и думала. Ей представлялся муж, мужчина, сильное, преобладающее и непонятно привлекательное существо, переносящее ее вдруг в свой, совершенно другой, счастливый мир. Ребенок свой, такой, какого она видела вчера у дочери кормилицы, – представлялся ей у своей собственной груди. Муж стоит и нежно смотрит на нее и ребенка. «Но нет, это невозможно: я слишком дурна», думала она.
– Пожалуйте к чаю. Князь сейчас выйдут, – сказал из за двери голос горничной.
Она очнулась и ужаснулась тому, о чем она думала. И прежде чем итти вниз, она встала, вошла в образную и, устремив на освещенный лампадой черный лик большого образа Спасителя, простояла перед ним с сложенными несколько минут руками. В душе княжны Марьи было мучительное сомненье. Возможна ли для нее радость любви, земной любви к мужчине? В помышлениях о браке княжне Марье мечталось и семейное счастие, и дети, но главною, сильнейшею и затаенною ее мечтою была любовь земная. Чувство было тем сильнее, чем более она старалась скрывать его от других и даже от самой себя. Боже мой, – говорила она, – как мне подавить в сердце своем эти мысли дьявола? Как мне отказаться так, навсегда от злых помыслов, чтобы спокойно исполнять Твою волю? И едва она сделала этот вопрос, как Бог уже отвечал ей в ее собственном сердце: «Не желай ничего для себя; не ищи, не волнуйся, не завидуй. Будущее людей и твоя судьба должна быть неизвестна тебе; но живи так, чтобы быть готовой ко всему. Если Богу угодно будет испытать тебя в обязанностях брака, будь готова исполнить Его волю». С этой успокоительной мыслью (но всё таки с надеждой на исполнение своей запрещенной, земной мечты) княжна Марья, вздохнув, перекрестилась и сошла вниз, не думая ни о своем платье, ни о прическе, ни о том, как она войдет и что скажет. Что могло всё это значить в сравнении с предопределением Бога, без воли Которого не падет ни один волос с головы человеческой.