שליחת מידה בצורה מאובטחת

קדם Forums הייטק IT & Software שליחת מידה בצורה מאובטחת

  • שליחת מידה בצורה מאובטחת

    פורסם ע"י BAT  הייטק on 30/01/2023 ב11:09 pm

    שלום!

    אני באמצע פרויקט הגמר שלי מטעם משרד החינוך

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

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

    יש למישהי אולי מידע איך מיישמים דברים כאלה בת’כלס?

    ספריות או קישורים למדריכים(אפשר גם באנגלית)

    אין לי בעיה ליישם את זה בC++ או פייתון(קצת הבדל:))

    וכן אם משהי מכירה מישהי שעובדת בתחום (או היא בעצמה)

    ויכולה ליצור איתי קשר כדי שאוכל לדעת פחות או יותר במה להתמקד(ענף הסייבר ענק!!!)

    אני אשמח מאוד!!!

    בתודה מראש…

    עמנואל טסה הגיבה לפני 1 שנה, 10 חודשים 3 חברות · 4 תגובות
  • 4 תגובות
  • טליה שוורץ

    מנהלת קדם
    מנהלת
    01/02/2023 ב2:00 pm

    היי יקרה,

    אני לא מומחית בנושא אבל אנסה לענות, אולי גם @etassa תדע לעזור.

    אם נלך C++ , אז את יכולה להשתמש באחת משלושת השיטות האלו

    1. להשתמש בספריית SSL, כמו OpenSSL, כדי ליצור חיבור מאובטח בין שני המחשבים ולשלוח את הנתונים דרך החיבור הזה.
    2. להשתמש בפרוטוקול Transport Layer Security (TLS) כדי לאבטח את התקשורת בין שני המחשבים. את יכולה להשתמש בספרייה כמו Boost.Asio כדי ליישם את זה.
    3. להשתמש בספריית ההצפנה ב-C++, כמו Crypto++, כדי להצפין את הנתונים לפני שליחתם ברשת ולפענח אותם לאחר קבלתם.

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

    אני משאירה לך דוגמא להצעה השלישית שהעלתי, שימוש בספריית Crypto++

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

    <div style="direction: ltr;">#include <iostream></div><div style="direction: ltr;">#include <fstream></div><div style="direction: ltr;">#include <string></div><div style="direction: ltr;">#include <cryptopp/filters.h></div><div style="direction: ltr;">#include <cryptopp/hex.h></div><div style="direction: ltr;">#include <cryptopp/modes.h></div><div style="direction: ltr;">#include <cryptopp/osrng.h></div><div style="direction: ltr;">#include <cryptopp/secblock.h></div><div style="direction: ltr;">#include <cryptopp/socketft.h></div><div style="direction: ltr;">using namespace std;</div><div style="direction: ltr;">using namespace CryptoPP;</div><div style="direction: ltr;">int main()</div><div style="direction: ltr;">{</div><div style="direction: ltr;">    // Generate a random key and IV</div><div style="direction: ltr;">    AutoSeededRandomPool prng;</div><div style="direction: ltr;">    SecByteBlock key(AES::DEFAULT_KEYLENGTH), iv(AES::BLOCKSIZE);</div><div style="direction: ltr;">    prng.GenerateBlock(key, key.size());</div><div style="direction: ltr;">    prng.GenerateBlock(iv, iv.size());</div><div style="direction: ltr;">    // Read the plaintext message to be sent</div><div style="direction: ltr;">    string plaintext;</div><div style="direction: ltr;">    cout << "Enter the message to be sent: ";</div><div style="direction: ltr;">    getline(cin, plaintext);</div><div style="direction: ltr;">    // Encrypt the plaintext using AES-256</div><div style="direction: ltr;">    string ciphertext;</div><div style="direction: ltr;">    try</div><div style="direction: ltr;">    {</div><div style="direction: ltr;">        CBC_Mode<AES>::Encryption encryption(key, key.size(), iv);</div><div style="direction: ltr;">        StringSource(plaintext, true, new StreamTransformationFilter(encryption, new StringSink(ciphertext)));</div><div style="direction: ltr;">    }</div><div style="direction: ltr;">    catch (const CryptoPP::Exception& e)</div><div style="direction: ltr;">    {</div><div style="direction: ltr;">        cerr << e.what() << endl;</div><div style="direction: ltr;">        return 1;</div><div style="direction: ltr;">    }</div><div style="direction: ltr;">    // Send the encrypted message over the network to the recipient</div><div style="direction: ltr;">    try</div><div style="direction: ltr;">    {</div><div style="direction: ltr;">        SocketAddress sa("localhost", 8888);</div><div style="direction: ltr;">        Socket socket(sa.GetFamily(), SOCK_STREAM);</div><div style="direction: ltr;">        socket.Connect(sa);</div><div style="direction: ltr;">        socket.Send(ciphertext.data(), ciphertext.size());</div><div style="direction: ltr;">    }</div><div style="direction: ltr;">    catch (const SocketException& e)</div><div style="direction: ltr;">    {</div><div style="direction: ltr;">        cerr << e.what() << endl;</div><div style="direction: ltr;">        return 1;</div><div style="direction: ltr;">    }</div><div style="direction: ltr;">    cout << "Message sent successfully" << endl;</div><div style="direction: ltr;">    return 0;</div><div style="direction: ltr;">}



    </div>
  • טליה שוורץ

    מנהלת קדם
    מנהלת
    01/02/2023 ב2:01 pm

    מצרפת לך פה תמונה שיהיה לך יותר קל לקרוא את הקוד

    והטקסט למעלה תוכלי להעתיק אם תצטרכי משהו

  • BAT

    הייטק
    חברה
    01/02/2023 ב4:52 pm

    תודה רבה!!!

  • עמנואל טסה

    הייטק
    חברה
    02/02/2023 ב6:27 pm

    היי,

    אני לא כ”כ יכולה לעזור בפיתוח כמו טליה 🙂, אבל אני מנהלת רשתות ואבטחת מידע ובהחלט יכולה לכוון אותך איך להקים תשתית מאובטחת SSL בין client-server.

Log in to reply.

מעוניינת בפרסום

חשוב: לא כל פרסום מאושר, נא לפרט בדיוק במה מדובר

ניתן לפנות גם במייל ל: [email protected]

מה את מחפשת?

מילות מפתח פופולריות לפי תחומים

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

דילוג לתוכן