April 28, 2021

Постквантовый VPN. Разбираемся с квантовыми компьютерами и ставим OpenVPN с защитой от будущих угроз

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

Вся­кий, кто жела­ет обес­печить защиту сво­их дан­ных доль­ше десяти лет, дол­жен сей­час перей­ти на аль­тер­натив­ные фор­мы шиф­рования.
Ар­винд Криш­на, дирек­тор иссле­дова­тель­ско­го под­разде­ления IBM (в нас­тоящее вре­мя пре­зидент и генераль­ный дирек­тор IBM)

В мар­те 2018 года уче­ные из Google объ­яви­ли о соз­дании 72-кубит­ного компь­юте­ра Bristlecone. Парамет­ры компь­юте­ра точ­но неиз­вес­тны. Видимо, они были неидеаль­ны, потому что о кван­товом пре­вос­ходс­тве в Google загово­рили лишь в октябре 2019 года, а дос­тичь его уда­лось на 53-кубит­ном компь­юте­ре Sycamore.

INFO

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

За 200 секунд Sycamore получил резуль­тат, который клас­сичес­кий супер­компь­ютер искал бы 10 тысяч лет. Хотя в Intel компь­ютер­ное пре­вос­ходс­тво Google оспо­рили и в целом ока­залось, что задача была искусс­твен­но сос­тавле­на под резуль­тат, ста­ло ясно, что в рай­оне 50+ кубит находит­ся гра­ница, за которой кван­товый компь­ютер может «побить» клас­сичес­кий. Прав­да, толь­ко в узком клас­се спе­цифи­чес­ких задач.

В кон­це 2020 года китай­ские иссле­дова­тели из Науч­но‑тех­ничес­кого уни­вер­ситета Китая объ­яви­ли о решении на их кван­товом компь­юте­ре задачи, которая в прин­ципе не может быть решена на клас­сичес­ком компь­юте­ре, пос­коль­ку для это­го пот­ребова­лось бы вре­мя, рав­ное полови­не жиз­ни Зем­ли.

Ис­сле­дова­тели из IBM в то же вре­мя заяви­ли, что уже в 2021 году пла­ниру­ют пос­тро­ить кван­товый компь­ютер с 127 кубита­ми, в 2022 году они наде­ются иметь 433 кубита, в 2023 году 1121 кубит, а далее они видят пер­спек­тиву дой­ти аж до мил­лиона кубитов и более. Пла­нов гро­мадье!

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

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

Что­бы кор­ректи­ровать ошиб­ки, в кван­товых алго­рит­мах при­меня­ются логичес­кие кубиты, сос­тоящие из нес­коль­ких физичес­ких кубитов. Сос­тояние еди­нич­ного кубита кодиру­ется в перепу­тан­ных сос­тояниях нес­коль­ких кубитов. Поэто­му в кван­товом компь­юте­ре с кор­рекци­ей оши­бок реаль­ных кубитов пот­ребу­ется нам­ного боль­ше. Нап­ример, один из пер­вых пред­ложен­ных для кор­рекции оши­бок 7-кубито­вый код Сти­на (Stean) исполь­зует семь кубитов для хра­нения одной еди­ницы (кубита) кван­товой информа­ции.

Па­рал­лель­но с работой над физичес­кой реали­заци­ей кван­тового компь­юте­ра раз­рабаты­вают­ся кван­товые алго­рит­мы. На при­лав­ках уже появи­лись науч­но‑популяр­ные бро­шюры, помога­ющие всем жела­ющим начать изу­чать осно­вы кван­тового прог­рамми­рова­ния. Осо­бое мес­то занима­ет про­ект IBM Quantum Experience, поз­воля­ющий соз­давать кван­товые алго­рит­мы и запус­кать их на кван­товых компь­юте­рах IBM и симуля­торах.

При­меры выпущен­ных в пос­леднее вре­мя популяр­ных бро­шюр, пос­вящен­ных кван­товым вычис­лени­ям

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

В Рос­сии тоже есть спе­циалис­ты, готовые к соз­данию боль­шого кван­тового компь­юте­ра. В МГУ готовят магис­тров по прог­рамме «Кван­товые вычис­ления», есть прог­раммы по кван­товой крип­тогра­фии и свя­зи, по кван­товым опти­чес­ким тех­нологи­ям. В МФТИ чита­ют лек­ции по кван­товой теории информа­ции, в дру­гих уни­вер­ситетах есть похожие кур­сы.

ПРИЧЕМ ЗДЕСЬ КРИПТОГРАФИЯ?

Кван­товый компь­ютер раци­ональ­но исполь­зовать для решения очень неболь­шого клас­са задач. Это модели­рова­ние кван­товых сис­тем. Нап­ример, в химии это рас­четы химичес­ких реак­ций или рас­четы прос­транс­твен­ной струк­туры молекул при соз­дании новых матери­алов или лекарств. Это задачи опти­миза­ции, нап­ример в рас­четах слож­ной логис­тики (типа задачи ком­миво­яже­ра). Это крип­тоана­лиз сущес­тву­ющих шиф­ров.

Имен­но пуб­ликация алго­рит­ма Шора (Shor) в 1994 году, исполь­зующе­го быс­трое кван­товое пре­обра­зова­ние Фурье для фак­ториза­ции боль­ших чисел, подог­рела инте­рес к кван­товому компь­юте­ру, выз­вала бум иссле­дова­ний в этой области и нап­равила на их раз­витие огромные ресур­сы.

Есть аме­рикан­ская орга­низа­ция ASC X9, где раз­рабаты­вают гло­баль­ные финан­совые стан­дарты, в том чис­ле в области крип­тогра­фичес­кой защиты финан­совых дан­ных. Чле­нами этой орга­низа­ции явля­ются Bank of America, Citigroup, JPMorgan Chase, Федераль­ная резер­вная сис­тема, пла­теж­ная сис­тема VISA и Агентство наци­ональ­ной безопас­ности США. Фир­ма веников не вяжет, как говорят в народе. И вот в янва­ре 2018 года эта струк­тура оза­боти­лась рис­ками для финан­совых орга­низа­ций от кван­тового компь­юте­ра и в начале 2019 года выпус­тила информа­цион­ный отчет ASC X9 IR 01—2019. Отчет при­водит такую логику: если пред­положить, что к 2028 году ожи­дает­ся появ­ление кван­тового компь­юте­ра, спо­соб­ного взло­мать защиту, нап­ример, плас­тиковых карт, рас­счи­тан­ных на пять лет исполь­зования, то при­мене­ние клас­сичес­кой крип­тогра­фии дол­жно быть прек­ращено и защита переве­дена на кван­тово устой­чивую крип­тогра­фию как минимум за пять лет до потен­циаль­ной ата­ки. Если учесть вре­мя на переход от клас­сики к пост­кван­товой крип­тогра­фии, то переход дол­жен быть начат уже сей­час.

С ого­вор­ками и без окон­чатель­ных выводов, в информа­цион­ном отче­те оце­нива­ется еже­год­ный при­рост чис­ла кубитов в 35%. Не закон Мура, но все же. Такими тем­пами тысяче­кубит­ный кван­товый компь­ютер может быть сде­лан через семь‑восемь лет. Но на самом деле для обос­нован­ного прог­ноза пока очень мало дан­ных.

При­меча­тель­но, что в АНБ изме­нили рекомен­дации по шиф­ронабо­рам для защиты информа­ции. Из так называ­емо­го Suite B (сей­час это CNSA Suite) исчезла Curve P-256 для ECDH и ECDSA, хотя модули 3072 bit для RSA оста­лись.

Ал­горит­мы NSA Suite B в зависи­мос­ти от крип­тостой­кос­ти и уров­ня сек­ретнос­ти в преж­них пуб­ликаци­ях

А ведь всег­да счи­талось, что по крип­тостой­кос­ти P-256 и RSA-3072 рав­ны и соот­ветс­тву­ют стой­кос­ти сим­метрич­ного алго­рит­ма AES-128.

Срав­нитель­ная стой­кость крип­тоал­горит­мов в преж­них пуб­ликаци­ях NIST

Но AES-128 хотя бы для SECRET в обновлен­ном Suite B тоже нет, толь­ко AES-256 для TOP SECRET. В FAQ АНБ и Цен­траль­ной служ­бы безопас­ности (CSS) Минобо­роны США по CNSA Suite и кван­товым вычис­лени­ям MFQ-U-OO-815099-15 чет­ко разъ­ясне­но, что в наци­ональ­ных сис­темах безопас­ности (NSS) сле­дующие алго­рит­мы, ранее одоб­ренные для SECRET, не дол­жны исполь­зовать­ся:

  • ECDH and ECDSA with NIST P-256;
  • SHA-256;
  • AES-128;
  • RSA with 2048-bit keys;
  • Diffie-Hellman with 2048-bit keys.

Та­ким обра­зом, CNSA Suite сей­час вклю­чает в себя сле­дующие алго­рит­мы (отдель­но под­чер­кну­то, что до момен­та, ког­да будут раз­работа­ны кван­тово устой­чивые алго­рит­мы).

Ре­комен­дован­ные NSA алго­рит­мы

Ес­ли это свя­зать с опти­мис­тичны­ми прог­нозами о раз­работ­ке кван­товых компь­юте­ров, то мож­но пос­тро­ить прав­доподоб­ную вер­сию. Так, в 2017 году иссле­дова­тели из Microsoft Research опуб­ликова­ли статью, в которой дали сле­дующую оцен­ку: для вычис­ления дис­крет­ного логариф­ма на стан­дар­тной эллипти­чес­кой кри­вой P-256 над конеч­ным полем дос­таточ­но 2330 кубитов, в то вре­мя как для фак­ториза­ции RSA с модулем 3072 необ­ходимо 6146 кубитов, то есть поч­ти в три раза боль­ше.

По­луча­ется, что для кван­товых вычис­лений P-256 и RSA-3072 по крип­тогра­фичес­кой стой­кос­ти сов­сем не рав­ны. В АНБ, веро­ятно, мог­ли получить ана­логич­ные дан­ные ранее, при этом мы не можем исклю­чить сущес­тво­вание более глу­бокой опти­миза­ции алго­рит­ма Шора для эллипти­чес­ких кри­вых.

Ес­ли в течение десяти лет будет пос­тро­ен кван­товый компь­ютер с 2300+ кубита­ми, он, пред­положи­тель­но, смо­жет с помощью алго­рит­ма Шора взло­мать корот­кие клю­чи ECC, начиная с 256-битовых клю­чей, а с помощью алго­рит­ма Гро­вера (Grover), реша­юще­го задачу перебо­ра, осла­бить при­мер­но в два раза сим­метрич­ные клю­чи AES. То есть крип­тостой­кость AES-128 умень­шит­ся до 264 опе­раций, что в обоз­римом будущем может ока­зать­ся неп­рием­лемым. Крип­тостой­кость же AES-256, сни­зив­шись до 2128 опе­раций, оста­нет­ся дос­таточ­ной, пос­коль­ку сегод­ня счи­тает­ся, что выпол­нение 2128 опе­раций недос­тижимо.

Вот любопыт­ный при­мер того, как идет работа над совер­шенс­тво­вани­ем кван­товых алго­рит­мов. В кон­це 2015 года выш­ла статья «Оцен­ка кван­товых ресур­сов для при­мене­ния алго­рит­ма Гро­вера к AES», и рас­четы авто­ров показы­вали, что для взло­ма AES-128 необ­ходимо 2953 кубита (вто­рой стол­бец таб­лицы ниже).

А в 2019-м иссле­дова­тели из сол­нечной Фло­риды опти­мизи­рова­ли кван­товый алго­ритм и рас­счи­тали, что для взло­ма AES-128 необ­ходимо лишь 865 кубитов (тре­тий стол­бец таб­лицы).

Пред­став­ляет­ся, одна­ко, что, даже ког­да будет тысяче­кубит­ный кван­товый компь­ютер, необ­ходимое для ата­ки огромное количес­тво вычис­лений ока­жет­ся пока прак­тичес­ки неподъ­емным. И понят­но, почему АНБ оста­вило RSA-3072: такой дли­ны ключ пока так­же будет стой­ким.

Ил­люс­тра­ция воз­можнос­тей опти­миза­ции кван­тового алго­рит­ма Гро­вера для взло­ма AES

Но самый любопыт­ный и интри­гующий пас­саж в отче­те ASC X9 сле­дующий. На момент пуб­ликации отче­та самый боль­шой кван­товый компь­ютер имел 72 кубита. Одна­ко, как ука­зыва­ют авто­ры отче­та, есть мне­ние, что более мощ­ные кван­товые компь­юте­ры сущес­тву­ют, но информа­ция о них не опуб­ликова­на. Авто­ры полага­ют, что могут сущес­тво­вать кван­товые компь­юте­ры при­мер­но со 100 кубита­ми!

За­меть так­же, что речь идет не об одном кван­товом компь­юте­ре, а о компь­юте­рах во мно­жес­твен­ном чис­ле, то есть их может быть как минимум два. Кон­спи­роло­гия может кос­венно под­тверждать­ся дан­ными, содер­жащими­ся в об­зоре о потен­циаль­ном воен­ном при­мене­нии кван­тового компь­юте­ра. Но это откры­тые дан­ные, и не самые пос­ледние. Не исклю­чено, что есть еще и скры­тая часть айсбер­га.

Не­уди­витель­но, что в 2016 году Наци­ональ­ный инсти­тут стан­дартов и тех­нологий США (NIST) объ­явил кон­курс пост­кван­товых алго­рит­мов для стан­дарти­зации. Уже прош­ло два эта­па кон­курса, для учас­тия в треть­ем эта­пе отоб­рано семь основных алго­рит­мов и восемь аль­тер­натив­ных.

Фи­налис­ты вто­рого эта­па кон­курса NIST и аль­тер­натив­ные кан­дидаты

Как ожи­дает­ся, ито­ги треть­его эта­па будут под­ведены к середи­не 2022 года. Один‑два алго­рит­ма для обме­на клю­чами и для под­писи могут стать стан­дарта­ми для США. Не исклю­чен и чет­вертый этап, где могут быть выб­раны алго­рит­мы для при­мене­ния в спе­циаль­ных областях. Пока же работа идет: про­водят­ся семина­ры, пред­став­ленные алго­рит­мы дораба­тыва­ются, раз­рабаты­вают­ся и совер­шенс­тву­ются ата­ки на алго­рит­мы.

ПОСТКВАНТОВЫЙ VPN

Од­новре­мен­но с алго­рит­мами спеш­но раз­рабаты­вают и при­ложе­ния, которые их реали­зуют. Раз­вива­ется и под­держи­вает­ся про­ект Open Quantum Safe (OQS). В его рам­ках соз­дана биб­лиоте­ка liboqs, вклю­чающая ряд пост­кван­товых алго­рит­мов (они при­веде­ны на схе­ме ниже). Биб­лиоте­ка интегри­рова­на в OpenSSL и некото­рые дру­гие при­ложе­ния.

В Microsoft запус­тили свой про­ект Post-quantum Cryptography и раз­рабаты­вают алго­рит­мы FrodoKEM, SIKE, Picnic и qTESLA, а так­же при­ложе­ния Post-Quantum Crypto VPN, Post-Quantum TLS и Post-Quantum SSH.

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

Уп­рощен­ная струк­тура про­ектов, реали­зующих пост­кван­товые алго­рит­мы

Са­мый прос­той путь уста­новить пост­кван­товую OpenVPN — это взять готовые фай­лы у Microsoft. Есть вер­сии для Windows и для Linux.

В Linux архив мож­но рас­паковать пря­мо в корень фай­ловой сис­темы (на боевой сис­теме так делать не сто­ит, но для вир­туал­ки пой­дет):

# mv pq-openvpn-linux-staged.tar.gz /

# tar -xvf pq-openvpn-linux-staged.tar.gz

Ар­хив рас­паку­ется, раз­местив бинар­ник в /usr/local/openvpn и скрипт pq-openvpn.service в /etc/systemd/system.

Все нас­трой­ки пост­кван­товой OpenVPN ана­логич­ны обыч­ной OpenVPN, поэто­му я не буду слиш­ком рас­простра­нять­ся. Раз­ве что замечу, что в кон­фигура­цион­ном фай­ле сер­вера и кли­ента обя­затель­но необ­ходимо задать дирек­тиву ecdh-curve, ина­че обмен клю­чами будет клас­сичес­кий, а не кван­товый. Дефолт ecdh-curve p256_sikep434 (гиб­ридный алго­ритм пер­вого уров­ня крип­тостой­кос­ти), но его все рав­но нуж­но ука­зать.

На стра­нице microsoft/PQCrypto-VPN на GitHub ука­зано, что под­держи­вают­ся толь­ко алго­рит­мы Frodo и SIDH. Да, под­держи­вают­ся, но у меня кли­ент на Windows 10 c дирек­тивой в кон­фиге ecdh-curve frodo1344shake выда­ет ошиб­ку чте­ния памяти. Это, конеч­но, может быть свя­зано с кон­крет­ной кон­фигура­цией моей опе­раци­онной сис­темы, драй­верами или с осо­бен­ностя­ми материн­ской пла­ты. А вот с алго­рит­мами frodo1344aes, frodo976shake, frodo640shake и дру­гими это­го семей­ства, вклю­чая гиб­ридные алго­рит­мы, соеди­нение про­исхо­дит без замеча­ний. Экспе­римен­тируя, я поп­робовал раз­ные алго­рит­мы для обме­на клю­чами, в час­тнос­ти, работа­ют явно не заяв­ленные Microsoft гиб­ридные алго­рит­мы p521_firesiber, p521_ntru_hps4096821 (соот­ветс­твен­но, и чис­тые пост­кван­товые, без клас­сичес­кой кри­вой, тоже работа­ют).

Не забывай, что пост­кван­товые алго­рит­мы в этой реали­зации PQCrypto-VPN работа­ют толь­ко для TLSv1.3, поэто­му в кон­фигах сер­вера и кли­ента сле­дует явно про­писать tls-version-min 1.3.

Раз­работ­чик утвер­жда­ет, что пос­ле соеди­нения есть толь­ко один метод удос­товерить­ся, что обмен клю­чами сос­тоял­ся с исполь­зовани­ем пост­кван­тового алго­рит­ма. На сер­вере в логе необ­ходимо най­ти group_id:

Control Channel: TLSv1.3, cipher TLSv1.3 TLS_CHACHA20_POLY1305_SHA256, group_id 1278 (post-quantum key exchange)

Пост­кван­товый алго­ритм обме­на клю­чами работа­ет!

На скрин­шоте лога сер­вера эта строч­ка под­чер­кну­та. Вид­но, что пост­кван­товый алго­ритм обме­на клю­чами задей­ство­ван, о чем сви­детель­ству­ет стро­ка post-quantum key exchange, ина­че было бы NOT post-quantum key exchange. В дан­ном слу­чае group_id 1278 (NID OpenSSL) соот­носит­ся с обме­ном клю­чами, задан­ным в дирек­тиве кон­фига OpenVPN ecdh-curve p521_firesaber. То есть это гиб­ридный алго­ритм, сос­тоящий из клас­сичес­кого обме­на клю­чами по про­токо­лу Диф­фи — Хел­лма­на на эллипти­чес­кой кри­вой P-521 и пост­кван­тового механиз­ма инкапсу­ляции клю­ча FireSaber-KEM.

INFO

FireSaber-KEM соот­ветс­тву­ет пятому уров­ню крип­тостой­кос­ти и осно­ван на труд­ности решения модуль­ной задачи обу­чения с округле­нием (Module Learning with Rounding — MLWR), которая пред­став­ляет собой вари­ант задачи обу­чения с ошиб­ками (Learning With Erros — LWR). Она, в свою оче­редь, вос­ходит к крип­тогра­фии на решет­ках. Погова­рива­ют, что в NIST крип­тогра­фию на решет­ках любят боль­ше все­го.

ПОСТКВАНТОВЫЙ OPENSSL

Па­ра слов об аутен­тифика­ции на сер­вере при помощи сер­тифика­тов. Это могут быть как клю­чевые пары, осно­ван­ные на клас­сичес­ких крип­тогра­фичес­ких алго­рит­мах, так и пост­кван­товые схе­мы, а так­же гиб­ридные. На стра­нице про­екта заяв­лены алго­рит­мы Picnic и qTESLA. Но мож­но задей­ство­вать и дру­гие алго­рит­мы, вклю­чен­ные в пост­кван­товый форк OpenSSL (QQS-OpenSSL).

Да­лее я рас­ска­жу, как уста­новить QQS-OpenSSL на Debian 8.9.0.

Для начала понадо­бят­ся зависи­мос­ти:

# apt install cmake gcc libtool libssl-dev make ninja-build git python3-pytest python3-pytest-xdist unzip xsltproc doxygen graphviz

Да­лее кло­ниру­ем код OQS-OpenSSL:

$ git clone --branch OQS-OpenSSL_1_1_1-stable https://github.com/open-quantum-safe/openssl.git OQS-OpenSSL

Кло­ниру­ем и уста­нав­лива­ем биб­лиоте­ку liboqs (ука­зав каталог с QQS-OpenSSL в чет­вертой коман­де):

$ git clone --branch main https://github.com/open-quantum-safe/liboqs.git

$ cd liboqs

$ mkdir build && cd build

$ cmake -GNinja -DCMAKE_INSTALL_PREFIX=/путь/до/OQS-OpenSSL/oqs

$ ninja

# ninja install

Пе­рехо­дим в каталог QQS-OpenSSL и запус­каем сбор­ку:

$ ./Configure no-shared linux-x86_64 -lm

$ make

Все. Даль­ше мож­но генери­ровать пост­кван­товые клю­чи и выпус­кать сер­тифика­ты.

Ес­ли есть пот­ребность при­менять алго­рит­мы под­писи, не вклю­чен­ные по умол­чанию, то до сбор­ки OQS-OpenSSL в фай­ле oqs-template/generate.yml необ­ходимо для это­го алго­рит­ма заменить false на enable и затем выпол­нить две коман­ды:

$ python3 oqs-template/generate.py

$ make generate_crypto_objects

Поп­робу­ем в качес­тве алго­рит­ма под­писи picnic_L1_UR. Во‑пер­вых, потому, что пос­ле дол­гой зимы — пик­ник, во‑вто­рых, потому, что в этом алго­рит­ме при­мене­но пре­обра­зова­ние Унру, которое пред­полага­ется стой­ким в модели кван­тового слу­чай­ного ора­кула.

INFO

Кван­товый слу­чай­ный ора­кул — схе­ма, при которой про­тив­ник может делать кван­товые (в супер­позиции) зап­росы слу­чай­ному ора­кулу. Это отли­чает­ся от более рас­простра­нен­ной клас­сичес­кой конс­трук­ции Фиата — Шамира (Fiat — Shamir transform, FS), которая исполь­зует­ся в алго­рит­мах picnic-L1-FS и ана­логич­ных.

Что каса­ется общей харак­терис­тики Picnic, то это алго­ритм, осно­ван­ный на крип­тогра­фичес­ком про­токо­ле доказа­тель­ства с нулевым раз­гла­шени­ем (Zero-knowledge proof, ZKP). Про­токол zk-SNARK того же семей­ства ZKP, что и Picnic, исполь­зует­ся в крип­товалю­те Zcash, которую раз­работ­чики позици­они­руют как наибо­лее ано­ним­ную, не поз­воля­ющую узнать ни сум­му тран­закции, ни отпра­вите­ля, ни получа­теля.

Итак, генери­руем клю­чи по алго­рит­му picnicl1ur и выпус­каем сер­тифика­ты. Для удобс­тва в катало­ге OQS-OpenSSL соз­дадим под­каталог CERTFICATES и выпол­няем обыч­ные для OpenSSL коман­ды, изме­нив толь­ко алго­ритм клю­ча:

$ apps/openssl genpkey -algorithm picnicl1ur -out CERTIFICATES/picnic_ca.key

$ apps/openssl req -x509 -key CERTIFICATES/picnic_ca.key -out CERTIFICATES/picnic_ca.crt -subj "/CN=Picnic CA" -days 100 -sha512 -config apps/openssl.cnf

Прос­матри­ваем сер­тификат:

$ apps/openssl x509 -noout -text -in CERTIFICATES/picnic_ca.crt

Certificate:

Data:

Version: 3 (0x2)

Serial Number:

45:fd:ea:12:2c:a5:e5:d9:a6:97:46:57:bb:ad:a6:41:f2:d6:e9:ee

Signature Algorithm: picnicl1ur

Issuer: CN = Picnic CA

Validity

Not Before: Apr 12 05:48:21 2021 GMT

Not After : Jul 21 05:48:21 2021 GMT

Subject: CN = Picnic CA

Subject Public Key Info:

Public Key Algorithm: picnicl1ur

picnicl1ur Public-Key:

pub:

02:a3:97:fc:dd:2f:5d:83:3c:91:53:bb:af:b1:7f:

75:f1:21:1d:78:e3:f9:ca:fb:3a:61:a5:09:fe:22:

d4:72:ac

X509v3 extensions:

X509v3 Subject Key Identifier:

82:AA:E9:CA:CB:63:4A:F4:78:AC:63:1F:F3:05:6D:64:B9:44:77:2E

X509v3 Authority Key Identifier:

keyid:82:AA:E9:CA:CB:63:4A:F4:78:AC:63:1F:F3:05:6D:64:B9:44:77:2E

X509v3 Basic Constraints: critical

CA:TRUE

Signature Algorithm: picnicl1ur

21:82:09:59:16:85:a6:68:52:08:68:a6:02:99:aa:a9:90:14:

Да­лее генери­руем клю­чи и выпус­каем сер­тифика­ты для сер­вера и кли­ентов. Для полез­ных рас­ширений сер­тифика­та сна­чала соз­дадим файл extensions при­мер­но с таким содер­жимым:

[server]

basicConstraints = CA:FALSE

keyUsage = digitalSignature, keyEncipherment

extendedKeyUsage = serverAuth

subjectAltName = @alt_names

[alt_names]

DNS = 192.168.3.5

[client]

basicConstraints = CA:FALSE

keyUsage = digitalSignature, keyEncipherment

extendedKeyUsage = clientAuth

И выпол­няем коман­ды для сер­вера:

$ apps/openssl req -new -newkey picnicl1ur -keyout CERTIFICATES/server.key -out CERTIFICATES/server.csr -nodes -subj "/CN=mysite.ru" -config apps/openssl.cnf -sha512

$ apps/openssl x509 -req -in CERTIFICATES/server.csr -out CERTIFICATES/server.crt -CA CERTIFICATES/picnic_ca.crt -days 50 -CAkey CERTIFICATES/picnic_ca.key -CAcreateserial -sha512 -extensions server -extfile extensions

Для сер­тифика­та кли­ента ана­логич­но, толь­ко пишем client вмес­то server.

Го­товые фай­лы PQCrypto-VPN алго­ритм picnicl1ur не под­держи­вает, поэто­му при­дет­ся соб­рать самому. Бла­го в Microsoft написа­ли скрипт build.py, который все дела­ет авто­мати­чес­ки. Необ­ходимые зависи­мос­ти ука­заны в начале это­го скрип­та.

ВЫВОДЫ

Пос­ле того как пост­кван­товые алго­рит­мы будут стан­дарти­зиро­ваны, во всем мире нач­нется переход на пост­кван­товую крип­тогра­фию. Бра­узе­ры будут переве­дены на пост­кван­товую крип­тогра­фию (в Google уже про­води­ли такой экспе­римент в Chrome Canary). Переход будет дол­гий и тру­доем­кий, поэто­му уже появи­лись пер­вые фир­мы, пред­лага­ющие помощь во внед­рении пост­кван­товой крип­тогра­фии, нап­ример PQShield при Оксфорд­ском уни­вер­ситете или рос­сий­ская QApp.