
מילות מפתח: חישוב קוונטי, תקיפות ערוץ-צד, למידת מכונה, אבטחת פוסט-קוונטום, אבטחת ענן, ניתוח הספק, הסתרה, עיוורון, סייבר אבטחה
חישוב קוונטי מייצג שינוי טרנספורמטיבי, שמבטיח האצה אקספוננציאלית בפתרון בעיות שעד כה היו בלתי אפשריות למכונות קלאסיות. עם כוח מגיע גם הסיכון, וכאשר מערכות אלו עוברות מתיאוריה לשימוש ענן ציבורי, הבנת מצב האבטחה שלהן חשובה מאוד.
כיתת איומים פסיבית במיוחד היא תקיפות ערוצי צד, שבהן תוקפים שולפים סודות לא על ידי שבירת קריפטוגרפיה, אלא על ידי ניצול דליפות חומרה או מערכת, כמו תנודות צריכת הספק או שינויים בתזמון. בבלוג הזה, נחקור את המצב החדשני של תקיפות ערוצי צד הספקת מחשב קוונטי, נציג מספר וקטורי תקיפה חדשים המבוססים על עבודות אקדמיות חדישות, ונדון הן באמצעי נגד מבוססי תוכנה וחומרה, כולל תפקיד למידת המכונה ההולך וגדל בפיתוח יוזמות תקיפה והגנה.
בין אם אתם מתחילים המתעניינים באבטחה, מפתחים הכותבים מעגלים קוונטיים או מומחי אבטחה האחראים להגן על עומסי עבודה בענן, צלילה עמוקה זו נועדה עבורכם.
תקיפות ערוץ-צד (SCAs) מנצלות מימושים פיזיים של חישוב במקום חולשות באלגוריתמים. הן מנצלות:
כיתת תקיפות זו יש לה היסטוריה עשירה בקריפטוגרפיה קלאסית — לדוגמה, ניתוח הספק דיפרנציאלי (DPA) פרץ מימושי חומרה רבים של AES ו-RSA.
במקום לתקוף ישירות את האלגוריתמים הקריפטוגרפיים, התוקפים:
מחשבים קוונטיים פועלים באופן שונה מהותית ממערכות קלאסיות:
עם זאת, מימושים קוונטיים(בייחוד קיוביטים מוליכים-על) משתמשים ברכיבים פיזיים: אלקטרוניקה בקרתית, מהדים מיקרו-גליים ומערכות קריוגניות — כל אלה יכולים דלף מידע בדרך לא מכוונת.
פלטפורמות ענן קוונטיות (כמו IBM Quantum, Rigetti Forest, Amazon Braket) מאפשרות גישה מרחוק לחומרה קוונטית פיזית. בעוד שהן דמוקרטיות מחקר, זה מאפשר למשתמשים לא מהימנים להריץ מעגלים ברמה נמוכה, ואולי לקצור מידע מערוץ-צד — מצב שדומה לעננים קלאסיים בשלב מוקדם עם שכנים רועשים שיכולים לסנפן לאחרים.
מחקר פריצה חדשני—חקר ערוצי צד הספקת מחשב קוונטי—חוקר באופן שיטתי דליפות מידע פוטנציאליות דרך ערוצי הספק מחומרה קוונטית נגישה דרך ענן. הכותבים מציגים חמש סוגי תקיפה חדשים ומעריכים אותם באמצעות מטה-נתונים של פולסי בקרה (למשל, זמני פולסים, משרעת) הנצפים דרך ממשקי API סטנדרטיים של ענן.
כל שער קוונטי (כגון X, CX, H) ממומש על ידי שליחת פולס חשמלי או מיקרו-גלי מעוצב במדויק לקיוביט. צורת הפולס ומשך הזמן תלויים לעיתים קרובות בשער, במצב הקיוביט, ולפעמים גם בנתונים.
על ידי צפייה או הסקת פרמטרים אלו של הפולס (אפילו באופן עקיף), תוקף יכול:
נניח ש-API ענן דולף לוחות זמנים של פולסים גולמיים (כמו רבים המעשיים כיול), תוקף יכול לפקח באופן פסיבי:
# מאחזר נתוני פולס מ- API של IBM Q
curl -H "Authorization: Bearer <TOKEN>" https://api.quantum-computer.example.com/v1/jobs/JOBID/pulses -o pulses.json
מנתח ומפרש ב-Python:
import json
with open('pulses.json') as f:
data = json.load(f)
for pulse in data['pulses']:
print(f"Gate: {pulse['gate_type']} | Duration: {pulse['duration']} | Amplitude: {pulse['amplitude']}")
על ידי בניית מסד נתונים של דפוסי פולס, תוקפים יכולים לזהות סוגי מעגלים.
כל מעגל קוונטי משאיר חתימה ייחודית על ספק הכוח — רצף, משך ותערובת של שערים יוצרים פרופילים של הספק ייחודיים. על ידי הקלטה וניתוח סטטיסטי של אלו, תוקפים יכולים לסווג אילו אלגוריתמים (למשל, QFT, Grover's) או אפילו איזו ענף שתלוי-בסוד בוצע.
קוד לדוגמה עם נתונים סינתטיים:
import numpy as np
from sklearn.ensemble import RandomForestClassifier
# דוגמה: נתונים סינתטיים לשני מעגלים קוונטיים
X = np.array([[0.1, 5.1, 2.3], [0.2, 5.2, 2.2], [1.0, 7.0, 3.0], [0.9, 6.9, 3.1]]) # עקבות הספק
y = [0, 0, 1, 1] # 0: QFT, 1: Grover
clf = RandomForestClassifier()
clf.fit(X, y)
new_trace = np.array([[0.15, 5.05, 2.25]])
predicted = clf.predict(new_trace)
print("ניבוי סוג מעגל:", predicted)
רצפים ספציפיים של שערים, במיוחד עם קיוביטים בקרה משתנים, מייצרים חתימות הספק ייחודיות המשתנות בזמן בגלל החלפת מהדים והתופעות חוצות הקול. עם מדידות מדויקות או גישה לנתוני תזמון, תוקפים יכולים לשחזר את הסדר וסוג השערים.
בענן, השהיה בביצוע עבודות עשויה להשתנות בעדינות בהתאם למצב החומרה הפיזית, תופעות לוואי תרמליות או תזמון. למשל, הפעלת שער באנרגיה גבוהה עשויה לייצר השהיה קטנה אך מדידה.
תוקף יכול:
# מדידה של זמן השלמת עבודה
start=$(date +%s%N)
# הרשאת עבודה קוונטית
qiskit-execute --backend ibmq_boeblingen --circuit my_qasm.qasm
end=$(date +%s%N)
time_ms=$(( (end - start)/1000000 ))
echo "זמן תגובת עבודה (ms): $time_ms"
שיעורי שגיאות קוונטיים (כגון נאמנות שערים, שגיאת קריאה) יכולים להשתנות זמנית בגלל תהודה או חוצה-קול חשמלי מעבודות אחרות בסביבת ענן מרובת משתמשים. על ידי ניתוח סטטיסטי של שיעורי שגיאות ותוצאות, משתמש ענן זדוני יכול לקבוע פעילות של קיוביטים פיזיים בעבודות אחרות שתוזמנו באותה תקופה.
למידת מכונה (ML) הפכה לנשק רב ערך עבור אוטומציה של תקיפות ערוץ-צד וניתוח אמצעי נגד.
בהינתן מספיק נתוני עקבה מסומנים, רשתות עמוקות יכולות לגלות דליפות עדינות שלא נחשפו על ידי ניתוח ידני.
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import numpy as np
# נניח שאספנו 1000 עקבות של צריכת הספק עבור שני שערים: X (0), CX (1)
X_traces = np.random.rand(1000, 128) # כל עקבה: וקטור 128 דוגמאות
y_classes = np.random.randint(0, 2, 1000)
model = Sequential([
Dense(64, activation='relu', input_shape=(128,)),
Dense(32, activation='relu'),
Dense(2, activation='softmax'),
])
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(X_traces, y_classes, epochs=10, batch_size=32)
פרשנות: בהינתן מספיק נתונים, המודל יכול ללמוד להבחין בפעילות שערי קיוביטים על פי עקבות ההספק שלהם.
הקטנה היא משחק של חתול ועכבר: ההגנות חייבות להתפתח יחד עם התקיפות.
קוד פסודו לדוגמה עבור סדר זימוני מעגלים אקראי:
import qiskit
from qiskit.circuit.random import random_circuit
# מעגל רגיש מקורי
qc = qiskit.QuantumCircuit(3)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
# הקפצת שערים רנדומיים שאינם הרסניים
rand_qc = random_circuit(3, 4, max_operands=2)
qc.compose(rand_qc, inplace=True)
# שליחה לענן
ית**
נניח שקיבלתם יומני הספק של מכשירים (למטרות מחקר/פיתוח של אמצעי נגד). הנה תהליך לעיבוד, הצגה וסיווג עקבות.
נניח שכל שורה היא זוג זמן-הספק.
trace1.txt
0.0, 0.15
0.1, 0.20
0.2, 0.22
...
import numpy as np
import matplotlib.pyplot as plt
def load_trace(filename):
data = np.loadtxt(filename, delimiter=',')
times = data[:,0]
power = data[:,1]
return times, power
times, power = load_trace('trace1.txt')
plt.plot(times, power)
plt.xlabel("זמן (ms)")
plt.ylabel("הספק (mW)")
plt.title("עקבת הספק של מכשיר קוונטי")
plt.show()
חילוץ תכונות בסיסיות (ממוצע, מקסימום, שונות) לסיווג מהיר.
import glob
feature_list = []
label_list = []
for fname in glob.glob('traces/*.txt'):
times, power = load_trace(fname)
features = [power.mean(), power.max(), power.std()]
feature_list.append(features)
# נניח ששם הקובץ מקודד את התווית: qft_*.txt
label = 0 if 'qft' in fname else 1
label_list.append(label)
from sklearn.svm import SVC
clf = SVC()
clf.fit(feature_list, label_list)
ההבטחה של חישוב קוונטי מביאה איתה סיכונים המשקפים, אך מקצינים, את אלה שהתמודדו באבטחת חומרה קלאסית. בעוד שיותר משתמשים יתקשרו עם מחשבים קוונטיים פיזיים — במיוחד בענן — הסיכון מערוצים, תזמון וצדדים אחרים של חומרה הופכת לרלוונטית ביותר. חמשת וקטורי התקיפה החדשים — מיתון פולסה, הבחנה פרופילית, ניתוח רצף שערים, תזמון, וניצול חוצה קול — מציגים הן את היצירתיות של התוקפים והן את הצורך הדחוף באמצעים נגד חזקים.
ההגנה אפשרית אך דורשת: שכבות. אין נקודת כשל יחידה. הן הסתרה תוכנתית/עיוורון והן מיגון חומרתי/אקראיות חייבים לעבוד בתיאום, ואדריכלי מערכות צריכים לבדוק היטב ולמזער את המידע הנחשפ. כמו בקריפטוגרפיה קלאסית, הלחץ הוא על: תוקפים מחדשים; המגנים חייבים גם.
הישאר ערני, המשך ללמוד, והגן על הקיוביטים שלך!
אם מצאתם את המדריך הזה על תקיפות ערוצי צד הספקת מחשב קוונטי מועיל, שיקלו לשתף עם הקולגות שלכם או לצטט במחקריכם! עקבו לעוד על אבטחת ענן קוונטית, קריפטוגרפיה פוסט-קוונטית, ואסטרטגיות למניעת תקיפות חומרה.
אם מצאתם את התוכן הזה בעל ערך, תארו לעצמכם מה תוכלו להשיג עם תוכנית ההכשרה המקיפה והאליטיסטית שלנו בת 47 שבועות. הצטרפו ליותר מ-1,200 סטודנטים ששינו את הקריירה שלהם בעזרת טכניקות יחידה 8200.