Повеќето луѓе го среќаваат зборот nonce во профил на VPN и претпоставуваат дека тоа е уште една заедничка тајна што треба да се копира меѓу партнерите. Не е. nonce е вредност што никогаш не смее да се повтори под истиот клуч, и во повеќето шифрирања засновани на nonce таа патува отворено. Збунетоста останува безопасна додека некој не ја уреди рачно, и токму таму започнува вистинското оштетување.

Од каде nonce навистина доаѓа

Автентицираното шифрирање бара различен nonce за секоја порака шифрирана под клуч. Протоколите го задоволуваат тоа барање на различни начини: монотоно растечки бројач, сол комбинирана со идентификатор на пакет, или доволно долга случајна вредност. IKEv2 разменува nonce за време на почетната размена, и тие се јавни влезови за изведување на клучот, а не тајни.

Единственоста може да биде структурна или веројатна. Бројачот не може да се повтори додека не се преврти, затоа протоколот дефинира точка за обновување на клучот многу порано. Случајната вредност се потпира на доволно битови за судирот да биде неверојатен во границите на пораките, што е различен аргумент со различен режим на откажување. Документацијата на протоколот наведува кој метод важи, и двата се безбедни само додека се почитува наведената граница.

DesignWhere uniqueness comes fromExhaustion is handled by
AES-GCM recordsAn IV, typically a counterRekey before the counter wraps
ChaCha20-Poly1305A 96-bit nonce from a counter or generatorA message limit per key
WireGuardA per-key 64-bit counterRekey at a message cap
OpenVPN AEADPacket identifier plus implicit key materialRekey on the packet-id limit
IKEv2Fresh nonces per exchangeA new security association

Што навистина чини повторната употреба

Повторната употреба на nonce под еден клуч не е мал проблем на ефикасноста. Со GCM, две пораки што делат IV му дозволуваат на набљудувач да го врати клучот за автентикација и да го пресмета ексклузивното или на двата отворени текста. Конструкциите засновани на тек повторно го користат клучниот тек на ист начин, што го претвора шифрираниот текст во загатка наместо во тајна.

Затоа имплементациите обновуваат клуч пред бројачот да се преврти, и затоа запираат наместо да продолжат кога нивната состојба е неизвесна. Рестартирање што ресетира бројач додека партнерот го држи стариот клуч, или виртуелна машина вратена од моментна слика направена на средина од сесијата, е токму ситуацијата што границите постојат за да ја спречат. Не е потребен напаѓач; обичните операции се доволни.

Зошто рачното уредување е погрешна поправка

Бројачите, солите и идентификаторите на пакети се машини на состојба што ги делат двата краја. Менувањето на едната страна ја десинхронизира другата, и тунелот откажува на начини што личат на проблем со рутирање. Поддржаната лост е свежа размена на клучеви, која ја ресетира состојбата на двата краја одеднаш.

Лозинките и nonce-овите исто така играат различни улоги. Лозинката е таен влез за изведување на клучот; nonce е јавен влез за секоја порака. Поле во профилот означено nonce што бара долга тајна обично е статичен клуч или претходно споделена тајна под друго име, затоа прочитајте ја документацијата за тоа поле наместо да претпоставувате.

Кога советот се однесува на ракување со nonce, поправката е исправената верзија од одржувачот, а не друг шифра или пократок клуч. Менувањето на шифрата за да се избегне зборот nonce го преместува проблемот наместо да го реши.

Читање предупредување без погодување

Ред во дневникот за бројачи или nonce-ови обично опишува изгубена состојба, а не напад. Проверете дали еден партнер е рестартиран, дали клонирана виртуелна машина ја искористила истата идентичност, и дали двата краја се согласуваат за поставките за обновување на клучот. Потоа воспоставете нова сесија и гледајте дали пораката се враќа.

Држете ја дијагнозата одделно од неповрзаните дефекти. Страница што не се вчитува, или барање за акредитиви што се врти во циклус, не е доказ за повторна употреба на nonce, и третирањето како такво ве праќа во криптографскиот слој кога проблемот е над него.

За обична употреба безбедното правило е кратко: оставете имплементацијата да го управува nonce, држете ги двата краја на поддржани верзии, и третирајте го секое ресетирање на состојбата како причина да го обновите клучот наместо да уредувате вредност. Ако поле во профилот не е во документацијата на добавувачот, не измислувајте вредност за него. Поправката на тунелот започнува со знаење во кој слој гледате.

Поврзани статии