עבור לתוכן

שאלה בקשר להצפנת נתונים(ת.ז וכו') במאגר נתונים

Featured Replies

פורסם

שלום רב!

 

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

בנוסף יש במערכת מאגר של משימות לביצוע במסגרת העבודה.

כל מי שיש לו שם משתמש וסיסמה יכול להכניס לקוח חדש ומשימה ולראות את שאר הלקוחות ואת שאר המשימות, גם אם משתמש אחר הכניס אותם.

 

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

 

חוץ מזה אני לא יודע כמה אפשרי לעשות decypt. אם אני משתמש בשיטת הצפנה שהיא בלתי הפיכה כמו md5 אז אני יודע איך עושים את זה בתיאוריה אבל לא איך עושים את זה בפועל. כי אי אפשר לבצע decrypt.

 

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

 

 

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

 

אשמח לעזרה,

תומר.

פורסם

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

 

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

פורסם
  • מחבר
ציטוט של etal

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

 

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

היי, תודה רבה על התשובה, מאוד מעריך! :)

 

כמו שאמרתי אני מתכנת חובב, אני עושה את זה בעיקר בשביל הכיף והעניין.

 

קראתי קצת וראיתי שאפשר להצפין נגיד את כל המידע באתר עם איזשהו מפתח רנדומלי(שייוצר פעם אחת עם פונקציה ליצירת מחרוזת רנדומלית, לדוגמה openssl_random_pseudo_bytes) שאותו אני לא אשמור ב-db, אבל אני אצפין אותו(עם פונקציה הפיכה, לדוגמה aes) עבור כל משתמש עם הסיסמה שלו(המקורית, לא ה-hash) ואת המפתח המוצפן אני אשמור ב-db, כך שכשהוא יתחבר לאתר עם הסיסמה שלו הוא יוכל לפענח את המפתח המקורי וע"י כך לפענח את המידע באתר.

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

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים