מיסור שלא לפרסום
בעיית המיליונרים > פרוטוקול SMP

ב-OTR כל החישובים של פרוטוקול SMP מבוצעים בחבורה  G מסדר ראשוני  q באורך 1536 סיביות. המספר הראשוני הוא בדיוק זה המופיע בתקן RFC 3526 בשם קבוצה 5. בנוסף קיים יוצר  g_{1}, שניהם ידועים ומפורסמים (בתקן היוצר הוא 2). ההנחה בתחילת הפרוטוקול שאליס ובוב מחזיקים בסודות פרטיים  x ו- y בהתאמה שאליהם מתייחסים כאל אלמנטים של השדה  \mathbb {Z} _{q} והמטרה של הפרוטוקול היא להוכיח ש- y=x מבלי לחשוף מאומה פרט לעובדה האם הם שווים או לא. הפרוטוקול מבוסס על הרעיון של אפס ידיעה, שאומר בתמצית היכולת להוכיח ידיעת סוד מבלי לחשוף מידע כלשהו לגבי הסוד עצמו שלא היה אפשר לדעת בדרכים אחרות. כל מהלכי הפרוטוקול מלווים בהוכחת אפס ידיעה על מנת להבטיח שלא שונו בטעות או בזדון (כלומר הבטחת הגינות).
תחילה, לצורך הפרוטוקול נחוצים עוד שני יוצרים אותם מכינים ומשתפים בשיטת דיפי-הלמן: אליס בוחרת אלמנט אקראי  a_{2}\in _{R}\mathbb {Z} _{q} ושולחת לבוב את  g_{1}^{a_{2}} ובוב בוחר אלמנט אקראי  b_{2}\in _{R}\mathbb {Z} _{q} ושולח לאליס את  g_{1}^{b_{2}} ושניהם מחשבים את  g_{2}=g_{1}^{a_{2}b_{2}}. הם חוזרים על התהליך המתואר עם שני אלמנטים אקראיים נוספים  a_{3} ו- b_{3} ומחליפים ביניהם את  g_{1}^{a_{3}} ו- g_{1}^{b_{3}} ומתקבל ערך משותף נוסף  g_{3}=g_{1}^{a_{3}b_{3}}. צריך לזכור שכל החישובים נעשים מודולו  q.
בשלב השני, מסתירים את הסודות  x ו- y. אליס ובוב בוחרים אלמנטים אקראיים נוספים  a ו- b בהתאמה ומחשבים ומחליפים ביניהם את  (P_{a},Q_{a})=(g_{3}^{a},g_{1}^{a}g_{2}^{x}) וכן  (P_{b},Q_{b})=(g_{3}^{b},g_{1}^{b}g_{2}^{y}). אליס משתמשת ב- a_{3} כדי לחשב את  \textstyle {R_{a}=\left({\frac {Q_{a}}{Q_{b}}}\right)^{a_{3}}}. באופן דומה בוב מחשב את  \textstyle {R_{b}=\left({\frac {Q_{a}}{Q_{b}}}\right)^{b_{3}}} ואז הם מחליפים ביניהם את התוצאות. שניהם מחשבים את הערך המשותף  R_{ab}=R_{a}^{b_{3}}=R_{b}^{a_{3}} ואז היות שמתקיים:
לכן בשלב ההוכחה, כדי לוודא ש- x=y כל שעליהם לעשות הוא לבדוק האם  \textstyle {R_{ab}=\left({\frac {P_{a}}{P_{b}}}\right)}. אף אחד מהצדדים לא יודע מהו  g_{2}^{a_{3}b_{3}} שהוא יוצר אקראי של  G לכן אם  x\neq y הערך  \textstyle {\left(R_{ab}\cdot {\frac {P_{b}}{P_{a}}}\right)} יהיה אלמנט אקראי כלשהו ב- G שאינו תורם שום מידע לאף אחד ואילו אם  x=y הוא יהיה שווה 1 כי החזקה מתאפסת. כדי להבטיח הגינות כלומר שהצדדים פעלו בדיוק לפי הפרוטוקול אליס נדרשת להוכיח לבוב (וההפך) שאותו סוד שימש להכנת  P_{a} ו- Q_{a} וכן שהיא יודעת את הסוד שלה  x. כדי למנוע מאליס ובוב מלהעתיק את ההוכחות אחד לשל השני, בשלב הכנת היוצרים הפרוטוקול מנצל טכניקה מאלגוריתם של שנור בשילוב פונקציית הגיבוב SHA-2 עם תחיליות שונות למשל  H_{n}(x) הוא גיבוב של הקבוע  n שאליו משורשר  x. יש לשים לב שאקראיות הערך  \textstyle {\left(R_{ab}\cdot {\frac {P_{b}}{P_{a}}}\right)} אינה תלויה באנטרופיה של הסודות  x או  y, במילים אחרות הפרוטוקול יעבוד היטב גם אם הסודות המשותפים אינם מספרים אקראיים אלא מילים בעלי משמעות בשפה כלשהי עם יתירות גבוהה.
הביטחון של הפרוטוקול המתואר ידוע והוא מבוסס על העיקרון של אפס ידיעה וכן על בעיית דיפי הלמן. כל עוד הבעיה קשה לפתרון אפילו על ידי יריב בעל עוצמת מחשוב גבוהה הפרוטוקול מספק "כמעט אפס ידיעה" במובן שאליס ובוב יכולים להיות בטוחים שאף אחד לא יוכל ללמוד מחילופי המסרים של הפרוטוקול שום פרט לגבי הסודות שלהם (שהם למעשה אותו ערך, אם לא קיים מתחזה באמצע) מלבד לענות על השאלה האם הסודות זהים או לא. המתקיף אינו יכול לבצע התקפת כוח גס בלתי מקוונת על הערכים הללו אפילו אם הם קלים לניחוש כי דרושה אינטראקציה בזמן אמת עם המשתתפים בפרוטוקול. מספיק ניסיון כושל אחד כדי לעלות על המתחזה ולחשוף את ההתקפה.