Whatsup - לינוקס, תוכנה חופשית וקוד פתוח בעברית

תוכנה חופשית וקוד פתוח - תוכנת הצפנת קבצים

אופיר - 06/12/2003 - 12:59
נושא ההודעה: תוכנת הצפנת קבצים
לפני שנתיים כתבתי תוכנת הצפנת קבצים לחלונות לשימוש אישי שכרגע אני מסב ללינוקס. השתמשתי באלגוריתם מיוחד שהמצאתי ואני לא יודע איך לבדוק אותו-
האם משהו דומה קיים, האם הוא חזק ושווה משהו?
אני מחפש כבר הרבה זמן מומחה רציני לקריפטולוגיה שיש לו זמן לחשוב על האלגוריתם. עד עתה העריכו אותו כמה מתמתיקאים אבל לא מומחה לקריפטולוגיה.

מחפש רעיונות.

בתודה
אופיר.
דוביקס - 06/12/2003 - 13:05
נושא ההודעה:
ניסית לבדוק בחוגי מתמטיקה באוניברסיטאות? בטוח שיש שם כמה אנשים שמתמחים בהצפנה.

לגבי אלטרנטיבות, האתר הבא מכיל כמה אופציות:

http://koeln.ccc.de/archiv/drt/crypto/linux-disk.html
Inola - 06/12/2003 - 13:59
נושא ההודעה:
אם אני לא טועה, פרופ' עדי שמיר (ממציאי RSA) עובד במכון וויצמן, שווה לנסות.
גם בטכניון בטוח יוכלו לעזור לך.

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


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



(אחד מהתחומים הכי מענינים שאני מכיר)
Anonymous - 06/12/2003 - 14:33
נושא ההודעה:
אלגוריתמי הצפנה חזקים ובדוקים קיימים בשפע.

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

הספריה openssl כוללת לא מעט מימושים של צופנים. כנ"ל gnutls .
Anonymous - 06/12/2003 - 15:11
נושא ההודעה:
(לזה שמעלי) אתה צודק אבל מצד שני אם פתחת הצפנה חזקה מספיק לשימוש אישי, יהיה יותר קשה לפרוץ אותה מאשר אם תהפוך אותה להמונית ויהיה הרבה חומר שהוצפן בעזרתה...
Anonymous - 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
Thedevil - 06/12/2003 - 16:55
נושא ההודעה:
אם אתה רוצה אני נחשב חובבן בקריפטולוגיה אבל אני טוב בתכנות.

ואם אתה רוצה אני יכול להביא חומר לימוד אם אתה רוצה ללמוד בעצמך
Anonymous - 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% מהקובץ המקורי כאשר בכל בית שני משולב חלקו המתאים של סיסמאת המקור.
Anonymous - 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
נושא ההודעה:
-
zag_zag - 07/12/2003 - 00:50
נושא ההודעה:
Arrow
Anonymous - 07/12/2003 - 03:31
נושא ההודעה:
הפעלת פונקציה פסאודואקראית טובה היא פעולה כבדה יחסית. באיזו פונקציה אתה משתמש? ההרגשה שלי שרוב זמן ההצפנה וזמן הפענוח יתבזבז על יצירת המפתח בדרך זו.

את הטבלה אתה יכול ליצור ע"י ה-preprocessor. כך ייוצרו שם ערכים קבועים. כל קומפיילר סביר יהפוך חישובים של ערכים קבועים לקבועים. או שפשוט תמלא את הטבלה בזמן האתחול. לשם-כך מספיק לבצע פעולות חיבור בלבד (תחשוב על טור ההפרשים של הסדרה)

בעיה נוספת היא, כמובן, העבודה על כל הקובץ. באלגוריתם הזה אין כלל מקומיות ולכן צריכת הזכרון גבוהה. אלגוריתמי הצפנה מקובלים נוהגים לעבוד על בלוקים של 128 ביטים, 256 ביטים או מספר דומה.
אופיר - 07/12/2003 - 09:19
נושא ההודעה:
זו בעיה טכנית בלבד ובגרסא ללינוקס אני משתמש בעבודה ישירות על הקובץ
בוא נניח שאין את הוספת הזנב ויצרית המפתח (אגב צורך זמן מועט) אלו ררק מחזקים את ההצפנה.
אותי מעניין האם יש חורים באלגוריתם עצמו.
ChooX - 07/12/2003 - 14:00
נושא ההודעה:
אני לא מתכוון להמעיט בערכך, אבל יצירת אלגוריתם הצפנה חדש שהוא יעיל, שימושי ובטוח היא משימה לא פשוטה שגם גדולי הקריפטוגרפים נופלים בה.
השאלה היא מה המטרה שלך. אם אתה מפתח משהו לשימוש ביתי, אז גם ROT13 יתאים. אם אתה רוצה ליצור תוכנה שימושית עם הצפנה חזקה, אני חושב שעדיף להשתמש באלגוריתם קיים שכבר עבר בדיקות אצל מומחים מרחבי העולם.

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

בספר Applied Cryptography מאת Bruce Schneier יש המון מידע על אלגוריתמים ויישומם ב-C.
אופיר - 08/12/2003 - 07:26
נושא ההודעה:
דווקא עם מתקפות ספרייה התוכנית שלי מתמודדת בצורה מעולה. לא ניתן לדעת האם הסיסמא נכונה או לא רק לאחר השלמת הפעולה וגם אז בתנאי שיודעים מה צריך לצאת כך שקשה לערוך מתקפת ספרייה בצורה אוטומאטית ע"י תוכנה.
מה גם שיש לתוכנית שלי מגן סיסמאות הבודק את יעילות הסיסמא, התפלגות התווים בה ובודק שלא קיימת ברשימת הסיסמאות הנפוצות.
כל הזמנים הם GMT + 2 שעות