Яагаад илүү урт Blowfish түлхүүр 64 битийн блокийг засахгүй вэ
Blowfish түлхүүрүүд 448 бит хүрч болох боловч блок 64 бит хэвээр үлддэг. Хэлэлцсэн шифрийг шалгаж, илүү урт түлхүүрийн оронд дэмжигдсэн орлуулалтыг төлөвлөөрэй.
VPN профайл 448 битийн түлхүүртэй Blowfish санал болгож байгаа бөгөөд хэн нэгэн шифрийг хадгалахын тулд хамгийн урт түлхүүрийг ашиглахыг санал болгож байна. Түлхүүрийн урт нь бодит боловч энэ нь оновчтой болгох буруу тоо юм. Blowfish түлхүүр хэр урт байхаас үл хамааран 64 битийн блокийг хувиргадаг бөгөөд нэг түлхүүр хэр их трафикийг аюулгүй хамгаалж чадахыг блокийн өргөн хязгаарладаг. Доорх шалгалтуудыг дарааллаар гүйцэтгэж, үйлчилгээг цагаатгах эхнийх дээр зогсоорой, учир нь дараагийн алхам өмнөхийг засахгүй.
Талууд юу хэлэлцэж байгааг шалгаарай
Өгөгдлийн сувгийн шифрийг хоёр төгсгөлөөс уншаарай, байрлуулахаар төлөвлөсөн профайлаас биш. Клиентийн тохиргоо хэд хэдэн шифрийг жагсааж болох бөгөөд сонгогдсон нь хоёр хэрэгжүүлэлт болон тэдгээрийн хувилбаруудын хоорондын хэлэлцээрийн үр дүн юм. Туршилтын холболт дээр логоны дэлгэрэнгүй байдлыг нэмэгдүүлж, бодитоор эхлүүлсэн шифр болон түлхүүрийн хэмжээг заасан өгөгдлийн сувгийн мөрийг уншаарай.
Хэрэв хэлэлцсэн шифр AES-GCM эсвэл ChaCha20-Poly1305 бол энд зогсоорой. Эдгээр бүтэц нь 128 битийн блок ашиглаж, ачааллыг баталгаажуулдаг тул доорх 64 битийн мөргөлдөөний үндэслэл тэдгээрт хамаарахгүй.
Түлхүүрийн уртыг блокийн өргөнөөс тусгаарлаарай
Blowfish 32-оос 448 бит хүртэлх түлхүүрийг хүлээн авдаг бөгөөд алгоритмын зохиогчийн баримт бичиг хоёр тоог тус тусад нь бичдэг. Түлхүүр нь нууц; блок нь хувиргалтын нэгж. Илүү урт нууц таамаглахыг хүндрүүлдэг бөгөөд шифр боловсруулж буй блокийн өргөнд юу ч хийхгүй.
CBC горимд шифр тогтмол өргөнтэй блокуудад хэрэглэгдэж, өмнөх шифрлэгдсэн текстийн блоктой холбогдож, төгсгөлд нь дүүргэгддэг. Blowfish-ийн хувьд энэ өргөн нь 64 бит буюу найман байт. Түлхүүрийн хуваарь хүссэн хэмжээгээрээ том байж болно; гинжин хэлхээ нэг удаад найман байтаар урагшилсаар байна.
Тиймээс илүү урт түлхүүр нь хөнгөвчлөх арга биш. Энэ нь түлхүүрийн эсрэг бүдүүлэг хүчийг чиглүүлдэг бол доорх мөргөлдөөний эрсдэл нь блокийн өргөн ба горимын шинж чанар юм.
Төрсөн өдрийн арифметикийг блокийн хэмжээнд хэрэглээрэй
64 битийн блок нь мөргөлдөөн магадлалтай болохоос өмнө нэг түлхүүрийн дор шифрлэгдсэн ойролцоогоор 2^32 блокийн төрсөн өдрийн масштабтай. Блок бүр найман байт дамжуулдаг тул ижил масштаб нь ойролцоогоор 2^35 байт буюу нэг түлхүүрийн дор 32 GiB өгөгдөл юм.
Үүнийг квот биш, масштаб гэж үзээрэй. Мөргөлдөөн магадлалтай бөгөөд аль нэг нь ямар нэгэн зүйл задруулах эсэх нь горим, трафикийн хэв маяг, халдагч эргэн тойрны тодорхой текстийг таньж эсвэл нөлөөлж чадах эсэхээс хамаарна. 32 GiB-аас хойшхи эхний байт нь тайлах үйл явдал биш бөгөөд эхний 32 GiB нь аюулгүй гэж баталгаажаагүй.
Sweet32 судлаачид 2016 онд 64 битийн блокт шифрүүдийн эсрэг, түүний дотор OpenVPN хувилбарын эсрэг, ажиглалт ба трафик үүсгэхийг шаардсан нөхцөлд практик халдлагуудыг үзүүлсэн. Тэдний нийтэлсэн анхдагч утгууд ба программын хувилбарууд нь түүхэн контекст бөгөөд таны байрлуулалтын тодорхойлолт биш.
CBC-г дахин ашиглах нь энд чухал эсэхийг шийдээрэй
CBC-д давтагдсан шифрлэгдсэн текстийн блок нь хоёр тодорхой текстийн блок мэдэгдэж буй харилцаагаар ялгаатай гэсэн үг, учир нь гинжин XOR өөрөө цуцлагддаг. Шифрлэгдсэн текстийг ажиглаж чадах, тодорхой текстийн аль нэгийг мэддэг эсвэл нөлөөлж чадах халдагч нөгөөгийнх нь талаар мэдээлэл олж авч болно. Blowfish түлхүүр үүнд хэзээ ч хэрэггүй.
Тиймээс чухал асуултууд нь түлхүүр үйлчилгээнд хэр удаан байх, түүний дор хэр их трафик өнгөрөх, хэн нэгэн тэр трафикийг ажиглаж чиглүүлж чадах эсэх юм. Түлхүүр шинэчлэх нь түлхүүр тутамд блокийн тоог бууруулдаг боловч хугацааны интервал нь байтын хязгаар биш: ачаалалтай туннель нэг цагт хоосон туннелээс хамаагүй илүү өгөгдөл зөөж чадна. Хуучин шифрийг хадгалж байгаа бол хязгаарыг бүтэц ба бодит хэмжээнээс гаргаж, дугуй тооноос биш.
Хэрэв түлхүүр тутамд хэмжсэн хэмжээ төрсөн өдрийн масштабаас хамаагүй доогуур байвал өртөлт бага. Энэ нь тэг биш хэвээр бөгөөд санаа зовнихоо болихын оронд шилжилтийг төлөвлөх шалтгаан хэвээр байна.
Түлхүүрийг биш, шифрийг солиорой
Үйлчилгээг дэмжигдсэн AEAD шифр рүү шилжүүлж, хоёр тал, тэдгээрийн хувилбарууд болон криптографын арын хэсгүүд үүнийг хэлэлцэж чадахыг баталгаажуулаарай. Илүү урт Blowfish түлхүүр чухал зүйлийг өөрчлөхгүй бөгөөд нэг клиент дээр шинэ зааврыг таамаглах нь ажиллаж буй туннелийг эвдэрсэн туннель болгох арга юм. Өөрчлөлтийг флотын бусад хэсэгт хүрэхээс өмнө нэг клиент, нэг сервер дээр туршаарай. Шинэ шифр бүрэн холболтын мөчлөгийг давах хүртэл хуучин профайлыг буцаах боломжтой байлгаарай.
Өөрчлөлтийн үеэр гэрчилгээний баталгаажуулалт ба бүртгэлийн баталгаажуулалтыг хадгалаарай. Тэд өөр өөр асуултад хариулдаг: амжилттай нэвтрэлт блокийг өргөтгөж чадахгүй, илүү сайн өгөгдлийн шифр буруу серверт итгэхийг зөвтгөхгүй.
Шалгалтыг шинэ холболт дээр хэлэлцсэн шифрийг дахин уншиж, хуучин шифрийг цаашид хүлээн авахгүй гэдгийг баталгаажуулж дуусгаарай. Хэрэв тал үүнийг санал болгосоор байвал нөгөө талын профайл юу ч гэсэн шилжилт дуусаагүй.