
טרויאנים בחומרה (Hardware Trojans) הפכו לאחת האיומים הפוגעניים ביותר לאמינות ולביטחון של מעגלים משולבים מודרניים (ICs) ומערכות על שבב (SoCs). ככל שהגלובליזציה הפיצה את עיצוב והיצרת השבבים בין ספקים ותהליכים שונים, הסיכון לשינויים זדוניים שהוחדרו במהלך הייצור או במפעל הפך לדאגה ראשית בתחום אבטחת החומרה.
פוסט טכני ארוך זה יחקור מסגרת מתקדמת לזיהוי טרויאנים בחומרה באמצעות למידה ניגודית ונתוני צריכת חשמל. נסקור את הרקע התיאורטי, טכניקות זיהוי מודרניות, דוגמאות מהעולם האמיתי ויישומים פרקטיים - כולל דוגמאות קוד ב-Bash ו-Python לטיפול בנתונים, חילוץ מאפיינים וניתוח. המסע שלנו משתרע מרמות מתחילים למומחים, ומספק עומק ורוחב לקוראים מכל הרקע. לאורך כל הדרך, נבצע אופטימיזציה למונחי SEO מרכזיים: זיהוי טרויאנים בחומרה, למידה ניגודית אבטחת חומרה, ו-ניתוח ערוץ צדדי חשמלי.
תוכן עניינים
טרויאנים בחומרה (HTs) הם שינויים זדוניים בעיצוב או בייצור של מעגל משולב (IC) שיכולים לשנות את התנהגות השבב, לפגום באבטחה או לדלוף מידע רגיש. בניגוד לתוכנות זדוניות, טרויאנים בחומרה משולבים ברמה פיזית עמוקה ויכולים לעקוף הגנות אבטחה מסורתיות.
למידע והעמקה נוספים, ראה "מבוא לשיטות לזיהוי טרויאנים בחומרה".
זיהוי של טרויאנים בחומרה ניגש במגוון שלבים וטכניקות.
פרויקט HOMERE — יוזמה במימון צרפתי סיכם גישות מקיפות:
הערת SEO: הפרדיגמות ניתוח ערוץ צדדי טרויאנים בחומרה, למידת מכונה לאבטחת חומרה, ו-זיהוי אנומליה ללא פיקוח מרכזיים בספרות האחרונה.
מאמר רענן ב-Nature Scientific Reports מציע מסגרת חדשנית הממנפת למידה ניגודית להערכת מידע על צריכת חשמל (מקור). הגישה המבטיחה הזו מתמודדת עם כמה אתגרים מרכזיים:
האתגר הראשי בזיהוי טרויאנים בחומרה הוא מחסור בדוגמאות זיהום מותוויות:
למידה ניגודית אידיאלית בתרחישים אלו שכן היא יכולה לנצל זוגות או קבוצות של דגימות כדי ללמוד ייצוגים דיסקרימינטיביים גם עם מינימום אמת קרקעית.
טכניקה בסיסית בזיהוי טרויאנים בחומרה היא ניתוח ערוץ צדדי (SCA). בואו נסקור בקצרה את עקרונותיה, ההשלכות שלה, והקשר ללמידת מכונה.
ת שיוצרת דפוסים ניתנים לזיהוי בערוץ צדדי.
ראה "טרויאנים בחומרה: איומים, זיהוי ומניעה" לסקר מקיף.
בואו נפרט כל שלב בהנחיות מעשיות ודוגמאות קוד.
בהנחה אוסצילוסקופ USB עם API שורת פקודה (my_scope_cli):
my_scope_cli --acquire --channel=CH1 --samples=100000 --rate=100MSa/s --output=power_trace1.csv
import numpy as np
import pandas as pd
from scipy import signal
# טען עקבת כוח
trace = pd.read_csv('power_trace1.csv', header=None).values.flatten()
# יישום מסנן Butterworth פס-נמוך
b, a = signal.butter(4, 0.1, 'low')
filtered_trace = signal.filtfilt(b, a, trace)
# חלוקה לחלונות של 1000 דגימות
window_size = 1000
windows = np.array([filtered_trace[i:i+window_size] for i in range(0, len(filtered_trace), window_size)])
from scipy.stats import skew, kurtosis
def extract_features(window):
features = {
'mean': np.mean(window),
'std': np.std(window),
'skew': skew(window),
'kurtosis': kurtosis(window),
'max': np.max(window),
'min': np.min(window),
}
# FFT
fft = np.abs(np.fft.fft(window))[:len(window)//2]
features['fft_peak'] = np.max(fft)
features['fft_sum'] = np.sum(fft)
return features
feature_matrix = np.array([list(extract_features(w).values()) for w in windows])
למידה ניגודית היא פרדיגמת למידת מכונה עצמאית שבה המודל לומד להבדיל בין זוגות דגימות דומים ושונים.
המודל (כגון רשת עצבית) מאומן על מנת להקרין זוגות חיוביים קרובים ושליליים רחוקים במרחב המאפיינים.
נניח שיש לנו עקבות מחולקנות ואנו יודעים אילו חלונות הם משבבים דומים/שונים.
import torch
import torch.nn as nn
import torch.optim as optim
class SimpleEncoder(nn.Module):
def __init__(self, input_dim, latent_dim):
super().__init__()
self.fc = nn.Sequential(
nn.Linear(input_dim, 128),
nn.ReLU(),
nn.Linear(128, latent_dim))
def forward(self, x):
return self.fc(x)
def nt_xent_loss(features, labels, temperature=0.5):
# features: (batch_size, latent_dim)
# labels: (batch_size,) with group/class information
sim_matrix = torch.matmul(features, features.T) / temperature
labels = labels.unsqueeze(0) == labels.unsqueeze(1)
positives = sim_matrix[labels].view(labels.shape[0], -1)
negatives = sim_matrix[~labels].view(labels.shape[0], -1)
logits = torch.cat([positives, negatives], dim=1)
labels = torch.zeros(labels.shape[0], dtype=torch.long) # positives at index 0
return nn.CrossEntropyLoss()(logits, labels)
# Dummy data and labels:
# data shape: (batch_size, feature_dim)
data_torch = torch.tensor(feature_matrix, dtype=torch.float)
labels_torch = torch.tensor([...]) # provided group labels
encoder = SimpleEncoder(input_dim=feature_matrix.shape[1], latent_dim=32)
optimizer = optim.Adam(encoder.parameters(), lr=1e-3)
encoder.train()
for epoch in range(100):
h = encoder(data_torch)
loss = nt_xent_loss(h, labels_torch)
loss.backward()
optimizer.step()
optimizer.zero_grad()
print(f'Epoch {epoch}, Loss: {loss.item()}')
לאחר אימון, עקבות חדשות מקודדות ומושוות להפצה של דגימות "טובות" ידועות. חריגות מסומנות כייתכנות להידבקת טרויאן.
דוגמת Bash (ל-10 מכשירים):
for i in {1..10}
do
my_scope_cli --acquire --channel=CH1 --samples=100000 --rate=100MSa/s --output=power_device_${i}.csv
done
import glob
import pandas as pd
files = glob.glob('power_device_*.csv')
all_traces = []
for file in files:
trace = pd.read_csv(file, header=None).values.flatten()
all_traces.append(trace)
# Process all traces as shown previously
סקריפט Python:
import numpy as np
from scipy.stats import skew, kurtosis
def batch_extract(traces):
features = []
for trace in traces:
# Segment and extract features for each window
windows = np.array([trace[i:i+1000] for i in range(0, len(trace), 1000) if len(trace[i:i+1000]) == 1000])
for w in windows:
features.append(list(extract_features(w).values()))
return np.array(features)
feature_matrix = batch_extract(all_traces)
קבלני הגנה לאומיים דורשים לעיתים קרובות ביקורות SCA מבוססות כוח כחלק מתוכניות מפעל אימון.
יצרני מכשירים רפואיים חכמים וחיישנים תעשייתיים מבצעים מעקב אחרי מכשירים בשטח.
בהתחשב בתקריות האחרונות עם יחידות פיקוד אלקטרוניות פגיעות, שבבים לרכב נתונים לזיהוי טרויאנים כמתחייב מנתקנות (ISO/SAE 21434:2021).
אסטרטגיית הגנה לעומק כוללת זיהוי טרויאנים במגוון רב שלבים:
זיהוי טרויאנים הוא גשר קריטי בין חומרה לאבטחת סייבר. הוא חשוב במיוחד ב:
טרויאנים בחומרה הם איום גובר בייצור שבבים מודרניים. עם שרשראות אספקה גלובליות וסיבוכי שבבים הולכים וגדלים, ניתוח ערוץ צדדי ועליות בלמידת מכונה—במיוחד מסגרות למידה ניגודית ללא פיקוח או פנים לפיקוח חלש—מציעים כלים חזקים ומתקדמים לזהות טרויאנים.
עיקרי הדברים:
ככל שה-HTs מתפתחים, כך גם שיטות הזיהוי שלנו—משלבות את ההתקדמות האחרונה בלמידת מכונה, ניתוח ערוץ צדדי ואבטחת שרשרת האספקה.
A framework for hardware trojan detection based on contrastive learning using power consumption information
https://www.nature.com/articles/s41598-024-81473-0
Introduction to hardware Trojan detection methods
https://ieeexplore.ieee.org/document/7092490/
Hardware Trojans: Threats, Detection, and Prevention
https://dl.acm.org/doi/fullHtml/10.1145/3656766.3656856
ISO/SAE 21434:2021 Road vehicles – Cybersecurity engineering
https://www.iso.org/standard/70918.html
רוצה לדעת יותר או לשתף פעולה בנושא זיהוי HT בקוד פתוח? צור קשר עם [Your Name] או השאר את השאלות שלך למטה!
אם מצאתם את התוכן הזה בעל ערך, תארו לעצמכם מה תוכלו להשיג עם תוכנית ההכשרה המקיפה והאליטיסטית שלנו בת 47 שבועות. הצטרפו ליותר מ-1,200 סטודנטים ששינו את הקריירה שלהם בעזרת טכניקות יחידה 8200.