שְׁאֵלָה:
מה ההבדל בין דיפי הלמן גנרטור 2 ל -5?
gertvdijk
2014-03-28 18:17:05 UTC
view on stackexchange narkive permalink

יצירת פרמטרים של דיפי הלמן ב- OpenSSL יכולה להיעשות באופן הבא:

  $ openssl dhparam - out dh2048.pem 2048 יצירת פרמטרים של DH, 2048 ביט בטוח בטוח ארוך, גנרטור 2 זה הולך לקחת הרבה זמן [...]  

"הגנרטור 2" משך את תשומת ליבי שם. נראה שאני יכול לבחור בין מחולל 2 ל -5 כפי שמצוין בדף האדם ( man dhparam ):

  -2, -5 The generator to use, או 2 או 5. 2 הוא ברירת המחדל. אם הוא קיים, מתעלמים מקובץ הקלט ויוצרים פרמטרים במקום.  
  • מה זה מחולל 2 ו -5? במקום 2 להשפיע על האבטחה?
  • האם זה ספציפי ל- OpenSSL?
שתיים תשובות:
Tom Leek
2014-03-28 18:56:41 UTC
view on stackexchange narkive permalink

דיפי-הלמן עובד בתת-קבוצה של מספרים שלמים מודולו ראשוני p . כלומר יש לך מחולל g שהוא מודול שלם קונבנציונאלי p . לגנרטור זה יש סדר r שהוא המספר השלם החיובי הקטן ביותר כך ש g r = 1 mod p . שתי המערכות העוסקות ב- DH בוחרות מפתחות פרטיים a ו b בהתאמה כמספרים שלמים בטווח נתון, והמפתחות הציבוריים המתאימים של DH (אותם הם מחליפים מעל החוט) הם ga mod p ו- gb mod p .

DH מאובטח כל עוד:

  • p הוא "תקין": מספיק גדול (1024 ביט לפחות) ולא מיוצר עם "מבנה מיוחד" שמקל על לוגריתם דיסקרטי. פריים שנוצר באופן אקראי בגודל הנכון יהיה בסדר.
  • המחלק העיקרי הגדול ביותר של r יש גודל של לפחות 2k סיביות, כאשר הוא מכוון לאבטחה רמת " k ביטים". בעיקרון, המחלק העיקרי הגדול ביותר של r צריך להיות מספר שלם ראשי בגודל של לפחות 160 סיביות (200 סיביות ומעלה יעדיפו על פי הסטנדרטים של ימינו).
  • המפתחות הפרטיים של DH נוצרים בטווח של גודל לפחות 22k בערך. בעיקרון, a ו- b צריכים להיות גם 2k - מספרים שלמים של ביט.

הערך המדויק של מחולל g לא משנה, כל עוד שני הצדדים משתמשים באותו ערך. ניתן להראות שאם מישהו יכול לחשב לוגריתם דיסקרטי יחסית למחולל g הוא יכול לחשב אותו באותה קלות יחסית לכל מחולל g ' של אותה תת-קבוצה. לפיכך, מה שחשוב הוא סדר תת-הקבוצה , ולא המחולל. אתה יכול להשתמש ב 2 או ב 5 , זה לא ישנה את האבטחה.

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

ישנם פרטים עם זאת. לוודא כי לגנרטור הנבחר אכן יש הזמנה עם מחלק ראש גדול מספיק יכול להיות קשה. כברירת מחדל, openssl dhparam ייצור מה שמכונה "פריים בטוח", כלומר הוא מייצר ראשוני אקראי q עד שהוא ימצא כזה ש p = 2q + 1 הוא גם מספר שלם ראשי. הסדר של כל g modulo q הוא תמיד מחלק של p-1 . לפיכך, באמצעות פריים בטוח, מובטחת ל- OpenSSL כי הסדר r של כל גנרטור g בטווח 2..p-2 ( בפרט 2 ו 5 ) יהיו שווים ל q או 2q , ולכן תמיד מכפיל של q שהוא פריים מספיק גדול.

אם OpenSSL יצר p אקראית אקראית מבלי לוודא שזה "פריים בטוח", אז הסדר בפועל של g = 2 או 5 יהיה קשה לחשב במדויק (זה יהיה כרוך בפקטורינג p-1 וזה יקר).

בהקשרים מסוימים שאינם DH, כלומר אלגוריתם החתימה DSA, חייבת להיות תת-קבוצה דמויית DH כך שסדר הגנרטור שווה בדיוק לפריים לא גדול מדי q , במקום להיות רק מכפלה של q . במקרה כזה, OpenSSL (עם מתג שורת הפקודה -dsaparam ) ייצור תחילה q ואז p = qt + 1 לערכים אקראיים של t עד שיימצא פריים; והגנרטור יתקבל על ידי לקיחת s modulo p אקראיות ומחשוב g = s t modulo p (זה בהכרח מניב 1 או מספר שלם של סדר בדיוק q ). בעת הפקת פרמטרים של DSA, הגנרטור אינו יכול להכריח בקלות (או בכלל) להיות מספר שלם קטן ספציפי כמו 2 או 5 . עבור DSA, הגנרטור הוא "גדול".

אם ה- DDH חייב להחזיק (למשל, למשל, ElGamal) האם עלינו למצוא גנרטור "גדול", או, כמו ב- DH רגיל אם אנו משתמשים ב- P פריים בטוח, האם אנו יכולים לבחור רק 2 או 5 כ- g?
לפחות 1024 ביט זה אולי לא נכון יותר.
Karol Babioch
2014-03-28 18:47:08 UTC
view on stackexchange narkive permalink

What is generator 2 and 5?

Understanding this requires some amount of mathematical background. Diffie-Hellmann operates on cyclic groups. These groups all have in common that there is at least one generator, i.e. an element that can be used to generate all other elements of the group.

Let's look at an example:

Z_11*: Set of integers i = 0,1,...,10 for which gcd(i,11) = 1. This is an abelian group under multiplication modulo 11.

Generator: a = 2

a^1  =           2 mod 11,a^2  =           4 mod 11,a^3  =           8 mod 11,a^4  = (  16 =)  5 mod 11, a^5  = (  32 =) 10 mod 11,a^6  = (  64 =)  9 mod 11,a^7  = ( 128 =)  7 mod 11,a^8  = ( 256 =)  3 mod 11,a^9  = ( 512 =)  6 mod 11,a^10 = (1024 =)  1 mod 11

As you can see, we generated the whole group, i.e. we've got each element as result. Note however, that this will work on all kind of groups, and is not limited to multiplicative group of integers modulo p.

How does choosing 5 instead of 2 affect the security?

No, the Diffie-Hellman problem is all about the size of the cyclic group, not about the element(s) that generate the group. So when both elements are generators for a group, it doesn't make a difference. Choosing 2 as generator has a couple of advantages, though, because you can implement the underlying algorithms more efficiently.

Personally I wouldn't change the default here, unless there is a very good reason to. This is obviously not the case, otherwise you wouldn't have to ask ;).

Is this specific to OpenSSL?

No, this follows from the mathematics of cyclic groups itself.



שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 3.0 עליו הוא מופץ.
Loading...