Shufflecake הוא כלי ללינוקס המאפשר יצירת נפחים נסתרים מרובים בהתקן אחסון באופן שקשה מאוד, אפילו בבדיקה משפטית, להוכיח את קיומם של נפחים כאלה.
חברת ביקורת האבטחה Kudelski Security הוציאה את ערכת הכלים Shufflecake , המאפשרת יצירת מערכות קבצים נסתרות המפוזרות על פני שטח פנוי במחיצות קיימות, שאינן ניתנות להבחנה מנתונים שיוריים אקראיים. מקטעים אלה נוצרים באופן כזה, שללא ידיעת מפתח הגישה, הוכחת קיומם בעייתית, אפילו במהלך ניתוח פורנזי.
הפרויקט ממצב את עצמו כפתרון מתקדם יותר מאשר Truecrypt ו-Veracrypt להסתרת נתונים סודיים, מציע תמיכה מובנית בפלטפורמת לינוקס ומאפשר לך למקם עד 15 מחיצות נסתרות במכשיר, מקוננות זו בתוך זו כדי לטשטש את ניתוח קיומן.
ניתן לעצב את המחיצות הנסתרות שנוצרות , לפי שיקול דעתו של המשתמש, כך שיתאימו לכל מערכת קבצים, לדוגמה, ext4, xfs או btrfs. כל מחיצה מטופלת כמכשיר בלוק וירטואלי עצמאי עם מפתח פתיחה משלה.
כדי לטשטש עקבות, מוצע מודל התנהגותי של "הכחשה סבירה". בעיקרו של דבר, נתונים יקרי ערך מוסתרים כשכבות נוספות בתוך מקטעים מוצפנים המכילים נתונים פחות יקרי ערך, ויוצרים מעין היררכיה נסתרת של מקטעים. תחת לחץ, בעל המכשיר יכול לחשוף את המפתח למקטע המוצפן, אך מקטעים אחרים (עד 15 רמות מקוננות) יכולים להיות מוסתרים בתוכו, מה שמקשה על קביעת נוכחותם והוכחת קיומם.
Shufflecake ומודול הליבה נבדקו רק על דביאן ואובונטו עם ליבות 5.13 ו-5.15 (אובונטו 22.04 נתמכת). יש לציין כי יש עדיין להתייחס לפרויקט כאב טיפוס עובד ואין להשתמש בו לאחסון נתונים רגישים.
בעתיד, אנו מתכננים לבצע אופטימיזציות נוספות לביצועים, אמינות ואבטחה, כמו גם לספק את היכולת לאתחל ממחיצות Shufflecake.
לגבי Shufflecake
הסתרה מושגת על ידי יצירת כל מחיצה כקבוצה של מקטעים מוצפנים הממוקמים במיקומים אקראיים על גבי התקן האחסון. כל מקטע נוצר באופן דינמי כאשר המחיצה דורשת שטח אחסון נוסף. כדי לסבך את הניתוח, פרוסות ממקטעים שונים משולבות זו בזו.
חלקים של עוגת דשדוש אינם מקושרים לאזורים רציפים, ומנות מכל החלקים מעורבבים יחד. מידע על החלקים המשומשים והחינמיים מאוחסן במפת המיקום המצורפת לכל חלק, שאליה מפנה הכותרת המוצפנת. הכרטיסים והכותרת מוצפנים ומבלי לדעת את המפתח, לא ניתן להבחין בין נתונים אקראיים.
הכותרת מחולקת לחריצים , שכל אחד מהם מגדיר את המקטע שלו ואת הסקטורים הקשורים אליו. החריצים בכותרת מוערמים ומקושרים באופן רקורסיבי: החריץ הנוכחי מכיל את המפתח לפענוח הפרמטרים של המקטע הקודם (הפחות מוסתר) בהיררכיה, מה שמאפשר לסיסמה אחת לפענח את כל המקטעים הפחות מוסתרים הקשורים לפריט שנבחר. כל מקטע פחות מוסתר מתייחס לחלקים של מקטעים מקוננים כפנויים.
כברירת מחדל, לכל מחיצות Shufflecake המקוננות יש גודל גלוי זהה למחיצה ברמה העליונה. לדוגמה, אם נעשה שימוש בשלוש מחיצות במכשיר של 1GB, כל אחת מהן תהיה גלויה למערכת כמחיצה של 1GB, וסך שטח הדיסק הזמין ישותף בין כל המחיצות. אם כמות הנתונים הכוללת המאוחסנת עולה על גודל המכשיר בפועל, יתחילו להתרחש שגיאות קלט/פלט.
מקטעים מקוננים שלא נפתחו אינם משתתפים בהקצאת מקום; כלומר, ניסיון למלא מקטע ברמה גבוהה יותר ידרוס את הנתונים במקטעים המקוננים, אך לא יחשוף את נוכחותם באמצעות ניתוח גודל הנתונים שניתן להציב במקטע לפני שנוצרת שגיאה (ההנחה היא שהמקטעים ברמה גבוהה יותר מכילים נתונים בלתי ניתנים לשינוי). נתונים אינם משמשים במקרה ולעולם לא בנפרד, ועבודה שוטפת מתבצעת תמיד עם המקטע המקונן העדכני ביותר; הסכימה עצמה מרמזת שהעיקר הוא לשמור על קיומם של נתונים בסוד, גם במחיר של אובדן הנתונים.
יישום Shufflecake מציע ביצועים גבוהים יחסית, אך עקב עלויות תקורה, הוא מבצע בערך חצי מהצפנת דיסק המבוססת על תת-מערכת LUKS. השימוש ב-Shufflecake כרוך גם בעלויות RAM ושטח דיסק נוספות עבור אחסון נתוני שירות. עלויות הזיכרון מוערכות ב-60 מגה-בייט למחיצה , וניצול שטח הדיסק מוערך ב-1% מגודל המחיצה הכולל. לשם השוואה, טכניקת WORAM בעלת התכלית הדומה גורמת להאטה פי 5 עד 200 עם אובדן של 75% של שטח דיסק שמיש.
הקוד של כלי השירות (shufflecake-userland) ומודול ליבת לינוקס (dm-sflc) כתוב ב-C ומשוחרר תחת רישיון GPLv3, מה שלא מאפשר לכלול את מודול הליבה שפורסם בקרנל הראשי של לינוקס. עקב חוסר תאימות תחת רישיון GPLv2 שלפיו נשלחת הליבה.
אם אתם מעוניינים ללמוד עוד, תוכלו למצוא את הפרטים בקישור הבא.