مشکل: اعتماد کورکورانه
وقتی یک اپ مانیتور کودک نصب میکنید، به آن اجازه میدهید به فضایی بسیار خصوصی دسترسی داشته باشد: اتاق نوزادتان. اپ صدا را دریافت میکند و گاهی تصویر را هم پایش میکند. در عین حال، والدین اغلب نمیدانند در پسزمینه چه اتفاقی میافتد: آیا پخش زنده از سرورهای شخص ثالث عبور میکند؟ آیا دادههای استفاده جمعآوری میشود؟ چه کسی از نظر فنی امکان دسترسی به این دادهها را دارد؟
پاسخ صادقانه این است: درباره بسیاری از اپها نمیدانید. کد بسته است و معماری فقط یک ادعا باقی میماند. در نهایت از شما خواسته میشود به ارائهدهنده اعتماد کنید.
کد بسته، نقاط ضعف آشکار
در سالهای اخیر گزارشهای زیادی از هک شدن مانیتورهای کودک منتشر شده است. افراد غریبه میتوانستند شنود کنند، جهت دوربینها را تغییر دهند یا از طریق بلندگو حرف بزنند. بیشتر وقتها اینها حملههای عجیبوغریب نبودند، بلکه نقصهای جدی بودند: اتصالهای رمزنگارینشده، گذرواژههای پیشفرض و نبود احراز هویت.
در نرمافزارهای مالکیتی، افراد بیرون از شرکت اغلب فقط بعد از رخ دادن یک اتفاق میتوانند این ضعفها را ببینند. پژوهشگران امنیتی، توسعهدهندگان مستقل و والدین محصول نهایی را فقط از بیرون میبینند. برای وسیلهای در اتاق کودک، این مدل ضعیفی است.
شفافیت بهعنوان یک اصل امنیتی
امنیت اطلاعات یک قاعده قدیمی و مفید دارد: اصل کرکهوفس؛ امنیت نباید به مخفی ماندن طراحی وابسته باشد. یک سیستم باید حتی وقتی کسی میداند چگونه ساخته شده، همچنان امن بماند.
مستندسازی عمومی کد بهتنهایی نرمافزار را امن نمیکند، اما امکان بررسی ادعاها را فراهم میکند. افراد متخصص میتوانند بهجای خواندن متنهای تبلیغاتی، جریانهای داده، مشتقسازی کلید و قواعد را بررسی کنند.
رویکرد Timmy: هسته امنیتی جداشده
در Timmy، اکنون بهروشنی مشخص میکنم کدام بخشها واقعاً برای امنیت حیاتیاند. هر خط رابط کاربری تعیین نمیکند که محصول شایسته اعتماد هست یا نه. بخشهای تعیینکننده، منطق بکاند، قراردادهای سیگنالینگ، رمزنگاری جفتسازی و این پرسشاند که چه دادههایی به یک سرور میرسند.
به همین دلیل، هسته امنیتی اکنون در مخزن عمومی baby-monitor-timmy-coreقرار دارد. کد کامل اپ در حال حاضر عمومی نیست. اجزای حیاتی برای امنیت از رابط کاربری و منطق محصول جدا شدهاند تا بتوان آنها را بهطور مستقل مستند و بررسی کرد.
این دقیقاً یعنی چه؟
- مرزبندی روشن: اجزای امنیتی از رابط کاربری و منطق محصول جدا هستند.
- جریانهای داده قابل بررسی: جفتسازی، سیگنالینگ و رابطهای بکاند را میتوان جداگانه مستند کرد.
- بدون ردیابهای پنهان: مسیرهای حیاتی فقط شامل مؤلفههاییاند که از نظر فنی به همان مسیرها مربوطاند.
- نگهداریپذیری در بلندمدت: بررسی یک هسته جداگانه از یک ساختار یکپارچه و نامنظم آسانتر است.
نتیجهگیری: والدین شایسته شفافیتاند
وقتی یک اپ به اتاق کودک دسترسی دارد، باید درباره پرسشهای حیاتی شفاف و مشخص باشد: چه دادهای ایجاد میشود؟ کجا میرود؟ چه کسی میتواند آن را بخواند؟ والدین سزاوار چیزی بیشتر از یک نشان حریم خصوصی در پایین صفحهاند.
Baby Monitor Timmy باید نشان دهد که یک محصول خوب و امنیت قابل بررسی میتوانند در کنار هم قرار بگیرند. برای من، این به معنی عمومی کردن همه بخشهای اپ نیست؛ بلکه یعنی بخشهایی را که جفتسازی، سیگنالینگ، دسترسی بکاند و جریانهای داده را تعیین میکنند، در دسترس عموم قرار دهم.