לצורך כך יש להגדיר שני פרימיטיבים קריפטוגרפיים: (1) צופן מהצורה formula_80 להצפנת התוכן formula_5 עם formula_77 שצריך להיות חדש עבור כל תוכן. הצופן צריך להיות מהיר ולא אמור לגרום להתנפחות התוכן עקב ההצפנה. הוא יכול להיות צופן זרם בטוח כמו Salsa20. וכן (2) צופן מהצורה formula_83 עם מפתח ארוך-טווח formula_84 שהמרכז משתף עם כל משתמש בנפרד. יכול להיות צופן בלוקים כמו AES. מסיבות של יעילות רצוי ש-formula_77 יהיה קצר (להגנה על זכויות יוצרים אין צורך בהצפנה כבדה) ורק המפתח ארוך הטווח צריך להיות באורך מלא (בדרך כלל 128 סיביות). מפני שאורך הכותר תלוי בגודל הבלוק של צופן הבלוקים, אפשר להשתמש בחלופה חסכונית כך; formula_86 במקום בלוק מלא. כאשר הביטוי formula_87 פירושו formula_57 הסיביות הראשונות של הערך formula_34 וכן formula_90 הוא מחרוזת אקראית כלשהי באורך בלוק מלא.
תיאור הסכימה.
1. אלגוריתם אתחול.
כל משמש formula_91 מקבל מידע סודי formula_71 באופן כזה שעבור כל formula_93 כאשר formula_94, מאפשר לו לחלץ את המפתח formula_95 לקבוצה שלו formula_96. את formula_95 אפשר להכין בשתי דרכים, בחירה אקראית (אמיתית) ונפרדת עבור כל מפתח, מה שמספק ביטחון אבסולוטי מהיבט של תורת האינפורמציה כמו פנקס חד-פעמי או כפונקציה של מידע סודי אחר שאז ביטחונו נשען על הפונקציה הפסאודו-אקראית מה שמספק ביטחון חישובי.
2. אלגוריתם שידור.
מרכז שמעוניין לשדר או להפיץ תוכן מוצפן פועל כדלהלן;
3. אלגוריתם פענוח.
מקבל מורשה formula_91 הקולט את השידור: formula_107 פועל כדלהלן:
עיקר העבודה ביישום הסכימה האמורה היא (1) הכנת אוסף של כל תת-הקבוצות האפשריות של המשתמשים הרשומים (2) הקצאת מפתח לכל תת-קבוצה אפשרית באוסף, (3) "כיסוי" כל המשתמשים הלגיטימיים פחות המבוטלים בתת-קבוצות נפרדות ו-(4) הגדרת שיטה שבה כל משתמש יוכל למצוא את המפתח המתאים לקבוצה שלו. אלגוריתם Subset-Cover ניתן למימוש באופן הבא: אוסף הקבוצות מתאים לכל תת-העצים בעץ בינארי מלא בעל formula_12 עלים, כל עלה כנגד משתמש אחד. סך הכול עלים וצמתים הוא formula_116. כל צומת formula_117 מייצג תת-עץ בעץ הכללי, כל משתמש formula_91 נמנה עם תת-הקבוצה formula_96 אך ורק אם שורש תת-הקבוצה formula_117 הוא אב קדום שלו. לכל צומת מוקצה מפתח formula_95 וכל משתמש formula_91 מקבל formula_123 מפתחות המשויכים לכל הצמתים במסלול המקשר מהעלה שלו לשורש העץ. אם אוסף המשתמשים formula_124 שייכים לקבוצה formula_8, מפרידים את יתר העלים בעץ לתת-קבוצות נפרדות על ידי הכנת "עץ שטיינר" מכוון, בקיצור (formula_126 שהוא עץ פורש מינימלי הנוצר על ידי formula_26 העלים formula_128 המקושרים לשורש העץ באמצעות תוספת קשתות המינימלית האפשרית. כעת תת-הקבוצות האחרות הן למעשה כל תת-העצים "התלויים", כלומר העצים אשר שורשיהם סמוכים לצמתים בעץ formula_129 בעלי דרגה 1, אך אינם נמצאים בו. אוסף הקבוצות הללו נקרא "כיסוי" ומספרם הוא בערך formula_130. ישנן כמה דרכים כדי למצוא במהירות וביעילות חברות באחת מהקבוצות של משתמש נתון formula_91, אפשר להשתמש למשל בטבלת גיבוב או בקוד תיקון שגיאות. רצוי שהמידע בכותר יהיה דחוס ככל האפשר. עם אופטימיזציה אפשר להגיע לתצורה שבה החיפוש נעשה בסיבוכיות של formula_132 השוואות. כמות המפתחות שכל משתמש יאחסן תעמוד על formula_21, מספר המפתחות המוצפנים שהשרת משדר formula_134 ואילו התוכן מוצפן רק פעם אחת.
CPRM/CPPM.
Content Protection for Recordable Media and Pre-Recorded Media היא טכנולוגית ניהול זכויות דיגיטלי שפותחה ב-2001 על ידי 4C Entity (התאגדות של ארבעה ענקי אלקטרוניקה; IBM, אינטל, פנסוניק וטושיבה). CPRM/CPPM נועד בעיקר למצב 'חסר מעמד' (statelss). זהו מנגנון הכולל שיטות להגבלה ושליטה על מדיה דיגיטלית פיזית כמו תקליטורי DVD, כרטיסי זיכרון כמו SD או זיכרון הבזק בהתקן מארח (מחשב אישי או נגן).
מרכז רישוי כלשהו מפיץ רשימת מפתחות סודיים להטמעה בכל התקן בעת ייצורו. מרכז הרישוי מספק גם בלוק מפתח (MKB) שנועד לצריבה בכל מדיה מתאימה. בלוק המפתח (Media Block Key) למעשה נחשב מעין "כותר" המכיל טקסט-מוצפן של מפתח השיחה איתו הוצפנה המדיה. ההנחה היא שהבלוק ממוקם בשטח מיוחד שבו מתאפשרת כתיבה חד-פעמית בלבד. המדיה הצרובה על גבי התקליטור למעשה מקודדת במצב מוצפן כאשר מפתח ההצפנה מוסתר בכותר. כאשר המשתמש מכניס תקליטור, ההתקן מחלץ את מפתח השיחה מהכותר בעזרת המפתח הסודי המוטמע בו וכך מפענח את המדיה שעל גבי התקליטור.
האלגוריתם שמיישם CPRM הוא למעשה וריאציה של שיטת פיאט-נאור שנקראת סכימת Subset-Cover. הוא מגדיר טבלה עם formula_135 שורות ו-formula_136 עמודות, ומתייחסים לכל התקן (מקלט) כאל אוסף של formula_136 כניסות בטבלה, אחת בכל עמודה, כלומר formula_138 כאשר formula_139. אוסף כל תת-הקבוצות האפשריות formula_66 המוגדר על ידי האלגוריתם מתאים לאוסף התקנים שנמצאים באותה כניסה בעמודה נתונה. למשל formula_141 כולל את כל ההתקנים formula_138 כך ש-formula_143. עבור כל שורה formula_57 ועמודה formula_145 הסכימה מקצה מפתח המיוצג על ידי formula_146. בכל התקן formula_138 מוטמע מידע פרטי (סודי) formula_71 הכולל formula_136 מפתחות formula_150.
עבור קבוצה formula_8 של התקנים "מבוטלים" (Revoked), האלגוריתם מחלק את formula_74 כך שכל תת-קבוצה formula_153 מכוסה רק אם formula_154. בעוד שהסכימה מבטיחה שהתקן לא מאושר לא ייכלל בכיסוי, יש סיכוי נמוך שהתקן מאושר לא ייכלל גם הוא. כלומר ייתכן התקן לגיטימי שייחשב כלא תקף. בניגוד לשיטת נאור, תת-הקבוצות בסכימת CPRM/CPPM אינן זרות לגמרי ולכן הכיסוי אינו משולם. יתרה מזו הסיכוי שהתקן מאושר יפסל גדל ככל ש-formula_26 גדל (מספר ההתקנים המבוטלים).
לשם השוואה לשיטת נאור אם formula_156 ו-formula_157 אזי מנגנון CPRM/CPPM דורש formula_24 הצפנות, כמות האחסון במקלט או התקן עומדת על formula_21 מפתחות, וכמות החישוב הדרושה בצד ההתקן היא רק פעולת פענוח אחת. למשל ב-DVD בלוק המפתח MKB מכיל 3MB. חיסרון נוסף הוא בעובדה ש-formula_26 מוגבל, כלומר מספר המכשירים המבוטלים המקסימלי שאפשר להגדיר בשיטה זו הוא בערך 10,000. בשיטת נאור אפשר להגיע ל-250,000.
שיטת Logical-tree-hierarchy פותחה בעיקר לרב-נתיב במצב מקוון ונכללה בהצעה לתקן RFC-2627. המערכת מנהלת מפתח הצפנה משותף יחיד עבור קבוצת כל המשתתפים הפעילים formula_1 שנקרא Net Key שמועבר אליהם באמצעות פרוטוקול העברת מפתח קריפטוגרפי כמו דיפי-הלמן. המערכת מוסיפה או מסירה משתתף (אחד בכל מהלך) על ידי אלגוריתם הקצאת מפתח שבו המערכת מחשבת ומקצה מפתחות הצפנה לכל המשתתפים הלגיטימיים. התהליך מנוהל על ידי שרת שמדווח לכל משתתפים על המהלכים שבוצעו. המשתתפים מיוצגים על ידי העלים בעץ בינארי מאוזן בגובה formula_21, לכל צומת formula_117 מוקצה מפתח formula_164. כל משתתף formula_128 מקבל (בתהליך שנקרא Rekeying באמצעות המפתח הראשי) את כל המפתחות המשויכים לכל הצמתים במסלול המקשר משורש העץ לעלה שלו (לדוגמה בתרשים משתתף מספר 3 מקבל את המפתחות B,I,M). כדי להסיר את העלה formula_91 מקצים מפתחות חדשים formula_167 לכל הצמתים formula_117 לאורך המסלול המקשר מהעלה שהוסר ועד שורש העץ. כעת אם formula_117 הוא צומת הנמצא על המסלול, formula_170 צומת בן הנמצא על המסלול ו-formula_171 הוא צומת בן שאינו על מסלול. את המפתח formula_167 של הצומת formula_117 מצפינים על ידי המפתחות formula_174 ו-formula_175 (שימו לב שהאחרון לא התעדכן) כלומר formula_176. במקרה ש-formula_117 הוא צומת אב של העלה formula_91 מבצעים רק הצפנה אחת עם הצאצא של formula_91. המפתחות החדשים המוצפנים משודרים לכל המשתתפים הפעילים. האלגוריתם מחייב העברה של formula_20 מפתחות בכל פעולה כזו, כל משתתף נדרש לאחסן formula_181 מפתחות וכמות העבודה המקסימלית הנדרשת מכל משתתף היא formula_21 הצפנות (בממוצע נדרשת רק הצפנה אחת).
להלן טבלה להמחשה של תהליך הפצת מפתחות (Rekeying) של פרוטוקול LKH שתי העמודות האחרונות מתייחסות למספר המשתתפים שצריכים לקבל שידור בכל פעם שנוסף או מבוטל משתתף אחד בשידור.
Subset Difference.