Людзі апісваюць VPN як «сістэму, што выкарыстоўвае шыфраванне публічным ключом», а потым уяўляюць, што кожны пакет замыкаецца сертыфікатам сервера. Гэта ўяўленне памылковае так, што мае значэнне, калі вы чытаеце файл канфігурацыі або запіс пакетаў. Публічная палова VPN — гэта доказ таго, хто такі партнёр, і дамова пра сакрэтны матэрыял; сіметрычная палова — гэта тое, што насамрэч абараняе трафік, пакет за пакетам, на працягу ўсяго жыцця сесіі.

Дзве паловы маюць розныя тэрміны жыцця, розныя рэжымы адмоваў і розныя рэчы, якія можна бяспечна публікаваць. Калі вы іх раздзяляеце, пытанні накшталт «ці RSA 2048 слабейшы за AES-128» перастаюць блытаць, бо яны ніколі і не былі параўнальнымі.

Тры аперацыі, якія звычайна змешваюць

Крыптаграфія з публічным ключом — гэта парасон над прынамсі трыма рознымі аперацыямі. Подпіс даказвае, што ўладальнік прыватнага ключа ўхваліў пэўнае паведамленне. Дамова аб ключах дазваляе двум партнёрам вывесці супольны сакрэт з значэнняў, якімі яны абменьваюцца публічна. Шыфраванне публічным ключом хавае даныя пад чыімсьці публічным ключом, так што адкрыць іх можа толькі прыватны ключ.

Рукапацісканні VPN пераважна выкарыстоўваюць першыя дзве. Сертыфікат не з'яўляецца ключом шыфравання; гэта падпісанае сцвярджэнне, якое звязвае імя з публічным ключом і дазваляе іншаму боку вырашыць, ці давяраць ключу, які ён толькі што атрымаў. Напрыклад, усталяванне ключоў TLS 1.3 грунтуецца на дамове аб ключах (EC)DHE плюс падпісы сертыфікатаў, а не на шыфраванні сесіі публічным ключом сервера.

Што насамрэч дае рукапацісканне

У сучасным рукапацісканні кожны бок стварае эфемерную пару ключоў, абменьваецца публічнымі паловамі і вылічвае супольны сакрэт, які ніколі не перасякае провад. Затым гэты сакрэт праганяюць праз функцыю вывядзення ключоў, каб атрымаць асобныя ключы для кожнага кірунку, а таксама nonce-значэнні і матэрыял IV, патрэбныя запіснаму ўзроўню. WireGuard робіць гэта сваёй канструкцыяй на аснове Noise; TLS 1.3 робіць гэта з HKDF над транскрыптам рукапаціскання.

Доўгатэрміновыя ўліковыя даныя — сертыфікат і прыватны ключ або статычны ключ WireGuard — аўтэнтыфікуюць гэты абмен. Яны падпісваюць або ўмешваюцца ў транскрыпт, каб чужы не мог завяршыць рукапацісканне на месцы партнёра. Пасля гэтага ўліковыя даныя не выконваюць працы на кожны пакет. Калі б выконвалі, кожнаму пакету спатрэбілася б аперацыя з прыватным ключом, і заняты тунель абмяжоўваўся б самай павольнай аперацыяй у стэку.

З гэтага вынікаюць два пабочныя эфекты. Па-першае, ключы сесіі кожны раз свежыя, таму зламыснік, які пазней украдзе доўгатэрміновы ключ, не зможа расшыфраваць раней запісаныя сесіі, пры ўмове, што дамова была эфемернай. Па-другое, уцечка ключа сесіі ставіць пад пагрозу адну сесію, а не асобу.

Чаму вялікія аб'ёмы даных выкарыстоўваюць сіметрычныя ключы

Сіметрычныя шыфры добра спраўляюцца з аб'ёмам: AES-GCM або ChaCha20-Poly1305 апрацоўваюць кожны пакет ключом, які ўжо ў памяці, аўтэнтыфікуюць загаловак і павялічваюць лічыльнік. Прымальны бок правярае nonce і тэг аўтэнтыфікацыі і адкідае ўсё, што не праходзіць або паўтараецца. Гэта дастаткова танна, каб працаваць на лінейнай хуткасці на звычайным абсталяванні, і тая ж канструкцыя дае канфідэнцыяльнасць і цэласнасць за адзін праход.

Канструкцыя таксама — месца, дзе жыве большасць памылак рэалізацыі. Паўторны nonce у GCM ламае канфідэнцыяльнасць і сапраўднасць адразу, таму пратаколы выводзяць ключы на кожны кірунак і вядуць яўны лічыльнік або эпоху. Калі вы чытаеце запіс пакетаў і даўжыня шыфратэксту супадае з адкрытым тэкстам плюс фіксаваная наваніжальная вага, гэта працуе сіметрычны ўзровень, а не аперацыя з публічным ключом на кожны пакет.

Тэрміны жыцця, пераключэнне ключоў і прамая сакрэтнасць

Ключы сесіі павінны заканчвацца. TLS 1.3 дазваляе паведамленню KeyUpdate пракручваць ключы трафіку; WireGuard пераключае сесію пасля зададзенага часу або колькасці паведамленняў і нядоўга трымае старую для пакетаў у шляху. OpenVPN пераабмяркоўвае ключы канала даных па раскладзе, а reneg-sec кантралюе інтэрвал.

Ні адно з гэтага кручэння не тое самае, што абнаўленне сертыфіката. Сертыфікат можа быць сапраўдны год, пакуль ключы сесіі змяняюцца кожныя некалькі хвілін, і сертыфікат можна замяніць, не кранаючы ключоў тунеля, які працуе. Калі вы плануеце тэрмін прыдатнасці, спытайце, які аб'ект вы круціце; адказ вырашае, ці кліенты перападключацца, ці проста пераключаць ключы.

Чытанне канфігурацый і дыягностыкі без змешвання аб'ектаў

На практыцы вы выбіраеце поўны пратакол і яго падтрымліваныя прымітывы, а не збіраеце свой. Ключ --tls-crypt у OpenVPN абараняе канал кіравання; канал даных выкарыстоўвае ўзгодненыя сіметрычныя шыфры. Запісы PrivateKey і PublicKey у WireGuard — гэта матэрыял асобы, а яго транспартныя ключы выводзяцца унутры. Чытанне гэтых палёў як аднаго і таго ж віду сакрэту вядзе да памылак накшталт устаўкі публічнага ключа туды, дзе павінен быць прыватны.

Трымайце публічны матэрыял асобна ад прыватнага. Сертыфікат, публічны ключ WireGuard і адбітак бяспечна дзяліць у заяўцы. Прыватны ключ, папярэдне агучаны ключ і экспартаваны ключ сесіі — не. Параўноўваючы трываласць, параўноўвайце у межах тыпу: ідэнтыфікатар эліптычнай крывой, памер модуля RSA і памер ключа AES вымяраюць розныя рэчы пры розных дапушчэннях. Спецыфікацыя TLS 1.3 — карысная даведка пра тое, як два ўзроўні спалучаюцца, нават калі ваш тунель не TLS.

Падобныя артыкулы