
פלטפורמות חישוב קוונטי בענן כמו IBM Quantum, הפכו לעידן חדש של מחקר וניסויים קוונטיים, המציעים למשתמשים גישה מרוחקת לחומרה קוונטית. עם זאת, הנגישות הזו מציגה חששות אבטחה ייחודיים, במיוחד בצורת התקפות ערוצי צד. פוסט זה מעמיק בפגיעות מבוססות תזמון בערוצי צד בשירות הקוונטי של IBM, כפי שהודגשה על ידי התקפת Quantum Leak. הפוסט מרחיב על מושגים בסיסיים בערוץ צד, שיפורים מבוססי למידת מכונה, ואסטרטגיות מעשיות למניעה.
נכסה את הבסיס וההיסטוריה של ניתוח ערוץ צד, פגיעויות בעולם האמיתי, התקדמות בשימוש בלמידת מכונה, ונספק דוגמאות קוד להמחשת זיהוי ופורנזיקה. מדריך זה יועיל לחוקרים, מהנדסי אבטחה, סטודנטים ובעלי עניין ארגוניים המחפשים להבין או להגן מפני איומי ערוץ צד מודרניים בהגדרות קוונטיות וקלאסיות.
ניתוח ערוץ צד (SCA) הוא טכניקת הערכת אבטחה המשמשת לגילוי מידע נסתר או סודות (כגון מפתחות קריפטוגרפיים) על ידי מדידת "דליפה" ממאפיינים פיזיים או התנהגות מבצעית של מכשיר. במקום לתקוף את החולשות המתמטיות של אלגוריתם, ניתוח ערוץ צד מנצל מידע עקיף כמו תזמון, צריכת כוח, פליטות אלקטרומגנטיות או אפילו אותות אקוסטיים. המדריך של Keysight לניתוח ערוץ צד מציג את וקטורי הדליפות המרכזיים:
אם אלגוריתם קריפטוגרפי לוקח מעט יותר זמן לעבד מפתחות סודיים מסוימים או נתונים, תוקף עם נתוני תזמון ברזולוציה גבוהה יכול לשחזר מפתחות רגישים ללא גישה ישירה אליהם.
ניתוח ערוץ צד פרץ יישומים של DES, AES, RSA, ECC ואיפשר שחזור סודות ממכשירים מאובטחים, כרטיסים חכמים ועוד.
שירותי חישוב קוונטי מבוססי ענן כמו IBM Quantum ו-Google Quantum AI איפשרו גישה דמוקרטית לחומרה קוונטית. בסביבת ענן רב-דיירית, משתמשים מגישים מעגלים קוונטיים מרחוק. ספק הענן מנהל את תזמון, תור והפעלת המעגלים הללו על מעבדים קוונטיים משותפים.
התקפת Quantum Leak, המפורטת במאמר זה של ACM, מדגימה כיצד ניתן לנצל ערוצי צד תזמון בתוך פלטפורמת הענן הקוונטית של IBM על ידי משתמש זדוני כדי להפיק מידע על עומסים ששותפים לאותו מקום.
1. מדידת זמני תור וביצוע:
התוקפים מגישים עבודות מעוצבות ורושמים את תזמוני הקבלה, התור וההשלמה המדויקים לעבודה.
2. התאמה של תנודות:
תנודות דקות בזמן שלוקח להפעיל עבודה עשויות להתאים לפעילות דיירים אחרים (כגון אורך התור, מורכבות המעגל או אפילו מבנה המעגל).
3. הסקת מידע רגיש:
עם מספיק דגימות תזמון וניתוח סטטיסטי, התוקפים יכולים להסיק:
┌──────────────┐ ┌─────────────┐
│ התוקף │─────►│ תור ענן │
└──────────────┘ └─────────────┘
▲ │
│ שותף לאותו מקום ▼
┌──────────────┐ ┌─────────────┐
│ משתמש קורבן │─────►│ צ'יפ קוונטי │
└──────────────┘ └─────────────┘
התוקף מתבונן בתנודות התזמון בהתבסס על פעילות הקורבן.
ערוצי צד תזמון מערערים את בידוד המשאבים בחישוב הקוונטי בענן, מה שמאפשר לדייר זדוני ללמוד על או אפילו לתקשר עם דיירים אחרים על אותו מכשיר קוונטי.
למידת מכונה (ML) מגבירה את ניתוח ערוץ הצד המודרני על ידי אוטומציה של הוצאת תכונות משמעותיות מנתוני מדידה רועשים. בחללים מורכבים, מרובי-ממד (כגון ניתוח דיפרנציאלי של כוח או רעש תזמון), מודלים של למידת מכונה כגון רשתות נוירונים קונבולוציוניות (CNN), עצי החלטה או קבוצות ללא פיקוח מצטיינים בזיהוי דפוסים עדינים שמציינים פעולות שתלויות בסוד.
ארכיון IA Cryptology ePrint (2025/1754) מסקר התקפות מבוססות למידת מכונה חדישות על סכימות קריפטוגרפיה פוסט-קוונטיות (PQC) כגון הצפנה מבוססת סריגים וחתימות מבוססות קוד קידוד.
להלן יישום פשוט של מיון שני מפתחות מבוסס על נתוני תזמון סינתטיים מ-scikit-learn:
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
# סמני תזמון מזויפים לשני ערכי מפתח
n_samples = 300
key0_traces = np.random.normal(loc=0.030, scale=0.002, size=(n_samples, 1)) # Key=0
key1_traces = np.random.normal(loc=0.035, scale=0.002, size=(n_samples, 1)) # Key=1
X = np.vstack([key0_traces, key1_traces])
y = np.array([0]*n_samples + [1]*n_samples)
# חלוקת אימון/בדיקה
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
clf = RandomForestClassifier(n_estimators=100)
clf.fit(X_train, y_train)
print("דיוק בבדיקה:", clf.score(X_test, y_test))
למרות ההפרדה המינימלית, הממיין יצליח לשחזר את הביט הסודי ברמת אמינות גבוהה.
# הזרקת עיכובים רנדומליים בזמודי סימולציה
import time, random
def execute_job(job):
r_delay = random.uniform(0.01, 0.05)
time.sleep(r_delay) # הוספת רעש משתנה לכל עבודה
# ... לבצע מעגל קוונטי ...
בואו נדגים זיהוי וניסויים בסיסיים באמצעות התקפות תזמון בענן (או שירותים מרוחקים).
אתה יכול להשתמש בפקודת time או ב-Python כדי למדוד תזמונים מדויקים עבור הגשת עבודות או קריאות API.
for i in {1..100}; do
start=$(date +%s%N)
curl -s https://some.quantum.api/submit_job > /dev/null
end=$(date +%s%N)
duration=$(( (end - start)/1000000 ))
echo "$duration" >> timings.log
done
זה רושם תזמוני תגובה במילישניות לניתוח מאוחר יותר.
import requests, time
timings = []
for i in range(100):
t0 = time.perf_counter()
requests.get('https://some.quantum.api/submit_job')
t1 = time.perf_counter()
timings.append(t1 - t0)
with open('timings.csv', 'w') as f:
for t in timings:
f.write(f"{t}\n")
לאחר איסוף נתוני תזמון, השתמש ב-Python או Bash/awk לניתוח התוצאות.
awk '{ total += $1; count++ } END { print "ממוצע:", total/count }' timings.log
awk '{ sum+=$1; sumsq+=$1*$1 } END { print "סטיית תקן:", sqrt(sumsq/NR - (sum/NR)**2) }' timings.log
import matplotlib.pyplot as plt
import numpy as np
data = np.loadtxt('timings.csv')
plt.hist(data, bins=40)
plt.title("היסטוגרמה של תזמוני עבודה")
plt.xlabel("זמן (שניות)")
plt.ylabel("שכיחות")
plt.show()
# זיהוי אנומליות פשוט (חוק 3-סיגמה)
outliers = data[abs(data - data.mean()) > 3 * data.std()]
print("אנומליות שזוהו:", len(outliers))
התקפות ערוצי צד מבוססות תזמון, שהיו נהוגות זמן רב בתחומים מוצפנים ובתחום הממשקים המשולבים, כעת מאיימות על הבטחות האבטחה של חישוב קוונטי בענן — במיוחד תחת רב־דיירות. כפי שהודגם על ידי התקפת Quantum Leak על IBM Quantum, גם החזיתות המתקדמות ביותר עלולות לדליף מידע רגיש מבלי להתכוון לזה באמצעות תנודות תזמון עדינות.
אלגוריתמים של למידת מכונה מגבירים איומים אלה על ידי מתן כלים לתוקפים על מנת לחלץ בדיוק סודות מנתוני ערוץ צד רועשים. לכן, ערנות מתמשכת, זיהוי והנדסת מניעה חזקה הם הכרחיים להבטחת ענן קלאסי וגם קוונטי.
בעלי עניין באבטחה חייבים להתייחס לעמידות ערוץ צד כאל דאגה ראשונית כאשר מפתחים שירותי חישוב קוונטי בענן.
אם מצאתם את התוכן הזה בעל ערך, תארו לעצמכם מה תוכלו להשיג עם תוכנית ההכשרה המקיפה והאליטיסטית שלנו בת 47 שבועות. הצטרפו ליותר מ-1,200 סטודנטים ששינו את הקריירה שלהם בעזרת טכניקות יחידה 8200.