بلاک‌چین یا زنجیره بلوک – ققنوسی برخاسته از خاکستر تورنت

این روزا هرجا رو نگاه می‌کنی، از مطبوعات تا تلویزیون تا شبکه‌های مجازی، محاله حداقل با یک تیتر در رابطه با Blockchain (یا نام‌های دیگه‌ی اون یعنی: بلاک‌چین، زنجیره بلوک، زنجیره بلاک) مواجه نشی. یه عده میگن بلاک‌چین مساوی با همون بیت‌کوین(!) و متحول کننده‌ی دنیای اقتصاد و مبادلاتش هست. یه عده میگن زنجیره بلاک آینده‌ای محقق شده از نسل نوی اینترنت هست. یه عده میگن زنجیره‌بلوک بَده و منحرف‌کننده‌ی بشریت از راه راست و باید کلاً از چرخه‌ی هستی محو بشه و … امّا از اونجایی که ذهن جستجوگر من همیشه سرش درد میکنه برای موضوعاتی که این همه حاشیه دور و برش هست و دوست داره از حقیقتشون سر دربیاره، تصمیم گرفتم برم دنبالش و ببینم این بلاک‌چین نهایتاً چیه. اولین جواب رو به سؤال ساده‌ی من در رابطه با این که “بلاک‌چین چیه؟“، ویکی‌پدیا داد:

برداشت آزادی از تعریف بلاک‌چین (Blockchain) در ویکی‌پدیا:

“بلاک‌چین، دفترحساب توزیع‌شده و غیرمتمرکزی عمومی (Public) است که از آن به منظور ثبت معاملات میان چندین کامپیوتر، در ساختاری peer-to-peer استفاده می‌شود.”

نکته: در این مطلب شما بارها و بارها با کلمه‌ی بلاک‌چین یا معادل‌های اون که در پاراگراف اول، داخل پرانتز ذکر شدن، و همینطور بلاک یا همون بلوک، روبه‌رو میشید که دلیلش اینه که تمام این کلمات یکسان هستن و معادل همدیگه و در متون و گفتارهای فارسی از همه‌ی این کلمات استفاده میشه، بنابراین هدف این شد که با استفاده از تمام این کلمات معادل، مخاطبی که این مطلب رو میخونه اگر بعدها چشمش به هرکدوم از این کلمات افتاد بدونه که منظور از همه‌ی این واژه‌ها، همون Blockchain هست.

نگاهی به گذشته: از زیرساخت‌های Server Base تا ایده‌ی شبکه‌های تورنت (Torrent)

بیشتر ارتباطات در دنیای اینترنت از گذشته تا به الان بر مبنای ساختاری Client/Serverای هست. به این صورت که معمولاً دیتابیس‌ها که محل نگهداری اطلاعات هستن، به صورت متمرکز در یک سرور (یا سیستم) ذخیره و نگهداری میشن و هرکس قصد دسترسی به اطلاعات رو داشته باشه باید به سرور متصل بشه و درخواست دریافت داده‌های موردنظرش رو بده. پس به عبارتی ما در دنیای اینترنت با ساختار سلسله مراتبی از ارتباطات روبه‌رو هستیم.

ذخیره‌سازی دیتابیس‌ها در یک سیستم باعث میشه که متناسب با افزایش حجم اطلاعات دیتابیس، هزینه‌ای که در قبال اجاره یا خرید فضای ذخیره‌ی این اطلاعات پرداخت میشه هم، افزایش پیدا کنه. از طرف دیگه، مشخصه‌ی اصلی این دیتابیس‌ها که در دنیای امروز دارن تبدیل میشن به دیتابیس‌های قدیمی و سنّتی، این هست که این دیتابیس‌ها تحت نظر یک مدیریت واحد هستن. یعنی چی؟

فرض کنین قراره در یک سازمان، دیتابیسی برای ذخیره اطلاعات کارکنان راه‌اندازی بشه؛ مسئول انفورماتیک اون سازمان به عنوان مدیر این دیتابیس تصمیم می‌گیره که چه نوع داده‌هایی در دیتابیس ذخیره بشن، چه کسانی بتونن داده‌ای رو در دیتابیس ذخیره کنن یا تغییر بدن، چه کسانی فقط مجوز خوندن اطلاعات از دیتابیس رو داشته باشن، چه کسانی اصلاً اجازه‌ی دسترسی به دیتابیس رو نداشته باشن و …

خب پس دو تا مشکل دیگه که در رابطه با دیتابیس‌های سنّتی وجود داره عبارت‌اند از: اول این که فقط یک مرجع قدرت وجود داره (به عبارتی یک مدیر/ یک مکان فیزیکی برای دیتابیس اصلی)، و از طرف دیگه همین تک مرجعی بودن قدرت باعث میشه که فقط یک نقطه‌ی شکست وجود داشته باشه (معروف به SPoF یا Single Point of Failure). اگر مرجع اصلی قدرت بنا به هر دلیلی از دست بره، دسترسی و مدیریت دیتابیس هم به گونه‌ای از بین میره یا حداقل بازگردانی‌ش پیچیده و هزینه‌بر خواهد بود.

امّا همزمان با حضور قدرتمند زیرساخت‌های کلاینت/سروری در دنیای اینترنت، ساختاری خلق شد به اسم تورنت (Torrent). احتمالاً حداقل یک بار با torrent سر و کار داشتین و باهاش کار کردین. امّا به‌جهت یادآوریِ تعریف تورنت و پاسخ ساده‌ای به سوال «تورنت چیست؟»:

“در ساختار تورنت با مجموعه ای از کلاینت‌های peer-to-peer (کلاینت‌هایی که مستقیم به هم متصل و با هم در ارتباط‌ اند) سر و کار داریم که این کلاینت‌ها از طریق پروتکلی که مشهورترینش BitTorrent نام داره، قادرند تا فایل‌هایی رو در بستر اینترنت توزیع کنند.”

پس اگر مثلاً من در سیستم خودم فیلم ارباب حلقه‌ها رو دارم و از طرف دیگه یکی تو یک کشور دیگه‌ (البته کشوری که قوانین سخت‌گیرانه‌ای برای حق کپی‌رایت و استفاده از تورنت و اینا نداره، اصلاً همین ایران خودمون) هم میخواد این فیلم رو حالا به هردلیلی رایگان بگیره و هر دومون هم روی سیستم‌هامون نرم‌افزاری مثل … (ترجیحاً یک سرچ بزنین تو گوگل هزارتا نرم‌افزار میاره) نصب کردیم، اون بنده‌خدا می‌تونه مستقیماً از سیستم من این فیلم رو دانلود کنه، بدون هیچ واسطه‌ای یا نیاز به اتصال به یک سرور دیگه.

در واقع ما در ساختار تورنت، دیتابیسی از فایلها رو داریم که برعکس ساختار دیتابیس‌های سنّتی که در بالا شرح دادیم، این دفعه ما نخواستیم یا اصلاً هزینش رو نداشتیم که یک سرور برای ذخیره‌ی دیتابیس‌مون تهیه کنیم. پس، محل ذخیره‌ی دیتابیس تو این ساختار، سیستم کاربرانی هست که به ساختار تورنت متصل میشن.

حالا ما به جای یک دیتابیس متمرکز در یک سیستم (سرور)، یک دیتابیس توزیع‌شده (distributed database) داریم که هر کاربری توی این ساختار با استفاده از برنامه‌ای که از پروتکل BitTorrent پشتیبانی میکنه، می‌تونه به این دیتابیس توزیع شده‌ی عظیم در حد گستره‌ی جهانی متصل بشه و فایل‌هایی رو که می‌خواد برای خودش کپی کنه.

امّا ساختار تورنت، یک نقص بزرگ داره:
در این ساختار امکان رهگیری فایل‌ها وجود نداره. همین موضوع هم عاملی هست برای این که از یک فایل میلیون‌ها کپی در سراسر دنیا منتشر شده و این ساختار به نوعی غیرقانونی قلمداد بشه (تصور کنین یک فایل یک بار خریداری بشه و بارها و بارها به رایگان در اینترنت توزیع بشه. قطعاً این امر می‌تونه به خیلی از صنایع مثل: فیلم، موسیقی، نشر و … آسیب‌های جبران‌ناپذیری وارد کنه).

حالا چی میشه اگر بتونیم به این نظام بی قانون، اندکی نظم و قانون بدیم؟ یعنی بتونیم ساختاری رو ایجاد بکنیم که بر مبنای مزیت‌های زیرساختی ارتباطات peer-to-peer که به نوعی زیرساخت بهتری نسبت به ساختارهای سنّتی ذخیره‌سازی دیتابیس‌ها محسوب میشن، این امکان رو هم داشته باشه که فایل‌ها رو در اون رهگیری کنیم و از طرف دیگه به گونه‌ای فایل‌ها رو امن کنیم که مطمئن باشیم هر فایلی که در این ساختار ردوبدل میشه نسخه‌ی اصل هست و نه نسخه‌ای کپی یا جعلی و تزریق شده به ساختار از جانب یک هکر. در واقع این‌ها سؤالاتی بود که در هنگام تولد ایده‌ی بلاک‌چین مطرح شدند.

بلاک‌چین: مفاهیم پایه

بلاک چین از ساختار ارتباطات peer-to-peer بهره می‌گیره امّا با این تفاوت که در اینجا، تمام اقداماتی که در بستر این ساختار انجام بشن، قابل رهگیری هستن. برای رهگیری دقیق فایل‌ها باید این امکان رو داشته باشیم که مطمئن بشیم الان اون تنها نسخه از اون فایل هست که دست من هست و همزمان به فرد دیگه‌ای تعلّق نداره. پس در هنگامی که من فایل رو از کاربر دیگه‌ای دریافت میکنم، باید تاریخچه‌ای از این که اون فایل کجاها بوده و دست کیا بوده و این که الان دست من هست رو هم دریافت کنم و از طرفی مطمئن باشم که این تاریخچه از مبادلات فایل، توسط کسی دستکاری نشده. ادامه خواندن “بلاک‌چین یا زنجیره بلوک – ققنوسی برخاسته از خاکستر تورنت”

پدربزرگ و حفظ امنیت اطلاعات

پدربزرگ و امنیت اطلاعات
تصویر: PathDoc/Shutterstock

پیرو باگ‌های اخیری که کشف شد (Spectre و Meltdown) و هزاران باگی که قبلاً کشف شدن، و امنیت اطلاعات رو بشدت تحت تاثیر قرار دادن، داشتم فکر میکردم که “بهترین، راحت‌ترین، ساده‌ترین، کارامدترین و اساسی‌ترین” راه‌کارهای امنیت اطلاعات چیا هستن که یکی بتونه حتی به پدر و مادر مسن آموزش بده؟ چند مورد به ذهنم رسید که در ادامه ذکر می‌کنم: ادامه خواندن “پدربزرگ و حفظ امنیت اطلاعات”

امنیت BGP : بررسی جزئیات تغییر مسیر ترافیک مقاصد محبوب به ISP روسی

BGP hijack
منبع: bgpmon.net

در ۱۲ دسامبر ۲۰۱۷، سرویس مانیتورینگ دنیای اینترنت، BGPMon، اتفاقی عجیب را گزارش کرد که بر طبق آن ترافیک شبکه هایی همانند گوگل، مایکروسافت، فیسبوک، اپل و … برای مدت زمان مشخصی از طریق یک ISP ناشناخته ی روسی مسیریابی شدند.

این اتفاق سبب شد تا بار دیگر این سوال مطرح شود که آیا ارتباطات در دنیای اینترنت امن و قابل اعتماد هستند؟ به بیان بهتر، آیا پروتکل BGP که وظیفه ی برقراری ارتباطات بین backbone ها، ISP ها و شبکه های بزرگ را در دنیا بر عهده دارد، دارای مکانیسم های امنیتی کافی هست؟

با گذشت سال ها و با وقوع اتفاقات مختلفی که از آنها با عنوان hijack یا ربوده شدن مسیرها یاد می شود، همانند اتفاق ۱۲ دسامبر که تنها ۸ ماه بعد از مسیریابی ترافیک مقاصدی همانند Master Card، Visa و … از طریق یک ISP تحت نظارت دولت روسیه، به وقوع پیوست، تقریبا این امر محرز گشته که امنیت BGP جز در حد حرف نیست.

با وجود همه ی این تفاسیر، چند نکته در رابطه با اتفاقی که در ۱۲ دسامبر رخ داد، وجود دارند که کمی مشکوک بوده و جای تامل داشتند: ادامه خواندن “امنیت BGP : بررسی جزئیات تغییر مسیر ترافیک مقاصد محبوب به ISP روسی”

DNSSEC حقیقتی فراموش شده (قسمت دوم: عملکرد)

در مقاله ی قبل در رابطه با عملکرد DNS، تهدیدات و مشکلاتی که بر سر راه آن وجود داشت، به طور مفصل بحث گردید. در انتها آن چه راه نجات DNS برای در امان ماندن از تهدیدات امنیتی معرفی شد، پروتکلی با نام DNSSEC بود.

قبل از پرداختن به مفاهیم و اصطلاحات DNSSEC، شاید بد نباشد که ابتدا مروری بر مفاهیم Cryptography (رمزنگاری) داشته باشیم.

رمزنگاری (Cryptography):

Cryptography روشی برای رمزگذاری یا تولید hash برای محتویات است. با استفاده از رمزنگاری می توان امنیت و/یا قابل تایید و تصدیق بودن را برای اطلاعاتی که میخواهیم، فراهم آوریم. گاهی اوقات هدف از رمزنگاری تنها مخفی کردن محتویات پیام ها نیست. به عنوان مثال در DNSSEC هدف از رمزنگاری، تایید و تصدیق اطلاعات می باشد.

روش های مختلفی برای رمزنگاری وجود دارد که متداولترین این روش ها، رمزنگاری کلید عمومی یا Public Key Cryptography می باشد. با استفاده از این روش هم امنیت و هم تصدیق اعتبار را می توان از طریق encryption، signature و یا هردو، فراهم آورد.

برای encryption معمولا از یک جفت کلید که یکی اصطلاحا private و دیگری public خطاب می شود، استفاده می گردد. اطلاعاتی که توسط یک کلید encrypt شوند، تنها توسط جفت کلید دیگر قابل decrypt شدن هستند. به عبارت بهتر اگر اطلاعاتی توسط private key رمزگذاری شده باشند، تنها توسط public key قابل دست یابی خواهند بود و بالعکس.

منظور از signature تولید یک امضای دیجیتال با استفاده از مقدار hash به دست آمده از تابع hash ای است که اطلاعات به آن داده شده، به علاوه ی Private key (یا public key) می باشد. نحوه ی اعتبارسنجی یک امضای دیجیتال به این طریق است که: بعد از دریافت یک پیام (یا هرنوع داده ای) به همراه امضای دیجیتال، ابتدا امضا decrypt می گردد (از طریق public key). پس از decrypt امضا، آنچه به دست می آید یک مقدار hash است. گیرنده، پیام دریافت کرده را به یک تابع hash میدهد تا یک مقدار hash به دست آید. اگر مقدار hash به دست آمده توسط تابع hash در سمت گیرنده با مقدار hash دریافت شده (مقدار hash ای که پس از decrypt امضا به دست آمده)، یکسان باشد به این معنی است که داده ها درست بوده و تایید اعتبار می شوند.

DNSSEC: اصطلاحات و مفاهیم پایه

DNSSEC با افزودن یک امضای دیجیتال به رکوردهای DNS موجود، یک دامنه ی نام امن ایجاد می کند. این امضاهای دیجیتال یا اصطلاحا digital signature ها همانند سایر رکورد type های رایج چون: A یا AAAA یا CNAME، در سرورهای DNS ذخیره می شوند. با بررسی امضای اختصاص یافته به یک رکورد می توان مطمئن شد که رکورد DNS دریافت شده، از جانب یک DNS سرور مجاز است و یا رکوردی جعلی است که از طریق حمله ی man-in-the-middle تزریق شده است. ادامه خواندن “DNSSEC حقیقتی فراموش شده (قسمت دوم: عملکرد)”

DOTS، روشی جدید در مواجهه با حملات DDoS؟

این روزها حملات DDoS به بخش لاینفکی از دنیای اینترنت مبدل شده‌اند و روز به روز نیز در حال پیچیده‌تر و قوی‌تر شدن می باشند.
طبعاً شرکت‌های مختلفی وجود دارند که سرویس‌های DDoS Protection/Mitigation ارائه کرده و هر یک از آن‌ها نیز راهکارها و روش های خاص خود را دارند (گاهی نیز شبیه به هم).

جدای از بحث استفاده از تجهیزات مقابله با DDoS در شبکه‌ها، زمانی که از یک سرویس‌دهنده‌ی بیرونی استفاده می‌شود، بطور خیلی کلی، معمولا دو حالت پیاده‌سازی (با استفاده از BGP و Tunnel) وجود دارد (معروف به Diversion/Reinjection یا Offramping/Onramping):

  • کل ترافیک دائماً از طریق آن سرویس‌دهنده عبور داده شود و اگر حمله‌ای وجود داشته باشد، همانجا مانده و تنها (به اصطلاح) ترافیک پاک به شبکه برسد (Scrubbing).
  • فقط زمانی که شبکه تحت حمله قرار می‌گیرد، طی یکسری عملیات و تغییر routing، ترافیک ورودی به شبکه بجای آن که مستقیم از اینترنت به شبکه وارد شود، مانند مدل قبل به سمت یک سرویس‌دهنده هدایت شده و توسط آن بررسی شده و تنها ترافیک پاک به شبکه می‌رسد. این روش، به نوعی On-demand محسوب می شود و کل عملیات و تغییر روتینگ می تواند به صورت خودکار و یا بصورت دستی توسط یک اپراتور رخ دهد.

شبکه ها - DOTS - DDoS Protection Mitigation

ادامه خواندن “DOTS، روشی جدید در مواجهه با حملات DDoS؟”