הצפנה ברמת העמודה באמצעות Cloud KMS

ב-Cloud Key Management Service (Cloud KMS) אפשר להצפין את המפתחות להצפנת נתונים (DEK) שעוזרים להגן על ערכי עמודות ספציפיות בטבלאות ב-BigQuery. שימוש בפונקציות הצפנה של AEAD עם מפתחות Cloud KMS וקבוצות מפתחות ארוזות מספק שכבת הגנה שנייה ברמת העמודה, ועוזר לצמצם את הסיכון לחשיפת מפתחות בטקסט פשוט בשאילתות.

מבוא

כדי לספק שכבת הגנה נוספת, ב-Cloud KMS המפתח להצפנת נתונים (DEK) מוצפן באמצעות מפתח שני להצפנת מפתחות הצפנה (KEK). ב-BigQuery, הפניה למערך מפתחות מוצפן במקום למערך מפתחות בטקסט פשוט עוזרת לצמצם את הסיכון לחשיפת המפתח. ה-KEK הוא קבוצת מפתחות הצפנה סימטריים שמאוחסנים באופן מאובטח ב-Cloud KMS, ומנוהלים באמצעות תפקידים והרשאות של ניהול זהויות והרשאות גישה (IAM).

‫BigQuery תומך בפונקציות הצפנה דטרמיניסטיות ולא דטרמיניסטיות. בהצפנה דטרמיניסטית, אם גם הנתונים המאוחסנים וגם הנתונים המאומתים הנוספים (אופציונלי) זהים, אז גם המידע המוצפן (ciphertext) זהה. כך אפשר לתמוך בצבירה ובצירופים על סמך העמודה המוצפנת. בהצפנה לא דטרמיניסטית, המידע המוצפן (ciphertext) שמאוחסן הוא ייחודי, בלי קשר לנתונים המוצפנים, וכך נמנעים אשכולות, צבירה וצירופים.

בזמן הרצת השאילתה, אתם מספקים את נתיב המשאב של ה-KEK ב-Cloud KMS ואת המידע המוצפן (ciphertext) מה-DEK הארוז. ‫BigQuery שולח קריאה ל-Cloud KMS כדי לפתוח את ה-DEK, ואז משתמש במפתח הזה כדי לפענח את הנתונים בשאילתה. הגרסה הלא עטופה של ה-DEK מאוחסנת בזיכרון רק למשך השאילתה, ואז מושמדת.

אם אתם משתמשים ב-Cloud KMS באזור שבו יש תמיכה ב-Cloud External Key Manager, אתם יכולים להשתמש במפתחות שמבוססים על Cloud EKM ב-Cloud KMS.

תרחישים לדוגמה

תרחישים לדוגמה להצפנה באמצעות מפתחות Cloud KMS:

  • נתונים שמוצפנים באופן חיצוני וצריך לאחסן אותם ב-BigQuery בלי לאחסן את קבוצת המפתחות כטקסט פשוט. אחר כך אפשר לייצא את הנתונים מהטבלה או לפענח אותם באמצעות שאילתת SQL.
  • "בקרת גישה כפולה" לנתונים מוצפנים ב-BigQuery. כדי לקרוא נתונים בטקסט לא מוצפן, המשתמש צריך לקבל הרשאה גם לטבלה וגם למפתח ההצפנה.
מטריצת הרשאות משתמש
הרשאה בטבלה אין הרשאה בטבלה
הרשאות במפתח לקרוא ולפענח נתונים מוצפנים. אין גישה.
אין הרשאות למפתח לקרוא נתונים מוצפנים. אין גישה.

אם למשתמש יש הרשאת גישה למפתח KMS ולגישה לקבוצת המפתחות העטופה, פונקציות SQL יכולות לפתוח את קבוצת המפתחות ולפענח את המידע המוצפן (ciphertext). המשתמשים יכולים גם להשתמש ב-API בארכיטקטורת REST או ב-CLI של Cloud KMS כדי לבטל את האריזה של קבוצת המפתחות.
בשאילתה לדוגמה הבאה נעשה שימוש בפונקציות SQL של KMS כדי לפענח מידע מוצפן (ciphertext) לא דטרמיניסטי:

SELECT
  AEAD.DECRYPT_STRING(
    KEYS.KEYSET_CHAIN(@kms_resource_name, @first_level_keyset),
    ciphertext,
    additional_authenticated_data)
FROM
  ciphertext_table
WHERE
  ...

תרחיש שימוש לדוגמה

נניח שבהטמעה מסוימת, מיקודים נחשבים למידע רגיש. אפשר להוסיף את נתוני המיקוד לטבלה ב-BigQuery באמצעות פונקציית ההצפנה של AEAD, וכך להצפין את העמודה Zipcode. בדוגמה הזו אנחנו משתמשים בפונקציה AEAD.ENCRYPT עם הפונקציה לניהול קבוצת מפתחות עטופה. הפונקציה KEYS.KEYSET_CHAIN מפענחת את מפתח ההצפנה הדיגיטלי באמצעות ה-KEK, והפונקציה AEAD.ENCRYPT מעבירה את המידע ל-KMS.

שרשרת קבוצת המפתחות להצפנה ולפענוח מבטיחה שהמפתח להצפנת נתונים (DEK) מוצפן או ארוז באמצעות KEK, ומועבר עם ה-KEK הזה. ה-DEK העטוף מפוענח או נפתח בתוך פונקציית ה-SQL, ואז משמש להצפנה או לפענוח של נתונים.

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

תמונה

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

תמונה

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

התחביר הנתמך לשימוש בפונקציות לא דטרמיניסטיות כולל את האפשרויות הבאות:

AEAD.ENCRYPT(
  KEYS.KEYSET_CHAIN(kms_resource_name, first_level_keyset),
  plaintext,
  additional_authenticated_data)
AEAD.DECRYPT_STRING(
  KEYS.KEYSET_CHAIN(kms_resource_name, first_level_keyset),
  ciphertext,
  additional_authenticated_data)
AEAD.DECRYPT_BYTES(
  KEYS.KEYSET_CHAIN(kms_resource_name, first_level_keyset),
  ciphertext,
  additional_authenticated_data)

התחביר של הפונקציות AEAD.DECRYPT_BYTES,‏ AEAD.ENCRYPT,‏ AEAD.DECRYPT_STRING ו-KEYS.KEYSET_CHAIN.

תחביר של פונקציה דטרמיניסטית

התחביר הנתמך לשימוש בפונקציות דטרמיניסטיות כולל את האפשרויות הבאות:

DETERMINISTIC_ENCRYPT(
  KEYS.KEYSET_CHAIN(kms_resource_name, first_level_keyset),
  plaintext,
  additional_data)
DETERMINISTIC_DECRYPT_STRING(
  KEYS.KEYSET_CHAIN(kms_resource_name, first_level_keyset),
  ciphertext,
  additional_data)
DETERMINISTIC_DECRYPT_BYTES(
  KEYS.KEYSET_CHAIN(kms_resource_name, first_level_keyset),
  ciphertext,
  additional_data)

התחביר של הפונקציות DETERMINISTIC_DECRYPT_BYTES,‏ DETERMINISTIC_ENCRYPT,‏ DETERMINISTIC_DECRYPT_STRING ו-KEYS.KEYSET_CHAIN.

תפקידים והרשאות

לרשימת התפקידים ב-Cloud KMS, קראו את המאמר הרשאות ותפקידים ב-Cloud KMS.

מגבלות

להצפנה באמצעות Cloud KMS יש את המגבלות וההגבלות הבאות:

  • המפתחות של Cloud KMS מוגבלים לאותו אזור או מספר אזורים כמו השאילתה. מסיבות שקשורות לאמינות, אסור להשתמש במפתחות גלובליים של Cloud KMS.

  • אי אפשר לבצע רוטציה של קבוצת מפתחות עטופה באמצעות הפונקציה KEYS.ROTATE_KEYSET.

  • הפרמטרים הקבועים בשאילתה ב-BigQuery גלויים למשתמשים בתוכנית לביצוע שאילתה. הגורם הזה יכול להשפיע על הפרמטרים kms_resource_name ו-first_level_keyset של הפונקציה KEYSET_CHAIN. המפתחות אף פעם לא נחשפים בטקסט פשוט, וצריך הרשאה למפתח Cloud KMS כדי לפענח את קבוצת המפתחות העטופה. הגישה הזו מבטיחה שהמפתחות לא ייחשפו דרך תוכנית לביצוע שאילתה אבחונית, אלא אם למשתמש יש הרשאה לפענח את קבוצת המפתחות.

  • כשמשתמשים בהצפנה ברמת העמודה עם סיווגי אבטחה מבוססי-סוג, יש את המגבלות הבאות:

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

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

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

לפני שמתחילים

כדי לעבוד עם מפתחות Cloud KMS, קבוצות מפתחות, טבלאות מוצפנות ופונקציות דטרמיניסטיות ולא דטרמיניסטיות, צריך לבצע את הפעולות הבאות (אם עדיין לא ביצעתם אותן):

  1. יוצרים Google Cloud פרויקט.

  2. יוצרים מערך נתונים ב-BigQuery.

  3. יצירת אוסף מפתחות של Cloud KMS.

  4. יוצרים מפתח Cloud KMS לעמודה מוצפנת עם רמת ההגנה של התוכנה או של מודול אבטחת החומרה (HSM).

  5. לתת למשתמשים הרשאות לעבוד עם מפתחות של Cloud KMS, הצפנה ופענוח.

שימו לב למושגים הבאים, שמוזכרים בקטעים הבאים:

  • ‫PROJECT_ID: השם של הפרויקט בענן של Google.

  • ‫DATASET_NAME: השם של מערך הנתונים ב-BigQuery.

  • ‫LOCATION_ID: המיקום של מערך הנתונים ב-BigQuery.

  • ‫TABLE_NAME: השם של הטבלה ב-BigQuery.

  • ‫KEY_RING_ID: השם של אוסף המפתחות ב-Cloud KMS.

  • ‫KEY_ID: השם של מפתח Cloud KMS.

  • ‫KMS_KEY: מפתח Cloud KMS‏ (KEK) בפורמט הזה:

    'gcp-kms://projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KEY_RING_ID/cryptoKeys/KEY_ID'

    דוגמה למפתח Cloud KMS:

    'gcp-kms://projects/myProject/locations/us/keyRings/myKeyRing/cryptoKeys/myKeyName'
    
  • ‫KMS_KEY_SHORT: דומה ל-KMS_KEY אבל בפורמט הזה:

    projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KEY_RING_ID/cryptoKeys/KEY_ID
  • ‫KEYSET_DECODED: קבוצת מפתחות מפוענחת כרצף BYTES. הפלט נראה דומה לזה של קבוצת מפתחות עטופים מפוענחים.

    למרות שהפונקציות של קבוצות מפתחות מחזירות קבוצות מפתחות כבייטים, פלט המשתמש מוצג כמחרוזת מקודדת. כדי להמיר קבוצת מפתחות מקודדת לקבוצת מפתחות מפוענחת, קראו את המאמר פענוח של קבוצת מפתחות ב-Cloud KMS.

  • ‫KEYSET_ENCODED: קבוצת מפתחות מקודדת בתור STRING. הפלט נראה דומה לזה של קבוצת מפתחות עטופה ומקודדת.

    כדי להמיר קבוצת מפתחות מקודדת לקבוצת מפתחות מפוענחת, קראו את המאמר פענוח של קבוצת מפתחות ב-Cloud KMS.

  • ‫WRAPPED_KEYSET_DECODED: קבוצת מפתחות עטופה ומפוענחת כרצף BYTES. הנה דוגמה לפלט של הפקודה הזו:

    b'\x0a$\x00\xa6\xee\x12Y\x8d|l"\xf7\xfa\xc6\xeafM\xdeefy\xe9\x7f\xf2z\xb3M\
    xf6"\xd0\xe0Le\xa8\x8e\x0fR\xed\x12\xb7\x01\x00\xf0\xa80\xbd\xc1\x07Z\\
    \xd0L<\x80A0\x9ae\xfd(9\x1e\xfa\xc8\x93\xc7\xe8\...'
    

    למרות שהפונקציות של קבוצות מפתחות עטופות מחזירות קבוצות מפתחות עטופות כבייטים, פלט המשתמש מוצג כמחרוזת מקודדת. כדי להמיר קבוצת מפתחות מקודדת ועטופה לקבוצת מפתחות מפוענחת ועטופה, קראו את המאמר פענוח של קבוצת מפתחות ב-Cloud KMS.

  • ‫WRAPPED_KEYSET_ENCODED: קבוצת מפתחות עטופה ומקודדת בתור STRING. הנה דוגמה לפלט של הפקודה הזו:

    'CiQApu4SWTozQ7lNwITxpEvGlo5sT2rv1tyuSv3UAMtoTq/lhDwStwEA8KgwvX7CpVVzhWWMkRw
    WZNr3pf8uBIlzHeunCy8ZsQ6CofQYFpiBRBB6k/QqATbiFV+3opnDk/6dBL/S8OO1WoDC+DdD9
    uzEFwqt5D20lTXCkGWFv1...'
    

    כדי להמיר קבוצת מפתחות מקודדת עטופה לקבוצת מפתחות מפוענחת עטופה, קראו את המאמר פענוח של קבוצת מפתחות ב-Cloud KMS.

ניהול מפתחות

בקטעים הבאים מפורטות משימות נפוצות שאפשר לבצע באמצעות מפתחות Cloud KMS.

יצירת קבוצת מפתחות

אפשר ליצור קבוצות מפתחות עטופות או קבוצות מפתחות גולמיות. כדי לעשות את זה, מבצעים את השלבים בקטעים הבאים.

יצירת קבוצת מפתחות גולמיים

מריצים את השאילתה הבאה כדי ליצור קבוצת מפתחות עם מפתח מסוג DETERMINISTIC_AEAD_AES_SIV_CMAC_256.

SELECT KEYS.NEW_KEYSET('DETERMINISTIC_AEAD_AES_SIV_CMAC_256') AS raw_keyset

יצירת קבוצת מפתחות עטופה

מריצים את השאילתה הבאה כדי ליצור קבוצת מפתחות עטופה ב-Cloud KMS עם מפתח מסוג DETERMINISTIC_AEAD_AES_SIV_CMAC_256.

SELECT KEYS.NEW_WRAPPED_KEYSET(
  KMS_KEY,
  'DETERMINISTIC_AEAD_AES_SIV_CMAC_256')

פענוח של קבוצת מפתחות

למרות שפונקציות SQL שמחזירות קבוצות מפתחות יוצרות את קבוצות המפתחות בפורמט BYTES, התוצאה שמוצגת למשתמש מקודדת ומוצגת בפורמט STRING. כדי להמיר את המחרוזת המקודדת הזו לרצף בייטים מפוענח שאפשר להשתמש בו כפונקציות מילוליות להצפנת מפתחות, משתמשים בשאילתה הבאה.

פענוח של קבוצת מפתחות עטופה

מריצים את השאילתה הבאה כדי לפענח קבוצת מפתחות ארוזה של Cloud KMS.

SELECT FORMAT('%T', FROM_BASE64(WRAPPED_KEYSET_ENCODED'))

פענוח של קבוצת מפתחות גולמית

מריצים את השאילתה הבאה כדי לפענח קבוצת מפתחות גולמית.

SELECT FORMAT('%T', FROM_BASE64(KEYSET_ENCODED'))

עטיפה מחדש של קבוצת מפתחות עטופה

כדי לארוז מחדש קבוצת מפתחות ארוזה של Cloud KMS באמצעות מפתח חדש של Cloud KMS, מריצים את השאילתה הבאה: ‫KMS_KEY_CURRENT מייצג את ה-KMS_KEY החדש שמשמש להצפנת קבוצת המפתחות. ‫KMS_KEY_NEW מייצג את ה-KMS_KEY החדש שמשמש להצפנת קבוצת המפתחות.

SELECT KEYS.REWRAP_KEYSET(
  KMS_KEY_CURRENT,
  KMS_KEY_NEW,
  WRAPPED_KEYSET_DECODED)

רוטציה של קבוצת מפתחות עטופה

מריצים את השאילתה הבאה כדי להחליף קבוצת מפתחות עטופים של Cloud KMS במפתח מסוג DETERMINISTIC_AEAD_AES_SIV_CMAC_256.

SELECT KEYS.ROTATE_WRAPPED_KEYSET(
  KMS_KEY,
  WRAPPED_KEYSET_DECODED,
  'DETERMINISTIC_AEAD_AES_SIV_CMAC_256')

יצירת קבוצת מפתחות גולמית מקבוצת מפתחות עטופה

חלק מפונקציות ההצפנה דורשות קבוצת מפתחות גולמית. כדי לפענח קבוצת מפתחות עטופה ב-Cloud KMS וליצור קבוצת מפתחות גולמית:

  1. יצירת קבוצת מפתחות עטופה.

  2. בכלי שורת הפקודה של BigQuery, מזינים את הפקודות הבאות כדי לשמור קבוצת מפתחות עטופה בקובץ בשם keyset_to_unwrap, לפענח את קבוצת המפתחות העטופה ולהפיק את הפלט בפורמט KEYSET_DECODED:

    echo WRAPPED_KEYSET_ENCODED | base64 -d > /tmp/decoded_wrapped_key
    gcloud kms decrypt \
    --ciphertext-file=/tmp/decoded_wrapped_key \
    --key=KMS_KEY_SHORT \
    --plaintext-file=/tmp/keyset_to_unwrap.dec \
    --project=PROJECT_ID
    od -An --format=o1 /tmp/keyset_to_unwrap.dec | tr ' ' '\'

יצירת קבוצת מפתחות עטופה מקבוצת מפתחות גולמית

חלק מפונקציות ההצפנה דורשות קבוצת מפתחות עטופה של Cloud KMS. כדי להצפין קבוצת מפתחות גולמית וליצור קבוצת מפתחות עטופה:

  1. יצירת קבוצת מפתחות גולמיים.

  2. בכלי שורת הפקודה של BigQuery, מזינים את הפקודות הבאות כדי לשמור קבוצת מפתחות גולמית בקובץ בשם keyset_to_wrap, להצפין את קבוצת המפתחות הגולמית ולהפיק את הפלט בפורמט WRAPPED_KEYSET_DECODED:

    echo KEYSET_ENCODED | base64 -d > /tmp/decoded_key
    gcloud kms encrypt \
    --plaintext-file=/tmp/decoded_key \
    --key=KMS_KEY_SHORT \
    --ciphertext-file=/tmp/keyset_to_wrap.dec \
    --project=PROJECT_ID
    od -An --format=o1 /tmp/keyset_to_wrap.dec | tr ' ' '\'

יצירת מפתח עטוף לפונקציית DLP

בפונקציות DLP, צריך מפתח קריפטוגרפי ואז משתמשים במפתח הזה כדי לקבל מפתח ארוז.

  1. כדי ליצור מפתח קריפטוגרפי חדש, מריצים את הפקודה הבאה בשורת הפקודה. גודל המפתח יכול להיות 16, 24 או 32 בייטים. בדוגמה הבאה נעשה שימוש במפתח של 16 בייטים:

    openssl rand 16 > rand.key.16.bin
    
  2. עוטפים את המפתח שנוצר בגודל 16 בייטים באמצעות מפתח KMS. מקרה לדוגמה:

    KEYRING=projects/myproject/locations/us/keyRings/kms-test
    KEY=projects/myproject/locations/us/keyRings/kms-test/cryptoKeys/test-Kek
    PROJECT="myproject"
    
    gcloud kms encrypt --project $PROJECT --location us --keyring $KEYRING --key $KEY --plaintext-file ./rand.key.16.bin --ciphertext-file ./rand.key.16.wrapped
    
  3. עכשיו אפשר לקבל את הליטרל BYTES של המפתח העטוף או את פורמט base64 של המפתח העטוף.

    • ליטרל של בייטים

      username:~/tmp$ od -b ./rand.key.16.wrapped | cut -d ' ' -f 2- | head -n -1 | sed  -e 's/^/ /' | tr ' ' '\'
      

      הפלט אמור להיראות כך:

      \012\044\000\325\155\264\153\246\071\172\130\372\305\103\047\342\356\061\077\014\030\126\147\041\126\150\012\036\020\202\215\044\267\310\331\014\116\233\022\071\000\363\344\230\067\274\007\340\273\016\212\151\226\064\200\377\303\207\103\147\052\267\035\350\004\147\365\251\271\133\062\251\246\152\177\017\005\270\044\141\211\116\337\043\035\263\122\340\110\333\266\220\377\247\204\215\233
      
    • פורמט Base64

      username:~/tmp$ base64 ./rand.key.16.wrapped
      

      הפלט אמור להיראות כך:

      CiQA1W20a6Y5elj6xUMn4u4xPwwYVmchVmgKHhCCjSS3yNkMTpsSOQDz5Jg3vAfguw6KaZY0gP/Dh0NnKrcd6ARn9am5WzKppmp/DwW4JGGJTt8jHbNS4EjbtpD/p4SNmw==
      

קבלת מספר המפתחות בקבוצת מפתחות

מריצים את השאילתה הבאה כדי לקבל את מספר המפתחות בקבוצת מפתחות גולמית.

  1. אם אתם עובדים עם קבוצת מפתחות עטופה, קודם צריך ליצור קבוצת מפתחות גולמית.

  2. מריצים את השאילתה הזו עם קבוצת המפתחות הגולמית:

    SELECT KEYS.KEYSET_LENGTH(KEYSET_DECODED) as key_count;

איך מקבלים ייצוג ב-JSON של קבוצת מפתחות

מריצים את השאילתה הבאה כדי להציג ייצוג ב-JSON של קבוצת מפתחות גולמית.

  1. אם אתם עובדים עם קבוצת מפתחות עטופה, קודם צריך ליצור קבוצת מפתחות גולמית.

  2. מריצים את השאילתה הזו עם קבוצת המפתחות הגולמית:

    SELECT KEYS.KEYSET_TO_JSON(KEYSET_DECODED);

הצפנה ופענוח

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

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

מריצים את השאילתה הבאה כדי ליצור טבלה ולאחסן קבוצת מפתחות עטופה של Cloud KMS עם הצפנה דטרמיניסטית בעמודה שנקראת encrypted_content.

  1. יצירת קבוצת מפתחות עטופה.

  2. מצפינים עמודה באמצעות קבוצת המפתחות העטופה.

    CREATE OR REPLACE TABLE DATASET_NAME.TABLE_NAME AS
      SELECT DETERMINISTIC_ENCRYPT(
        KEYS.KEYSET_CHAIN(KMS_KEY, WRAPPED_KEYSET_DECODED),
        'plaintext',
        '') AS encrypted_content

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

כדי לפענח באופן דטרמיניסטי עמודה שמכילה תוכן מוצפן, מריצים את השאילתה הבאה באמצעות קבוצת מפתחות עטופה של Cloud KMS. השאילתה הזו מניחה שאתם מפנים לטבלה עם עמודה בשם encrypted_content.

SELECT DETERMINISTIC_DECRYPT_STRING(
  KEYS.KEYSET_CHAIN(KMS_KEY, WRAPPED_KEYSET_DECODED),
  encrypted_content,
  '')
FROM DATASET_NAME.TABLE_NAME

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

עיינו במאמר הצפנה דטרמיניסטית של עמודה באמצעות קבוצת מפתחות עטופה, אבל החליפו את DETERMINISTIC_ENCRYPT ב-AEAD.ENCRYPT. חשוב לוודא שקבוצת המפתחות היא מסוג AEAD_AES_GCM_256.

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

אפשר לעיין במאמר פענוח דטרמיניסטי של עמודה באמצעות קבוצת מפתחות עטופה, אבל צריך להחליף את DETERMINISTIC_DECRYPT_STRING ב-AEAD.DECRYPT_STRING. חשוב לוודא שקבוצת המפתחות היא מסוג AEAD_AES_GCM_256.

המאמרים הבאים