Нууцлагдсан шифрлэгдсэн дискний хуваалтуудыг үүсгэх хэрэгсэл болох Shufflecake-ийг хэвлэв

Аюулгүй байдлын аудитын Kudelski Security компани нь одоо байгаа хуваалтууд дээрх сул зайд тархсан, санамсаргүй үлдэгдэл өгөгдлөөс ялгагдахааргүй далд файлын системийг үүсгэх боломжийг олгодог Shufflecake хэмээх хэрэгслийг нийтлэв. Хуваалтууд нь хандалтын түлхүүрийг мэдэхгүй байгаа тул шүүх эмнэлгийн шинжилгээ хийх үед ч тэдний оршин тогтнохыг батлахад хэцүү байдаг. Хэрэглээний код (shufflecake-userland) болон Линуксийн цөмийн модуль (dm-sflc) нь C хэл дээр бичигдсэн бөгөөд GPLv3 лицензийн дагуу тархсан бөгөөд энэ нь хэвлэгдсэн цөмийн модулийг Линуксийн үндсэн цөмд оруулах боломжгүй болгодог. Цөмийг нийлүүлдэг GPLv2 лиценз.

Энэхүү төсөл нь Truecrypt болон Veracrypt-аас илүү дэвшилтэт шийдэл бөгөөд хамгаалалт шаарддаг өгөгдлийг нуухын тулд Линукс платформыг дэмждэг бөгөөд танд төхөөрөмж дээр 15 хүртэлх далд хуваалтыг байрлуулах боломжийг олгодог. тэдний оршин тогтнол. Хэрэв Shufflecake-ийг ашиглах нь өөрөө нууц биш бол жишээлбэл, системд холбогдох хэрэгслүүд байгаа эсэхийг дүгнэж болох юм бол үүсгэсэн далд хуваалтын нийт тоог тодорхойлох боломжгүй юм. Үүсгэсэн далд хуваалтыг хэрэглэгчийн үзэмжээр ext4, xfs эсвэл btrfs гэх мэт ямар ч файлын системд тохируулах боломжтой. Хуваалт бүрийг өөрийн түгжээг тайлах түлхүүр бүхий тусдаа виртуал блок төхөөрөмж гэж үздэг.

Ул мөрийг төөрөгдүүлэхийн тулд "үнэмлэхүйц үгүйсгэх" зан үйлийн загварыг ашиглахыг санал болгож байна, түүний мөн чанар нь үнэ цэнэтэй өгөгдлийг шифрлэгдсэн хэсгүүдэд үнэ цэнэ багатай өгөгдөл бүхий нэмэлт давхарга болгон нууж, нэг төрлийн хэсгүүдийн далд шатлалыг бүрдүүлдэг. Даралтад орсон тохиолдолд төхөөрөмжийн эзэмшигч нь шифрлэгдсэн хуваалтын түлхүүрийг илчилж болох боловч бусад хуваалтууд (15 хүртэл үүрлэсэн түвшин) энэ хуваалтад нуугдаж болох бөгөөд тэдгээрийн байгаа эсэхийг тодорхойлж, байгаа эсэхийг нотлох нь асуудалтай байдаг.

Хадгалах төхөөрөмж дээр санамсаргүй байрлалд байрлуулсан шифрлэгдсэн зүсмэлүүдийн багц болгон хуваалт бүрийг бүтээснээр нуугдаж болно. Хэсэг бүрийг хуваалтад нэмэлт хадгалах зай шаардлагатай үед динамикаар үүсгэнэ. Шинжилгээг илүү төвөгтэй болгохын тулд өөр өөр хэсгүүдийн зүсмэлүүдийг ээлжлэн солино, i.e. Shufflecake хэсгүүд нь зэргэлдээх бүсүүдтэй холбоогүй бөгөөд бүх хэсгүүдийн зүсмэлүүд холилдсон байдаг. Ашигласан болон үнэгүй зүсмэлүүдийн талаарх мэдээллийг хуваалт бүртэй холбоотой байршлын газрын зурагт хадгалдаг бөгөөд үүнийг шифрлэгдсэн толгойгоор иш татдаг. Картууд болон толгой хэсэг нь шифрлэгдсэн бөгөөд нэвтрэх түлхүүрийг мэдэлгүйгээр санамсаргүй өгөгдлөөс ялгах боломжгүй юм.

Толгой хэсэг нь үүрэнд хуваагддаг бөгөөд тус бүр нь өөрийн хэсэг болон холбогдох зүсмэлүүдийг тодорхойлдог. Толгойн хэсэг дэх үүрүүд нь давхарласан бөгөөд рекурсив байдлаар холбогдсон байдаг - одоогийн үүр нь шатлалын өмнөх хэсгийн параметрүүдийг тайлах түлхүүрийг (бага нуугдмал хэсэг) агуулж байгаа бөгөөд энэ нь нэг нууц үгийг ашиглан холбоотой бүх нууцлагдмал хэсгүүдийн шифрийг тайлах боломжийг олгодог. сонгосон хэсэг. Бага нуугдмал хуваалт бүр нь үүрлэсэн хуваалтуудын зүсмэлүүдийг үнэ төлбөргүй гэж үздэг.

Анхдагч байдлаар, Shufflecake-ийн бүх дэд хэсгүүд дээд түвшний хэсэгтэй ижил харагдах хэмжээтэй байна. Жишээлбэл, хэрэв 1 ГБ төхөөрөмж дээр гурван хуваалт байгаа бол тэдгээр нь тус бүр нь 1 ГБ хуваалт хэлбэрээр системд харагдах бөгөөд хадгалагдсан өгөгдлийн нийт хэмжээ нь хэмжээнээс хэтэрсэн тохиолдолд дискний нийт зайг бүх хуваалтуудын дунд хуваалцах болно. төхөөрөмжийн бодит хэмжээ, энэ нь I/O алдаа шидэж эхлэх болно.

Нээлттэй биш үүрлэсэн хэсгүүд нь орон зайг хуваарилахад оролцдоггүй, i.e. дээд түвшний хуваалтыг дүүргэх оролдлого нь өгөгдлийг үүрлэсэн хуваалтуудад жижигрүүлэх боловч алдаа гарахаас өмнө хуваалтад байрлуулж болох өгөгдлийн хэмжээг шинжлэх замаар тэдгээрийн байгаа эсэхийг илрүүлэх боломжгүй болно (энэ нь) Дээд хуваалтууд нь анхаарлыг сарниулахын тулд өөрчлөгддөггүй өгөгдөл агуулдаг бөгөөд хэзээ ч тусад нь ашигладаггүй, байнгын ажил нь хамгийн сүүлийн үеийн үүрлэсэн хэсэгтэй үргэлж хийгддэг гэж үздэг бөгөөд схем нь өөрөө оршин тогтнох нууцыг хадгалах нь илүү чухал гэдгийг харуулж байна. Энэ өгөгдлийг алдахаас илүү өгөгдөл).

Үнэн хэрэгтээ 15 Shufflecake хуваалтууд үргэлж үүсдэг - хэрэглэгчийн нууц үгийг ашигласан хуваалтуудад хавсаргасан бөгөөд ашиглагдаагүй хуваалтууд нь санамсаргүй байдлаар үүсгэгдсэн нууц үгээр хангагдсан байдаг (энэ нь үнэндээ хичнээн хуваалт ашиглаж байгааг ойлгох боломжгүй). Shufflecake хуваалтуудыг эхлүүлэх үед тэдгээрийг байрлуулахад зориулагдсан диск, хуваалт эсвэл виртуал блок төхөөрөмж нь санамсаргүй мэдээллээр дүүрдэг бөгөөд энэ нь Shufflecake мета өгөгдөл болон өгөгдлийг ерөнхий дэвсгэр дээр тодорхойлох боломжгүй болгодог.

Shufflecake-ийн хэрэгжилт нь нэлээд өндөр гүйцэтгэлтэй боловч ачаалал ихтэй тул LUKS дэд систем дээр суурилсан дискний шифрлэлттэй харьцуулахад дамжуулах чадвар нь ойролцоогоор хоёр дахин удаан байдаг. Shufflecake-ийг ашигласнаар RAM болон үйлчилгээний өгөгдлийг хадгалах дискний зайд нэмэлт зардал гарах болно. Санах ойн хэрэглээг хуваалт бүрт 60 МБ, дискний зай нь нийт хэмжээнээс 1% байна. Харьцуулбал, зориулалтын хувьд ижил төстэй WORAM техник нь дискний зайг 5% алдаж, 200-75 дахин удаашрахад хүргэдэг.

Хэрэгслийн хэрэгсэл болон цөмийн модулийг зөвхөн 5.13 ба 5.15 цөмтэй Debian болон Ubuntu дээр туршиж үзсэн (Ubuntu 22.04 дээр дэмжигддэг). Төслийг чухал өгөгдлийг хадгалахад ашиглах ёсгүй ажлын прототип гэж үзэх ёстой гэж тэмдэглэжээ. Ирээдүйд бид гүйцэтгэл, найдвартай байдал, аюулгүй байдлын нэмэлт оновчлолыг хийхээр төлөвлөж байгаа бөгөөд мөн Shufflecake хуваалтаас ачаалах боломжийг олгохоор төлөвлөж байна.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх