<div dir="auto"><div><br><br><div data-smartmail="gmail_signature"><br></div><br><div class="gmail_quote"><div dir="ltr">сб, 15 дек. 2018 г., 23:48 Dmitry Belyavsky <<a href="mailto:beldmit@gmail.com">beldmit@gmail.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr">Привет!<div><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Sat, Dec 15, 2018 at 9:02 PM Vitaly Chikunov <<a href="mailto:vt@altlinux.org" target="_blank" rel="noreferrer">vt@altlinux.org</a>> 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">Hi,<br>
<br>
1. Я сделал рабочую реализацию проверки подписи ГОСТ 34.10 для ядра<br>
в очень _черновом_ варианте:<br>
<br>
<a href="https://github.com/vt-alt/linux/commits/ecrdsa" rel="noreferrer noreferrer" target="_blank">https://github.com/vt-alt/linux/commits/ecrdsa</a><br>
<a href="https://github.com/vt-alt/linux/blob/ecrdsa/crypto/ecrdsa.c" rel="noreferrer noreferrer" target="_blank">https://github.com/vt-alt/linux/blob/ecrdsa/crypto/ecrdsa.c</a><br>
<br>
2. CryptoAPI ядра RSA-центрично и поэтому сделать поддержку ECDSA<br>
не меняя его не возможно. Поэтому, там есть пара коммитов со сменой<br>
akcipher API (вводится новый вызов verify2). Я отсылал RFC патчсет и его<br>
восприняли без негатива. (Правда этого все равно будет не достаточно для<br>
out-of-tree реализаций. Но наша планируется in-tree, так что это не<br>
проблема).<br>
<br>
3. По кривым. Рекомендовано использовать 7 кривых:<br>
<br>
4. Поддержку двух скрученных кривых Эжвардса я не стал делать, так как<br>
gost-engine их не поддерживает. Это<br>
<br>
id-tc26-gost-3410-2012-256-paramSetA<br>
id-tc26-gost-3410-2012-512-paramSetC<br>
<br>
Из оставшихся:<br>
<br>
id-GostR3410-2001-CryptoPro-A-ParamSet (256-bit)<br>
id-tc26-gost-3410-12-512-paramSetA<br>
<br>
Работают (более менее) оптимизированные алгоритмы, но надо ещё точнее<br>
проверить скорость. Субъективно 512-битный вариант работает "быстрее<br>
чем 0.1 в секунду", что можно оценить как "очень плохо".<br></blockquote><div><br></div><div>Я могу, наверное, выслать пузомерку, которую делали для внутренних криптокомовских нужд. </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">5. Смышляев (2015) в выступлении "Российская криптография: так ли всё<br>
грустно?" (слайды <a href="https://www.slideshare.net/phdays/ss-48934331" rel="noreferrer noreferrer" target="_blank">https://www.slideshare.net/phdays/ss-48934331</a> страница<br>
22) приводит статистику (без указания мощностей на которых производилось<br>
тестирование): 256-битная подпись 9700 проверок в секунду, 512-битная<br>
подпись 1850 проверок в секунду.<br></blockquote><div><br></div><div>КриптоПро дофига вкладывали в оптимизацию, насколько я знаю. </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">
6. В статье Комарова, Менщиков, Коробейников. Анализ и сравнение алгоритмов<br>
электронной цифровой подписи ГОСТ Р 34. 10-1994, ГОСТ Р 34. 10-2001 и ГОСТ Р<br>
34. 10-2012 // Вопросы кибербезопасности. 2017. №1 (19). URL:<br>
<br>
<a href="https://cyberleninka.ru/article/n/analiz-i-sravnenie-algoritmov-elektronnoy-tsifrovoy-podpisi-gost-r-34-10-1994-gost-r-34-10-2001-i-gost-r-34-10-2012" rel="noreferrer noreferrer" target="_blank">https://cyberleninka.ru/article/n/analiz-i-sravnenie-algoritmov-elektronnoy-tsifrovoy-podpisi-gost-r-34-10-1994-gost-r-34-10-2001-i-gost-r-34-10-2012</a><br>
<br>
приводится статистика (для Core i5-3317U, реализация Pygost на питоне:<br>
оба теста для подписей 256 бит: ГОСТ 2012 дал 100 проверок<br>
подписи за 35 секунд, ГОСТ 2001 года (то есть по сути одинаковый с<br>
2012) дал 100 проверок за 8 секунд.<br></blockquote><div><br></div><div>Скорее всего это не про подпись, а про хеш. В смысле, хеш 94-го года у них мог получиться быстрее.</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">7. Для сравнения, `openssl speed ecdsa` дает:<br>
<br>
sign verify sign/s verify/s<br>
256 bits ecdsa (nistp256) 0.0001s 0.0002s 16439.1 5080.8<br>
256 bits ecdsa (brainpoolP256r1) 0.0010s 0.0008s 1005.5 1202.2<br>
256 bits ecdsa (brainpoolP256t1) 0.0010s 0.0008s 996.3 1260.9<br>
521 bits ecdsa (nistp521) 0.0060s 0.0039s 167.1 259.5<br>
253 bits EdDSA (Ed25519) 0.0001s 0.0002s 17557.8 5296.4<br>
<br>
456 bits EdDSA (Ed448) 0.0002s 0.0009s 4400.9 1167.3<br>
571 bits ecdsa (nistk571) 0.0084s 0.0171s 118.5 58.6<br>
571 bits ecdsa (nistb571) 0.0096s 0.0185s 104.4 54.1<br>
512 bits ecdsa (brainpoolP512r1) 0.0041s 0.0030s 245.0 336.2<br>
512 bits ecdsa (brainpoolP512t1) 0.0041s 0.0028s 242.7 356.9<br>
<br>
8. Для этих двух кривых используется не эффективное разложение по модулю,<br>
но это я планирую исправить, чтоб стало как у предыдущих двух:<br>
<br>
id-GostR3410-2001-CryptoPro-B-ParamSet (256-bit)<br>
id-tc26-gost-3410-12-512-paramSetB<br>
<br>
7. Реализация в ядре умножения скаляра на точку (сделанная по статье Matthieu<br>
Rivain, 2011) оказалась не способна правильно умножить если у точки в<br>
координате X содержится 0. Поэтому, эта кривая вообще не работает, так как там<br>
в генераторе X=0.<br>
<br>
id-GostR3410-2001-CryptoPro-C-ParamSet (256-bit)<br>
<br>
Пожалуй, я эту кривую просто выкину до лучших времен.<br></blockquote><div> </div><div>См. </div><div><br></div><div> <a href="https://github.com/openssl/openssl/pull/6999" target="_blank" rel="noreferrer">https://github.com/openssl/openssl/pull/6999</a><br></div><div> <a href="https://github.com/openssl/openssl/pull/7000" target="_blank" rel="noreferrer">https://github.com/openssl/openssl/pull/7000</a></div><div><br></div><div>Собственно, я бы как-нибудь на эту тему пива/чая попил, есть у меня некоторые мысли.</div></div></div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto">Если удобно , всегда можно у нас. Чай есть на кухне офиса, а пиво в пабе внизу: <a href="http://www.delirium.pub/">http://www.delirium.pub/</a></div><div dir="auto"><br></div><div dir="auto">Rgrds, Алексей</div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div class="gmail_quote"><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">
<br><br></blockquote></div></div></div>
</blockquote></div></div></div>