<div dir="ltr"><div dir="ltr">Привет!</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Nov 6, 2019 at 6:49 PM Alexander Bokovoy &lt;<a href="mailto:ab@altlinux.org">ab@altlinux.org</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Привет!<div><br></div><div>В последних версиях crypto-policies (<a href="https://gitlab.com/redhat-crypto/fedora-crypto-policies/" target="_blank">https://gitlab.com/redhat-crypto/fedora-crypto-policies/</a>), которые уже присутствуют в Fedora 31, появилась поддержка &quot;вторичных политик&quot;.</div><div><br></div><div>&quot;Вторичные политики&quot; позволяют добавить разрешения на использование специфичных крипто-систем поверх имеющейся системной политики. Даже есть заготовка для ГОСТ, но она не работает, потому что не описывает конкретные шифронаборы, которые можно разрешать.</div><div><br></div><div>Вот дополнительный модуль политики для ГОСТ: <a href="https://gitlab.com/redhat-crypto/fedora-crypto-policies/blob/master/policies/modules/GOST.pmod" target="_blank">https://gitlab.com/redhat-crypto/fedora-crypto-policies/blob/master/policies/modules/GOST.pmod</a>. Этот модуль определяет внутренние имена для генераторов политик конкретных библиотек. Например, openssl генератор: <a href="https://gitlab.com/redhat-crypto/fedora-crypto-policies/blob/master/python/policygenerators/openssl.py" target="_blank">https://gitlab.com/redhat-crypto/fedora-crypto-policies/blob/master/python/policygenerators/openssl.py</a>. Этот генератор (как и другие) не содержит преобразований из внутренних имен ГОСТ, определенных в GOST.pmod в имена, понимаемые библиотеками. </div><div><br></div><div>Фактически, это заготовка, которую нужно доработать.</div><div><br></div><div>Преобразование нужно как-то определить -- оно позволяет нам описать предпочитаемые шифронаборы и управлять их выбором. Если таких наборов будет несколько (старый ГОСТ, современный ГОСТ и так далее), то мы можем описать их в разных дополнительных модулях (GOST-OLD, GOST, etc), но нам нужно договориться о том, во что используемые в них имена будут преобразованы для каждой библиотеки, поддерживающей ГОСТ.</div></div></blockquote><div><br></div><div>С единством имён у нас плохо. Для openssl в своё время часть имён придумали мы в Криптокоме, и не всегда удачно.</div><div>Есть старые ГОСТы, которые потихоньку вымирают, и есть новые, частично дублированные в RFC.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><br></div><div>Так что, вопрос к экспертам: определите, пожалуйста, что использовать для следующий понятий для старого и нового ГОСТ:</div><div><br></div><div>1) HMAC</div></div></blockquote><div><br></div><div>HMAC по ГОСТ он и есть HMAC. То есть если там базовый примитив ГОСТовый, то сам он ГОСТовый. Другой вопрос, что в ГОСТах есть ещё минимум 3 варианта MAC: на старом ГОСТ, и OMAC на новом. Но для OMAC тоже смотрим на базовые примитивы.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>2) group</div></div></blockquote><div><br></div><div>Тут я предлагаю брать то, что описано в <a href="https://tools.ietf.org/html/draft-smyshlyaev-tls12-gost-suites-06#section-9">https://tools.ietf.org/html/draft-smyshlyaev-tls12-gost-suites-06#section-9</a></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>3) hash</div></div></blockquote><div><br></div><div>Три штуки. ГОСТ Р 34.11-94, ГОСТ Р 34.11-2012 в двух вариантах. RFC 6986.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>4) signature</div></div></blockquote><div><br></div><div>ГОСТ Р 34.10-2001 и ГОСТ Р 34.10-2012. RFC 7091.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>5) TLS cipher</div></div></blockquote><div><br></div><div>Я бы брал <a href="https://tools.ietf.org/html/draft-smyshlyaev-tls12-gost-suites-06">https://tools.ietf.org/html/draft-smyshlyaev-tls12-gost-suites-06</a></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>6) key exchange</div></div></blockquote><div><br></div><div>Вот как его выделить, я не знаю. Идеологически это (EC)DH, по факту с вариациями. </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><br></div><div>Вот так это выглядит в подполитике GOST сейчас:</div><div><pre lang="plaintext"><span id="gmail-m_4692607018115058099gmail-LC4" lang="plaintext"># This adds the HMAC-GOST at the end of the mac list</span>
<span id="gmail-m_4692607018115058099gmail-LC5" lang="plaintext">mac = HMAC-GOST+</span>
<span id="gmail-m_4692607018115058099gmail-LC6" lang="plaintext"></span>
<span id="gmail-m_4692607018115058099gmail-LC7" lang="plaintext"># This adds the GOST-EC to the beginning of the group list</span>
<span id="gmail-m_4692607018115058099gmail-LC8" lang="plaintext">group = +GOST-EC</span>
<span id="gmail-m_4692607018115058099gmail-LC9" lang="plaintext"></span>
<span id="gmail-m_4692607018115058099gmail-LC10" lang="plaintext">hash = +GOSTHASH</span>
<span id="gmail-m_4692607018115058099gmail-LC11" lang="plaintext"></span>
<span id="gmail-m_4692607018115058099gmail-LC12" lang="plaintext">sign = +GOST-EC-GOSTHASH</span>
<span id="gmail-m_4692607018115058099gmail-LC13" lang="plaintext"></span>
<span id="gmail-m_4692607018115058099gmail-LC14" lang="plaintext">tls_cipher = +GOST-CIPHER</span>
<span id="gmail-m_4692607018115058099gmail-LC15" lang="plaintext"></span>
<span id="gmail-m_4692607018115058099gmail-LC16" lang="plaintext">cipher = +GOST-CIPHER</span>
<span id="gmail-m_4692607018115058099gmail-LC17" lang="plaintext"></span>
<span id="gmail-m_4692607018115058099gmail-LC18" lang="plaintext">key_exchange = +GOST-EC</span>
</pre></div><div>Для примера, вот так выглядит подполитики выкидывания поддержки SHA1, NO-SHA1.pmod:</div><div><pre lang="plaintext"><span id="gmail-m_4692607018115058099gmail-LC1" lang="plaintext"># This is example subpolicy dropping the SHA1 hash and signature support</span>
<span id="gmail-m_4692607018115058099gmail-LC2" lang="plaintext"></span>
<span id="gmail-m_4692607018115058099gmail-LC3" lang="plaintext">hash = -SHA1</span>
<span id="gmail-m_4692607018115058099gmail-LC4" lang="plaintext"></span>
<span id="gmail-m_4692607018115058099gmail-LC5" lang="plaintext">sign = -RSA-PSS-SHA1 -RSA-SHA1 -ECDSA-SHA1</span>
</pre></div><div>Где SHA1, RSA-PSS-SHA1 и остальные имена либо стандартизированы между библиотеками, либо мапятся в стандартизированные каждым генератором отдельно.<br clear="all"><div><br></div>-- <br><div dir="ltr">/ Alexander Bokovoy</div></div></div>
_______________________________________________<br>
oss-gost-crypto mailing list<br>
<a href="mailto:oss-gost-crypto@lists.altlinux.org" target="_blank">oss-gost-crypto@lists.altlinux.org</a><br>
<a href="https://lists.altlinux.org/mailman/listinfo/oss-gost-crypto" rel="noreferrer" target="_blank">https://lists.altlinux.org/mailman/listinfo/oss-gost-crypto</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature">SY, Dmitry Belyavsky</div></div>