הפונקציה Pseudo-Random Function (PRF) מאפשרת ליצור פלטים יציבים ושרירותיים באורך פסאודו אקראי לקלט נתון.
מכיוון ש-Tink פועלת על ערכות מפתחות, פרימיטיב זה חושף קבוצה תואמת של PRF במקום PRF אחד. מפתחות ה-PRF נוספים לאינדקס באמצעות מזהה מפתח של 32 ביט. אפשר להשתמש בה כדי לסובב את המפתח שמשמש לצנזור פיסת מידע, בלי לאבד את השיוך הקודם.
ל-PRF יש את המאפיינים הבאים:
- דטרמיניסטי: חישוב PRF לגבי קלט נתון תמיד יניב את אותו הפלט.
- אקראיות: אי אפשר להבחין בין הפלט של PRF לבין בייטים אקראיים.
בחירת סוג מפתח
אנחנו ממליצים להשתמש ב-HMAC_SHA256_PRF
לרוב השימושים, אבל יש גם אפשרויות נוספות.
באופן כללי, התנאים הבאים נכונים:
- מהירות
HMAC_SHA512_PRF
עשויה להיות מהירה יותר, בהתאם לגודל הקלט ולדרישות הספציפיות של החומרה שבה אתם משתמשים. HMAC_SHA512_PRF
הוא המצב השמרני ביותר שאפשר להשתמש בו למספר בלתי מוגבל של הודעות.- המהירות של
AES_CMAC_PRF
היא המהירה ביותר במערכות שתומכות בהאצת חומרה של AES-NI.
רמת אבטחה מינימלית
- ללא ידיעת המפתח, לא ניתן להבחין בין ה-PRF לבין פונקציה אקראית
- אבטחה של 128 ביט לפחות, גם בתרחישים של משתמשים מרובים (כשתוקף לא מתמקד במפתח ספציפי, אלא כל מפתח מקבוצה של עד 232 מפתחות)
- פלט זמין של לפחות 16 בייטים
תרחישים לדוגמה
תרחישים לדוגמה של PRF כוללים צנזור דטרמיניסטי של פרטים אישיים מזהים (PII), פונקציות גיבוב (hash) מפתחות ויצירה של מזהי משנה שלא מאפשרים להצטרף למערך הנתונים המקורי בלי לדעת מה המפתח.
אפשר להשתמש ב-PRFs כדי להוכיח אותנטיות של הודעה, אבל מומלץ להשתמש בפרימיטיב של MAC לתרחיש לדוגמה הזה, כי יש בו תמיכה באימות, הימנעות מבעיות אבטחה שמתרחשות לעיתים קרובות במהלך האימות ושימוש אוטומטי ברוטציית מפתחות. הוא גם מאפשר להשתמש באלגוריתמים לא דטרמיניסטיים.