zakarya gholizadeh

کاربر عادی
  • تعداد ارسال ها

    12
  • تاریخ عضویت

  • آخرین بازدید

9 دنبال کننده

درباره zakarya gholizadeh

  • درجه
    عضو سایت
  1. آیا می دانید در دنیای کامپیوتر هر فایل دارای یک اثر انگشت منحصر به فرد است این اثر انگشت MD5 Checksum یا ام دی 5 یا Message-Digest algorithm 5 یا کد هش /hash code نامیده می شود MD5 معمولا در سایت های دانلود نرم افزار دیده می شود به دلیل اینکه هر تغییر کوچک و بزرگ در فایل یا برنامه سبب تغییر کلی MD5 یا اثر انگشت آن می شود. استفاده های فراوان MD5 Checksum از اثر انگشت فایل استفاده های بسیاری می شود مثلا برای تست صحت فایل ها: برای اینکه بفهمیم در هنگام انتقال فایل ها آیا تغییری در اثر خطا یا عوض شدن با فایلی مخرب ایجاد شده است از md5 استفاده می شود اثر انگشت هر فایل با ام دی 5 یک کد با طول ثابت (32 کاراکتر) است مثلا اگر MD5 یا اثرانگشت فایلی به بزرگی 100 مگابایت را با اثر انگشت فایلی به حجم چند کیلوبایت از نظر طول کد تولید شده مقایسه کنید یکسان است از این مطلب یک چیز مهم برداشت می شود : کد تولید شده توسط MD5 یک طرفه است یعنی نمی توان از کد به فایل رسید این ویژگی باعث استفاده های بیشتری از MD5 Check sum می شود مثلا بعضی برنامه نویسان برای چک کردن صحت یک رمز / پسورد از md5 استفاده می کنند یا بعضی از انتی ویروس ها کد md5 ویروس ها را در دیتابیس خود ذخیره کرده و در هنگام اسکن فایل اثر انگشت فایل را تولید و با پایگاه داده ی خود مقایسه می کنند که البته این روشهای استفاده پسندیده نیست و مثلا می توان با تغییری بسیار کوچک مثلا افزودن چند بیت بی مصرف به ویروس یا فایل مخرب کد MD5 Checksum آن را تغییر داد.   همچنین در سال 2007 گروهی از محققان شامل Arjen Lenstra روشی را شرح کردند که با آن می توان دو فایل با یک اثر انگشت تولید کرد ولی باید توجه داشت که مساوی شدن کد ام دی 5 دوفایل یک در عدد 3.4 در 10 به توان 34 است. در ویکیپدیا و همچنین نرم افزار هایی به نام هایی چون md5 crack یا MD5CRK برای پیدا کردن رمز های کد شده توسط md5 وجود دارند .
  2. مثال :

    Hash یک قالب رمز نگاری در قالب ریاضی و یک طرفه است . مثالی ریاضی و ساده برای بهتر متوجه شدن Hash و یک طرفه بودن آن : منظور از "یک طرفه" این مفهوم است که قابل برگشت نمی باشد برای مثال فرض کنید فرمول ما X+2 باشد ! و برای ورودی مانند 3 خروجی ما برابر 5 خواهد بود حال اگر شما 5 را در اختیار داشته باشید می توانید مقدار اولیه را به راحتی با فرمول معکوس Y-2 بدست آورید ! در روش های "یک طرفه" این امکان وجود ندارد و شما نمی توانید حتی با وجود داشتن خروجی ورودی را به دست آورید . Hash یک قالب رمز نگاری در قالب ریاضی و یک طرفه است . مثالی ریاضی و ساده برای بهتر متوجه شدن Hash و یک طرفه بودن آن : منظور از "یک طرفه" این مفهوم است که قابل برگشت نمی باشد برای مثال فرض کنید فرمول ما X+2 باشد ! و برای ورودی مانند 3 خروجی ما برابر 5 خواهد بود حال اگر شما 5 را در اختیار داشته باشید می توانید مقدار اولیه را به راحتی با فرمول معکوس Y-2 بدست آورید ! در روش های "یک طرفه" این امکان وجود ندارد و شما نمی توانید حتی با وجود داشتن خروجی ورودی را به دست آورید .
  3. Collision (تصادف) در Hash :

    البته معنی صحیح Collision "تصادم" و "برخورد" می باشد . زمانی که مقدار Hash دو ورودی متفاوت یکسان باشند می گوییم Collision رخ داده است. اما تا کنون هیچ موردی از Collision دیده نشده است که این امر از این حقیقت ناشی می شود که تعداد مقادیر یک الگوریتم hash بسیار زیاد می باشند. برای مثال یک Hash 128 بیتی می تواند 3.4 x 1038 مقدار ممکن داشته باشد. که معادل 340,282,366,920,938,463,463,374,607,431,768,211,456 می باشد.   محبوب ترین hashهایی که مورد استفاده برنامه نویسان هستند MD5 و SHA-1 می باشند. سیستم های قدیمی تر از( DES(Data Encryption Standard استفاده می کردند. این روش 56 بیتی دیگر یک روش قوی هش کردن محسوب نمی گردد.  الگوریتم های قوی تری مانند SHA-256 و SHA-512 برای موارد خاص مانند امضاهای دیجیتالی توصیه می گردد ولی برای هش کردن کلمات عبوردر برنامه های امروزی SHA-1 هنوز سطح امنیت بسیار خوبی را فراهم می کند. SHA مخفف Secure hash algorithm می باشد.   البته در حال حاضر MD5 کاربرد زیادی پیدا کرده است ، و برای ذخیره رمز های عبور از آنها استفاده می شود .الگوریتم MD5 توسعه ای از الگوریتم MD4 می باشد با این تفاوت که MD5 کمی کندتر از MD4 عمل می کند اما در طراحی آن بسیار محافظه کارانه عمل شده است. MD5 به این دلیل طراحی شد که حس کردند MD4 به عنوان سرعت بالایی که داشت پذیرفته شده و از امنیت بالایی در شرایط بحرانی برخوردار نمی باشد. MD4 برای سرعت بالا طراحی شده ولی احتمال شکست آن در رمز کردنی موفق وجود دارد. MD5 کمی در سرعت کند شده با این تفاوت که بیشترین امنیت را داراست.
  4. Hash Table

    همانطور که در جستجوی دودویی دیده شد با استفاده از یک ساختمان داده به خصوص به اسم درخت جستجوی دودویی کارایی جستجو را بهبود بخشید یم.  رسیدیم. O(logn) به جستجوی دودویی با O(n) در واقع از جستجوی خطی با حال می خواهیم یک ساختمان داده جدید به نام جدول هش را معرفی کنیم که کارایی عمل جستجو را تا افزایش می دهد.O(1) یک جدول هش از دو قسمت تشکیل شده : یک آرایه (جدول واقعی جایی که دادهایی که جستجو می شود  ) که به آن تابع هش می گویند.mapping function در آن ذخیره می شود ) و یک تابع  نگاشت ( اندیس های آرایه که  (integer space ) تابع هش نگاشتی است از فضای ورودی به فضای اعداد صحیح را مشخص می کند . به عبارت دیگر تابع هش روشی را فراهم می کند  برای اختصاص دادن اعداد به داده های ورودی به گونه ای که سپس داده  ورودی می تواند در اندیس آرایه مطابق باعدد تخصیص داده ذخیره شود.در ادامه مثالی در این رابطه  بیان می کنیم: مثال را آغاز می کنیم. یعنی از رشته ها به عنوان داده هایی ابتدا با یک آرایه جدول هش از رشته ها که ذخیره و جستجو می شوند استفاده می کنیم . اندازه جدول هش را در این مثال می گیریم.     در مرحله بعد ما به یک تابع هش نیاز دارم. راههای زیادی برای ساختن یک تابع هش وجود دارد. در حال حاضر یک تابع هش ساده را در نظر می گیریم. که یک رشته را به عنوان ورودی میگیرد. مقدار هش برگشتی از تابع برابر مجموع  کاراکتر های اسکی است که رشته ورودی را می سازند به پیمانه اندازه جدول:       اجرا می کنیم که مقدار 3 حاصل می شود.("Steve",12) تابع هش را باپارامتر های .  را در جدول ذخیره می کنیم Steve  حال رشته          اجرا میکنیم("Spark",12) تابع هش را با پارامتر های ."Spark"  بیایید رشته دیگری را امتحان کنیم: که عدد 6 حاصل می شود. سپس آن را نیز در جدول ذخیره میکنیم.       اجرا میکنیم . که این بار نیز مقدار 3 حاصل می شود.("Notes",12)  حال تابع هش را با پارامتر های را نیز در جدول درج می کنیم. Notesرشته     مشاهده می شود که  دو ورودی متفاوت مقدارهش  یکسانی دارند و هر دو عنصر باید در یک مکان در آرایه درج شوند که این مساله غیر ممکن است . و همانطور که قبلا نیز ذکر شد به این مساله تصادم گفته (linear probing) می شود. در رابطه با تصادم الگوریتم های زیادی وجود دارد از قبیل اکتشاف خطی  و زنجیرسازی جداگانه. بررسی می کنیم. ر ا  (Separate Chaining) که ما در اینجا زنجیره سازی جداگانه زنجیره سازی جداگانه به مقدار کمی تغییر در ساختمان دادهمان نیاز دارد. به جای ذخیره سازی مستقیم داده ها در آرایه آنها را در لیست های پیوندی ذخیره می کنیم. هر عنصر آرایه به یکی از این لیست های پیوندی اشاره می کند. زمانی که مقدار هش یک ورودی به دست آمد آن عنصر به لیست پیوندی که در اندیس مورد  نظر در آرایه  وجود دارد اضافه  می شود . از ان جایی که  لیست های پیوندی محدودیت در طولشان ندارند مساله تصادم ها حل شده به حساب می آید. اگر دو داده متفاوت مقدار هش یکسانی داشته باشند هر دوی آنها در لیست پیوندی ذخیره می شوند. بیایید مثال بالا را این بار با ساختمان داده تغییر یافته مان بررسی نماییم :   دوباره  Steve را با مقدار هش 3 به جدولمان اضافه میکنیم:   هم چنین Spark با مقدار هش 6 را نیز به جدولمان اضافه می کنیم:     حال Notes با مقدار هش 3 (همانند مقدار هش Steve) را اضافه می کنیم:     مراحل جستجو مشابه با عمل درج در جئول می باشد. ما مقدار هش داده ای را که می خواهیم جستجو شود  را به دست می آوریم. سپس به ان مکان از آرایه می رویم. لیستی که از آن مکان سرچشمه می گیرد (آغاز میشود) را بررسی می کنیم. و می بینیم که چیزی که به دنبال آن هستیم در لیست وجود دارد یا نه . =>تعداد مراحل O(1) می باشد. زنجیره سازی جداگانه Separate chaining)  ) به ما این امکان را می دهد که مساله تصادم را در یک روش ساده و قدرتمند حل نماییم . با این حال هنوز مشکلاتی وجود دارد . حالتی را فرض کنید که تمام داده های ورودی دارای یک مقدار هش باشند. در این مورد برای جستجوی یک داده باید یک جستجوی خطی با O(n) در لیست  پیوندی انجام دهیم .  پس در بدترین حالت این روش O(n) را خواهیم داشت که احتمال آن بسیار کم است . در حال که در بهترین حالت و حالت متوسط O(1) را خواهیم داشت.        
  5. انواع هش

    MD4 (128 bits, obsolete) MD5 (128 bits) RIPEMD-160 (160 bits) SHA-1 (160 bits) SHA-256, SHA-384, and SHA-512 (longer versions of SHA-1, with slightly different designs)   انواع مختلفی از الگوریتم های قوی هش کردن برای استفاده در برنامه های کاربردی موجود هستند، محبوب ترین آنها که مورد استفاده برنامه نویسان هستند MD5 و SHA-1(Secure hash algorithm)می باشند. سیستم های قدیمی تر از( DES(Data Encryption Standard استفاده می کردند. این روش 56 بیتی دیگر  یک روش قوی هش کردن محسوب نمی گردد. ، الگوریتم های قوی تری مانند SHA-256 و SHA-512  برای موارد خاص مانند امضاهای دیجیتالی توصیه می گردد ولی برای هش کردن کلمات عبوردر برنامه های امروزی SHA-1 هنوز سطح امنیت بسیار خوبی را فراهم می کند.
  6. موارد استفاده از Hash ها :

    Hash ها کلا موارد استفاده کمی دارند که ما در ادامه بحث آن ها را بیان می کنیم:  تشخیص درستی یک فایل Verifying file integrity برای مثال زمانی که یک فایل با حجم بالا را دانلود می نماییم می توانیم با به دست آوردن مقدار MD5 آن فایل توسط دستور md5sum  و مقایسه آن  با مقدار Md5  داده شده توسط سایت مورد  نظر  از درستی فایلمان اطمینان حاصل کنیم. hash  کردن کلمه عبور Hashing passwords قبلا به طور مفصل بحث شد.    نشانه گذاری  اسناد به روش digitally (امضاهای digitally) که نحوه انجام ان به وضوح در شکل زیر نشان داده شده است:
  7. شناسایی اعضا با استفاده از Hash :

    تا کنون نشان داده ایم که بازیابی کلمه عبور اصلی از روی رشته هش تقریبا غیر ممکن است ، خب چگونه برنامه های ما تشخیص دهند که کلمه عبور وارد شده توسط کاربر صحیح است ؟ به سادگی ! با تولید رشته هش کلمه عبور وارد شده توسط کاربر و مقایسه آن با رشته هش ذخیره شده در رکورد  بانک اطلاعاتی مربوط به کاربر می توانید متوجه شوید که آیا دو رشته با هم برابرند یا نه. بگذارید با ذکر یک مثال این بحث را ادامه دهیم.      
  8. دو خصوصیت Hash ها :

    یکی از دو خصوصیت الگوریتم های   HASHاینه که معکوس پذیر نیستند! دومی اینه که هرگز دو ورودی متفاوت به خروجی یکسان منجر نمی شوند. هر یک از این دو خصوصیت اگر نقض بشه می گیم الگوریتم شکسته!!!  
  9. Hash چیست ؟

    سلام با تشکر فراوان از نظر و راهنماییت برای ادامه تحقیقاتم. امیدوارم بازم نظر بدی و من رو راهنمایی کنی !!!
  10. انتظار عید !!!

    آسمان غرق خیال است کجایی آقا ؟ آخرین ساعت سال است کجایی آقا ؟ یک نفس عاشق اگر بود زمین میفهمید عاشقی بی تو محال است کجایی آقا ؟
  11. کاربرد Hash Code

    یکی از مهمترین کاربرد های آن، اطمینان از کامل و سالم بودن فایل دانلود شده می‌باشد. اگر فایلی ناقص دانلود شده باشد و یا حتی از لحاظ ظرفیت یکی باشند ولی کد Hash آنها با هم متفاوت باشد، نشان از درست نبودن عمل دانلود می‌باشد و یا حتی در حالاتی خاص ویروسی شدن فایل می‌تواند باعث تغییر Hash Code شود. ● MD۵ یا اثر انگشت فایلها چیست ؟ آیا می دانید در دنیای کامپیوتر هر فایل دارای یک اثر انگشت منحصر به فرد است این اثر انگشت MD۵ Checksum یا ام دی ۵ یا Message-Digest algorithm ۵ یا کد هش /hash code نامیده می شود MD۵ معمولا در سایت های دانلود نرم افزار دیده می شود به دلیل اینکه هر تغییر کوچک و بزرگ در فایل یا برنامه سبب تغییر کلی MD۵ یا اثر انگشت آن می شود. ● استفاده های فراوان MD۵ Checksum از اثر انگشت فایل استفاده های بسیاری می شود مثلا برای تست صحت فایل ها: برای اینکه بفهمیم در هنگام انتقال فایل ها آیا تغییری در اثر خطا یا عوض شدن با فایلی مخرب ایجاد شده است از md۵ استفاده می شود اثر انگشت هر فایل با ام دی ۵ یک کد با طول ثابت (۳۲ کاراکتر) است مثلا اگر MD۵ یا اثرانگشت فایلی به بزرگی ۱۰۰ مگابایت را با اثر انگشت فایلی به حجم چند کیلوبایت از نظر طول کد تولید شده مقایسه کنید یکسان است از این مطلب یک چیز مهم برداشت می شود : کد تولید شده توسط MD۵ یک طرفه است یعنی نمی توان از کد به فایل رسید این ویژگی باعث استفاده های بیشتری از MD۵ Check sum می شود مثلا بعضی برنامه نویسان برای چک کردن صحت یک رمز / پسورد از md۵ استفاده می کنند یا بعضی از انتی ویروس ها کد md۵ ویروس ها را در دیتابیس خود ذخیره کرده و در هنگام اسکن فایل اثر انگشت فایل را تولید و با پایگاه داده ی خود مقایسه می کنند که البته این روشهای استفاده پسندیده نیست و مثلا می توان با تغییری بسیار کوچک مثلا افزودن چند بیت بی مصرف به ویروس یا فایل مخرب کد MD۵ Checksum آن را تغییر داد همچنین در سال ۲۰۰۷ گروهی از محققان شامل Arjen Lenstra روشی را شرح کردند که با آن می توان دو فایل با یک اثر انگشت تولید کرد ولی باید توجه داشت که مساوی شدن کد ام دی ۵ دوفایل یک در عدد ۳.۴ در ۱۰ به توان ۳۴ است. در ویکیپدیا و همچنین نرم افزار هایی به نام هایی چون md۵ crack یا MD۵CRK برای پیدا کردن رمز های کد شده توسط md۵ وجود دارند ● اما استفاده از md۵ برای کاربران اینترنت برای استفاده از md۵ برای چک کردن اینکه آیا فایل دانلود شده به صورت کامل است و اینکه فایل توسط ویروسی آلوده نشده و غیره باید در صفحه ی دانلود نرم افزار یا فایل به دنبال کد md۵ آن بگردید و بعد از دانلود و تولید کد md۵ با نرم افزاری که در ادامه توضیح داده شده است و چک کردن برابری دو کد تولید شده اگر برابر بود فایل کاملا درست بوده و اگر برابر نیودند معلوم می شود که یا فایل ناقص دانلود شده است یا یک فایل دیگر دانلود شده یا فایل تغییر یافته و توسط ویروسی آلوده شده است ● بهترین نرم افزار تولید اثر انگشت فایل یا MD۵ Checksum چطور کد md۵ را تولید کنیم؟ در سیستم عامل های لینوکس ،یونیکس وغیره به جز ویندوز ابزارهایی برای تولید کد md۵ وجود دارد برای ویندوز نیز ابزارهای فروانی وجود دارد با باز کردن این برنامه پنجره ی انتخاب فایل ظاهر می شود و با انتخاب فایل یا برنامه ی مورد نظر ، کد md۵ آن محاسبه شده و نمایش داده می شود در صورتی که حجم فایل بالا باشد تولید کد کمی زمان می برد و در این زمان پنجره ی دیگری که میزان محاسبه ی کد را نمایش می دهد را دربر دارد همچنین می توانید با راست کلیک بر پنجره ی برنامه و انتخاب گزینه ی context menu Association می توان به راحتی و با راست کلیک روی هر فایلی کد MD۵ Checksum را تولید کرد.
  12. Hash چیست ؟

    Hash کدها به طور خلاصه کدهایی هستند بر اساس الگوریتمهایی که با محاسبات بر روی فایل ها تولید می شوند. یعنی طبق یک سری الگوریتم هایی که بر روی فایلها محاسبات انجام میدهند برای آنها یک کد یکتایی خاصی (Unique) تولید میکنند. این کد در صورتی که حتی یک bit از آن فایل عوض شود، تغییر می‌کند. به این کدها به طور کلی هش کد Hash Code می‌گویند و چون هیچ دو فایلی Hash کدی همانند هم ندارند (مگر آنکه هردو یک فایل باشند ولی با نامهای متفاوت و یا مکان‌های متفاوتی) بنابر این، می‌توان Hash کدها را همانند اثر انگشت ما انسانها دانست.