דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. תרגיל מתמטי של הסתרת מזהה רץ

תרגיל מתמטי של הסתרת מזהה רץ

מתוזמן נעוץ נעול הועבר תכנות
92 פוסטים 14 כותבים 3.9k צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    כתב ב נערך לאחרונה על ידי dovid
    #1

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

    השאלה:
    אולם אני תוהה, לכאורה חייבת להיות דרך מתמטית פשוטה להסתיר מספר ע"י תרגיל הפיך (שניתן לשחזק את המספר ע"י תרגיל הפוך). הרי מדובר ב"הצפנה סימטרית" כי אני הוא המפענח והמצפין, אני ממש טיפש בחשבון אבל נראה לי הגיוני שיש חשבון פשוט של "תוסיף 14 ותחלק לחמש ותוסיף את השארית" שהוא מצד אחד הפיך ומצד שני קשה לניחוש, ופה אני שואל האם אתם מכירים או חושבים על רעיון מתאים לזה? כי מהאינטרנט אני מתרשם שהבודדים (למה?) שמנסים להסתיר מזהה רץ עושים זאת באמצעות הצפנה פשוטה או רצינית.

    dovidD M nigunN Men770M chvC 5 תגובות תגובה אחרונה
    0
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      השיב לdovid ב נערך לאחרונה על ידי
      #2

      ב"ה מצאתי פתרון, אני בודק את יישומו:
      https://ericlippert.com/2013/11/14/a-practical-use-of-multiplicative-inverses/
      הגעתי לזה מפה:
      https://stackoverflow.com/a/8555047/1271037

      תגובה 1 תגובה אחרונה
      2
      • קומפיונטק מנותק
        קומפיונטק מנותק
        קומפיונט
        כתב ב נערך לאחרונה על ידי קומפיונט
        #3
        פוסט זה נמחק!
        dovidD תגובה 1 תגובה אחרונה
        1
        • קומפיונטק מנותק
          קומפיונטק מנותק
          קומפיונט
          כתב ב נערך לאחרונה על ידי קומפיונט
          #4

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

          דוגמא קטנה:

          בחרו מספר שהוא יהיה ה'מפתח', בשביל הדוגמא נבחר במספר: 613.

          בחרו מספר שאותו תרצו להצפין, לצורך הדוג' ניקח את המספר 234.

          עכשיו נבצע xor (במחשבון מדעי או ב'מצב מתכנת' זה הסימון ^) על שני המספרים באמצעות התרגיל:

          613 ^ 234, והתוצאה היא: 655. יופי, זהו המספר המוצפן.

          עכשיו כדי לפענח אותו בחזרה נעשה את אותה הפעולה שוב עם המספר המוצפן:

          613 ^ 655, והתוצאה היא: 234!

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

          תגובה 1 תגובה אחרונה
          6
          • dovidD מנותק
            dovidD מנותק
            dovid ניהול
            השיב לקומפיונט ב נערך לאחרונה על ידי dovid
            #5

            @קומפיונט תודה על התשובות המפורטות, הם לא רלוונטיות עבורי:
            א. אין שום היגיון שאני אצפין בקליינט, ברגע שהמידע נמצא ולו רגע אחד בקליינט שום הצפנה מאוחרת לא תציל את החשיפה.
            ב. ביקשתי בפירוש תרגיל מתמטי פשוט, ולא הצפנה. אתה מתחיל לכתוב הסברים ארוכים על הצפנה שאני משתמש בה הרבה בעוד בשאלה פירשתי ברור שאני מחפש תרגיל חשבוני פשוט. למה לא להשתמש בהצפנה? כדי לחסוך במשאבים של צד שרת, כל בקשה תגרור את הפעולה הזו.
            ג. לגבי XOR אני מייד חשבתי עליו, אבל בבדיקה שערכתי שמתי לב שאם אני מבקר ביקורים עוקבים המספרים גם הם עוקבים במידה רבה. אני די משוכנע שזה מאפשר לפורץ למצוא את המפתח בקלות, אם מישהו יודע שאני טועה אשמח כי זה הכי קל.
            הנה XOR למספרים עוקבים על מספר רנדומלי:
            159866
            159865
            159864
            159871
            159870
            159869
            159868
            159859
            159858
            159857

            קומפיונטק תגובה 1 תגובה אחרונה
            1
            • קומפיונטק מנותק
              קומפיונטק מנותק
              קומפיונט
              השיב לdovid ב נערך לאחרונה על ידי קומפיונט
              #6
              פוסט זה נמחק!
              dovidD תגובה 1 תגובה אחרונה
              -1
              • dovidD מנותק
                dovidD מנותק
                dovid ניהול
                השיב לקומפיונט ב נערך לאחרונה על ידי dovid
                #7

                @קומפיונט אמר בתרגיל מתמטי של הסתרת מזהה רץ:

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

                אז בבקשה אל תיקח את הבמה של שאלתי לכתוב מה אפשר לעשות במקרים אחרים!

                @קומפיונט אמר בתרגיל מתמטי של הסתרת מזהה רץ:

                ומה זה הצפנה אם לא תרגיל מתמטי?!
                תסביר מה אתה צריך

                אני מסביר רק שיש פה ניקים שיותר כותבים מאשר קוראים (לפעמים זה קורה גם לי).
                ביקשתי חשבון פשוט. הצפנה זה חשבון מתמטי סבוך. כתבתי שחור על גבי לבן בשאלה הראשונית שהפתרון המקובל הוא הצפנה, וזה ידוע לי.
                למה אני רוצה חשבון פשוט? כי זול למחשב. שלוש פעלות חיבור וכפל לוקחים למחשב משאבים כנראה לפחות פי מאה פחות מהצפנה כל שהיא שמבוססת על המון המון פעולות. זה אמנם עדיין ממש פשוט למחשב (גם ככה כל בקשה מוצפנת בתשובה בגלל הSSL), אבל אין סיבה שאעזור למתקפת DDOS ואתן לה עוד בשר, רק משיקול כה פשוט של הסתרת מזהה כשיש אלטרנטיבות פשוטות יותר כמו הXOR שהזכרת רק טיפה משוכלל יותר (וזה מה שבסוף מצאתי אבל לא הבנתי בדיוק איך ליישם).

                קומפיונטק חגיח 2 תגובות תגובה אחרונה
                0
                • קומפיונטק מנותק
                  קומפיונטק מנותק
                  קומפיונט
                  השיב לdovid ב נערך לאחרונה על ידי קומפיונט
                  #8
                  פוסט זה נמחק!
                  חגיח dovidD 2 תגובות תגובה אחרונה
                  -1
                  • חגיח מנותק
                    חגיח מנותק
                    חגי
                    השיב לdovid ב נערך לאחרונה על ידי חגי
                    #9

                    @dovid

                    btoa(x * 20e20)
                    

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

                    אם אתה רוצה להוסיף שכבת אובפוסקציה, תעשה הצפנת קיסר עם מפתח בסדר עולה למחרוזת בסיס 64 (להזיז בתו 1, אחרי זה ב-2 וכו')

                    dovidD תגובה 1 תגובה אחרונה
                    2
                    • חגיח מנותק
                      חגיח מנותק
                      חגי
                      השיב לקומפיונט ב נערך לאחרונה על ידי
                      #10

                      @קומפיונט אמר בתרגיל מתמטי של הסתרת מזהה רץ:

                      סורי, אבל לא יודע מה זה 'ניק'

                      השמות האנונימיים שאנשים מתחבאים מאחוריהם בפורום, הניק האנונימי שלי זה "חגי".

                      תגובה 1 תגובה אחרונה
                      4
                      • dovidD מנותק
                        dovidD מנותק
                        dovid ניהול
                        השיב לקומפיונט ב נערך לאחרונה על ידי dovid
                        #11
                        פוסט זה נמחק!
                        תגובה 1 תגובה אחרונה
                        0
                        • dovidD מנותק
                          dovidD מנותק
                          dovid ניהול
                          השיב לחגי ב נערך לאחרונה על ידי dovid
                          #12

                          @חגי אמר בתרגיל מתמטי של הסתרת מזהה רץ:

                          @dovid

                          btoa(x * 20e20)
                          

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

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

                          אם אתה רוצה להוסיף שכבת אובפוסקציה, תעשה הצפנת קיסר עם מפתח בסדר עולה למחרוזת בסיס 64 (להזיז בתו 1, אחרי זה ב-2 וכו')

                          אתה צודק, זה די פשוט וזה מה שעושות כנראה ספריות בהם השתמשתי (למשל https://hashids.org/javascript/).
                          אבל אני תהיתי האם אין איזה שלוש ארבע פעולות חשבוניות של כפל/חילוק/חיבור/שארית/xor/חזקה שמסתירה באופן יעיל לגמרי (מה שהבאת לא יעיל ברמה גבוהה בכלל למרות שזה מספיק לחלוטין לצרכי, אבל השאלה שלי נותרת לתיאוריה).

                          תגובה 1 תגובה אחרונה
                          0
                          • M מחובר
                            M מחובר
                            mekev
                            השיב לdovid ב נערך לאחרונה על ידי
                            #13

                            @dovid אמר בתרגיל מתמטי של הסתרת מזהה רץ:

                            אני מעוניין שלא יוכלו לדעת את המספר הרץ של הנתונים, כדי לא להסיק מזה סדרי גודל של תרומות

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

                            למה שלא ישקיע עשר אגורות בתרומה למטרה החשובה
                            ואז הוא יקבל 'קבלה מוכרת' עם ?... 
                            מספר רץ .... (0012)
                            כעבור יומיים יתרום שוב עשר אגורות ויקבל קבלה מספר 0017.....

                            (או שהקבלות המוכרות לצורכי מס מופקות לפי סדר רץ בכל הארגון
                            ואז שוב ניתן לקבל סדר גודל של פעילות כמותית
                            [כספית, לא ניתן לדעת גם אם יודעים את המידע לעיל])


                            נ.ב.
                            הנ"ל כמובן לא מתייחס לכניסות

                            dovidD M 2 תגובות תגובה אחרונה
                            5
                            • dovidD מנותק
                              dovidD מנותק
                              dovid ניהול
                              השיב לmekev ב נערך לאחרונה על ידי dovid
                              #14

                              @mekev אין במקרה הנוכחי קבלות מס.
                              מי ששולח ידוע לי שיש לזה פתרונות ע"י כמה סדרות של אותיות אנגליות.

                              תגובה 1 תגובה אחרונה
                              1
                              • י מנותק
                                י מנותק
                                יוסף בן שמעון
                                כתב ב נערך לאחרונה על ידי
                                #15

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

                                dovidD תגובה 1 תגובה אחרונה
                                1
                                • nigunN מנותק
                                  nigunN מנותק
                                  nigun
                                  השיב לdovid ב נערך לאחרונה על ידי
                                  #16

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

                                  מייל: nigun@duck.com

                                  dovidD תגובה 1 תגובה אחרונה
                                  1
                                  • dovidD מנותק
                                    dovidD מנותק
                                    dovid ניהול
                                    השיב ליוסף בן שמעון ב נערך לאחרונה על ידי
                                    #17

                                    @יוסף-בן-שמעון צודק. ככה אני עושה עכשיו. אבל זה בדיוק אחד מהפתרונות שלא רציתי.

                                    @dovid אמר בתרגיל מתמטי של הסתרת מזהה רץ:

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

                                    העוגיה היא מזהה גלובלי לא רץ, ואני יכול לשלוף את השורה המתאימה לפיה. אבל למה לי? יש לי את המזהה, ואני רוצה להמשיך לדעת אותו בלי לשלוף שום דבר...

                                    תגובה 1 תגובה אחרונה
                                    2
                                    • dovidD מנותק
                                      dovidD מנותק
                                      dovid ניהול
                                      השיב לnigun ב נערך לאחרונה על ידי dovid
                                      #18

                                      @nigun אמר בתרגיל מתמטי של הסתרת מזהה רץ:

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

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

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

                                      M nigunN 2 תגובות תגובה אחרונה
                                      2
                                      • M מחובר
                                        M מחובר
                                        mekev
                                        השיב לdovid ב נערך לאחרונה על ידי
                                        #19

                                        @dovid
                                        היות ואתה לא מחפש להונות את הפורץ החפרן שתרמו לך הרבה
                                        אלא רק לגרום לו לחוסר ידע בפיענוח

                                        האם ניתן לשרשר את התאריך/שעה/דקות/שניות/מילישניות (לחלק למספרים ולעשות ++ ברמת מספר בודד)
                                        ואז בתוצאות יהיה רמת אי אחידות מספיק גבוהה

                                        (בתרגיל מתמטי של כפל/חילוק וכו, תמיד ככל שהמספור שלך יעלה כך יהיה תוצאה בהנ"ל גבוהה יותר,
                                        ואילו כאן המספור עולה ויורד כל הזמן)

                                        dovidD תגובה 1 תגובה אחרונה
                                        0
                                        • dovidD מנותק
                                          dovidD מנותק
                                          dovid ניהול
                                          השיב לmekev ב נערך לאחרונה על ידי
                                          #20

                                          @mekev אמר בתרגיל מתמטי של הסתרת מזהה רץ:

                                          האם ניתן לשרשר את התאריך/שעה/דקות/שניות/מילישניות (לחלק למספרים ולעשות ++ ברמת מספר בודד)

                                          איך אני אשחזר את המספר המקורי?

                                          @mekev אמר בתרגיל מתמטי של הסתרת מזהה רץ:

                                          (בתרגיל מתמטי של כפל/חילוק וכו, תמיד ככל שהמספור שלך יעלה כך יהיה תוצאה בהנ"ל גבוהה יותר,

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

                                          M תגובה 1 תגובה אחרונה
                                          0

                                          • 1
                                          • 2
                                          • 3
                                          • 4
                                          • 5
                                          בא תתחבר לדף היומי!
                                          • התחברות

                                          • אין לך חשבון עדיין? הרשמה

                                          • התחברו או הירשמו כדי לחפש.
                                          • פוסט ראשון
                                            פוסט אחרון
                                          0
                                          • דף הבית
                                          • קטגוריות
                                          • פוסטים אחרונים
                                          • משתמשים
                                          • חיפוש
                                          • חוקי הפורום