VPN дахь симметр болон нийтийн түлхүүрийн шифрлэлт: аль нь юу хийдэг
VPN нь нээлттэй түлхүүрээр талуудыг баталгаажуулж, дараа нь үүсмэл сессийн түлхүүрээр пакетуудыг шифрлэдэг. Гэрчилгээ болон урсгалын түлхүүрийг өөр объект гэж үзээрэй.
Хүмүүс 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 болон баталгаажуулалтын шошгыг шалгаж, бүтэлгүй болсон эсвэл давтагдсан бүхнийг хаядаг. Энэ нь энгийн техник хангамждаа шугамын хурдаар ажиллуулахад хангалттай хямдраг бөгөөд тэр бүтцээр нэг дамжилтад нууцлал болон бүтэн байдлыг өгдөг.
Энэ бүтцээ нь мөн ихэнх хэрэгжүүлэлтийн алдаа амьдрадаг газар. GCM-д nonce давтагдвал нууцлал болон гэж байдлыг нэг зэрэг бусалдаг тул протоколууд чиглэл бүрээр түлхүүр гаргаж, явцын тоолуур эсвэл эрийг хадгалдаг. Хэрэв пакетын бичлэг уншиж, шифрлэсэн текстийн үрт нээлттэй текстэд тогтмол нэмэлт нэмэхэд таарах бол симметр давхарга ажиллаж байгаа бөгөөд пакет бүрээр нийтийн түлхүүрийн үйлдэл биш.
Амьдрах хугацаа, түлхүүр шинэчлэл, урагшлах нууцлал
Сессийн түлхүүр хугацаа дуусахаар зоригдсон. TLS 1.3 нь KeyUpdate зурваст трафикийн түлхүүрийг эргүүлэх боломж өгдөг; WireGuard тохируулсан хугацаа эсвэл зурвастын тооноос хойш сессийг шинэчлэж, хуучиныг замд яваа байгаа пакетуудад тур хугацаанд хадгалдаг. OpenVPN өөрийн өгөгдлийн сувгийн түлхүүрийг хуваарь дагуу дахин хэлэлцэнэ, reneg-sec завсарыг контроль хийдэг.
Эдгээр эргүүлэлтийн аль нь ч гэрчилгээ шинэчлэхтэй адил биш. Гэрчилгээ нэг жил хүчинтэй байж болох боловч сессийн түлхүүр хэдэн минут тутмын өөрчлөгддөг, гэрчилгээг ажиллаж байгаа туннелийн түлхүүрт хүрэлгүйгээр солилуулах боломжтой. Хугацаа дуусахыг төлөвлөхдөө аль объектийг эргүүлж байгаагаа асуугаарай; хариу нь клиентүүд дахин холбогдох эсвэл зөвхөн түлхүүрээ шинэчлэхийг шийддэг.
Объектуудыг холихгүйгээр тохиргоо, оношилгоог унших
Практикад та бүрэн протокол болон түүний дэмжсан примитивүүдийг сонгодог, өөрийн гэзээ асаахгүй. OpenVPN-ын --tls-crypt түлхүүр удирдах сувгийг хамгаалдаг; өгөгдлийн суваг тохиролцсон симметр шифрүүдийг ашигладаг. WireGuard-ын PrivateKey болон PublicKey бичлэгүүд нь бие самбагын материал, харин тээврийн түлхүүр дотроосоо гардаг. Эдгээр талбарыг ижил төрлийн нууц гэж унших нь хувийн түлхүүр байх ёстой газарт нийтийн түлхүүр наах зэрэг алдаанд хүргэдэг.
Нийтийн материалыг хувийнаас тусдаа барит. Гэрчилгээ, WireGuard-ын нийтийн түлхүүр, хурууны хэв нь тасалбарт хуваалцахад аюулгүй. Хувийн түлхүүр, урьдчилан хуваалцсан түлхүүр, экспортлосон сессийн түлхүүр бол тагүү биш. Хүчийг харьцуулахдаа нэг төрлийн хүрээнд харьцуул: эллиптик муруйн идентификатор, RSA модулийн хэмжээ, AES түлхүүрийн хэмжээ өөр таамаглалын дор өөр зүйлийг хэмждэг. TLS 1.3-ийн тодорхойлолт нь туннель TLS биш байсан ч хоёр давхарга хэрхэн нийцдэг талаар ашигтай лавлага юм.