دانش صفر یا Zero Knowledge

دانش صفر

دانش صفر

اعتماد به اطلاعات شخصی افراد در خدمات آنلاین باعث می شود تا ارائه دهنده خدمات ، تضمین کافی برای ارائه سرویس های خود را داشته باشد . از سوی دیگر ، کاربران نیز باید اطمینان حاصل کنند که داده های آن ها دچار مشکلات امنیتی نخواهند گردید . برای اطمینان از حفاظت صحیح از داده های خصوصی معمولا از سرویس های رمزنگاری Zero-Knowledge استفاده می شود .
در این جا می خواهیم بررسی کنیم که در یک سیستم رمزنگاری چه چیزی می تواند یک Zero Knowledge باشد و یک Zero-Knowledge چگونه کار خواهد کرد و چرا آن بهترین راه برای محافظت از اطلاعات شخصی می باشد ؟
به طور خلاصه رمزنگاری Zero-Knowledge بدان معنا است که ارائه دهندگان ارائه دهندگان سرویس های مختلف ، هیچ اطلاعاتی درباره اطلاعات ذخیره شده در سرورهای خود نمی دانند .در واقع رمزنگاری دانش صفر یک روش برای یک تایید کننده (Verifier) می باشد تا به وسیله آن درستی یک عبارت داده شده را بدون آن که اطلاعات خاصی درباره آن داشته باشد را اثبات کند . برای اثبات درستی یک موضوع باید برخی از اطلاعات مخفی برای تایید کننده موجود باشد و این بدان معنا است که هر متقاضی امکان اثبات خود را به هرکسی نخواهد داشت .
  اما برای این که این تعریف بهتر درک شود باید درباره چگونگی رمزنگاری به طور کلی صحبت کنیم .معمولا خدمات آنلاین باید با نوعی رمزگذاری محافظت شوند . به عبارت دیگر هنگامی که ما اطلاعات خود را در یک وب سایت یا برنامه وارد می کنیم ، اطلاعات ما به گونه ای رمزگذاری می شود که فقط توسط افراد مجاز با یک کلید مخفی قابل دستیابی می باشد . فرض کنید اکر این کلید رمزنگاری به هر دلیلی به سرقت برود و یا افشاء شود چه چیزی می تواند از اطلاعات ما محافظت کند . این همان جایی است که رمزنگاری Zero-Knowledge وارد می شود .
برای ورود به یک وب سرور ، شما باید مجاز بودن خود را نشان دهید . به همین دلیل معمولا رمز عبور خود را در صفحه Login وارد می کنید . به طور سنتی ، سرور دارای یک نسخه کد شده از رمز عبور شما می باشد و اگر نسخه کد شده با رمز شما مطابقت داده شود سیستم برای شما باز می شود . اما یک مشکل اساسی وجود دارد که سرور نیز اطلاعات حساس شما (رمز عبور) را می داند .
برای حل این مشکل ، در سیستم ها یک رمز عبور خصوصی و یک رمز عبور عمومی تعریف می شود که رمز عبور عمومی را سرور می داند ولی رمز عبور خصوصی فقط در اختیار کاربر می باشد . بنابراین سرور با کنترل رمز عبور عمومی که به وسیله روش های ریاضی از رمز عبور خصوصی قابل استخراج است هویت کاربر را تایید می کند و این در واقع همان Zero-Knowledge  می باشد .
در دانش صفر پروتکل های امنیتی معمولا یک سری اطلاعات را از متقاضی در قالب یک پیام دریافت می کنند و در صورتی که صحت این پیام در سمت دیگر تایید شد هویت شخص متقاضی تایید می شود . معمولا دانش صفر توسط توابع درهم ساز یک طرفه (One Way Hash Function) محافظت و نگهداری می شوند .
استانداردهای Zero-Knowledge شیوه های رمزنگاری مرسوم را به شکل قابل توجهی بهبود می بخشند و در حقیقت امن ترین راه برای محافظت از حریم خصوصی کاربران در محیط اینترنت می باشند .

نویسنده : مسعود معاونی


https://telegram.me/moaveni_ir

https://telegram.me/moaveni_ir

معرفی KDF

معرفی KDF

معرفی KDF

یک تابع استخراج کلید (KDF) یک جزء اساسی و ضروری در یک سیستم رمزنگاری است که هدف آن ایجاد یک کلید از منابع مختلف می باشد و معمولا از مقادیر تصادفی به خوبی در آن استفاده می شود تا یک مهاجم نتواند با استفاده از توزیع های یکنواخت به اطلاعات حساسی برسد . معمولا از KDF ها برای ایجاد یک یا چند کلید مخفی قوی با استفاده از مقادیر مختلفی نظیر کلیدهای اصلی ، رمزهای عبور ، یا عبارت های عبور استفاده می شود .
در واقع KDF ها توابع یا الگوهایی برای استخراج کلید از سایر اطلاعات مخفی هستند . این اطلاعات مخفی ممکن است یک کلید مخفی دیگر یا رمزهای عبور در کنار اطلاعاتی کاملا تصادفی باشند به گونه ای که مهاجم به راحتی نمی تواند از اطلاعات موجود برای انجام حملات مختلف استفاده کند .
KDF ها می توانند با استفاده از بسط کلیدها به کلیدهای بلندتری برسند یا به بازتولید کلیدها با فرمت های گوناگون دست یابند .شکل های مختلفی از KDF ها وجود دارد که به تمامی آن ها در اصطلاح کلی KDF یاTLS و یا PRF (توابع شبه تصادفی) گفته می شود .
معمولا اکثر KDF ها دارای محدودیت های بسیاری در ورودی اطلاعات خود می باشند و بزرگترین مشکلی که آن ها با آن مواجه هستند این است که باید دارای پارامترهای مشابه ای برای پیکربندی باشند .
یک ایده جذاب و نو برای KDF ها این است که از آن ها به صوت یک طرفه (one way) استفاده شود تا بدین شکل خروجی به راحتی قابل تشخیص نباشد . در چنین طرحی مواد مصرفی (اطلاعات محرمانه) در ورودی حاوی مقادیر مشخصی هستند که در کنار اطلاعات کاملا تصادفی قرار می گیرند و فرآیندی مشابه MAC (Message Authentication Code) بر روی آن ها اعمالمی شود .
در ادامه به چندین کاربرد مهم KDF ها می پردازیم :
  • تقویت کلید و بسط دادن کلید
  • بدست آوردن کلیدهای با طول های مختلف
  • بدست آوردن کلیدهای از رمزهای عبور مخفی یا عبارت های عبور
  • ایجاد کلیدهایی یا چندین مولفه از پروتکل های مختلف
  • استفاده از آن در تولید پارامترهای غیر مخفی نظیر نمک ها (Salt)
  • استخراج یک یا چند کلید از یک مقدار مخفی مشترک که به این خاصیت تنوع کلید یا (Key Diversification) گفته می شود . چنین امکانی می تواند جلوی یادگیری اطلاعات و مقادیر مخفی را توسط مهاجمان بگیرد و جلوی تولید کلیدهای ضعیف را می گیرد .

گردآورنده : مسعود معاونی

https://telegram.me/moaveni_ir

https://telegram.me/moaveni_ir