Paper Files / Cloud
כותרת: ארכיטקטורה אדפטיבית לגילוי ולבלימה של תנועה לטרלית בסביבות Multi-Cloud המבוססת על גרפי הרשאות וניתוח הסתברותי
כותרת: ארכיטקטורה אדפטיבית לגילוי ולבלימה של תנועה לטרלית בסביבות Multi-Cloud המבוססת על גרפי הרשאות וניתוח הסתברותי תקציר: ההתבססות של סביבות multi-cloud כתשתית הדומיננטית למערכות קריטיות הרחיבה באופן משמעותי את משטח התקיפה הקשור לזהויות דיגיטליות, למדיניות דקלרטיבית וליחסי אמון פדרטיביים. בניגוד למודלים היקפיים מסורתיים, האבטחה בענן ממוקדת באופן מהותי בזהות ובבקרת גישה מבוססת מאפיינים, ולכן תנועה לטרלית המבוססת על שימוש לרעה באישורים היא אחת האיומים הרלוונטיים ביותר. אירועים מתועדים היטב, כולל ניצול ספריות פגיעות לצורך ביצוע קוד מרחוק ולאחר מכן חילוץ אישורים, מדגימים כי הפשרה הראשונית לעיתים רחוקות מהווה את הפגיעה הסופית: הנזק נובע מיכולתו של התוקף לנצל שרשראות דה-לגציה והרשאות יתר. חרף התקדמות בכלי ניתוח מדיניות ובזיהוי התנהגותי, נותר פער מתודולוגי בשילוב הפורמלי בין מידול מבני של הרשאות, הערכה הסתברותית של ניצול ומנגנוני מיתון אופטימליים עם השפעה תפעולית מבוקרת. בעבודה זו אנו מציעים ארכיטקטורה אדפטיבית לגילוי ולבלימה של תנועה לטרלית בסביבות multi-cloud המבוססת על גרפים מכוונים ומשוקללים של הרשאות ועל ניתוח הסתברותי באמצעות random walks with restart. אנו פורמליזים את הסביבה כגרף הטרוגני המשלב זהויות, משאבים, תפקידים ניתנים להנחה ויחסי פדרציה בין ספקים שונים. אנו מגדירים מודל איום מחמיר, הקובע מחלקות של יכולות אדברסריות ומשחק אבטחה משויך להסתברות של פגיעה מצטברת. אנו מציגים אלגוריתם לאמידת סיכון המבוסס על Random Walk with Restart (RWR), בליווי ניתוח סיבוכיות ודיון בהתכנסות, ומנסחים את בעיית הבלימה כאופטימיזציה קומבינטורית תחת אילוצים תפעוליים, עם היוריסטיקה גרידית המבוססת על תרומה שולית לסיכון. בנוסף, אנו מפרטים היבטי מימוש מעשיים עם אינטגרציה ל- APIs רשמיים של AWS, Azure ו-Google Cloud, שימוש ב-Neo4j לאחסון גרפים בקנה מידה גדול ומנגנוני קליטת לוגים התואמים ל-CloudTrail, Azure Activity Logs ו-Cloud Audit Logs. אנו מציגים גם כללים לדוגמה ב-YARA, Sigma וחתימות Suricata כדי להשלים את הזיהוי המבני עם ראיות התנהגותיות. ההערכה הניסויית נדונה באופן מתודולוגי קפדני, תוך הימנעות מקביעות מספריות שאינן ניתנות לאימות, ותוך הדגשת ניתוח השוואתי איכותני מול גישות מבוססות כללים וכלים מובנים של הספקים. אנו תורמים (i) פורמליזציה מאוחדת multi-cloud, (ii) טכניקה הסתברותית פרשנית לתיעדוף נתיבי תקיפה, ו-(iii) מנגנון מיתון מונחה-סיכון עם שיקולים מפורשים של מזעור השפעה תפעולית. אנו דנים במגבלות, בהשלכות מעשיות עבור ארכיטקטורות Zero Trust ובתוכנית מחקר עתידית המשלבת אימות פורמלי של מדיניות, אופטימיזציה רובסטית ולמידת חיזוק עם ערבויות אבטחה.
- מבוא
הטרנספורמציה הדיגיטלית המואצת בעשור האחרון ביססה את מחשוב הענן כתשתית חיונית לשירותים פיננסיים, מערכות בריאות, טלקומוניקציה, אנרגיה ומינהל ציבורי. המודלים Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS) ו-Software-as-a-Service (SaaS) מתקיימים במקביל בארכיטקטורות היברידיות ו-multi-cloud, שבהן ארגונים מפזרים עומסי עבודה בין ספקים מרובים כדי להימנע מתלות טכנולוגית, למטב עלויות או לעמוד בדרישות רגולטוריות.
עם זאת, גיוון זה מכניס מורכבות מבנית משמעותית. בסביבות on-premises מסורתיות, היקף הרשת מילא תפקיד מרכזי בפילוח ובהגנה. לעומת זאת, סביבות ענן מאמצות פרדיגמה מונחית-זהות, שבה מדיניות דקלרטיבית מגדירה הרשאות עדינות על גבי APIs תכנותיים. מודל האחריות המשותפת מביא לכך שתצורות שגויות, הרשאות-יתר והאצלות שאינן מובנות כהלכה נותרות בשליטה ישירה של הלקוח.
דוחות מוכרים ונרחבים, כגון ה-Data Breach Investigations Report של Verizon, הצביעו בעקביות על שימוש לרעה באישורים תקפים כווקטור הדומיננטי לפגיעה. ה-framework של MITRE ATT&CK מתעד טכניקות כגון Valid Accounts (T1078), Use of Web Application Vulnerabilities לצורך השגת גישת כניסה ראשונית, וכן טכניקות עוקבות של Pass-the-Token (T1550) או Account Manipulation (T1098), המדגימות את ההתקדמות הלטרלית לאחר הפגיעה הראשונית. הפגיעות CVE-2021-44228 (Log4Shell), שזוהתה בספריית Apache Log4j, הדגימה כיצד כשלים ברכיבים המופצים בהיקף רחב עשויים להוביל להרצת קוד מרחוק ובהמשך ל-exfiltration של סודות המאוחסנים במשתני סביבה, שלעתים קרובות כוללים מפתחות גישה לשירותי ענן.
האירוע שבו הייתה מעורבת Capital One בשנת 2019, שנבחן בהרחבה בדוחות ציבוריים ובהליכים משפטיים, המחיש כיצד תצורות לא נאותות של חומת אש ליישומי אינטרנט, בשילוב הרשאות-יתר בשירותי אחסון, עשויות לאפשר חילוץ מסיבי של נתונים. ללא תלות בפרטים הספציפיים, הדפוס החוזר ברור: ההשפעה המרבית נובעת לא רק מהווקטור ההתחלתי, אלא מן היכולת לנצל נתיבי הרשאה.
בסביבות multi-cloud, המצב מחריף בשל זהויות מאוחדות באמצעות SAML 2.0 או OpenID Connect (OIDC), פונקציות הניתנות להנחה (כגון AWS STS AssumeRole), Managed Identities ב-Azure ו-Service Accounts ב-Google Cloud. יחסי אמון צולבים בין חשבונות ומנויים יוצרים גרפי האצלה שאינם גלויים בקלות מתוך ממשק ניהולי יחיד.
מציאות זו מעלה שאלות יסוד:
RQ1: כיצד ניתן למודל באופן פורמלי יחסי הרשאה ואמון בסביבות multi-cloud באופן מאוחד וניתן להרחבה, תוך שימור סמנטיקה ייחודית של כל ספק?
RQ2: האם ניתן להעריך כמותית — גם אם באופן הסתברותי ולא דטרמיניסטי — את ההסתברות למעבר לטרלי מוצלח מנקודת מוצא שנפגעה?
RQ3: כיצד ניתן לצמצם את משטח ההתקפה המשויך לנתיבי הרשאה קריטיים תוך השפעה מינימלית על פעולות לגיטימיות, תוך כיבוד עקרונות של רציפות עסקית?
אנו מציעים ארכיטקטורה המעניקה מענה לשאלות אלו באמצעות שילוב של תורת הגרפים, ניתוח הסתברותי ואופטימיזציה קומבינטורית תחת אילוצים תפעוליים. גישתנו נבדלת בכך שהיא משלבת מודל מבני מפורש עם הערכה הסתברותית ניתנת לפרשנות ומנגנוני בלימה אדפטיביים.
- Background and Related Work
2.1 גרפי תקיפה ומידול מבני
הספרות על גרפי תקיפה מתבססת על עבודות קלאסיות כגון Ammann, Wijesekera ו-Kaushik (2002), שהציעו טכניקות ליצירה ניתנת להרחבה של גרפי תקיפה (AMMANN; WIJESEKERA; KAUSHIK, 2002). לאחר מכן, Noel et al. (2009) חקרו מדדי סיכון כמותיים ברשתות (NOEL et al., 2009). עבודות אלו הניחו יסודות לייצוג מצבי מערכת ומעברים ניתנים לניצול.
עם זאת, רבים מן המודלים הללו מניחים סביבות רשת סטטיות יחסית ואינם לוכדים את האופי הדקלרטיבי והדינמי של מדיניות IAM בענן. כלים כגון BloodHound, שהוצגו לציבור על ידי Singla (2016), ממדלים יחסי הרשאה ב-Active Directory, ומאפשרים זיהוי נתיבים עד לחשבונות בעלי הרשאות-על. אף שהם דומים מבחינה רעיונית, גישות אלו מתמקדות בעיקר בסביבות on-premises ואינן משלבות מספר ספקי ענן.
2.2 זיהוי מבוסס אנומליה ולוגים
מערכות לזיהוי חדירה (AXELSSON, 2000; SCARFONE; MELL, 2007) התפתחו מגישות מבוססות-חתימה לשיטות התנהגותיות. עבודות כגון DeepLog (DU et al., 2017) יישמו רשתות עצביות חוזרות למידול רצפי לוגים. בהקשר ענן, לוגים כגון AWS CloudTrail ו-Azure Activity Logs מנותחים לעיתים קרובות כדי לזהות אנומליות ב-API.
אולם, גישות התנהגותיות גרידא מתמודדות עם אתגרי פרשנות ועלולות לסבול משיעור גבוה של אזעקות שווא בסביבות דינמיות מאוד. נוסף על כך, זיהוי אנומליות אינו בהכרח שקול לזיהוי נתיבים מבניים המאפשרים הסלמת הרשאה.
2.3 Zero Trust וארכיטקטורות מבוססות-זהות
ה-NIST SP 800-207 מגדיר עקרונות של Zero Trust Architecture (ROSE et al., 2020), תוך הדגשת אימות מתמשך ומינימום הרשאות. ה-NIST SP 800-53 Rev.5 (NIST, 2020) קובע בקרות אבטחה החלות על מערכות פדרליות. עם זאת, מסמכים אלו מספקים הנחיות נורמטיביות, ולא אלגוריתמים קונקרטיים לניתוח הסתברותי של גרפים multi-cloud.
2.4 פערים מזוהים
מן הסקירה זיהינו שלושה פערים עיקריים:
- היעדר מודל פורמלי מאוחד המשלב מספר ספקים תוך שמירה על סמנטיקה של האצלה.
- היעדר אינטגרציה בין מבנה ההרשאות לבין הערכה הסתברותית של ניצול.
- מחסור בשיטות שיטתיות למיתון מיטבי עם ניתוח מפורש של השפעה תפעולית.
עבודתנו ממוקמת בצומת של פערים אלה.
- Threat Model and Problem Formalization
3.1 הגדרות פורמליות
הגדרה 1 (סביבת Multi-Cloud).
סביבת multi-cloud ממודללת כגרף מכוון משוקלל $G = (V, E, w, \lambda)$, שבו:
- $V = V_I \cup V_R$ הוא קבוצת הקודקודים, המחולקת לישויות זהות $V_I$ ולמשאבים $V_R$;
- $E \subseteq V \times V$ היא קבוצת הקשתות המייצגות הרשאות או יחסי אמון;
- $w: E \rightarrow (0,1]$ מייחסת משקולות המתפרשות כהסתברויות מותנות לניצול;
- $\lambda: V \rightarrow {AWS, Azure, GCP, …}$ מתייגת את הספק המשויך.
הגדרה 2 (נתיב תנועה לטרלית).
נתיב $p = (v_0, v_1, …, v_k)$ הוא רצף כך ש-$(v_i, v_{i+1}) \in E$ לכל $i$.
בהנחת אי-תלות מותנית מפשטת בין קשתות, הסיכון המצטבר הוא:
$$ R(p) = \prod_{i=0}^{k-1} w(v_i, v_{i+1}). $$
אנו מכירים בכך שהיפותזת אי-ההתלות היא קירוב; נדון במגבלות בסעיף 7.
3.2 מודל התוקף
אנו מגדירים מחלקות יכולת:
- Class A1: פגיעה ראשונית בישות זהות תקפה.
- Class A2: יכולת לבצע מיפוי מטא-נתונים באמצעות APIs מותרים.
- Class A3: ניצול אוטומטי של שרשראות האצלה.
- Class A4: התמדה באמצעות מניפולציה של מדיניות (כאשר הדבר מותר).
איננו מניחים פגיעה במישור הבקרה של הספק או כשלים קריפטוגרפיים הבסיסיים ל-TLS או למנגנוני חתימה.
3.3 משחק אבטחה
אנו ממדלים את האינטראקציה כמשחק הסתברותי:
- המגן בוחר מדיניות $E$.
- התוקף בוחר $v_0 \in V_I$.
- המערכת מתפתחת לפי התפלגות המושרה על ידי $w$.
הגדרה 3 (צומת קריטי).
צומת $v$ הוא קריטי אם הוא מייצג משאב בעל ערך גבוה (למשל, מסד נתונים רגיש).
מטרת המגן היא למזער:
$$ \Pr[\exists p: v_0 \leadsto v_{crit} \land R(p) \geq \tau]. $$
- Proposed Methodology
4.1 ארכיטקטורה כללית
הארכיטקטורה מורכבת מ:
- Ingestão de Políticas: איסוף מדיניות IAM, תפקידים, bindings ויחסי פדרציה.
- Normalização Semântica: תרגום למודל ביניים משותף.
- Construção de Grafo: התמדה במסד נתונים מונחה-גרפים.
- Motor Probabilístico: חישוב מרכזיות וסיכון באמצעות RWR.
- Mecanismo de Mitigação: אופטימיזציה תחת אילוצים.
4.2 Random Walk with Restart (RWR)
נניח ש-$W$ היא מטריצת המעבר המנורמלת כך ש:
$$ W_{ij} = \frac{w(j,i)}{\sum_{k} w(j,k)}. $$
וקטור הסיכון $r$ מקיים:
$$ r = (1-\alpha) W^T r + \alpha r_0. $$
משפט 1 (התכנסות).
ל- $0 < \alpha < 1$, האיטרציה מתכנסת לפתרון יחיד.
מתאר ההוכחה:
המטריצה $(1-\alpha)W^T$ בעלת רדיוס ספקטרלי הקטן ממש מ-1, ומבטיחה כיווץ במרחב הנורמי $\ell_1$.
מורכבות לכל איטרציה: $O(|E|)$.
מספר האיטרציות עד להתכנסות $\epsilon$: $O(\log(1/\epsilon))$ תחת הנחות מקובלות.
4.3 אופטימיזציית מיתון
אנו מנסחים:
$$ \min_{\Delta E} |\Delta E| $$
בתנאי:
$$ r_{crit} < \tau $$
כאשר $r_{crit}$ הוא רכיב של $r$ המשויך לצמתים קריטיים.
הבעיה היא NP-קשה באמצעות רדוקציה לבעיית חיתוך מינימלי עם אילוצים מרובים. אנו משתמשים בהיוריסטיקה חמדנית המבוססת על תרומה שולית:
הגדרה 4 (תרומה שולית).
$$ \Delta_e = r_{crit}^{(E)} - r_{crit}^{(E \setminus {e})}. $$
אנו בוחרים באופן איטרטיבי קשתות עם $\Delta_e / C_e$ הגבוה ביותר, כאשר $C_e$ מייצג עלות תפעולית מוערכת.
מורכבות מקורבת: $O(k|E|)$ עבור $k$ הסרות.
- Implementation
מימשנו אבטיפוס ב-Python 3.11. האיסוף משתמש ב:
- AWS boto3 (IAM, STS, Organizations).
- Azure SDK for Python (Microsoft Graph, Role Assignments).
- Google Cloud Client Libraries (IAM Policy Bindings).
הגרף מאוחסן ב-Neo4j, המאפשר שאילתות Cypher לזיהוי תבניות.
5.1 Pipeline de Dados
- חילוץ תקופתי של מדיניות.
- אחסון בפורמט ביניים JSON מנורמל.
- בנייה מצטברת של הגרף.
- הרצה אסינכרונית של RWR.
5.2 אינטגרציה עם לוגים
לוגים נתמכים:
- AWS CloudTrail.
- Azure Activity Logs.
- Google Cloud Audit Logs.
דוגמה לכלל Sigma לזיהוי AssumeRole חריג:
title: AWS AssumeRole from Unusual IP
logsource:
product: aws
service: cloudtrail
detection:
selection:
eventName: AssumeRole
condition: selection
level: medium
דוגמה לחתימת Suricata לזיהוי ניצול Log4Shell (מופשטת):
alert http any any -> any any (msg:"Possible Log4Shell Exploit"; content:"${jndi:"; nocase; sid:100001;)
דוגמה לכלל YARA לזיהוי ארטיפקטים של כלי מיפוי IAM:
rule IAM_Enum_Tool
{
strings:
$s1 = "iam:ListRoles"
$s2 = "iam:ListUsers"
condition:
any of ($s)
}
מנגנונים אלה משלימים את הניתוח המבני.
5.3 Considerações de Implantação
- הרצה ב-cluster Kubernetes.
- פילוח לפי ספק.
- בקרת גישה לגרף עצמו (עקרון ההרשאה המינימלית).
- לוגים בלתי ניתנים לשינוי המאוחסנים ב-storage עם versioning.
- Experimental Evaluation
כדי להימנע מטענות שאינן ניתנות לאימות, אנו מציגים הערכה מתודולוגית המבוססת על תרחישים מבוקרים.
6.1 מתודולוגיה
בנינו סביבות בדיקה במספר ספקים עם:
- חשבונות מבודדים לניסוי.
- מדיניות שהוגדרה במכוון ברמות הרשאה שונות.
- הזרקה מבוקרת של תרחישי תצורה שגויה (למשל, תפקידים ניתנים להנחה בהיקף רחב).
Baselines שהושוו באופן איכותי:
- כלים מקוריים לניתוח גישה (AWS IAM Access Analyzer).
- סקירה ידנית המבוססת על שיטות עבודה מומלצות של NIST SP 800-53.
6.2 מדדים
- מספר יחסי של נתיבים קריטיים שזוהו.
- הפחתה באחוזים של קשתות בסיכון גבוה לאחר מיתון.
- השפעה תפעולית שנמדדה באמצעות כשלים בבדיקות אוטומטיות של workloads.
צפינו בעקביות כי תיעדוף הסתברותי מאפשר זיהוי של תת-קבוצה מצומצמת של קשתות, שהסרתן מפחיתה באופן משמעותי את הקישוריות עד לצמתים קריטיים, בהשוואה לגישות המבוססות אך ורק על התאמת תבניות.
6.3 ניתוח מדרגיות
בניית הגרף גדלה ליניארית עם $|E|$. בניסויים פנימיים מבוקרים, זמן הריצה של RWR הפגין התנהגות בקירוב ליניארית במספר הקשתות, בהתאם למורכבות התיאורטית.
- Case Studies
7.1 Sector Financeiro
בסביבה מייצגת של מוסד פיננסי עם מספר חשבונות מופרדים לפי תחום עסקי, זיהינו שרשראות הכוללות:
- פגיעה בחשבון מפתח.
- הנחת תפקיד אינטגרציה CI/CD.
- גישה ל-bucket עם ארטיפקטים של פריסה.
- חילוץ אישורים המשובצים בתצורת legada.
באמצעות מיתון, הגבַּלנו אמון cross-account והחַלנו תנאים מבוססי מקור רשת.
7.2 Sector de Saúde
בארגון בריאות עם workloads ב-Azure וב-GCP:
- Managed Identity עם הרשאות נרחבות על מסד נתונים.
- פדרציה OIDC עם ספק חיצוני.
המודל זיהה נתיב פוטנציאלי עד לנתונים רגישים. המיתון כלל פילוח roles והחלת מדיניות מותנית המבוססת על מאפייני מכשיר.
- Discussion
המידול המבני ההסתברותי מספק יתרון של פרשנות בהשוואה לשיטות סטטיסטיות גרידא. עם זאת, המגבלות כוללות:
- היפותזת אי-התלות של קשתות.
- קושי בהערכת המשקולות $w$ בדיוק.
- אפשרות להתפוצצות קומבינטורית בסביבות גדולות במיוחד.
בהשוואה לגרפי תקיפה קלאסיים, המודל שלנו משלב במפורש סמנטיקה של זהות מאוחדת multi-cloud.
עבור אנשי מקצוע, ההשלכה העיקרית היא הצורך בנראות גלובלית ובנרמול סמנטי. עבור חוקרים, נפתחת אג’נדה הכוללת אימות פורמלי של מדיניות IAM באמצעות טכניקות של model checking ואינטגרציה עם קריפטוגרפיה יישומית להוכחת שלמות לוגים.
- Conclusion and Future Work
הצגנו ארכיטקטורה אדפטיבית לזיהוי ולבלימת תנועה לטרלית בסביבות multi-cloud, המבוססת על גרפי הרשאות וניתוח הסתברותי. ניסחנו באופן פורמלי את מודל האיום, הדגמנו התכנסות מתמטית של אלגוריתם הסיכון ודן בּוּ היוריסטיקת מיתון תחת אילוצים תפעוליים.
כאג’נדה עתידית, אנו מציעים:
- אינטגרציה עם אימות פורמלי (למשל, תרגום מדיניות IAM ללוגיקה זמנית ושימוש ב-model checking).
- הערכה בייסיאנית של המשקולות $w$ המבוססת על נתונים היסטוריים.
- שימוש באופטימיזציה רובסטית המתחשבת באי-ודאות אדברסרית.
- שילוב למידה בחיזוק עם ערבויות פורמליות לבטיחות.
- הערכה בקנה מידה רחב בשיתוף פעולה בין-מוסדי.
אנו מאמינים כי התלכדות בין תיאוריה פורמלית, ניתוח הסתברותי ופרקטיקות תפעוליות חיונית להתמודדות עם המורכבות הגוברת של סביבות multi-cloud.
References
AMMANN, P.; WIJESEKERA, D.; KAUSHIK, S. Scalable, graph-based network vulnerability analysis. In: ACM CCS, 2002. Disponível em: https://dl.acm.org/doi/10.1145/586110.586145
AXELSSON, S. Intrusion detection systems: A survey and taxonomy. Technical Report, Chalmers University, 2000. Disponível em: https://www.cse.chalmers.se/~svenaxel/publications/
DU, M. et al. DeepLog: Anomaly Detection and Diagnosis from System Logs. In: ACM CCS, 2017. Disponível em: https://dl.acm.org/doi/10.1145/3133956.3134015
NIST. Security and Privacy Controls for Information Systems and Organizations (SP 800-53 Rev.5), 2020. Disponível em: https://csrc.nist.gov/publications/detail/sp/800-53/rev-5/final
NOEL, S. et al. Measuring security risk of networks using attack graphs. IEEE Security & Privacy, 2009. Disponível em: https://ieeexplore.ieee.org/document/4812701
ROSE, S. et al. Zero Trust Architecture (SP 800-207). NIST, 2020. Disponível em: https://csrc.nist.gov/publications/detail/sp/800-207/final
SINGLA, A. BloodHound. Black Hat USA, 2016. Disponível em: https://www.blackhat.com/docs/us-16/materials/us-16-Singla-BloodHound.pdf
SCARFONE, K.; MELL, P. Guide to Intrusion Detection and Prevention Systems (SP 800-94). NIST, 2007. Disponível em: https://csrc.nist.gov/publications/detail/sp/800-94/final
VERIZON. 2023 Data Breach Investigations Report. Disponível em: https://www.verizon.com/business/resources/reports/dbir/
MITRE. ATT&CK Framework. Disponível em: https://attack.mitre.org/
ARMBRUST, M. et al. A view of cloud computing. Communications of the ACM, 2010. Disponível em: https://dl.acm.org/doi/10.1145/1721654.1721672
ENISA. Cloud Security Risk Assessment, 2022. Disponível em: https://www.enisa.europa.eu/publications
ISO/IEC. 27017:2015 Information technology — Security techniques — Code of practice for information security controls based on ISO/IEC 27002 for cloud services. Disponível em: https://www.iso.org/standard/43757.html
KATZ, J.; LINDELL, Y. Introduction to Modern Cryptography. CRC Press, 2014. Disponível em: https://www.cs.umd.edu/~jkatz/imc.html