יישום הצפנה הומומורפית להסקת ML על נתונים מוצפנים

כאשר לקוחות דורשים שגם מנהל הענן לא יוכל לראות את הנתונים שלהם, אמצעי אבטחה סטנדרטיים אינם מספיקים. אנו בונים פתרונות מבוססי הצפנה הומומורפית המאפשרים הסקת ML על נתונים מוצפנים, תוך שמירה על סודיות מלאה. הצוות שלנו מספק את הפרויקט במפתח מלא—מבחירת סכמת ההצפנה ועד ליישום ולתמיכה מתמשכת.

תחומי פיתוח AI

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1365
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

לקוח פינטק מעביר נתונים לניקוד, אך דורש שגם מנהל הענן לא יוכל לראות את הערכים הגולמיים. הצפנה הומומורפית (HE) מאפשרת ביצוע מסקנות ML על נתונים מוצפנים—השרת אינו יכול מתמטית לגשת לטקסט הגלוי. לדוגמה, אחד הלקוחות שלנו, בנק, יישם HE עבור מודל ניקוד, והפחית את עלויות הביקורת ב-30%. מאמר זה מכסה יישום מעשי של HE עבור ML באמצעות סכמת CKKS וספריית Microsoft SEAL. הניסיון שלנו כולל 10+ פרויקטים בפינטק ובריאות, המבטיחים סודיות ברמת הצפנה. צור קשר כדי להעריך את התאמת HE לפרויקט שלך.

בעיות ש-HE פותר

בעיה 1: אמון בספקי ענן. ספקי MLaaS לרוב אינם יכולים להבטיח שמנהלים לא יקראו נתונים. HE מבטל סיכון זה: חישובים על טקסט מוצפן אינם דורשים פענוח.

בעיה 2: אילוצים רגולטוריים. GDPR, HIPAA ותקנות בנק מרכזי דורשות הגנה על נתונים אישיים במהלך עיבוד. HE מאפשר עמידה בדרישות ללא ויתור על מחשוב ענן.

בעיה 3: ביצועים. יישום HE נאיבי גורם לעומס עצום (עד פי 30,000). אופטימיזציה באמצעות אריזת SIMD ובחירת סכמת CKKS מפחיתה זאת לכ-600x.

למה CKKS היא הבחירה הטובה ביותר עבור ML

CKKS עולה על FHE פי 10–50 עבור מודלי ML טיפוסיים. היא תומכת בחשבון נקודה צפה מקורב ובאריזת SIMD—טקסט מוצפן יחיד יכול להכיל אלפי ערכים, מה שמאיץ עיבוד אצווה. שכבה לינארית 1024→512 לוקחת 80 אלפיות השנייה על נתונים מוצפנים (טקסט גלוי: 0.1 אלפיות השנייה), אך עיבוד מקבילי של 64 דוגמאות מפחית את העומס לכ-600x.

יישום מעשי עם Microsoft SEAL

import seal
from seal import EncryptionParameters, scheme_type, SEALContext
from seal import KeyGenerator, Encryptor, Evaluator, Decryptor
from seal import CKKSEncoder, RelinKeys, GaloisKeys

# Setup CKKS parameters
parms = EncryptionParameters(scheme_type.ckks)
poly_modulus_degree = 8192  # Security level
parms.set_poly_modulus_degree(poly_modulus_degree)
parms.set_coeff_modulus(seal.CoeffModulus.Create(poly_modulus_degree, [60, 40, 40, 60]))
context = SEALContext(parms)
keygen = KeyGenerator(context)
public_key = keygen.create_public_key()
secret_key = keygen.secret_key()
relin_keys = keygen.create_relin_keys()
galois_keys = keygen.create_galois_keys()
scale = 2.0**40
encoder = CKKSEncoder(context)

# Client encrypts input
input_data = [0.5, 0.3, 0.8, ...]  # Feature vector
plain = encoder.encode(input_data, scale)
encrypted_input = Encryptor(context, public_key).encrypt(plain)

# Server computes on encrypted data (doesn't see actual values)
evaluator = Evaluator(context)
# ... matrix multiplication, activation approximation ...
encrypted_result = evaluator.multiply_plain(encrypted_input, weight_matrix)

# Client decrypts result
result = Decryptor(context, secret_key).decrypt(encrypted_result)
output = encoder.decode(result)

איך לקרב פונקציות לא לינאריות?

האתגר המרכזי ב-HE הוא שפונקציות לא לינאריות (ReLU, sigmoid) אינן נתמכות ישירות—רק פולינומים. פתרונות:

  • ReLU: קירוב עם פולינום מדרגה 3–7 בטווח העבודה. דרגה 3 גורמת לירידת דיוק של ~1–2% אך דורשת פחות משמעותית פעולות כפל.
  • Sigmoid: שימוש בטור טיילור או פולינום minimax.
  • Softmax: דורש טיפול מיוחד בשל חילוק.

חלופה: החלפת הארכיטקטורה בפונקציות הפעלה ידידותיות ל-HE (למשל, x² במקום ReLU). זה מבטל את הצורך בקירוב אך דורש אימון מחדש של המודל.

השוואת סכמות HE

מאפיין PHE SHE FHE CKKS
תמיכה בחיבור כן כן כן כן
תמיכה בכפל מוגבלת כן כן כן
עומק חישוב 1 מוגבל בלתי מוגבל עד 10 שכבות ללא bootstrapping
דיוק גבוה גבוה גבוה מקורב
זמן השהיה נמוך בינוני גבוה בינוני

ביצועים ומגבלות

פעולה טקסט גלוי HE (CKKS) עומס
שכבה לינארית (1024→512) 0.1 אלפיות השנייה 80 אלפיות השנייה ~800x
מסקנות אצווה (64 דוגמאות) 5 אלפיות השנייה 3000 אלפיות השנייה ~600x
CNN פשוט (MNIST) 1 אלפית השנייה 30–60 שניות ~30000x

מעשי כיום עבור רגרסיה לוגיסטית, רשתות רדודות ומסקנות שומרות פרטיות ב-MLaaS. חיסכון בתשתית יכול להגיע ל-40% על ידי ביטול HSMs ייעודיים.

טעויות נפוצות ביישום HE
  • בחירת סכמה לא מתאימה (למשל, PHE עבור רשתות עמוקות).
  • קירוב לא נכון של פונקציות הפעלה—פולינומים בדרגה גבוהה יכולים לגרום לאנומליות.
  • התעלמות מרעש: חריגה מעומק החישוב מניבה תוצאות חסרות משמעות בפענוח.
  • חוסר בדיקות על נתונים אמיתיים: דיוק יכול לרדת ב-10% עם פרמטרים לא אופטימליים.

תבנית HE-as-a-Service

מקרה השימוש הריאלי ביותר: ספק MLaaS בענן רוצה להציע מסקנות מבלי לראות את נתוני הלקוח.

  1. הספק מאמן מודל על נתונים ציבוריים/סינתטיים.
  2. הלקוח מצפין נתונים בצד שלו.
  3. הלקוח שולח טקסט מוצפן לספק.
  4. הספק מבצע מסקנות על טקסט מוצפן.
  5. הספק מחזיר תוצאה מוצפנת.
  6. הלקוח מפענח את התוצאה.

הספק אף פעם לא רואה את נתוני הקלט או התוצאה. עבור שרשראות חישוב קצרות (עומק עד 5), אין צורך ב-bootstrapping.

ספריות וכלים

ספרייה שפה סכמות תכונות
Microsoft SEAL C++/Python BFV, CKKS ביצועים, תיעוד
OpenFHE C++/Python BFV, CKKS, CGGI רוחב פלטפורמות
Concrete (Zama) Python FHE קומפילציה מ-PyTorch
HElib C++ BGV היסטוריה ארוכה, ייעודי ל-HE

תהליך העבודה שלנו

  1. ניתוח: ביקורת מודל ה-ML, קביעת סכמת HE והדיוק הנדרש.
  2. עיצוב: בחירת פרמטרים (poly_modulus_degree, scale), קירוב פונקציות לא לינאריות.
  3. יישום: שילוב שכבת HE בצנרת (Python/C++), כתיבת benchmarks.
  4. בדיקות: אימות דיוק על נתונים מוצפנים, אופטימיזציה של זמן השהיה.
  5. פריסה: פריסה על התשתית שלך, הדרכת הצוות.

מה כלול ביישום HE

  • ביקורת מודל ובחירת סכמת HE אופטימלית.
  • פיתוח צנרת תואמת HE ושילוב עם התשתית שלך.
  • תיעוד והדרכת צוות.
  • תמיכה טכנית במהלך היישום.

לוחות זמנים משוערים

  • מודל פשוט (רגרסיה לוגיסטית, 2–3 שכבות): מ-8 שבועות.
  • מודל מורכב (CNN, RNN): מ-12 עד 16 שבועות.

לוחות הזמנים משתנים בהתאם לארכיטקטורה ולדרישות הדיוק. התמחור מבוסס על הערכה אישית.

הערך את האפשרות ליישם HE עבור שירות ה-ML שלך—צור קשר לייעוץ. בקש ייעוץ הנדסי לפרויקט שלך.