Настройка оборудования и программного обеспечения

Хэш шифрование гост 3411 на c. Минимальное рабочее пространство вокруг оператора

Алгоритм формирования хэш-функции ГОСТ Р 34.11-94

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

Хэш - последовательность битов, полученная в результате расчета хэш-функции.

ГОСТ Р34.11-94 - российский криптографический стандарт вычисления хэш-функции. Был введен 23 мая 1994 года. Размер хэша 256 бит. Размер блока входных данных 256 бит. Алгоритм был разработан ГУБС ФАПСИ и ВНИИС.

Стандарт определяет алгоритм и процедуру вычисления хэш-функции для последовательности символов. Этот стандарт является обязательным для применения в качестве алгоритма хэширования в государственных организациях РФ и ряде коммерческих организаций.

ЦБ РФ требует использовать ГОСТ Р 34.11-94 для электронной подписи предоставляемых ему документов.

Особенностями ГОСТ Р 34.11-94 являются:

При обработке блоков используются преобразования по алгоритму ГОСТ 28147-89;

Обрабатывается блок длиной 256 бит, и выходное значение тоже имеет длину 256 бит;

Применены меры борьбы против поиска коллизий, основанном на неполноте последнего блока;

Обработка блоков происходит по алгоритму шифрования ГОСТ 28147-89, который содержит преобразования на S-блоках, что существенно осложняет применение метода дифференциального криптоанализа к поиску коллизий.

Функция используется при реализации систем цифровой подписи на базе асимметричного криптоалгоритма по стандарту ГОСТ Р 34.10-2001. Сообщество российских разработчиков СКЗИ согласовало используемые в Интернет параметры ГОСТ Р 34.11-94:

Использование в сертификатах открытых ключей;

Использование для защиты сообщений в S/MIME (Cryptographic Message Syntax, PKCS#7);

Использование для защиты соединений в TLS (SSL, HTTPS, WEB);

Использование для защиты сообщений в XML Signature (XML Encryption);

Защита целостности Интернет адресов и имён (DNSSEC).

В 2008 году командой экспертов из Австрии и Польши была обнаружена техническая уязвимость, сокращающая поиск коллизий в 223 раз. Количество операций, необходимое для нахождения коллизии, таким образом, составляет 2105, что, однако, на данный момент практически не реализуемо. Проведение коллизионной атаки на практике имеет смысл только в случае цифровой подписи документов, причём если взломщик может изменять неподписанный оригинал.

Алгоритм формирования ЭЦП ГОСТ Р 34.10-2001

Электронно-цифровая подпись (ЭЦП) - аналог собственноручной подписи - для придания электронному документу юридической силы, равной бумажному документу, подписанному собственноручной подписью правомочного лица и/или скрепленного печатью.

Электронная цифровая подпись, или ЭЦП, становится всё более распространённым способом удостоверить документ. В некоторых случаях цифровая отметка не имеет альтернатив. К примеру, при проведении электронных торгов или участии в аукционах, проводимых в Интернете. В таком случае, наличие ЭЦП регламентируется законодательством. В соответствии с Федеральным законом 1-ФЗ от 10.01.2002 года «Об электронной цифровой подписи», ЭЦП в электронном документе является аналогом собственноручной подписи в бумажном документе. Благодаря наличию таковой, электронный документ приобретает юридическую значимость. Наличие ЭЦП гарантирует его подлинность и защищает от подделки, а также помогает идентифицировать владельца сертификата цифровой подписи и предотвратить искажения в документе.

Электронная подпись формируется в результате криптографического преобразования данных и представляет собой уникальную последовательность символов, известную только ее владельцу. Такие свойства ЭЦП как уникальность и надежность делают ее незаменимым атрибутом документов при организации юридически-значимого электронного документооборота.

Цифровая подпись предназначена для аутентификации лица, подписавшего электронный документ. Кроме этого, использование цифровой подписи позволяет осуществить:

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

Защиту от изменений (подделки) документа: гарантия выявления подделки при контроле целостности делает подделывание нецелесообразным в большинстве случаев;

Доказательное подтверждение авторства документа: Так как создать корректную подпись можно, лишь зная закрытый ключ, а он должен быть известен только владельцу, то владелец пары ключей может доказать своё авторство подписи под документом. В зависимости от деталей определения документа могут быть подписаны такие поля, как «автор», «внесённые изменения», «метка времени» и т. д.

Все эти свойства ЭЦП позволяют использовать её для следующих целей:

Декларирование товаров и услуг (таможенные декларации);

Регистрация сделок по объектам недвижимости;

Использование в банковских системах;

Электронная торговля и госзаказы;

Контроль исполнения государственного бюджета;

В системах обращения к органам власти;

Для обязательной отчетности перед государственными учреждениями;

Организация юридически значимого электронного документооборота;

В расчетных и трейдинговых системах.

ГОСТ Р 34.10-2001 алгоритм разработан главным управлением безопасности связи Федерального агентства правительственной связи и информации при Президенте Российской Федерации при участии Всероссийского научно-исследовательского института стандартизации. Разрабатывался взамен ГОСТ Р 34.10-94 для обеспечения большей стойкости алгоритма.

ГОСТ Р 34.10-2001 основан на эллиптических кривых. Его стойкость основывается на сложности вычисления дискретного логарифма в группе точек эллиптической кривой, а также на стойкости хэш-функции по ГОСТ Р 34.11-94. Принцип подписания электронного документа заключается в шифровании по ГОСТ Р 34.10-2001 полученного хэш алгоритма ГОСТ Р 34.11-94 закрытым ключом на передающей стороне. Проверка подписи на приемной стороне осуществляется путем получения хэш от сообщения и расшифрование открытым ключом зашифрованного значения хэш переданного вместе с сообщением, если эти хэши равны, то подпись верна (рисунок 2.1).

Рисунок 2.1 - Процесс подписания и проверки электронно-цифровой подписи

После подписывания сообщения к нему дописывается цифровая подпись размером 512 бит и текстовое поле. В текстовом поле могут содержаться, например, дата и время отправки или различные данные об отправителе.

Анализ программного криптопровайдера «КриптоПро CSP» показал его эффективность при использовании криптографических алгоритмов шифрования, хэш-функции, электронной цифровой подписи, которые соответствуют стандарту ГОСТ и прошли сертификацию в ФСБ.

Использование на основе криптопровайдера «КриптоПро CSP» приложения позволит автоматизировать процессы: шифрования, электронно-цифровой подписи сразу нескольких документов из пакета программного обеспечения Microsoft Office 2007-2010 Word, Excel, проверки подписи. Это значительно повысит эффективность работы и снизит процент ошибок в процессе обработки электронных документов. Использование шифрования с ГОСТ 28147-89 алгоритмом позволяет передавать по открытым каналам связи информацию содержащую коммерческую тайну, так же возможно сокрытия в зашифрованные архивы особо важную информацию, тем самым ограничив доступ к ней строго определенному кругу лиц.

ГОСТ Р ИСО 3411-99

ГОСУДАРСТВЕННЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ

МАШИНЫ ЗЕМЛЕРОЙНЫЕ

Антропометрические данные операторов
и минимальное рабочее пространство вокруг оператора

ГОССТАНДАРТ РОССИИ

Москва

Предисловие

1 РАЗРАБОТАН И ВНЕСЕН Техническим комитетом по стандартизации ТК 295 «Машины землеройные»

2 ПРИНЯТ И ВВЕДЕН В ДЕЙСТВИЕ Постановлением Госстандарта России от 30 ноября 1999 г. № 460-ст

3 Настоящий стандарт представляет собой полный аутентичный текст международного стандарта ИСО 3411-95 «Машины землеройные. Антропометрические данные операторов и минимальное рабочее пространство вокруг оператора»

4 ВВЕДЕН ВПЕРВЫЕ

ГОСТ Р ИСО 3411-99

ГОСУДАРСТВЕННЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ

МАШИНЫ ЗЕМЛЕРОЙНЫЕ

Антропометрические данные операторов и минимальное рабочее пространство вокруг оператора

Earth-moving machinery. Human physical dimensions of operators and minimum operator space envelope

Дата введения 2000-07-01

1 Область применения

Настоящий стандарт устанавливает антропометрические данные операторов землеройных машин и минимальное рабочее пространство вокруг оператора, ограниченное внутренними размерами кабин и устройствами ROPS , FOPS , применяемыми на землеройных машинах.

Стандарт распространяется на землеройные машины по ГОСТ Р ИСО 6165 .

Требования настоящего стандарта являются обязательными.

2 Нормативные ссылки

В настоящем стандарте использованы ссылки на следующие стандарты.

ГОСТ 27258-87 (ИСО 6682-86) Машины землеройные. Зоны комфорта и досягаемости для органов управления

ГОСТ 27715-88 (ИСО 5353-95) Машины землеройные, тракторы и машины для сельскохозяйственных работ и лесоводства. Контрольная точка сиденья

3) Размеры ширины головы даны без учета ушей.

4) Размеры головы:

в каске: длина » 310 мм, ширина » 270 мм;

в шлеме: длина » 280 мм, ширина » 230 мм.

Таблица 2

В миллиметрах

Условное обозначение

Параметры оператора

Рост оператора

низкий

средний

высокий

высокий (в арктической одежде)

Высота в положении сидя 1), 2)

Высота расположения глаз в положении сидя 2)

Высота расположения плеч

3D

Высота расположения локтя

Высота расположения горизонтальной поверхности сиденья

3 F

Толщина бедра

3 G

Удаленность икры от вертикали

Удаленность колена от вертикали

3 I

Высота колена

3 J

Длина кисти руки с предплечьем

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

3 L

Уменьшение предела досягаемости за счет сжатия кисти руки

Длина кисти руки

3 N

Ширина кисти руки 3)

3 O

Толщина кисти руки 4)

Удаленность SIP от вертикали

3 R

Высота расположения SIP от горизонтальной поверхности сиденья

Ширина плеч

Ширина по прижатым локтям

Ширина по бедрам в положении сидя

1) Прибавить примерно 50 мм на защитную каску или шлем, если требуется, кроме операторов высокого роста (в арктической одежде).

2) См. .

3) Ширина кисти руки приведена без учета большого пальца руки.

4) Толщина кисти руки дана по основанию пальцев и соответствует толщине ладони.

4.3 Выпрямленное положение

Все размеры, приведенные в таблицах - , указаны для операторов в выпрямленном положении. В нормальном положении тело человека как бы дает осадку и результаты измерений в этом случае будут несколько заниженными: значения роста () и предела досягаемости с поднятой рукой (2 A ) будут занижены приблизительно на 15 мм, а высота в положении сидя () и высота расположения глаз () в положении сидя будут занижены примерно на 25 мм.

Таблица 3

В миллиметрах

Условное обозначение

Параметры оператора

Рост оператора

низкий

средний

высокий

А

Высота лодыжки (с обувью)

В

Длина голени

С

Длина бедра

D

Расстояние (по вертикали) от точки бедра до ягодицы 1)

E

Расстояние (продольное) от точки бедра до ягодицы

F

Длина туловища

G

Расстояние от точки бедра до точки поворота шеи 1)

Н

Длина верхней части руки

I

Расстояние от запястья до точки сжатия

J

Длина предплечья

К

Расстояние от глаз до осевой линии туловища

L

Рост (с учетом обуви)

1550

1715

1880

М

Расстояние от уровня глаз до точки поворота шеи

N

Ширина по точкам поворота плеч

O

Ширина по точкам поворота бедер

Р

Расстояние от лодыжки до точки приложения усилия к педали

1) Для оператора в положении сидя.

Примечани е - Размеры соответствуют требованиям приложения А ГОСТ 27258 .

Таблица 4

В миллиметрах

Условное обозначение

Параметр

d 1

Зазор между кабиной, устройствами ROPS, FOPS и органами управления при их ближайшем положении к стенке кабины и устройствам ROPS, FOPS

Не менее 50

R 1

Расстояние от SIP до потолка кабины, устройств ROPS, FOPS в поперечной плоскости:

оператор в защитном шлеме; сиденье имеет регулировку и подвеску; мощность двигателя 150 кВт

Не менее 1050

оператор без защитного шлема; сиденье имеет регулировку и подвеску; мощность двигателя от 30 до 150 кВт

Не менее 1000

оператор без защитного шлема, сиденье не имеет регулировки и подвески, мощность двигателя менее 30 кВт

Не менее 920

R 2

Радиус закругления в месте соединения внутренних стенок кабины и устройств ROPS, FOPS друг с другом и с потолком

Не более 250

R 3

Расстояние до задней стенки кабины, устройств ROPS, FOPS

Примечание 1

h 1

Расстояние по вертикали от SIP до нижней границы верхней части боковых стенок кабины, устройств ROPS, FOPS

Не более 150

h 2

Расстояние по вертикали от SIP до нижней границы верхней части задней стенки кабины, устройств ROPS, FOPS

Примечание 2

l 1

Ширина пространства для ног

Не менее 560

L 1

Зазор для предплечья руки в верхнем боковом пространстве кабины, устройств ROPS, FOPS

Не менее 500

L 2

Зазор между кабиной и устройствами ROPS, FOPS и арктической обувью оператора для любого положения педали и ножного органа управления

Не менее 30

Примечания

1 Не менее b + 400 мм, где b равно половине размера регулирования сиденья по горизонтали, см. .

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

5 Минимальное рабочее пространство вокруг оператора

5.1 Минимальное рекомендованное рабочее пространство вокруг оператора в спецодежде, ограниченное внутренними размерами кабины и устройствами ROPS , FOPS , приведено на рисунке для оператора в положении сидя и на рисунке для оператора в положении стоя. Размеры приведены относительно контрольной точки сиденья ( SIP ) согласно требованиям ГОСТ 27715 .

1 ) SIP - контрольная точка сиденья.

Рисунок 5 - Минимальное рабочее пространство вокруг оператора в спецодежде для работы в положении сидя, ограниченное внутренними размерами кабины и устройствами ROPS , FOPS

Примечани е - Размеры - по таблице .

Рисунок 6 - Минимальное рабочее пространство вокруг оператора в спецодежде для работы в положении стоя, ограниченное внутренними размерами кабины и устройствами ROPS , FOPS

Примечани е - Размеры d 1 и R 2 - по таблице . Размеры рабочего пространства по ширине и зазор для ножных органов управления соответствуют указанным на рисунке .

Очертание рабочего пространства не определяет форму кабины и устройств ROPS , FOPS . Допускаются изменения минимального рабочего пространства вокруг оператора для конкретных машин.

5.2 Минимальное рабочее пространство вокруг оператора указано с учетом антропометрических данных оператора высокого роста, приведенных на рисунках и , и измеряется по внутренней поверхности кабины и устройств ROPS , FOPS , не имеющих видимых следов деформации.

5.3 Минимальное рабочее пространство вокруг оператора может быть меньше указанного на рисунках и , если установлено, что уменьшение рабочего пространства вокруг оператора при работе на конкретных землеройных машинах повышает эффективность его работы.

Возможные изменения рабочего пространства вокруг оператора приведены ниже:

5.3.1 Минимальная высота рабочего пространства вокруг оператора, равная 1050 мм относительно SIP , рекомендуется для размещения широко используемых сидений и обеспечения зазора для защитного шлема оператора. Минимальная высота ограждения вокруг рабочего пространства может быть уменьшена до 1000 мм относительно SIP в случаях, когда оператор не пользуется защитным шлемом (ГОСТ 27715 ).

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

для сиденья без вертикальной подвески - уменьшена на 40 мм;

для сиденья без вертикального регулирования высоты - уменьшена на 40 мм;

для сиденья с регулируемой спинкой - регулировкой спинки на угол более 15°.

5.4 Положение оператора может быть смещено от осевой линии рабочего пространства в направлении прямой видимости боковой поверхности землеройной машины при условии, что минимальное расстояние от SIP до внутренней боковой поверхности составляет не менее 335 мм.

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

5.6 Если оператор при работе с органами рулевого управления или для доступа к органам управления, расположенным сзади SIP , наклоняется вперед, минимальный зазор между задней стенкой и оператором может быть уменьшен до 250 мм плюс 1/2 значения продольной регулировки сиденья.

5.7 Расположение органов управления - по ГОСТ 27258 .

Примечани е - В некоторых районах мира более чем у 5 % операторов длина ног меньше значений, указанных для операторов низкого роста. Это следует учитывать при корректировке расположения зон комфорта и досягаемости для органов ножного управления согласно ГОСТ 27258.

Ключевые слова: машины землеройные, операторы машин, размеры операторов, рабочее пространство

Алгоритм ГОСТ 3411 является отечественным стандартом для хэш-функций. Длина хэш-кода, 256 битам. Алгоритм разбивает сообщение на блоки, длина которых также равна 256 битам. Кроме того, параметром алгоритма является стартовый вектор хэширования Н - произвольное фиксированное значение длиной также 256 бит.

Сообщение обрабатывается блоками по 256 бит справа налево, каждый блок обрабатывается по следующему алгоритму.

    Генерация четырех ключей K j =1…4, длиной 256 бит путем перестановки и сдвига

    промежуточного значения хэш-кода Н длиной 256 бит;

    текущего обрабатываемого блока сообщения М длиной 256 бит;

    и некоторых констант С 2 , С 4 =0, С 3 = 1 8 0 8 1 16 0 24 1 16 0 8 (0 8 1 8) 2 1 8 0 8 (0 8 1 8) 4 (1 8 0 8) 4 , где степень обозначает количество повторений 0 или 1.и =0 длиной 256 бит.

а) Каждое 256-битное значение рассматривается как последовательность 32 8-битных значений, для которых осуществляется перестановка P формуле y = (x) , где x - порядковый номер 8-битного значения в исходной последовательности; y - порядковый номер 8-битного значения в результирующей последовательности.

y =(х) = 8i + k, где i = 0 ÷ 3, k = 1 ÷ 8

б)Сдвиг А определяется по формуле

A (x) = (x 1 x 2) & x 4 & x 3 & x 2, где x i - соответствующие 64 бита 256-битного значения х ,

с) Для определения ключа K 1 присваиваются следующие начальные значения:

K 1 = Р (H M )

Ключи K 2 , K 3 , K 4 вычисляются последовательно по следующему алгоритму:

K i = Р (A(H) С i ) A(A(M)).

2. Шифрование 64-битных значений промежуточного хэш-кода H на ключах K i (i = 1, 2, 3, 4) с использованием алгоритма ГОСТ 28147 в режиме простой замены.

а) Хэш-код Н рассматривается как последовательность 64-битных значений H = h 4 & h 3 & h 2 & h 1

б) Выполняется шифрование алгоритмом ГОСТ 28147

S j = E Ki [ h i ]

в) Результирующая последовательность S j , j = 1, 2, 3, 4 длиной 256 бит запоминается во временной переменной

S = s 1 & s 2 & s 3 & s 4

3.Перемешивание результата шифрования.

а) 256-битное значение рассматривается как последовательность шестнадцати 16-битных значений η 16 & η 15 & ...& η 1

б) Сдвиг обозначается Ψ и определяется следующим образом

η 1 η 2 η 3 η 4 η 13 η 16 & η 16 & ... & η 2

в) Результирующее значение хэш-кода определяется следующим образом:

Χ(M, H) = 61 (H (M 12 (S)))

где H - предыдущее значение хэш-кода, М - текущий обрабатываемый блок, Ψ i - i-ая степень преобразования Ψ .

Логика выполнения гост 3411

Входными параметрами алгоритма являются:

    исходное сообщение М произвольной длины;

    стартовый вектор хэширования Н, длиной 256 битам;

    контрольная сумма Z длиной 256 бит и начальным значением =0.

    переменная L=М.

Сообщение Мделится на блоки длиной 256 бит, каждый i блок обрабатывается справа налево следующим образом:

Последний блок М"обрабатывается следующим образом:

Значением функции хэширования является Н.

Что требуется

Так как алгоритм отечественного производства, необходимо установить программные продукты КриптоПро CSP и КриптоПро CADESCOM. После установки программных продуктов КриптоПро будет доступен COM-объект HasheData с ProgID - CAdESCOM.HashedData . Этот объект предоставляет свойства и методы для вычисления хэш-суммы данных.

Реализация

Объект HashedData имеет метод Hash , в который передаются данные для вычисления хэш-суммы. Свойство Value содержит результат вычисления. Напишем функцию, которая принимает строку и возвращает хэш-сумму. Незабываем, что строки в разных кодировках имеют различные хэш-суммы, поэтому строку следует привести к кодировке UTF-8.

// Функция вычисляет хэш-сумму по алгоритму ГОСТ 34.11-94
// Параметры
// Строка - Строка - исходная строка.
// Возвращаемое значение:
// Строка - хэш-сумма в виде 64-х символьной строке в шестнадцатеричном формате.
Функция ВычислитьХэшСуммуПоГОСТ_3411(Строка) Экспорт

CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;

HashedData = Новый COMОбъект("CAdESCOM.HashedData");
// Указываем алгоритм хэширования.
HashedData.Algorithm = CADESCOM_HASH_ALGORITHM_CP_GOST_3411;
// Передаем данные, строку кодируем в последовательность байтов UTF-8.
UTF8Encoding = Новый COMОбъект("System.Text.UTF8Encoding");
HashedData.Hash(UTF8Encoding.GetBytes_4(Строка));

// Возвращаем вычисленную хэш-сумму.
Возврат HashedData.Value;

КонецФункции // ВычислитьХэшСуммуПоГОСТ_3411()

Результат работу функции:
Обработку можно скачать по этой

Размер хеша - 256 или 512 бит; размер блока входных данных - 512 бит.

Стандарт определяет алгоритм и процедуру вычисления хеш-функции для последовательности символов. Этот стандарт разработан и введён в качестве замены устаревшему стандарту ГОСТ Р 34.11-94 :

Необходимость разработки <…> вызвана потребностью в создании хеш-функции, соответствующей современным требованиям к криптографической стойкости и требованиям стандарта ГОСТ Р 34.10-2012 на электронную цифровую подпись .

Текст стандарта. Введение.

Концепции построения хеш-функции «Стрибог»

В соответствии с требованиями высказанными на конференции РусКрипто-2010, в работе, посвящённой новой хеш-функции :

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

В той же работе вводятся «универсальные» требования, касающиеся трудоемкости атак на хеш-функцию:

Сравнение ГОСТ Р 34.11-2012 и ГОСТ Р 34.11-94

  • В ГОСТ Р 34.11-2012 размер блоков сообщения и внутреннего состояния хеш-функции составляет 512 бит против 256 бит в ГОСТ Р 34.11-94.
  • Новый стандарт определяет две функции хеширования с длинами хеш-кода 256 и 512 бит, в то время как в старом стандарте длина хеш-кода может быть только 256 бит. Возможность вариации выходного хеша может быть полезна в случае встроенных реализаций с ограниченными ресурсами или наличия каких-то дополнительных требований в области криптографии.
  • Основное отличие современной хеш-функции от старой - функция сжатия. В ГОСТ Р 34.11-2012 используется функции сжатия, в основе которой лежат три преобразования: нелинейное биективное преобразование (обозначается S), перестановка байт (обозначается P), линейное преобразование (обозначается L). В ГОСТ Р 34.11-94 используется функция сжатия, основанная на симметричном блочном шифре ГОСТ Р 28147-89, также эта функция использует операции перемешивания.
  • При вычислении новой хеш-функции, если размер сообщения не кратен размеру обрабатываемого блока (для современного стандарта - 512 бит, для старого стандарта - 256 бит), то такой блок дополняется вектором (00 … 01). При вычислении старой хеш-функции неполный блок дополняется значением (00 … 0). Считается [кем? ] , что дополнение (00 … 01) лучше, чем (00 … 0), с криптографической точки зрения.
  • Еще одно отличие состоит в том, что стандарт ГОСТ Р 34.11-94 не определял значение инициализационного вектора, в то время как в стандарте ГОСТ Р 34.11-2012 значение инициализационного вектора фиксировано и определено в стандарте: для хеш-функции с размером выходного хеша 512 бит это вектор (00 … 0), для хеш-функции с размером выходного хеш-кода 256 бит - (000000010 … 100000001) (все байты равны 1).

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

В хеш-функции важным элементом является функция сжатия. В ГОСТ Р 34.11-2012 функция сжатия основана на конструкции Миагучи-Пренеля (Miyaguchi-Preneel). Ниже приведена схема конструкции Миагучи-Пренеля : h, m - вектора поступающие на вход функции сжатия; g(h, m) - результат функции сжатия; E - блочный шифр с длиной блока и ключа 512 бит. В качестве блочного шифра в хеш-функции ГОСТ Р 34.11-2012 взят XSPL-шифр. Этот шифр состоит из следующих преобразований:

  • сложение по модулю 2;
  • преобразование замены или подстановки. Обозначается S-преобразование;
  • преобразование перестановки. Обозначается P-преобразование;
  • линейное преобразование. Обозначается L-преобразование.

Преобразования используемые в новой хеш-функции должны быть хорошо изучены. Поэтому в блочном шифре E используются преобразования X, S, P, L, которые хорошо изучены.

Важным параметром блочного шифра является то, как выбирается ключ, который будет использовать на каждом раунде. В блочном шифре, используемом в ГОСТ Р 34.11-2012, ключи K_{1}, K_{2}, … , K_{13} для каждого из 13 раундов генерируются с помощью самой функции шифрования.

C_{1}, C_{2}, … , C_{12} - итерационные константы, которые являются 512 битовыми векторам. Их значения указаны в соответствующем разделе стандарта.

Описание

В основу хеш-функции положена итерационная конструкция Меркла-Дамгарда с использованием MD-усиления. Под MD-усилением понимается дополнение неполного блока при вычислении хеш-функции до полного путём добавления вектора (0 … 01) такой длины, чтобы получился полный блок. Из дополнительных элементов нужно отметить следующие:

  • завершающее преобразование, которое заключается в том, что функция сжатия применяется к контрольной сумме всех блоков сообщения по модулю 2 512 ;
  • при вычислении хеш-кода на каждой итерации применяются разные функции сжатия. Можно сказать, что функция сжатия зависит от номера итерации.

Описанные выше решения позволяют противостоять многим известным атакам.

Кратко описание хеш-функции ГОСТ Р 34.11-2012 можно представить следующим образом. На вход хеш-функции подается сообщение произвольного размера. Далее сообщение разбивается на блоки по 512 бит, если размер сообщения не кратен 512, то оно дополняется необходимым количеством бит. Потом итерационно используется функции сжатия, в результате действия которой обновляется внутреннее состояние хеш-функции. Также вычисляется контрольная сумма блоков и число обработанных бит. Когда обработаны все блоки исходного сообщения, производятся еще два вычисления, которые завершают вычисление хеш-функции:

  • обработка функцией сжатия блока с общей длиной сообщения.
  • обработка функцией сжатия блока с контрольной суммой.

В работе Александра Казимирова и Валентины Казимировой приведена графическая иллюстрация вычисления хеш-функции.

Анализ

Криптостойкость

Криптоанализ старого стандарта выявил некоторые его слабые стороны с теоретической точки зрения. Так в одной из работ , посвящённых криптоанализу ГОСТ Р 34.11-94, было выявлено, что сложность алгоритма построения прообраза оценивается в 2 192 вычислений функций сжатия, коллизии 2 105 , что меньше «универсальных» оценок, которые для ГОСТ Р 34.11-94 равны 2 256 и 2 128 . Хотя по состоянию на 2013 год нет большого числа работ, посвящённых криптостойкости новой хеш-функции, исходя из конструкции новой хеш-функции, можно сделать некоторые выводы о её криптостойкости и предположить, что её криптостойкость будет выше, чем у ГОСТ Р 34.11-94:

  • в разделе «Описание» из схемы видно, что все блоки сообщения суммируются по модулю 2 512 и уже результат суммирования всех блоков подается на вход завершающего этапа (stage3). Благодаря тому, что здесь суммирование - это не побитовое сложение, получается защита от следующих атак:
  • построение мультиколлизий;
  • удлинение прообраза;
  • дифференциальный криптоанализ;
  • в функции сжатия используется конструкция Миагучи-Пренели, это обеспечивает защиту от атаки, основанную на фиксированных точках, так как для конструкции Миагучи-Пренели не найдено способов (легких) для поиска фиксированных точек;
  • на каждой итерации при вычислении хеш-кода используются различные константы. Это затрудняет атаки на основе связанных и разностных связанных ключей, атаки скольжения и отражения.

В 2013 году на сайте «Cryptology ePrint Archive: Listing for 2013» было опубликовано две статьи, посвящённых криптоанализу новой хеш-функции. В статье «Rebound attack on Stribog» исследуется устойчивость хеш-функции по отношению к атаке, называемой «The Rebound attack»; в основе этой атаки лежит «rotation cryptanalysis» и дифференциальный криптоанализ . Криптоаналитики при поиске уязвимостей использовали метод, называемый «free-start». Это означает, что при вычислении хеш-кода фиксируется некоторое состояние хеш-функции и дальше вычисления могут идти как в сторону вычисления хеш-кода, так и в сторону вычисления сообщения. Криптоаналитики сумели добиться коллизии за 5 раундов и была получена так называемая «near collision» (это означает, что были найдены два сообщения, хеш-коды которых отличны в малом количестве бит) при использовании 7,75 раундов. Также было установлено, что схема, по которой выбираются ключи для каждого раунда, добавляет устойчивости функции сжатия. Однако было показано, что коллизия возможна за 7,75 раундов, а «near collision» - за 8,75 и 9,75, соответственно.

В статье «Integral Distinguishers for Reduced-round Stribog» рассматривается стойкость хеш-функции (с уменьшенным количеством раундов) по отношению к интегральному криптоанализу . Авторами при исследовании функции сжатия удалось найти дифференциал за 4 раунда при вычислении в прямом направлении и за 3,5 раунда при вычислении в обратном направлении. Также было выяснено, что атака нахождения дифференциала на хеш-функцию с числом раундов 6 и 7 требует 2 64 и 2 120 среднераундовых значений, соответственно.

Для изучения криптостойкости новой хеш-функции компания «ИнфоТеКС» в ноябре 2013 года объявила о старте конкурса ; он завершился в мае 2015 года . Победителем стала работа «The Usage of Counter Revisited: Second-Preimage Attack on New Russian Standardized Hash Function», в которой авторы представили атаку нахождения второго прообраза для хеш-функции «Стрибог-512», требующую 2 266 вызовов функции сжатия для сообщений длиннее 2 259 блоков .

Быстродействие

На сайте, посвящённом VI Международной конференции «Параллельные вычисления и задачи управления» (PACO’2012) представлена статья П. А. Лебедева «Сравнение старого и нового стандартов РФ на криптографическую хэш-функцию на ЦП и графических процессорах NVIDIA», в которой проводится сравнение быстродействия семейства криптографических хеш-функций ГОСТ Р 34.11-94 и ГОСТ Р 34.11-2012 на процессорах архитектуры x86_64 и видеокартах NVIDIA с поддержкой технологии CUDA .

Для сравнения быстродействия на процессоре архитектуры x86_64 были взяты 4 разных реализации хеш-функций:

Использовался процессор Intel Core i7-920 CPU, разогнанный до 2,67 ГГц. Результаты производительности:

Сравнение быстродействия старого и нового стандартов хеш-функций на GPU проводилось между реализациями П. А. Лебедева. Использовалась видеокарта NVIDIA GTX 580. Результаты производительности (8192 потока данных по 16 КБ):

ГОСТ Р 34.11-1994 ГОСТ Р 34.11-2012
МБ/с Тактов/байт МБ/с Тактов/байт
1697 - 608 -

На основании этих результатов сделан вывод, что хеш-функция ГОСТ Р 34.11-2012 может быть в два раза быстрее хеш-функции ГОСТ Р 34.11-94 на современных процессорах, но медленнее на графических картах и системах с ограниченными ресурсами.

Такие результаты производительности можно объяснить тем, что при вычислении новой хеш-функции используются только сложения по модулю 2 и инструкции пересылки данных. Старая хеш-функции содержит много инструкций перемешивания, которые не лучшим образом отображаются на набор команд ЦП. Но увеличенный размер состояний и таблиц подстановки хеш-функции ГОСТ Р 34.11-2012 делает её медленней на высокопараллельных вычислительных средствах, таких как графические процессоры.

Также исследование производительности новой хеш-функции было проведено её разработчиками на 64-битном процессоре Intel Xeon E5335 2 ГГц. Использовалось одно ядро. Производительность хеш-функции ГОСТ Р 34.11-2012 составила 51 такт процессора на 1 байт хешируемых данных (примерно 40 MБ/с). Полученный результат на 20 % лучше, чем у старой хеш-функции ГОСТ Р 34.11-94.

  • В конце текста стандарта приведены примеры пошагового вычисления хеша для нескольких исходных значений. Одно из таких значений - шестнадцатеричное число M 2 длины 576 байт из примера 2. На ЭВМ архитектуры x86 используется метод Little endian , и подобное число в памяти будет представлено в «перевёрнутом» виде. Если преобразовать этот массив байт в текст по правилам кодировки Windows-1251 , то получится: «Се ветри, Стрибожи внуци, веютъ с моря стрелами на храбрыя плъкы Игоревы», что является немного изменённой строчкой из Слова о полку Игореве .

Напишите отзыв о статье "ГОСТ Р 34.11-2012"

Примечания

Ссылки

  • , 2013

Отрывок, характеризующий ГОСТ Р 34.11-2012

– Votre nom? [Ваше имя?] – повторил Даву.
– Besouhof. [Безухов.]
– Qu"est ce qui me prouvera que vous ne mentez pas? [Кто мне докажет, что вы не лжете?]
– Monseigneur! [Ваше высочество!] – вскрикнул Пьер не обиженным, но умоляющим голосом.
Даву поднял глаза и пристально посмотрел на Пьера. Несколько секунд они смотрели друг на друга, и этот взгляд спас Пьера. В этом взгляде, помимо всех условий войны и суда, между этими двумя людьми установились человеческие отношения. Оба они в эту одну минуту смутно перечувствовали бесчисленное количество вещей и поняли, что они оба дети человечества, что они братья.
В первом взгляде для Даву, приподнявшего только голову от своего списка, где людские дела и жизнь назывались нумерами, Пьер был только обстоятельство; и, не взяв на совесть дурного поступка, Даву застрелил бы его; но теперь уже он видел в нем человека. Он задумался на мгновение.
– Comment me prouverez vous la verite de ce que vous me dites? [Чем вы докажете мне справедливость ваших слов?] – сказал Даву холодно.
Пьер вспомнил Рамбаля и назвал его полк, и фамилию, и улицу, на которой был дом.
– Vous n"etes pas ce que vous dites, [Вы не то, что вы говорите.] – опять сказал Даву.
Пьер дрожащим, прерывающимся голосом стал приводить доказательства справедливости своего показания.
Но в это время вошел адъютант и что то доложил Даву.
Даву вдруг просиял при известии, сообщенном адъютантом, и стал застегиваться. Он, видимо, совсем забыл о Пьере.
Когда адъютант напомнил ему о пленном, он, нахмурившись, кивнул в сторону Пьера и сказал, чтобы его вели. Но куда должны были его вести – Пьер не знал: назад в балаган или на приготовленное место казни, которое, проходя по Девичьему полю, ему показывали товарищи.
Он обернул голову и видел, что адъютант переспрашивал что то.
– Oui, sans doute! [Да, разумеется!] – сказал Даву, но что «да», Пьер не знал.
Пьер не помнил, как, долго ли он шел и куда. Он, в состоянии совершенного бессмыслия и отупления, ничего не видя вокруг себя, передвигал ногами вместе с другими до тех пор, пока все остановились, и он остановился. Одна мысль за все это время была в голове Пьера. Это была мысль о том: кто, кто же, наконец, приговорил его к казни. Это были не те люди, которые допрашивали его в комиссии: из них ни один не хотел и, очевидно, не мог этого сделать. Это был не Даву, который так человечески посмотрел на него. Еще бы одна минута, и Даву понял бы, что они делают дурно, но этой минуте помешал адъютант, который вошел. И адъютант этот, очевидно, не хотел ничего худого, но он мог бы не войти. Кто же это, наконец, казнил, убивал, лишал жизни его – Пьера со всеми его воспоминаниями, стремлениями, надеждами, мыслями? Кто делал это? И Пьер чувствовал, что это был никто.
Это был порядок, склад обстоятельств.
Порядок какой то убивал его – Пьера, лишал его жизни, всего, уничтожал его.

От дома князя Щербатова пленных повели прямо вниз по Девичьему полю, левее Девичьего монастыря и подвели к огороду, на котором стоял столб. За столбом была вырыта большая яма с свежевыкопанной землей, и около ямы и столба полукругом стояла большая толпа народа. Толпа состояла из малого числа русских и большого числа наполеоновских войск вне строя: немцев, итальянцев и французов в разнородных мундирах. Справа и слева столба стояли фронты французских войск в синих мундирах с красными эполетами, в штиблетах и киверах.
Преступников расставили по известному порядку, который был в списке (Пьер стоял шестым), и подвели к столбу. Несколько барабанов вдруг ударили с двух сторон, и Пьер почувствовал, что с этим звуком как будто оторвалась часть его души. Он потерял способность думать и соображать. Он только мог видеть и слышать. И только одно желание было у него – желание, чтобы поскорее сделалось что то страшное, что должно было быть сделано. Пьер оглядывался на своих товарищей и рассматривал их.
Два человека с края были бритые острожные. Один высокий, худой; другой черный, мохнатый, мускулистый, с приплюснутым носом. Третий был дворовый, лет сорока пяти, с седеющими волосами и полным, хорошо откормленным телом. Четвертый был мужик, очень красивый, с окладистой русой бородой и черными глазами. Пятый был фабричный, желтый, худой малый, лет восемнадцати, в халате.
Пьер слышал, что французы совещались, как стрелять – по одному или по два? «По два», – холодно спокойно отвечал старший офицер. Сделалось передвижение в рядах солдат, и заметно было, что все торопились, – и торопились не так, как торопятся, чтобы сделать понятное для всех дело, но так, как торопятся, чтобы окончить необходимое, но неприятное и непостижимое дело.
Чиновник француз в шарфе подошел к правой стороне шеренги преступников в прочел по русски и по французски приговор.
Потом две пары французов подошли к преступникам и взяли, по указанию офицера, двух острожных, стоявших с края. Острожные, подойдя к столбу, остановились и, пока принесли мешки, молча смотрели вокруг себя, как смотрит подбитый зверь на подходящего охотника. Один все крестился, другой чесал спину и делал губами движение, подобное улыбке. Солдаты, торопясь руками, стали завязывать им глаза, надевать мешки и привязывать к столбу.
Двенадцать человек стрелков с ружьями мерным, твердым шагом вышли из за рядов и остановились в восьми шагах от столба. Пьер отвернулся, чтобы не видать того, что будет. Вдруг послышался треск и грохот, показавшиеся Пьеру громче самых страшных ударов грома, и он оглянулся. Был дым, и французы с бледными лицами и дрожащими руками что то делали у ямы. Повели других двух. Так же, такими же глазами и эти двое смотрели на всех, тщетно, одними глазами, молча, прося защиты и, видимо, не понимая и не веря тому, что будет. Они не могли верить, потому что они одни знали, что такое была для них их жизнь, и потому не понимали и не верили, чтобы можно было отнять ее.
Пьер хотел не смотреть и опять отвернулся; но опять как будто ужасный взрыв поразил его слух, и вместе с этими звуками он увидал дым, чью то кровь и бледные испуганные лица французов, опять что то делавших у столба, дрожащими руками толкая друг друга. Пьер, тяжело дыша, оглядывался вокруг себя, как будто спрашивая: что это такое? Тот же вопрос был и во всех взглядах, которые встречались со взглядом Пьера.
На всех лицах русских, на лицах французских солдат, офицеров, всех без исключения, он читал такой же испуг, ужас и борьбу, какие были в его сердце. «Да кто жо это делает наконец? Они все страдают так же, как и я. Кто же? Кто же?» – на секунду блеснуло в душе Пьера.
– Tirailleurs du 86 me, en avant! [Стрелки 86 го, вперед!] – прокричал кто то. Повели пятого, стоявшего рядом с Пьером, – одного. Пьер не понял того, что он спасен, что он и все остальные были приведены сюда только для присутствия при казни. Он со все возраставшим ужасом, не ощущая ни радости, ни успокоения, смотрел на то, что делалось. Пятый был фабричный в халате. Только что до него дотронулись, как он в ужасе отпрыгнул и схватился за Пьера (Пьер вздрогнул и оторвался от него). Фабричный не мог идти. Его тащили под мышки, и он что то кричал. Когда его подвели к столбу, он вдруг замолк. Он как будто вдруг что то понял. То ли он понял, что напрасно кричать, или то, что невозможно, чтобы его убили люди, но он стал у столба, ожидая повязки вместе с другими и, как подстреленный зверь, оглядываясь вокруг себя блестящими глазами.
Пьер уже не мог взять на себя отвернуться и закрыть глаза. Любопытство и волнение его и всей толпы при этом пятом убийстве дошло до высшей степени. Так же как и другие, этот пятый казался спокоен: он запахивал халат и почесывал одной босой ногой о другую.
Когда ему стали завязывать глаза, он поправил сам узел на затылке, который резал ему; потом, когда прислонили его к окровавленному столбу, он завалился назад, и, так как ему в этом положении было неловко, он поправился и, ровно поставив ноги, покойно прислонился. Пьер не сводил с него глаз, не упуская ни малейшего движения.
Должно быть, послышалась команда, должно быть, после команды раздались выстрелы восьми ружей. Но Пьер, сколько он ни старался вспомнить потом, не слыхал ни малейшего звука от выстрелов. Он видел только, как почему то вдруг опустился на веревках фабричный, как показалась кровь в двух местах и как самые веревки, от тяжести повисшего тела, распустились и фабричный, неестественно опустив голову и подвернув ногу, сел. Пьер подбежал к столбу. Никто не удерживал его. Вокруг фабричного что то делали испуганные, бледные люди. У одного старого усатого француза тряслась нижняя челюсть, когда он отвязывал веревки. Тело спустилось. Солдаты неловко и торопливо потащили его за столб и стали сталкивать в яму.
Все, очевидно, несомненно знали, что они были преступники, которым надо было скорее скрыть следы своего преступления.
Пьер заглянул в яму и увидел, что фабричный лежал там коленами кверху, близко к голове, одно плечо выше другого. И это плечо судорожно, равномерно опускалось и поднималось. Но уже лопатины земли сыпались на все тело. Один из солдат сердито, злобно и болезненно крикнул на Пьера, чтобы он вернулся. Но Пьер не понял его и стоял у столба, и никто не отгонял его.
Когда уже яма была вся засыпана, послышалась команда. Пьера отвели на его место, и французские войска, стоявшие фронтами по обеим сторонам столба, сделали полуоборот и стали проходить мерным шагом мимо столба. Двадцать четыре человека стрелков с разряженными ружьями, стоявшие в середине круга, примыкали бегом к своим местам, в то время как роты проходили мимо них.
Пьер смотрел теперь бессмысленными глазами на этих стрелков, которые попарно выбегали из круга. Все, кроме одного, присоединились к ротам. Молодой солдат с мертво бледным лицом, в кивере, свалившемся назад, спустив ружье, все еще стоял против ямы на том месте, с которого он стрелял. Он, как пьяный, шатался, делая то вперед, то назад несколько шагов, чтобы поддержать свое падающее тело. Старый солдат, унтер офицер, выбежал из рядов и, схватив за плечо молодого солдата, втащил его в роту. Толпа русских и французов стала расходиться. Все шли молча, с опущенными головами.
– Ca leur apprendra a incendier, [Это их научит поджигать.] – сказал кто то из французов. Пьер оглянулся на говорившего и увидал, что это был солдат, который хотел утешиться чем нибудь в том, что было сделано, но не мог. Не договорив начатого, он махнул рукою и пошел прочь.

После казни Пьера отделили от других подсудимых и оставили одного в небольшой, разоренной и загаженной церкви.
Перед вечером караульный унтер офицер с двумя солдатами вошел в церковь и объявил Пьеру, что он прощен и поступает теперь в бараки военнопленных. Не понимая того, что ему говорили, Пьер встал и пошел с солдатами. Его привели к построенным вверху поля из обгорелых досок, бревен и тесу балаганам и ввели в один из них. В темноте человек двадцать различных людей окружили Пьера. Пьер смотрел на них, не понимая, кто такие эти люди, зачем они и чего хотят от него. Он слышал слова, которые ему говорили, но не делал из них никакого вывода и приложения: не понимал их значения. Он сам отвечал на то, что у него спрашивали, но не соображал того, кто слушает его и как поймут его ответы. Он смотрел на лица и фигуры, и все они казались ему одинаково бессмысленны.
С той минуты, как Пьер увидал это страшное убийство, совершенное людьми, не хотевшими этого делать, в душе его как будто вдруг выдернута была та пружина, на которой все держалось и представлялось живым, и все завалилось в кучу бессмысленного сора. В нем, хотя он и не отдавал себе отчета, уничтожилась вера и в благоустройство мира, и в человеческую, и в свою душу, и в бога. Это состояние было испытываемо Пьером прежде, но никогда с такою силой, как теперь. Прежде, когда на Пьера находили такого рода сомнения, – сомнения эти имели источником собственную вину. И в самой глубине души Пьер тогда чувствовал, что от того отчаяния и тех сомнений было спасение в самом себе. Но теперь он чувствовал, что не его вина была причиной того, что мир завалился в его глазах и остались одни бессмысленные развалины. Он чувствовал, что возвратиться к вере в жизнь – не в его власти.
Вокруг него в темноте стояли люди: верно, что то их очень занимало в нем. Ему рассказывали что то, расспрашивали о чем то, потом повели куда то, и он, наконец, очутился в углу балагана рядом с какими то людьми, переговаривавшимися с разных сторон, смеявшимися.
– И вот, братцы мои… тот самый принц, который (с особенным ударением на слове который)… – говорил чей то голос в противуположном углу балагана.
Молча и неподвижно сидя у стены на соломе, Пьер то открывал, то закрывал глаза. Но только что он закрывал глаза, он видел пред собой то же страшное, в особенности страшное своей простотой, лицо фабричного и еще более страшные своим беспокойством лица невольных убийц. И он опять открывал глаза и бессмысленно смотрел в темноте вокруг себя.
Рядом с ним сидел, согнувшись, какой то маленький человек, присутствие которого Пьер заметил сначала по крепкому запаху пота, который отделялся от него при всяком его движении. Человек этот что то делал в темноте с своими ногами, и, несмотря на то, что Пьер не видал его лица, он чувствовал, что человек этот беспрестанно взглядывал на него. Присмотревшись в темноте, Пьер понял, что человек этот разувался. И то, каким образом он это делал, заинтересовало Пьера.
Размотав бечевки, которыми была завязана одна нога, он аккуратно свернул бечевки и тотчас принялся за другую ногу, взглядывая на Пьера. Пока одна рука вешала бечевку, другая уже принималась разматывать другую ногу. Таким образом аккуратно, круглыми, спорыми, без замедления следовавшими одно за другим движеньями, разувшись, человек развесил свою обувь на колышки, вбитые у него над головами, достал ножик, обрезал что то, сложил ножик, положил под изголовье и, получше усевшись, обнял свои поднятые колени обеими руками и прямо уставился на Пьера. Пьеру чувствовалось что то приятное, успокоительное и круглое в этих спорых движениях, в этом благоустроенном в углу его хозяйстве, в запахе даже этого человека, и он, не спуская глаз, смотрел на него.
– А много вы нужды увидали, барин? А? – сказал вдруг маленький человек. И такое выражение ласки и простоты было в певучем голосе человека, что Пьер хотел отвечать, но у него задрожала челюсть, и он почувствовал слезы. Маленький человек в ту же секунду, не давая Пьеру времени выказать свое смущение, заговорил тем же приятным голосом.

Понравилась статья? Поделитесь с друзьями!
Была ли эта статья полезной?
Да
Нет
Спасибо, за Ваш отзыв!
Что-то пошло не так и Ваш голос не был учтен.
Спасибо. Ваше сообщение отправлено
Нашли в тексте ошибку?
Выделите её, нажмите Ctrl + Enter и мы всё исправим!