קטלוג זיהוי ישויות וספר חוקי אכיפה (Entity Detection Catalog & Rulebook)

Rendered from docs/ENTITY-CATALOG.md. Documents are rendered as written in the repository.

Reference document as written in the repository. Hostnames, key ids and latency figures inside it are illustrative examples from the specification; the production base URL is https://api.zer0pii.com/v1 and the site quotes no latency number.

פרויקט: zer0pii.ai - Enterprise AI Security Gateway & DLP

גרסה: 1.0.0-CATALOG

סיווג: מפרט טכני ומדריך הגדרות אכיפה (Detection Specification & Configuration Reference)

יעד: מהנדסי אבטחת מידע, ארכיטקטי DLP, צוותי SOC ומהנדסי פיתוח Gateway


1. ארכיטקטורת מנוע הזיהוי התלת-שכבתי (Three-Tier Detection Pipeline)

שער zer0pii.ai אינו מסתמך על מודל בודד או על רג'קסים עיוורים. כל פיסת טקסט מעובדת דרך שלוש שכבות סריקה מקבילות וטוריות המותאמות לתקציב שיהוי כולל של פחות מ-15ms:

                      [ Incoming Text Stream / Prompt ]
                                      │
                                      ▼
             ┌─────────────────────────────────────────────────┐
             │ Layer 0: AST & Code Syntax Boundary Protection  │
             │ (Exempts variables, imports, schemas, backticks)│
             └────────────────────────┬────────────────────────┘
                                      │
                 ┌────────────────────┴────────────────────┐
                 ▼                                         ▼
   ┌───────────────────────────┐             ┌───────────────────────────┐
   │ Layer 1: Deterministic    │             │ Layer 2: Structural &     │
   │ Algorithmic Engine        │             │ High-Entropy Scanner      │
   │ • Regex + Checksums       │             │ • Shannon Entropy (>4.3)  │
   │ • Luhn, ISO stdnum        │             │ • Connection Strings URIs │
   │ • Runtime: 0.2ms - 1.2ms  │             │ • Cloud Provider Patterns │
   │ • Confidence: 0.95 - 1.00 │             │ • Runtime: 0.3ms - 0.8ms  │
   └─────────────┬─────────────┘             └─────────────┬─────────────┘
                 │                                         │
                 └────────────────────┬────────────────────┘
                                      │
                                      ▼
             ┌─────────────────────────────────────────────────┐
             │ Layer 3: Semantic NER Engine (GLiNER ONNX FP16) │
             │ • Multilingual: Hebrew, English, Arabic, EU     │
             │ • Contextual: Names, Locations, Organizations   │
             │ • Runtime Budget: 8.0ms - 12.0ms (Timeout: 20ms)│
             │ • Confidence: 0.60 - 0.95                       │
             └─────────────────────────────────────────────────┘

אלגוריתם חישוב מדד הסיכון (Composite Risk Index)

כל מופע שזוהה מקבל ניקוד המשקלל את רמת הוודאות של המנוע עם חומרת הנזק לארגון:

$$\text{Risk Score} = \text{Confidence} \times \text{Severity}$$


2. מזהים ממשלתיים ואזרחיים (National & Government IDs)

זיהוי מזהים ממשלתיים נשען תמיד על אימות מתמטי (Checksum Validation) באמצעות מודולי python-stdnum. אם מספר מתאים לתבנית אך נכשל בספרת הביקורת, הוא מסווג כסתם רצף ספרות ואינו ממוסך.

קוד ישות (Entity Code) מדינה / אזור שיטת זיהוי ואימות אלגוריתמי רמת חומרה (Severity) פורמט מיסוך (Masking Token)
IL_NATIONAL_ID ישראל Luhn Checksum מותאם: 9 ספרות, ריפוד באפסים משמאל, שקלול כפולות 1 ו-2 ומודולו 10. 90 [IL_ID_01_{nonce}]
US_SSN ארה"ב Regex + מבנה חוקי של SSA: תבנית \d{3}-\d{2}-\d{4}. שלילת אזורים לא קיימים (000, 666, 900-999), קבוצות 00, וסדרות 0000. 95 [US_SSN_01_{nonce}]
UK_NINO בריטניה מבנה תקני HMRC: 2 אותיות (ללא D, F, I, Q, U, V; אות שנייה ללא O), 6 ספרות, אות סופית (A-D). 90 [UK_NINO_01_{nonce}]
EU_PASSPORT בינלאומי תקן ICAO Doc 9303 (MRZ): סריקת תבניות של 9 תווים אלפא-נומריים בשילוב חישוב ספרת ביקורת במשקולות 7-3-1. 95 [PASSPORT_01_{nonce}]
DE_STEUER_ID גרמניה 11 ספרות: אימות ספרת ביקורת לפי אלגוריתם ISO/IEC 7064 Mod 11, 10. 85 [DE_STEUER_01_{nonce}]
FR_NIR_INSEE צרפת מספר ביטוח לאומי צרפתי: 13 ספרות + 2 ספרות מפתח (Mod 97 Checksum). 85 [FR_INSEE_01_{nonce}]
ES_DNI_NIE ספרד DNI/NIE ספרדי: 8 ספרות ואות ביקורת הנגזרת מחישוב מודולו 23 מול טבלת אותיות רשמית. 85 [ES_DNI_01_{nonce}]
IT_CODICE_FISCALE איטליה 16 תווים אלפא-נומריים: אימות מבנה קונסוננטים לשם, תאריך לידה, קוד עירייה ואות ביקורת ייעודית. 85 [IT_CF_01_{nonce}]

3. נתונים פיננסיים, כרטיסי אשראי ובנקאות (Financial & Payments)

קוד ישות תיאור אלגוריתם זיהוי ואימות מתמטי חומרה אסטרטגיית החלפה
CREDIT_CARD כרטיסי אשראי בינלאומיים (Visa, Mastercard, Amex, Diners, Discover) 1. BIN/IIN Routing Check: זיהוי תחילית כרטיס תקינה. 2. Luhn Algorithm: הכפלת ספרות לסירוגין ב-2 וחישוב מודולו 10. 3. אורך תקין (13-19 ספרות). 100 מוחלף בטוקן מחרוזתי [CC_01_{nonce}] או במספר כרטיס סינתטי תקין העובר Luhn (בפלט מובנה של JSON).
IBAN_CODE מספר חשבון בנק בינלאומי (ISO 13616) 1. קידומת מדינה בת 2 אותיות. 2. העברת 4 תווים ראשונים לסוף המחרוזת, המרת אותיות למספרים (A=10 ... Z=35). 3. MOD 97-10 Checksum (ISO 7064): השארית חייבת להיות בדיוק 1. 90 [IBAN_01_{nonce}]
SWIFT_BIC קוד זיהוי בנקאי בינלאומי (ISO 9362) תבנית בת 8 או 11 תווים: 4 אותיות בנק, 2 אותיות מדינה (ISO 3166-1), 2 תווים למיקום, ו-3 תווים אופציונליים לסניף. 70 [SWIFT_01_{nonce}]
IL_BANK_ACCOUNT חשבונות בנק בישראל זיהוי מבנה משולב של קוד בנק (2 ספרות), קוד סניף (3 ספרות) ומספר חשבון (6-9 ספרות) בהתאם למבני החשבון המוכרים של בנק ישראל. 85 [IL_BANK_01_{nonce}]
VAT_ID מספרי עוסק מורשה / ח.פ. / מע"מ אירופי • ישראל: 9 ספרות עם בדיקת ספרת ביקורת זהה לת"ז. • אירופה (VIES): תבניות ייעודיות לכל מדינה עם בדיקות מודולו מקומיות. 75 [VAT_01_{nonce}]

4. תשתיות ענן, מפתחות סודיים וקובצי תצורה (Secrets & Credentials)

קטגוריה זו מוגדרת ברמת חומרה 100. ברירת המחדל בשער היא חסימה מוחלטת של הבקשה (HTTP 403) או מיסוך ללא תלות בספים סטטיסטיים.

4.1 מפתחות ספקים מובנים (High-Confidence Heuristics)

קוד ישות ספק / תשתית תבנית זיהוי (Regex / Prefix) בדיקה משלימה
AWS_ACCESS_KEY Amazon Web Services קידומות AKIA / A3T[A-Z0-9] / ASIA + 16 תווים סמיכות ל-Secret Key.
AWS_SECRET_KEY Amazon Web Services מחרוזת של 40 תווים Base64 בסמיכות ל-Access Key חישוב Shannon Entropy >= 4.5.
OPENAI_API_KEY OpenAI Platform sk-(proj-)?[a-zA-Z0-9_-]{48,128} אורך וטווח תווים מוגדר.
ANTHROPIC_KEY Anthropic Claude `sk-ant-(api admin)[0-9]{2}-[a-zA-Z0-9_-]{80,120}`
GITHUB_TOKEN GitHub קידומות ghp_ / gho_ / ghu_ / ghs_ / ghr_ + 36 תווים מבנה טוקן אישי/OAuth.
SLACK_TOKEN Slack Technologies xox[baprs]-[0-9]{10,13}-[0-9]{10,13}[a-zA-Z0-9-]* מבנה טוקנים ארגוניים/בוטים.
PRIVATE_KEY תעודות קריפטוגרפיות `-----BEGIN (RSA EC

4.2 מחרוזות חיבור (Connection Strings & Database URIs)

השער מפעיל מפענח URI ייעודי שמחלץ את הסיסמה בלבד וממסך אותה, מבלי לפגוע במבנה הכתובת כדי לא לשבור בדיקות קוד:

postgresql://db_admin:P@ssw0rd123!@postgres.internal.corp:5432/finance_db
postgresql://db_admin:[PASSWORD_01_7c2b]@postgres.internal.corp:5432/finance_db

4.3 מנוע אנטרופיה לאיתור סודות חופשיים (Shannon Entropy Engine)

מחרוזות שאינן מתאימות לתבנית של ספק ספציפי נסרקות באמצעות חישוב אנטרופיית המידע של שאנון:

$$H(X) = -\sum_{i=1}^{n} P(x_i) \log_2 P(x_i)$$

  1. המחרוזת מורכבת מתווים רציפים ללא רווחים באורך של 20 תווים ומעלה.
  2. ציון האנטרופיה H(X) >= 4.30 (עבור ערכת תווים אלפא-נומרית) או >= 4.75 (עבור ערכת Base64 מורחבת).
  3. המחרוזת אינה מילה מוכרת במילון אנגלי/עברי ואינה כתובת Hash של Git Commit (40 תווים הקסדצימליים ללא תווים מיוחדים מקבלים החרגה ייעודית).

5. מידע בריאותי מוגן (HIPAA / Protected Health Information - PHI)

התאמה מלאה לתקן Safe Harbor של חוק ה-HIPAA האמריקאי, הדורש סילוק של 18 מזהים ספציפיים:

קוד ישות סוג מזהה HIPAA שיטת זיהוי ב-zer0pii חומרה אופן החלפה
HEALTH_MRN מספר תיק רפואי (Medical Record Number) סריקה בהקשר של מונחים רפואיים ("תיק רפואי", "MRN", "גיליון") + רצף של 6-10 תווים. 95 [MRN_01_{nonce}]
HEALTH_DATE תאריכי טיפול, אשפוז ופטירה זיהוי תאריכים מלאים בהקשר קליני (למעט שנת הלידה עבור מטופלים מעל גיל 89, הממוסכת אוטומטית). 80 החלפה בתאריך סינתטי בעל סטייה קבועה (+14 יום עקבי).
HEALTH_DEVICE_ID מזהי מכשור רפואי ושתלים (UDI) תבניות ברקוד FDA UDI (תקן GS1 או HIBCC). 85 [DEVICE_ID_01_{nonce}]
HEALTH_BIOMETRIC הפניות למידע ביומטרי זיהוי תיאורי תביעות אצבע, סריקות רשתית, ודפוסי קול בהקשר אישי. 90 [BIOMETRIC_DATA]

6. פרטי התקשרות ומידע אישי רב-לשוני (General PII & Contact Data)

קוד ישות קטגוריה אלגוריתם ומנגנון זיהוי חומרה שפות נתמכות
EMAIL_ADDRESS כתובות דוא"ל תקן RFC 5322 Regex מוקשח + שלילת TLDs לא חוקיים והחרגת ספריות קוד (כגון user@example.com או כתובות בתוך תיעוד). 75 בינלאומי
PHONE_NUMBER מספרי טלפון תקן ITU E.164: זיהוי קידומות מדינה בינלאומיות (+972, +1, +44) וסריקת מספרי טלפון מקומיים וניידים בעברית ואנגלית (עם או בלי מקפים). 75 בינלאומי
PERSON_NAME שמות פרטיים ומשפחה GLiNER Multi-PII ONNX Engine: מודל סמנטי מקומי הפועל בזמן אמת, מנתח חלקי דיבר (POS) ומזהה שמות ישויות מורכבים בטקסט חופשי. 60 עברית, אנגלית, ערבית, גרמנית, צרפתית, ספרדית
PHYSICAL_ADDRESS כתובות מגורים ורחובות שילוב של GLiNER (תגיות LOC / GPE) עם מילוני שמות ערים ורחובות בישראל ובעולם + זיהוי מיקודים (ZIP / Postal Codes). 65 עברית, אנגלית, אירופית
IP_ADDRESS כתובות רשת IPv4 ו-IPv6. החרגה אוטומטית: כתובות לולאה חוזרת (127.0.0.1), כתובות תיעוד (192.0.2.0/24) וכתובות שידור (0.0.0.0). 70 בינלאומי

7. מטריצת אסטרטגיות מיסוך ושימור טיפוסי נתונים (Masking & Type-Preservation Matrix)

שער zer0pii תומך בשלוש אסטרטגיות מיסוך שונות הנבחרות אוטומטית בהתאם להקשר הבקשה:

טיפוס נתונים מקורי אסטרטגיה 1: טוקן מחרוזתי רגיל (Standard Token) אסטרטגיה 2: שימור סכמה ב-JSON (Type-Preserving Synthetic) אסטרטגיה 3: וקטורים סמנטיים (Surrogate for Embeddings)
תעודת זהות ישראלית (012345672) [IL_ID_01_a8f9] 804928174 (מספר חוקי בעל Checksum תקין באותו אורך וטיפוס int) "309812456" (מספר אזרחי פיקטיבי עקבי)
כרטיס אשראי (4580...) [CREDIT_CARD_01_7c2b] 4580123456789010 (כרטיס תקן Luhn עם אותו BIN ראשוני) "כרטיס חיוב לקוח"
שם פרטי ("ישראל ישראלי") [PERSON_01_b4e1] "דוד כהן" (שם סינתטי מחרוזתי מאותו מגדר ותרבות) "דוד לוי" (מבטיח שימור מרחק וקטורי ב-RAG)
כתובת דוא"ל (john@acme.com) [EMAIL_01_9d2a] "user_8829f@acme-corp.synthetic" "contact@enterprise.domain"
סיסמת DB ("P@ss123") [PASSWORD_01_c1a4] "[PASSWORD_FILTERED]" החרגה מוחלטת מאינדוקס וקטורי

8. מטריצת חריגות תחביריות והגנת מפתחים (AST & Code Block Exceptions)

כדי להבטיח מהימנות של 100% עבור מפתחים ולמנוע שבירת קוד, מחרוזות הנמצאות בתוך ההקשרים הבאים אינן ממוסכות לעולם, אלא אם הן מציגות אנטרופיה קיצונית (H >= 4.8) המעידה על מפתח ענן קשיח:

┌─────────────────────────────────────────────────────────────────────────────┐
│                          EXEMPTION CONTEXT RULES                            │
├─────────────────────────────────────────────────────────────────────────────┤
│ 1. Markdown Fenced Code Blocks (```python ... ```, ```json ... ```)        │
│    • שמות משתנים (user_id, client_name, email) אינם נסרקים כ-PII.         │
│    • שמות פונקציות ומחלקות (def get_customer_records) מוגנים לחלוטין.       │
│                                                                             │
│ 2. Inline Code Spans (`import pandas as pd`, `const id = 123`)              │
│    • כל טקסט התחום בגרש בודד (Backtick) מוגן ממיסוך שמי או מספרי.          │
│                                                                             │
│ 3. Package Imports & System Dependencies                                    │
│    • שורות המתחילות ב-import, from, require, #include לעולם אינן נסרקות.    │
│    • שמות ספריות מוכרות (כגון "requests", "numpy") מוחרגים אוטומטית.       │
│                                                                             │
│ 4. JSON Schema Keys & Field Identifiers                                     │
│    • במבני JSON, רק הערך (Value) נסרק. המפתח (Key) מוגן באופן מוחלט.       │
└─────────────────────────────────────────────────────────────────────────────┘

דוגמת אימות מעשית: קוד מפתח לפני ואחרי המיסוך

import os
import requests

# User complaint from David Cohen, ID: 012345672
user_name = "David Cohen"
user_email = "david@corp.com"
AWS_KEY = "AKIAIOSFODNN7EXAMPLE"

def fetch_data():
    return requests.get(f"https://api.corp.com/users/{user_name}")
import os
import requests

# User complaint from [PERSON_01_a8f9], ID: [IL_ID_01_7c2b]
user_name = "[PERSON_01_a8f9]"
user_email = "[EMAIL_01_3d1e]"
AWS_KEY = "[AWS_KEY_BLOCKED]"

def fetch_data():
    return requests.get(f"https://api.corp.com/users/{user_name}")

הערה: מבנה הקוד, שמות המשתנים (user_name, user_email), שמות הפונקציות ופקודות ה-import נותרו ללא שינוי. רק הנתונים הרגישים מוסכו באופן שקוף.

הערה מקומית (build): בטבלת 4.1 המקורית, מספר תאי Regex הגיעו קטועים בשל שבירת טבלת Markdown על תווי | בתוך הביטויים - הושלמו כאן לפי התבניות המקובלות של הספקים מבלי לשנות את הכוונה.