Шта је nonce у VPN-у и зашто поновна употреба квари тунел
nonce је вредност за сваку поруку која никада не сме да се понови под једним кључем, и обично путује отворено. Ручно уређивање је грешка коју треба избећи.
Већина људи сретне реч nonce у VPN профилу и претпостави да је то још једна заједничка тајна коју треба копирати између партнера. Није. nonce је вредност која никада не сме да се понови под истим кључем, и у већини шифровања заснованог на nonce путује отворено. Забуна остаје безопасна док је неко не уреди ручно, и тамо почиње права штета.
Одакле nonce заиста долази
Аутентификовано шифровање захтева другачији nonce за сваку поруку шифровану под кључем. Протоколи испуњавају тај захтев на различите начине: монотоно растући бројач, соља комбинована са идентификатором пакета, или довољно дуга случајна вредност. IKEv2 размењује nonce током почетне размене, и они су јавни улази за извођење кључа, а не тајне.
Јединственост може бити структурна или вероватна. Бројач не може да се понови док се не преврне, зато протокол дефинише тачку обнове кључа много раније. Случајна вредност се ослања на довољно битова да судар буде невероватан у оквиру ограничења порука, што је другачији аргумент са другачијим режимом отказа. Документација протокола наводи који метод важи, и оба су безбедна само док се поштује наведено ограничење.
| Design | Where uniqueness comes from | Exhaustion is handled by |
|---|---|---|
| AES-GCM records | An IV, typically a counter | Rekey before the counter wraps |
| ChaCha20-Poly1305 | A 96-bit nonce from a counter or generator | A message limit per key |
| WireGuard | A per-key 64-bit counter | Rekey at a message cap |
| OpenVPN AEAD | Packet identifier plus implicit key material | Rekey on the packet-id limit |
| IKEv2 | Fresh nonces per exchange | A new security association |
Шта поновна употреба заиста кошта
Поновна употреба nonce-а под једним кључем није мали проблем ефикасности. Са GCM-ом, две поруке које деле IV омогућавају посматрачу да поврати кључ за аутентикацију и израчуна ексклузивно или два отворена текста. Конструкције засноване на току поново користе ток кључа на исти начин, што претвара шифровани текст у загонетку уместо у тајну.
Зато имплементације обнављају кључ пре него што се бројач преврне, и зато се заустављају уместо да наставе када је њихово стање неизвесно. Поновно покретање које ресетује бројач док партнер још држи стари кључ, или виртуелна машина враћена из снимка направљеног на средини сесије, јесте управо ситуација коју ограничења постоје да спрече. Нападач није потребан; обичне операције су довољне.
Зашто је ручно уређивање погрешна поправка
Бројачи, сољи и идентификатори пакета су машине стања које деле оба краја. Промена једне стране десинхронизује другу, и тунел отказује на начине који изгледају као проблем рутирања. Подржана полуга је свежа размена кључева, која ресетује стање на оба краја одједном.
Лозинке и nonce-ови такође играју различите улоге. Лозинка је тајни улаз за извођење кључа; nonce је јавни улаз за сваку поруку. Поље профила означено nonce које тражи дугу тајну обично је статички кључ или унапред дељена тајна под другим именом, зато прочитајте документацију за то поље уместо да претпостављате.
Када савет говори о руковању nonce-ом, поправка је исправљена верзија одржаваоца, а не друга шифра или краћи кључ. Промена шифре да би се избегла реч nonce премешта проблем уместо да га реши.
Читање упозорења без нагађања
Ред у дневнику о бројачима или nonce-овима обично описује изгубљено стање, а не напад. Проверите да ли је један партнер поново покренут, да ли је клонирана виртуелна машина поново употребила исти идентитет, и да ли се два краја слажу о подешавањима обнове кључа. Затим успоставите нову сесију и гледајте да ли се порука враћа.
Држите дијагнозу одвојено од неповезаних кварова. Страница која се не учитава, или захтев за акредитивима који се врти у петљи, није доказ поновне употребе nonce-а, и третирање тога као таквог шаље вас у криптографски слој када је проблем изнад њега.
За обичну употребу безбедно правило је кратко: пустите имплементацију да управља nonce-ом, држите оба краја на подржаним верзијама, и третирајте свако ресетовање стања као разлог да обновите кључ уместо да уређујете вредност. Ако поље профила није у документацији добављача, не измишљајте вредност за њега. Поправка тунела почиње са знањем у који слој гледате.