• ¡Welcome to Square Theme!
  • This news are in header template.
  • Please ignore this message.
مهمان عزیز خوش‌آمدید. ورود عضــویت


امتیاز موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
Title: hash چیست؟ و موارد استفاده از Hash ...
حالت خطی
#1
hash چیست؟

يک Hash که به آن Checksum ، پيام Digest و يا اثرانگشت ، نيز گفته می شود ، فرآيندی است که بصورت رياضی، حجم يک جريان از داده را به يک طول ثابت کاهش می دهد ( معمولا" 128 و يا 160 بيت ) . عملکرد hash ، مشابه اثرانگشت يک شخص می باشد. اثرانگشت ، پارامتری منحصربفرد به منظور تشخيص هويت افراد بوده و در ادامه با استفاده از آن امکان دستيابی به ساير مشخصات افراد نظير : رنگ چشم ، قد ، جنسيت و ساير موارد دلخواه ، فراهم می گردد . اکثر توابع Hash از لحاظ رمزنگاری دارای عملکردی مشابه توابع رمزنگاری می باشند . در حقيقت ، برخی توابع hash صرفا" تغييرات اندکی را در توابع رمزنگاری ايجاد نموده اند . اکثر عمليات با دريافت يک بلاک از داده شروع و در ادامه با استفاده از يک فرآيند تکرارشونده و بکارگيری يک الگوريتم رمزنگاری ، تغييرات لازم در ارتباط با بيت ها ، اعمال می شود.


hashبه عبارتی دیگر

هش (Hash, Hash Code, Digest, Message Digest هم نامیده می شود) را می توان به صورت اثر انگشت دیجیتالی یک داده در نظر گرفت. با این روش شما می توانید رشته ای اندازه-ثابت (fixed length) از یک داده به دست آورید که با روش های ریاضی به صورت "یک طرفه" رمزنگاری شده است. کشف رشته اصلی از رشته هش آن (عملیات معکوس) به صورت کارا تقریبا غیر ممکن است. نکته دیگر اینکه هر داده یک رشته هش شده کاملا منحصر به فرد ایجاد می کند( احتمال یکی شدن رشته های هش دو رشته متفاوت در الگوریتم MD5 یک در 3.4028236692093846346337460743177e+38 می باشد.. این خواص ، هش کردن را به روشی کارا و ایده آل برای ذخیره سازی کلمات عبور در برنامه های شما تبدیل می کند. چرا؟ برای این که حتی اگر یک نفوذگر(Hacker) بتواند به سیستم و بانک اطلاعاتی شما نفوذ کند و بخشی از اطلاعات شما را به دست آورد (شامل کلمات عبور هش شده) نمی تواند کلمات عبور اولیه را از روی آن ها بازیابی کند.
[عکس: 001.gif]

توجه کنیدکه:

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

Hash ، دارای ويژگی های مهم زير می باشد :

امکان استنتاج ورودی از طريق خروجی وجود ندارد .

نمی توان دو ورودی را پيدا کرد که به ازای آنان خروجی يکسانی توليد گردد : احتمال توليد مقادير Hash يکسان برای دو مجموعه متفاوت از داده ها کمتر از 001 /0 درصد است .



موارد استفاده از Hash ها

Hash ها کلا موارد استفاده کمی دارند که ما در ادامه بحث آن ها را بیان می کنیم:

1) تشخیص درستی یک فایل Verifying file integrity

برای مثال زمانی که یک فایل با حجم بالا را دانلود می نماییم می توانیم با به دست آوردن مقدار MD5 آن فایل توسط دستور md5sum و مقایسه آن با مقدار Md5 داده شده توسط سایت مورد نظر از درستی فایلمان اطمینان حاصل کنیم.

hash (2کردن کلمه عبور Hashing passwords

3) نشانه گذاری اسناد به روش digitally (امضاهای digitally)

که نحوه انجام ان به وضوح در شکل زیر نشان داده شده است:

[عکس: 002.png]
انواع هش

•(128 bits, obsolete) MD4

•(128 bits) MD5

• (160 bits)RIPEMD-160

• (160 bits)SHA-1

•(longer versions of SHA-1, with slightly different designs) SHA-256, SHA-384, and SHA-512


انواع مختلفی از الگوریتم های قوی هش کردن برای استفاده در برنامه های کاربردی موجود هستند، محبوب ترین آنها که مورد استفاده برنامه نویسان هستند MD5 و SHA-1(Secure hash algorithm)می باشند. سیستم های قدیمی تر از( DES(Data Encryption Standard استفاده می کردند. این روش 56 بیتی دیگر یک روش قوی هش کردن محسوب نمی گردد. ، الگوریتم های قوی تری مانند SHA-256 و SHA-512 برای موارد خاص مانند امضاهای دیجیتالی توصیه می گردد ولی برای هش کردن کلمات عبوردر برنامه های امروزی SHA-1 هنوز سطح امنیت بسیار خوبی را فراهم می کند.

•الگوريتم های hashing ، از يک تابع ايمن رمزنگاری نظير Message Digest 5)MD5) و يا Secure Hash Algoritm)SHA) به منظور توليد يک مقدار Hash مرتبط با داده ورودی استفاده می نمايند . Hash ، يک نوع خاص از رمزنگاری يک طرفه است . برخی افراد ، hashing را به عنوان يک مدل رمزنگاری تلقی می نمايند . Hashing عملا" يک مدل رمزنگاری نمی باشد چراکه Hash نمی تواند رمزگشائی گردد ( بدست آوردن مقدار ورودی با اسنتاد و آناليز مقدار خروجی ) . شکل زير ، نحوه عملکرد الگوريتم SHA-1 ( نسخه شماره يک ، پياده سازی شده در سال 1994 ) را نشان می دهد :

•MD5 روشي براي توليد يك چكيده از يك پيام است ( Message Digest ) . چه يك كلمه ، يك عدد ، يك جمله ، يك كتاب چند صد صفحه اي ، يك فايل و ... به او بدهيد ، يك چكيده با طول ثابت 128بيتي توليد ميكند . حالا اين به چه دردي ميخورد ؟ فرض كنيد در حاشيه ء انتخابات پر شور مجلس ( كه قرار دوباره ملت يك حماسه ديگه توش خلق كنند ! و براستي اين مردم جز خلق كردن حماسه به درد ديگري هم ميخورند ؟ :roll: ) قراره وزير كشور نامه اي محرمانه به تمام استانداري هاي كشور ارسال كنه . ( حالا به چه روشي زياد مهم نيست ) اگر اين نامه بين راه توسط افرادي تغيير داده بشه ، دريافت كننده چطور ممكنه بفهمه ؟ اون ماموره و مجبور به اطاعت . خيلي بعيده به تهران تلفن بزنه و استعلام كنه ، شايد اصلا بالاش نوشته باشه محرمانه و اون مجبور باشه بدون اطلاع ديگران بهش عمل كنه ... اگر حالا متن اصلي وزير با مطلب ديگري تغيير داده شده باشه ( مثلا" : نمايندگان شوراي نگهبان رو به حوزه هاي انتخابيه راه نديد ! :twisted: 8) ) چه دردسر بزرگي ايجاد ميشه ...!

يكي از راه هاي اعتماد سازي در يك تبادل اطلاعات دو طرفه استفاده از امضاهاي ديجيتال است و چكيده پيام يا همون Message Digest نقش مهمي در اين مهم ايفا ميكنه . پيام شما ( هر چي كه ميخواد باشه ) هميشه داراي يك چكيده 128 بيتي است كه با متدي يكتا تهيه شده و پس از رمزنگاري به انتهاي نامه الصاق ميشود ، دريافت كننده ( كه به عنوان مثال در يك معماري مبتني بر PKI داراي كليد خصوصي - Private Key - خودش هست ) ميتوني با كليد خصوصي خودش چكيده پيام رو ( كه با كليد عمومي - Public key - كد شده ) باز كنه ، بعد متن پيام رو با همون الگوريتم يكتا درهم ريزي كنه ( Hashing ) و بعدش محصول رو با آنچه كه به پيام الصاق شده بود مقايسه كنه . با تكيه به معماري غير متقارن ( Asymmetric ) شناسائي و تصديق هويت ( Authentication ) اين يكي از روشهاي مناسب براي اعتماد سازي است .

• MD5 يا Message Digest version 5 در دانشگاه MIT و توسط پروفسور Ronald L. Rivest طراحي شده و متن كامل داستان MD5 رو ميتونيد در آر اف سي شماره 1321 مطالعه كنيد : http://www.faqs.org/rfcs/rfc1321.html

اين صفحه وب هم حاوي مقداري سورس كد به زبانهاي مختلف از جمله سي و دلفي و جاوا است كه ميتوني توليد چكيده پيام به روش ام دي فايو رو حمايت كنه :
http://userpages.umbc.edu/~mabzug1/cs/md5/md5.html


نكته پاياني : شايد موقع دريافت نرم افزار از برخي سايتهاي معتبر ديده باشيد كه كنار فايلهاي مربوطه نوشته اند MD5 و كنار آن هم رشته اي مثل اين :
900150983cd24fb0d6963f7d28e17f72 ) اين رشته خروجيه abc است (

اينگونه سايتهاي براي ايجاد اعتماد ، از فايلهاي خود با برنامه هائي كه چكيدهء MD5 توليد ميكنند ، امضاي مربوطه را ايجاد و اعلام ميكنند ، شما هم بعد از دريافت ميتونيد با يكي از ابزارهاي متداول همينكار ( روي لينوكس اصلا دستوري به همين نام و به همين مقصود وجود داره ) فايل مربوطه رو چك كنيد تا از صحت محتواي اون مطمئن بشيد . مدتها قبل فردي توانست سايت حمايت كننده SendMail كه ميل سروري معروف روي پلت فرمهاي مبتني بر يونيكس است را هك كرده و بجاي تغيير صفحات وب آن ، نسخه اي حاوي يك تروجان را به عنوان نسخه جديد آپلود كرد و بعد هم به ا راسال خبرنامهء رسمي سايت SendMail باعث شد تعداد زيادي از مديران سرورها جهت نصب نسخه جديد هجوم بيارن و در واقع نسخه محتوي تروجان را دريافت و نصب كنند ( و براستي وقتي سورس باز است چه كسي به خودش زحمت چك كردن اون رو ميده ؟ بقول يكي از اساتيد مرحومم ، مخفي ترين چيز ، چيزيه كه اصلا براي مخفي كردنش تلاش نشده ! ) و اين حركت زيركانه اون هكر باعث شد صدها سايت تحت سيطره اون قرار بگيرن كه البته ناگفته پيداست براي برقراري يك حملهء DDOS ( يا Distributed Denail of service ) به اونها احتياج داشت

•الگوريتم رمزنگاري متقارن BlowFish يكي از روشهاي متداول رمزنگاري است . اين الگوريتم با پذيرش كليد عمومي از 32 بيت تا 448 بيت ، جايگزين خوبي براي روشهائي مثل DES است . ( خصوصا در كشورهائي مثل آمريكا كه صدور و فروش نرم افزارهاي داراي سيستم رمزنگاري به خارج از كشور ممنوع و براي استفاده هاي داخلي هم در طول كليد محدوديتهائي وجود داره )
از اين روش امروزه به وفور در نرم افزارهاي گسترده و سازماني استفاده ميشه ، به عنوان مثال Oracle . اين الگوريتم در سال 1993 توسط Bruce Schneier طراحي و توسعه داده شد .
توضيحات مفيدي براي اين الگوريتم اينجا : http://www.schneier.com/blowfish.html است كه ميتونيد استفاده كنيد . پياده سازي هاي متعددي از اين الگوريتم به زبانهاي سي ، سي شارپ ، جاوا ، دلفي ، بيسيك وجود داره كه در صورت نياز با يك جستجوي ساده ميتونيد پيداشون كنيد .


گروه دور همی پارسی کدرز
https://t.me/joinchat/GxVRww3ykLynHFsdCvb7eg
 
پاسخ
  


پیام‌های این موضوع
hash چیست؟ و موارد استفاده از Hash ... - توسط Amin_Mansouri - 07-24-2011، 09:27 AM

موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  چگونه از cisco attack بك ترك استفاده ميشه؟ mosavi 4 6,887 07-11-2013، 10:26 AM
آخرین ارسال: Oep

پرش به انجمن:


Browsing: 2 مهمان