צפייה בגרסה מלאה : מחפש מידע אודות מקודד AES128 ECB
היי,
אני צריך לפתח בעצמי מקודד + מפענח עבור AES128 ECB לתשתית בקרה\תוכנה שלא ניתן לטעון אליה שום ספריית קידוד מוכנה מוכנה מעולם התכנות הנורמלי , אז בבקשה לא להציע לי פתרונות מוכנים מהרשת.
מצאתי ברשת כל מיני הסברים על התהליך קידוד וגם על תהליך הפענוח, אבל האסימון לא נופל, אני פשוט לא מבין את ההסברים או שזה גדול עליי מתמטית או גם וגם.
לדוגמא:
https://he.wikipedia.org/wiki/AES
https://csrc.nist.gov/csrc/media/publications/fips/197/final/documents/fips-197.pdf
אם אתם מכירים לינק יעיל ברור יותר ממה ששמתי מעלה אודה לכם ,
אם יש פה מישהו שיודע להסביר לי שלב אחרי שלב מה צריך להתבצע (אני אכתוב את הקוד, הוא רק צריך להבין ולהסביר את השלבים) אני אודה לו מאוד אם ייצור קשר.
תודה מוטי.
0504445398
מצאתי את זה, נראה ברור יותר
https://www.simplilearn.com/tutorials/cryptography-tutorial/aes-encryption
ממשיך לחפור....
לא יודע באיזה סביבה אתה עובד אבל בטוח אפשר למצוא קוד open-source ולהעתיק אותו לאן שצריך בלי לייבא ספריה חיצונית.
ארנון
חיפשתי, לא קיים.
יש במוצר דומה "ליד" אבל מאמץ ההמרה יהיה גדול מכתיבה לבד.
יש פה ספריה בקוד פתוח:
https://github.com/kokke/tiny-AES-c
גם אם אתה לא יכול להשתמש בקוד מסיבותיך, הוא לטעמי כתוב בצורה מסודרת וברורה יחסית ואולי תוכל להיעזר בו גם להבנת התהליך ואחכ למימוש.
נ.ב. אתה יודע ש ECB פחות מומלץ לפרוטוקולי תקשורת?
אני לא בחרתי, זה נתון.
תודה!
אני מחדד את השאלה אחרי שהבנתי את הרעיון הבסיסי, ובכל האתרים מוצג טיפול בטקסט של 16 תווים.
מה קורה בטקסט של 280 תווים(שזה מה שאני צריך) , איך אני מטפל בזה?
האם אני מחלק את זה לקבוצות של 16 תווים ומטפל בהם בנפרד עפ"י הלוגיקה הבסיסית?
הי מוטי
כן - כל פעם קוראים לפונקציית ה ECB עם 16 הבתים הבאים,
למשל בדוגמא שנתת זה 17 קריאות של 16 בתים, ועוד קריאה עם השמונה בתים האחרונים בתוספת 8 בתים של ריפוד (מכיוון שהפונקציה מטפלת רק ב 16 , לא פחות ולא יותר)
בסהכ 18 קריאות לפונקציה
שים לב שאם יש לך 280 בתים של מידע לא מקודד (plaintext) אתה תקבל 288 של מידע מקודד, בשביל לשחזר את המידע אתה חייב לשמור את כולו - אחרת (למיטב זכרוני / הבנתי) לא תוכל לשחזר את הבתים האחרונים (אותו בלוק שריפדת למעלה)
אתה עובד בבלוקים של 16 בתים בכל פעם. מומלץ שאתה מרפד להשתמש במידע רנדומלי ולא במידע קבוע (ובטח לא באפסים או אחדים).
יש עוד שיטה שמערבלת את המידע קצת יותר וזה ע"י שימוש ב counter לכל בלוק, שאותו אתה מכפיל במידע (XOR). זה מייצר רמת אבטחה נוספת. כמובן שה counter לא מתחיל ב 0 או 1. הכל תלוי ברמת האבטחה הנדרשת. גם לגבי מפתחות יש כל מיני הגדרות ודרישות סף כדי למנוע ממשתמשים לשים מפתחות מטומטמים ועד מפתחות שבנויים מפולינומים ספציפיים כדי להבטיח קידוד מיטבי.
אני מתחבר למוצר קיים ולכן אני לא בוחר את השיטה, השיטה כבר נתונה על ידי היצרן.
אני מתקדם בפיתוח, כרגע אני תקוע בשלב ה mix לא הבנתי מבין כל האתרים שראיתי, האם יש שם רק מכפלות בין מטריצות (הסטייט מוכפל בקבועה) או עוד משהו, אני חופר בזה בין לקוח ללקוח, לא פול טיים על זה.
כי מכפלה לבדה מוציאה אותי מחוץ ל FF ואני מאבד דאטה.
עובד על זה....
מבין שיש מכפלה ובמקום חיבור(כמו כפל מטריצות רגיל) יש xor.
עובד על זה....
תודה לכולם , כרגע השלב של פענוח הדאטה שאני מקבל ב AES128 +"ריפוד" , עובד!
אחרי שצפיתי במלא סרטונים ב"אנגלית" של הודים ( וואו המבטא שלהם קשה! ) בשביל להבין את הרעיון מאחורי התהליך, התחלתי לתרגם קוד פתוח ב C שמצאתי ברשת (השפה שאני עובד מבוססת פסקל, אז הסינטקס מעט שונה ואין לי שום הכרות בפועל עם C, אז הייתי צריך לחפש גם מה המשמעות של כל הסימנים)
אחרי הפענוח מ AES128 נאלצתי (עפי הגדרת המוצר) להוסיף "פענוח" מ BASE64 לטקסט , אבל זה היה מוכן לי בספריה.
השלב הבא הוא קידוד הבקשה שאני שולח בסדר פעולות הפוך, אבל נראה לי שזה יהיה כבר החלק הקל.
תודה לכולם!
באיזו שפה אתה כותב ?
לפני המון שנים (אם זכרוני אינו מטעה) השתמשתי בספריה כזו ב- perl שהיתה כתובה כולה ב- perl, כך שניתן במאמץ סביר לתרגם אותה גם לשפות אחרות.
בשלוף מצאתי את זה:
https://metacpan.org/pod/Crypt::Rijndael_PP
(זה לא מה שהשתמשתי אז, אם זה יכול לעזור אנסה לדוג את הקוד הישן)
:)
איזה nerds פה!
מילא מקודדים, אבל פסקל/פרל?
מה שיותר גרוע, שגם אני תכנתתי בהן
ארנון
Sent from my Pixel 6 using Tapatalk
אתה מתכוון "איזה זקנים פה" ...
עוד אחד ב- perl
https://metacpan.org/pod/Crypt::Perl
אני עובד על בקר מתוכנת של חברת beckhoff( החברה בה אני עובד)
התכנות מתבצע בשפה מבוססת תקן iec 61131-3( שנולד אי שם בשנות ה80) שמכילה 7 שפות "גרפיות" שונות: דיאגמת סולם, בלוקים בשורה, בלוקים בדף נקי (כמו lab view), תרשים זרימה,משהו שדומה לאסמבלר (ברעיון הכללי של נגישות לשטחי זכרון) וגולת הכותרת שפה טקסטואלית שנקראת ST( stucture text) וזה מאוד דומה לפסקל (לפחות ממה שאני זוכר מתיכון כשלמדתי פסקל).
יש תמיכה צדדית גם ב C אבל לא הצלחתי להפעיל את זה, משהו עם רגיסטרציה של סרטיפיקציות ולא רציתי להתאמץ על זה, זה משהו שאנו כמעט ולא מוכרים אז ה ROI של זה נמוך, העדפתי לשכתב הכל ב ST על מנת להבין מה כתוב שם ולדעת לדבג את זה.
זהו לגבי התשתית.
לגבי הצורך, זה ממשק בין הבקר בבית למזגני תדיראן ב wifi מבלי הצורך לחשוף את המזגנים לשרת החברה בסין (המזגן מיוצר ע"י תאגיד Gree ) וכל פתיחה של האפליקציה שלהם מחוייב גישה לענן.
הרעיון בפתרון שלי, שאני עובד עליו מידי פעם ככר 4 שנים מאז סיום הבנייה, הוא לאפשר גישה GUI מבוסס web (שהוא גם מוצר שלנו) מכל מקום בעולם לבקרה בבית ע"ב הדפדפן בטלפון.
הבקר אצלי בבית שולט בהשקיה, בחימום המים בדוד, ובאזעקה של הבית, המזגנים נרכשו עם wifi במטרה לחבר אותם לבקר גם כן, לאפשר הפעלה/כיבוי מרחוק או סתם כיבוי של המזגנים בחדרים כשיוצאים מהבית.
והנה גם בפסקל (דלפי):
https://github.com/decfpc/DelphiEncryptionCompendium
:)
איזה nerds פה!
מילא מקודדים, אבל פסקל/פרל?
מה שיותר גרוע, שגם אני תכנתתי בהן
ארנון
Sent from my Pixel 6 using Tapatalkגם אני הצצתי בלוח השנה לוודא שלא עברתי מסע בזמן.
אם הייתה ספריה מוכנה ממקור מהימן הייתי לוקח אותה as is אבל אין, ולכן כל דבר שאני אמור "לאמץ" מחייב אותי להכיר אותו לעומק,
בכללי, אני כזה שמעדיף לחפור ולכתוב בעצמי אם אני מרגיש שהמקור לא מהימן לחלוטין.
קשה להאמין שלא כתבו כבר דבר כזה, תוכל לתרום לנו עוד כמה מילות חיפוש טובות, כמו הדגם של הבקר, סביבת הפיתוח שלו, שם מדוייק וגירסה של שפת הפיתוח, וגם של השפות הנוספות שזמינות לך עבור הבקר ?
המוצר שלנו נקרא twincat , התקן מכונה בשם codesys שזה מוצר תוכנה של חברה שהבינה שיש פה משהו לעשות כסף ממנו,
אבל ל codesys יש פתרון לזה, הוא לא עובר בילד אצלי, כי הסביבות ריצה שונות, רק הנראות של שפות התוכנה, אין לזה פתרון בעולם שלי, למיטב ידיעתי אף אחד לא נתקל בזה, ואף אחד לא כתב לזה פתרון, עד עכשיו.
וכבר לא צריך לחפש לזה פתרון, כי כבר יש לי, מותאם בדיוק לממשק עם המזגן,ועכשיו כשאני מבין אותו הוא יכול להיות מותאם בקלות להיות גנרי לארכי טקסט שונים (אולי לא תהיה לי ברירה ואהיה חייב להתאים אותו לגדלי טקסט שונים, טרם הגעתי לכל הפקודות הנדרשות)
https://www.linkedin.com/pulse/connect-beckhoff-plc-using-python-hoang-dung-vu-jose-
תודה נדב, אבל את הממשקים מכל עולמות התוכנה לבקר שלנו אני מכיר טוב, ותומך בלקוחות כאלה על בסיס כמעט יומ יומי, יש לנו DLL כמעט לכל פתרון תוכנה סטנדרטי שמתחבר לעולם שלנו שנקרא twincat ads
כן, יכולתי לקחת קוד מוכן ב #C או pythin או Java שיעבוד כמאין סרוויס מתאם, פשוט בחרתי שלא ללכת בכיון הזה, אלא במימוש מלא בתוך קוד הבקר.
סביר להניח שלמרות שכבת המעטפת הנוספת, קוד חיצוני כזה היה עובד ביעילות הרבה יותר גבוהה מאשר ליישם קריפטוגרפיה בשפה עילית.
יעילות? מאיזו בחינה? זה תקשורת עם מזגן פעם ב...זה לא קו מאובטח לשרותי תקשורת בין לווינים
יעילות מבחינת ביצועים וגם מבחינת זמן פיתוח, אלא אם כן אתה לוקח את זה בתור אתגר בשביל הכיף...
סביר גם להניח שספרייה מוכנה כזו תכיל פחות באגים ותתמודד טוב יותר עם מצבים פחות סטנדרטיים, נניח הודעה ספציפית שהיא 283 בתים במקום 280.
גם שלי כרגע לא "עגולה" היא מרופדת קצת.
אבל ברור שמשהו מדובג מסודר עדיף, לא מצאתי כזו, לכן פניתי לפיתוח כזה, זה עבורי, לביתי שלי, נעשה בשעות הלילה לאחר פנטזיה ארוכה רבת שנים שאני חולם לממש את זה,לכן שעות העבודה לא נספרות.
השלב הבא הוא קידוד הבקשה שאני שולח בסדר פעולות הפוך, אבל נראה לי שזה יהיה כבר החלק הקל.
חשבתי שיהיה קל, הקטע של ה mix הרג אותי שרף לי איזה שעתיים בלילה, כל ניסיונות החישוב עלו בתוהו, בסוף, הלכתי על 2 טבלאות lookup וזה עובד נהדר.
אז, יש מקודד ויש מפענח!
[emoji16]
הכי חשוב - יש מזגן ?
סחטיין על ההתמדה [emoji846]
המזגן עובד בלי קשר, חחחח
הממשק למזגן עדיין לא בוצע, הייתי צריך להבין שיש לי פתרון לקידוד /פענוח של הפקודות והתשובות, השלב הבא זה בניית המנגנון עצמו מול המזגן: יש תהליך חיפוש, התחברות לwifi של המזגן ושליחת פקודה להתחבר לwifi הביתי (כל פרטי ה ssid +password) ואז ניתן להתחיל לשלוח לו פקודות הפעלה/מיזוג /תריסים וכו...
וכל זה בגלל שהסוללות של השלט של המזגן נגמרו?
על זה בדיוק נאמר:
זה לא באג, זה פיצ'ר.
או בגיפולוגית:
זו לא תקלה, זו מחלה.
הבעייה שכולנו כאן חולים, איש בדרכו.
:p
זה מה שנקרא, אני לא צריך, פשוט בא לי!
ואם אני גם יכול לעשות לבד בעצמי, אז זה בכלל כיף.
מסתבר שפספסתי פה:
מומלץ שאתה מרפד להשתמש במידע רנדומלי ולא במידע קבוע (ובטח לא באפסים או אחדים).
.
את הבדיקות הבסיסיות שהקידוד עובד עשיתי כנגד דוגמאות מהרשת, שיש פירוט לכל מחזור ולהרחבת הסיסמא, אמממה! כל הדוגמאות האלה עגולות =בלוקים מלאים, והממשק למזגן שלי הוא "מרופד 7" ואני קצת שכחתי מזה והבנתי תו"כ דיבאג (השוותי את תוצר התהליך שלי מול אתר און ליין) והבנתי שאני נופל בדיוק בסוף הטקסט המקורי, איפה שאמור להיות הריפוד.
אז הכנסתי טקסט רנדומלי, ואז קלטתי שאחד הבתים הוא אפס, וזכרתי שזה הוזכר כאן.
אז יש לי עוד משהו קטן לסדר,אבל המזגן כבר מתקשר מה שנקרא "חצי קלאץ".
הי מוטי
אתה לא אמור לרפד ב PKCS7 ?
אם כן , זה לא מידע רנדומלי, זה מוגדר היטב :
ערך בתי הריפוד הוא כאורך הריפוד, למשל אם צריך להוסיף 2 בתים, בתי הריפוד יהיו:
0x02 0x02
ובמקרה של 8 בתים:
0x08 0x08 ….. 0x08
המזגן בודק שהריפוד נכון? או שמוכן לקבל חבילות גם עם ריפוד אקראי?
אה.... הבנתי, אז 7....
עובד! תותח! באת בדיוק בזמן.
עובד =אני שולח פקודת בקשת binding מקודדת AES128 + base 64 עם מפתח דיפולטי וזהה לכולם, והוא גם עונה לי והתשובה מכילה את הקוד המיוחד והפרטי שלו! =מענה מקודד זהה לבקשה שלי שכמובן אני צריך לפענח בסדר הפוך.
כל זה קורה ע"ב הרשת של המזגן (התחברות עם סיסמא דיפולטית פשוטה לרשת שהוא מספק )
מעכשיו, כל פקודת הפעלה צריכה להיות מקודדת עם הקוד האישי של כל מזגן.
השלב הבא לממש פקודת התחברות לרשת הביתית, אח"כ את כל הפקודות של הפונקציות שליטה הרגילות.
חפרתי כבר לא מעט, אז רק עוד קצת ,משהו לא מסתדר לי.
יש לי טקסט באורך 192 תווים (מתחלק ב 16 יפה ועגול, אז אין ריפוד) , אני מריץ עליו AES128 ומקבל קוד מוצפן באורך 192 תווים ללא ריפוד .נכנסים 12 בלוקים (12*16=192) ,יוצאים 12 בלוקים מוצפנים.
אני מריץ באתר כלשהוא את אותה הצפנה (אותו קוד נכנס + אותו מפתח) ומקבל תשובה ארוכה יותר עם עוד 24 תווים למה?
האם זה CHECK SUM כלשהוא ? לא מצאתי תיעוד לזה ברשת .
ההמשך כבר כמובן לא עובד, כי ע"ב אותם אקסטרא 24 תווים , גם ההצפנה של BASE 64 מחזירה לי ערך אחר, מן הסתם ארוך יותר מאשר הערך שהקוד שלי מחולל.
מה מעניין, שהמזגן עונה לפקודה המוצפנת ע"ב המידע מהאתר, אבל לא עונה להצפנה שלי, כי מן הסתם היא קצרה יותר.
אז השאלה, למה? למה AES128 מוסיף לי תווים. כי להבנתי זה אמור להיות 1:1 אלא עם יש ריפוד וזה ,כאמור, לא המצב שלי .
אולי יש הבדל ב- salt ?
יכול להיות שבאתר השני יש ערך ברירת מחדש שאינו ריק ?
מחקתי את כל התווים, מה שמוזר:
1. לפקודה המקדימה, הוא עונה ללא בעיות, ללא תוספות
2. לפקודה הנ"ל, דווקא התוספת תווים מקבל מענה, אז זה כנראה מה שצריך,
חיפשתי קצת ומצאתי ש MD5 מכיל 16 בתים. אז אולי זה זה, מוזר....
התוספת של ה 24 בתים היא אחרי base64 או לפני ?
אם אחרי אז זה הגיוני - זה אומר שיש 16 בתים נוספים - בתי הריפוד,
למרות שיש לך מספר שלם של בלוקים, pkcs7 מגדיר שתמיד יש ריפוד, במקרה של כמות שלמה של בלוקים יתווסף בלוק שלם של ריפוד (כל הבתים יהיו 0x10 לפי כללי הריפוד הזה)
אם זה לפני base64 - אין לי מושג...
בלוק שלם???
טוב... אנסה....
בכל מקרה, התוספת מגיעה כבר אחרי ה AES128 ולכן משפיע גם על ה Base64.
אבל זה בכללי מסתדר לי, כי המנגנון שלי עובד עם השלמה ריפוד לבלוק בפקודה הקודמת הקצרה יותר,
אבל לא מצאתי בשום מקום ברשת שזה כתוב בבירור שנדרשת השלמה ריפוד של בלוק שלם
פה למשל:
https://www.ibm.com/docs/en/zos/2.4.0?topic=rules-pkcs-padding-method
תסתכל גם על דוגמא 2
יש קריאת סטטוס מהמזגן + שליחת פקודות הפעלה , השלב הבא הוא בניית הקונטרול ל GUI שליטה בטלפון (שזה דף אינטרנטי שהבקר מייצר)
לא לגמרי מושלם...
חסר שליטה בכיווני אוויר מעלה מטה - יטופל "מחר כך" ,
הקונטרול סליידר של קביעת טמפרטורה קצת קטן מידי, ולכן לא תמיד האצבע בטלפון תופסת אותו, אבל אני מניח שזה משהו בהגדרות פרמטרים שאני לא מצאתי עדיין,
הנה:
https://uploads.tapatalk-cdn.com/20220529/5d1f0ff01a0342666f27cf5160a81009.jpg
וכרגע בקירור הסליידר כחול, ובחימום אדום.
רציתי גם את החצי כיווני האוויר, אבל בגלל שכרגע זה "רק" תמונה מתחלפת לא בא לי להשקיע בככ הרבה תמונות מתחלפות, כשאצליח לייצר קונטרול בצורת חץ אשלוט בפרופרטיז שלו ישירות (בסדר עדיפות נמוך מאוד) .
https://uploads.tapatalk-cdn.com/20220529/d063dd0851ab4d12d485182de052109e.jpg
יש שליטה בכיווני אוויר שמאל - ימין-מרכז - סווינגhttps://uploads.tapatalk-cdn.com/20220529/a0fe8acda15ad238499d30db3b6652e7.jpg
סיימתי GUI,יש קצת באגים לא קריטיים בתזמון בין קריאת סטטוס מהמזגן (נגיד עם שלחו הפעלה מהשלט) לבין שליחת דרישה מהטלפון , אבל יטופלו בהקדם, תודה לכל מי שתרם מידע.
https://uploads.tapatalk-cdn.com/20220531/7e6ccffb6e85c1239f0374a9d2414b43.jpg
-->
vBulletin® v4.2.4, זכויות יוצרים ©2000-2025, Jelsoft Enterprises Ltd, תורגם על ידי vBHeb.