تابع هش رمزنگاری چیست؟
پاسخ کوتاه: تابع هش رمزنگاری الگوریتم ریاضی یکطرفه است که رشته ورودی با هر طول را به رشته نویسه با اندازه ثابت (چکسام) نگاشت میکند. برگرداندن متن اصلی از روی هش ناممکن است.
تابع هش بلوک سازنده امنیت اینترنت مدرن است و از امضای دیجیتال و گواهی HTTPS تا فناوری زنجیره بلوک و ذخیره گذرواژه پایگاه را تغذیه میکند.
برخلاف رمزنگاری که با کلید مشخص رمزگشایی میشود، هش دقیقاً خیابان یکطرفه است. حتی قویترین ابررایانه هم نمیتواند هش SHA-256 را ریاضی به متن اصلی برگرداند.
افزون بر این، الگوریتم هش «اثر بهمن» دارد: عوض کردن حتی یک حرف بزرگ یا افزودن یک فاصله، هش خروجی را کاملاً متفاوت میکند. به همین دلیل هش برای تأیید یکپارچگی داده عالی است.
گذرواژه را روی سرور ابری هش نکنید
پاسخ کوتاه: اگر گذرواژه حساس یا کلید API را در سازنده هش ابری بچسبانید، آن رشته از شبکه میرود و ممکن است به صورت متن ساده روی سرور شخص ثالث لاگ شود. Utiliome هش را کاملاً محلی در حافظه مرورگر میسازد.
توسعهدهنده اغلب باید هش SHA-256 گذرواژه پایگاه، راز امضای وبهوک یا محموله JWT را برای آزمون بسازد. در سایت ابزار سئوی عمومی، رشته بسیار محرمانه با درخواست POST به سرور پشتیبان آنها میرود.
این آسیبپذیری امنیتی فاجعهبار است. راهی ندارید بدانید آن سرور مخفیانه رشته ورودی را کنار نشانی IP شما لاگ میکند یا نه.
Utiliome با معماری سختگیرانه اعتماد صفر طراحی شده. سازنده هش از API بومی window.crypto استفاده میکند. متنی که تایپ میکنید هرگز جعبه شنی دستگاه را ترک نمیکند و امنیت جدا از شبکه را تضمین میکند.
SHA-256 در برابر SHA-512؛ کدام را انتخاب کنیم؟
پاسخ کوتاه: SHA-256 استاندارد صنعت برای یکپارچگی داده و زنجیره بلوک است (مثلاً Bitcoin). SHA-512 فضای بیت بزرگتر و از نظر ریاضی قویتر دارد و جالب اینکه اغلب روی پردازنده ۶۴بیتی سریعتر حساب میشود.
هر دو الگوریتم به خانواده SHA-2 (Secure Hash Algorithm 2) تعلق دارند که NSA منتشر کرد، اما در معماری بیت داخلی و طول خروجی فرق دارند.
- SHA-256: رشته هگزادسیمال ۶۴ نویسهای خروجی میدهد. در همه زبانهای برنامهنویسی و دستگاه اینترنت اشیا پشتیبانی جهانی دارد و در برابر حمله شناختهشده نیروی خام و برخورد همچنان امن رمزنگاری است.
- SHA-512: رشته هگزادسیمال ۱۲۸ نویسهای خروجی میدهد. چون روی کلمه ۶۴بیتی کار میکند (در برابر کلمه ۳۲بیتی SHA-256)، روی CPU مدرن ۶۴بیتی دسکتاپ و سرور عملاً بسیار سریعتر اجرا میشود.
چرا SHA-1 برای گذرواژه ناامن است؟
پاسخ کوتاه: SHA-1 الگوریتم قدیمی است که پژوهشگران Google در ۲۰۱۷ با حمله برخورد آن را ریاضی شکستند. هرگز نباید برای ذخیره گذرواژه یا گواهی دیجیتال استفاده شود، هرچند برای کار غیر امنیتی مثل کامیت Git هنوز مفید است.
«برخورد هش» وقتی رخ میدهد که دو ورودی متن کاملاً متفاوت از نظر ریاضی دقیقاً همان خروجی هش را بدهند. تابع هش رمزنگاری مقاوم باید یافتن برخورد را ناممکن کند.
در ۲۰۱۷ پژوهشگران امنیتی اولین برخورد SHA-1 را ساختند (حمله SHAttered). با افزایش توان رایانش، جعل امضای دیجیتال SHA-1 از نظر اقتصادی آسان شده است.
Utiliome الگوریتم SHA-1 را فقط برای راستیآزمایی قدیمی و تطبیق چکسام دارد (مثل تأیید دانلود فایل یا هش مخزن Git). برای هر توسعه امنیتی تازه حتماً به SHA-256 یا SHA-512 ارتقا دهید.
شتاب سختافزاری در Web Crypto API
پاسخ کوتاه: بهجای کتابخانه ریاضی کند JavaScript، Utiliome از Web Crypto API (crypto.subtle) استفاده میکند که مستقیم به سختافزار بومی دستگاه وصل میشود و محاسبه را در چند میلیثانیه بدون قفل کردن مرورگر انجام میدهد.
سازنده هش قدیمی وب به پلیفیل پیچیده JavaScript (مثل CryptoJS) تکیه داشت. چون JavaScript تکنخی است، هش کردن محموله متن بزرگ با پلیفیل رابط مرورگر را کاملاً قفل میکرد.
با پیادهسازی API مدرن crypto.subtle.digest()، Utiliome ریاضی سنگین رمزنگاری را مستقیم به کتابخانه رمزنگاری بومی C++ سیستمعامل (و اغلب مستقیم به CPU سختافزار) میسپارد. اینطور هش SHA-512 همزمان با تایپ آنی حساب میشود و بازخورد زنده به توسعهدهنده میدهد.
نمک هش چیست و چرا لازم است؟
پاسخ کوتاه: اگر واژه password را هش کنید، هش SHA-256 حاصل در همهجای جهان یکسان است و در برابر حمله فرهنگ جدول رنگینکمان آسیبپذیر میشود. نمک رشته تصادفی است که پیش از هش به گذرواژه اضافه میشود تا خروجی یکتا شود.
این ابزار برای ساخت هش فوری عالی است، اما اگر پایگاه احراز هویت کاربر میسازید هرگز نباید هش خام SHA-256 را ذخیره کنید.
چون تابع هش قطعی است، مهاجم پایگاه عظیمی از هش میلیاردها گذرواژه رایج را از پیش حساب میکند (جدول رنگینکمان). برای شکست این کار، توسعهدهنده رشته تصادفی نویسه (نمک) را پیش از هش به گذرواژه میچسباند. برای ذخیره واقعی گذرواژه پایگاه قویاً الگوریتم هش تطبیقی مثل Argon2 یا Bcrypt را پیشنهاد میکنیم.