פורסם: 06/12/2003 - 12:59
נושא ההודעה: תוכנת הצפנת קבצים
|
לפני שנתיים כתבתי תוכנת הצפנת קבצים לחלונות לשימוש אישי שכרגע אני מסב ללינוקס. השתמשתי באלגוריתם מיוחד שהמצאתי ואני לא יודע איך לבדוק אותו-
האם משהו דומה קיים, האם הוא חזק ושווה משהו?
אני מחפש כבר הרבה זמן מומחה רציני לקריפטולוגיה שיש לו זמן לחשוב על האלגוריתם. עד עתה העריכו אותו כמה מתמתיקאים אבל לא מומחה לקריפטולוגיה.
מחפש רעיונות.
בתודה
אופיר.
|
|
חזרה לתוכן הדיון |
פורסם: 06/12/2003 - 13:05
נושא ההודעה:
|
ניסית לבדוק בחוגי מתמטיקה באוניברסיטאות? בטוח שיש שם כמה אנשים שמתמחים בהצפנה.
לגבי אלטרנטיבות, האתר הבא מכיל כמה אופציות:
http://koeln.ccc.de/archiv/drt/crypto/linux-disk.html
|
|
חזרה לתוכן הדיון |
פורסם: 06/12/2003 - 13:59
נושא ההודעה:
|
אם אני לא טועה, פרופ' עדי שמיר (ממציאי RSA) עובד במכון וויצמן, שווה לנסות.
גם בטכניון בטוח יוכלו לעזור לך.
בלי להשמיץ, תחום ההצפנה המודרנית באמת הגיע לשיאו (עד שמחשבי קוונטים יהיו זמינים, ואז פשוט אפשר לשכוח מ-RSA ודומיו), באמת קשה להגיע היום לאיזה חידוש מהפכני. מה מטרת תוכנת ההפצנה שלך בדיוק? סתם להצפנת קבצים הין משתמשים או משהו יותר גרנדיוזי?
אפשר סתם איזו סקירה על עקרונות האלגוריתם, חוזקו ועוד פרטים מעשירים?
(אחד מהתחומים הכי מענינים שאני מכיר)
|
|
חזרה לתוכן הדיון |
פורסם: 06/12/2003 - 14:33
נושא ההודעה:
|
אלגוריתמי הצפנה חזקים ובדוקים קיימים בשפע.
זה דבר שמאוד לא רצוי לכתוב בעצמך, אם קיים כבר משהו יותר טוב. רוב הסיכויים שיש איזשהי בעיה קטנה בצופן שעוד לא חשבת עליה. הצופנים המקובלים כבר עברו ביקורת של לא מעט אנשים שניסו לפרוץ אותם. (אתה מוזמן לנסות בעצמך)
הספריה openssl כוללת לא מעט מימושים של צופנים. כנ"ל gnutls .
|
|
חזרה לתוכן הדיון |
פורסם: 06/12/2003 - 15:11
נושא ההודעה:
|
(לזה שמעלי) אתה צודק אבל מצד שני אם פתחת הצפנה חזקה מספיק לשימוש אישי, יהיה יותר קשה לפרוץ אותה מאשר אם תהפוך אותה להמונית ויהיה הרבה חומר שהוצפן בעזרתה...
|
|
חזרה לתוכן הדיון |
פורסם: 06/12/2003 - 15:28
נושא ההודעה:
|
באופן כללי זה לא מעשי להסתיר מימוש של אלגוריתם שממומש בתוכנה (לדוגמה: css. פוצח זמן לא רב לאחר זמינות המימוש בתוכנה).
http://www.google.com/search?q=security+through+obscurity
מקובל לתת כאן את "משל הכספת": אתה צריך לבחור בין שתי כספות. על כספת אחת היצרן מתחייב שהיא בטוחה לחלוטין ועמידה בפני פריצות. אין לך שום דרך לאמת את נתוניו.
היצרן השני אומר: "התוכניות של הכספת שלי מפורסמות באתר. כל אחד יכול לנסות למצוא בהן חורים. בהתחלה מצאו כמה חורים ותיקננו אותם. אתה רוצה: נסה לפרוץ בעצמך".
לא חסרים אלגוריתמי הצפנה עם "בעיות קטנות" שאפשרו פיצוח שלהם. ע"ע GSM. (אגב: שם הבעיה לא היתה בדיוק באלגוריתם עצמו אלא ביישום שלו)
|
|
חזרה לתוכן הדיון |
פורסם: 06/12/2003 - 16:43
נושא ההודעה:
|
הרעיון באלגוריתם שלי מתבסס על כך שמספר הביטים הדלוקים והכבויים בקובץ דומה
האלגוריתם מתיחס לקובץ כמעגל ועובר ביט ביט ומחליף אותו עם אחר שמקומו נקבע
לפי הססמא (מיקום נוכחי + ריבוע של ערך תו הסיסמא הנוכחי)
בשיטה זו כל בית בקובץ משתלב לפחות עם 8 אחרים. קובץ שמכיל למשל תו אחד שמופיע הרבה פעמים ועובר הצפנה ע"י סיסמא בעלת שני תווים בלבד הופך לאקראי לחלוטין!!!
הפענוח נעשה ע"י פעולה הפוכה כאשר המיקום של זנב הקובץ וזנב הסיסמא נשמרים
בכותר הקובץ
תוכנה המממשת את האלגוריתם בחלונות נמצאת על השרת שלי ב
http://www.ofir.ma.cx/scramble.exe
|
|
חזרה לתוכן הדיון |
פורסם: 06/12/2003 - 16:55
נושא ההודעה:
|
אם אתה רוצה אני נחשב חובבן בקריפטולוגיה אבל אני טוב בתכנות.
ואם אתה רוצה אני יכול להביא חומר לימוד אם אתה רוצה ללמוד בעצמך
|
|
חזרה לתוכן הדיון |
פורסם: 06/12/2003 - 17:13
נושא ההודעה:
|
הוא אינו הופך לאקראי לחלוטין. הוא הופך לאקראי לפי מדד אחד מסויים: השכיחות.
אגב: למה להעלות בריבוע? בכך אתה רק מקטין פי שניים את אפשרויות ההוספה. ליתר דיוק: פי 2 בחזקת מספר תווי הסיסמה. באופן כללי: מהי ההשפעה של סיסמאות "גרועות" על האלגוריתם? הסיסמה שכולה אפסים לא תיצור שום הצפנה, לדוגמה.
בכל מקרה: לסיסמה חלשה מאוד של פחות מחמישה-שישה תווים אפשר לנסות להריץ פשוט חיפוש על כל האפשרויות.זה ייקח זמן קצר למדי.
כמה סיבובי הצפנה יש? אם רק סיבוב אחד: לפי מה הגעת למסקנה שכל ביט מתחלף לפחות עם שמונה ביטים אחרים?
אפשרות נוספת: לנחש את אורך הסיסמה ואת התו הראשון בה. זה יאפשר לפענח את כל ההופעות שלו. אם יש מקום לוודא את זה (כמה תווים ידועים בקובץ המוצפן, לדוגמה: חלק מהפורמט שלו) כבר אפשר לבדוק את הניחוש.
|
|
חזרה לתוכן הדיון |
פורסם: 06/12/2003 - 22:50
נושא ההודעה:
|
העלאה בריבוע מבוצעת על מנת שההחלפה תהיה עם מקום רחוק יותר ומטרתה לפזר אזורים. בתווי ASCII אין אפסים ובכל זאת במקרה של 0 התוכנית מבצעת החלפה של 16 סיביות קדימה.
ברור שלססמא קצרה ניתן להריץ חיפוש אבל זה יצרוך משאבים רבים כיוון שרק לאחר סיום הפעולה אפשר לדעת אם הסיסמא נכונה וזה גם בתנאי שאתה יודע מה צריך לצאת (קשה בקובץ דחוס). הפעולה מתבצעת מס' סיבובים לפי בחירת המשתמש.
גם אם התו הראשון בססמא ידוע וגם אורכה לא ניתן להסיק מכך מסקנה כלשהיא מכיוון שיש החלפה על החלפה גם במעבר אחד .
לא אמרתי שכל ביט מתחלף עם שמונה אחרים אלא כל בית עם 8 אחרים-
אם הסיסמא בעלת 8 תווים שונים (המינימום) אז הסבירות גבוהה להחלפה עם 8 בתים אחרים. לדוגמה הסיסמא 10,20,30,40,50,60,70,80 במעבר על הבית הראשון תגרום לסיבית הראשונה להתחלף עם הסיבית ה6400 השנייה עם ה4900
וכו'. (כאן בא העניין של העלאה בריבוע בפיזור) בכל מקרה לא תיתכן גלישה כיוון שההתיחסות לקובץ מעגלית ולכן גם העלאה בחזקת 10 תהיה מעולה אבל בחרתי בריבוע משיקולי ביצועים.
שים לב שכאשר המצביע יגיע לסיבית ה6400 הוא יבצע החלפה נוספת עם מקום אחר לפי תו הסיסמא הנוכחי בריבוע כך שכל סיבית זזה ממקומה לפחות פעמיים.
בפועל האלגוריתם מחוזק גם ע"י הוספת זנב לקובץ בהתאם להרכבו כך שכמות האחדות והאפסים בקובץ תהיה שווה וארבעת הבתים הראשונים בסיסמא משמשים כזרע לפונקצייה random המרחיבה את הסיסמא לגודל מינימלי של 10% מהקובץ המקורי כאשר בכל בית שני משולב חלקו המתאים של סיסמאת המקור.
|
|
חזרה לתוכן הדיון |
פורסם: 06/12/2003 - 23:24
נושא ההודעה: אקראיות היא יקרה
|
הארכת הסיסמה לא תורמת בטיחות רבה: כל אחד מכיר את הדרך להרחבתה ויכול לקבל את הסיסמה המורחבת מהסיסמה המקורית.
שים לב שאתה לא חייב לבצע את הפעולה המתמטית של העלאה בחזקה בזמן הריצה. יש לך לכל היותר 256 מספרים שונים להפעיל עליהם פעולה קבועה. אתה תמיד יכול לשים את התוצאה בטבלה.
אני חושב שאתה צריך לבדוק האם ההסתמכות על random שתיצור תוצאות שוות עם seed שווה היא פורטבילית. יש לי הרגשה שלא. בכל מקרה ההגדרה שלה היא חלק מהגדרת הצופן
אגב: התוכנית שלך עובדת עם קבצים שגדולים מ-2G? ומ-4G?
|
|
חזרה לתוכן הדיון |
פורסם: 06/12/2003 - 23:54
נושא ההודעה:
|
הארכת הסיסמא היא טריק ישן אבל פעולת ההחלפה משנה לגמרי את הפיזור כך שלא נראה לי שאפשר להגיע לכלל רק אם יודעים חלק גדול מאוד ורציף מקובץ המקור.
מה שאמרת לגבי טבלה של 256 מקומות נכון - בתוכנית שלי לא עשיתי את האופטימיזציה הזו כי בדקתי איך משפיעים ערכים שונים של מכפלה על מידת הפיזור.
random לא פורטבילית ויש צורך להגדירה בתוכנית בנפרד.
התוכנית לחלונות עובדת עם קבצים עד לגודל של 200MB מסיבה טכנית לחלוטין (כדי להאיץ את הפעולה ביצעתי טעינה לזכרון של הקובץ ורק לאחר מכן את פעולת ההצפנה / פענוח) והגרסא ללינוקס מתוכננת לעבוד עם קבצים עד כ 4GB
( 4,294,967,296 בתים)
|
|
חזרה לתוכן הדיון |
פורסם: 07/12/2003 - 00:02
נושא ההודעה:
|
-
נערך לאחרונה על-ידי אופיר בתאריך 07/12/2003 - 00:52, סך-הכל נערך פעם אחת
|
|
חזרה לתוכן הדיון |
פורסם: 07/12/2003 - 00:50
נושא ההודעה:
|
|
|
חזרה לתוכן הדיון |
פורסם: 07/12/2003 - 03:31
נושא ההודעה:
|
הפעלת פונקציה פסאודואקראית טובה היא פעולה כבדה יחסית. באיזו פונקציה אתה משתמש? ההרגשה שלי שרוב זמן ההצפנה וזמן הפענוח יתבזבז על יצירת המפתח בדרך זו.
את הטבלה אתה יכול ליצור ע"י ה-preprocessor. כך ייוצרו שם ערכים קבועים. כל קומפיילר סביר יהפוך חישובים של ערכים קבועים לקבועים. או שפשוט תמלא את הטבלה בזמן האתחול. לשם-כך מספיק לבצע פעולות חיבור בלבד (תחשוב על טור ההפרשים של הסדרה)
בעיה נוספת היא, כמובן, העבודה על כל הקובץ. באלגוריתם הזה אין כלל מקומיות ולכן צריכת הזכרון גבוהה. אלגוריתמי הצפנה מקובלים נוהגים לעבוד על בלוקים של 128 ביטים, 256 ביטים או מספר דומה.
|
|
חזרה לתוכן הדיון |
פורסם: 07/12/2003 - 09:19
נושא ההודעה:
|
זו בעיה טכנית בלבד ובגרסא ללינוקס אני משתמש בעבודה ישירות על הקובץ
בוא נניח שאין את הוספת הזנב ויצרית המפתח (אגב צורך זמן מועט) אלו ררק מחזקים את ההצפנה.
אותי מעניין האם יש חורים באלגוריתם עצמו.
|
|
חזרה לתוכן הדיון |
פורסם: 07/12/2003 - 14:00
נושא ההודעה:
|
אני לא מתכוון להמעיט בערכך, אבל יצירת אלגוריתם הצפנה חדש שהוא יעיל, שימושי ובטוח היא משימה לא פשוטה שגם גדולי הקריפטוגרפים נופלים בה.
השאלה היא מה המטרה שלך. אם אתה מפתח משהו לשימוש ביתי, אז גם ROT13 יתאים. אם אתה רוצה ליצור תוכנה שימושית עם הצפנה חזקה, אני חושב שעדיף להשתמש באלגוריתם קיים שכבר עבר בדיקות אצל מומחים מרחבי העולם.
בנוסף על כך, צריך לחשוב על הרבה גורמים אחרים - האלגוריתם עצמו יכול להיות "מושלם", אבל יכולים להיות חורים בתוכנה עצמה שיעקפו את האלגוריתם. לדוגמה, אם מישהו בוחר את הסיסמה PASSWORD, סביר להניח שהתוכנה תוכל תפרץ בעזרת מתקפת ספריה (dictionary attack) בקלות רבה. יש עוד המון שיטות שהוכיחו את עצמן כיעילות בעקיפת מנגנוני הצפנה או בפיצוחם.
בספר Applied Cryptography מאת Bruce Schneier יש המון מידע על אלגוריתמים ויישומם ב-C.
|
|
חזרה לתוכן הדיון |
פורסם: 08/12/2003 - 07:26
נושא ההודעה:
|
דווקא עם מתקפות ספרייה התוכנית שלי מתמודדת בצורה מעולה. לא ניתן לדעת האם הסיסמא נכונה או לא רק לאחר השלמת הפעולה וגם אז בתנאי שיודעים מה צריך לצאת כך שקשה לערוך מתקפת ספרייה בצורה אוטומאטית ע"י תוכנה.
מה גם שיש לתוכנית שלי מגן סיסמאות הבודק את יעילות הסיסמא, התפלגות התווים בה ובודק שלא קיימת ברשימת הסיסמאות הנפוצות.
|
|
חזרה לתוכן הדיון |
|