MeldID: از حساب کاربری واحد تا سیستم مدیریت دسترسی دیجیتال
وقتی برای اولین بار با MeldID آشنا شدم، آن را بیشتر به عنوان یک سرویس شناسایی دیجیتال یکپارچه درک میکردم. حالا این پروژه برنامههایی برای آیفون و اندروید دارد که احراز هویت TOTP آفلاین، بازیابی خودکار دادهها بین دستگاهها و تأیید ورود به سرویسهای متصل را یکپارچه کرده است.
وقتی برای اولین بار با MeldID آشنا شدم، آن را بیشتر به عنوان یک زیرساخت شناسایی دیجیتال یکپارچه درک میکردم. کاربر یک حساب کاربری ایجاد میکند، پروفایل قابل مدیریت را پر میکند و سپس میتواند آن را در برنامههای مختلف استفاده کند — برای ورود و انتقال دادههای مجاز بدون نیاز به پر کردن مداوم فرمهای تکراری.
انتظار داشتم که توسعه بعدی در جهت پروفایلها و سرویسهای متصل پیش رود. اما پروژه به سرعت در حال تبدیل از یک زیرساخت سرور نسبتاً کمتوجه به ابزاری روزمره برای مدیریت دسترسی شد.
گام بعدی برنامههای برای آیفون و اندروید بودند. و در اینجا، نه فقط ظهور مشتری موبایل، بلکه وظایف متعددی که در آن یکپارچه شدهاند، جالبتر است.
TOTP معمول — با هدف متفاوت
در برنامه، یک مولد کدهای یکبار مصرف TOTP وجود دارد — همان ارقام متغیر که برای احراز هویت دو مرحلهای استفاده میشوند.
استاندارد خود این نیست که برای خودش اختراع شده باشد. کاربر یک حساب کاربری اضافه میکند و کدی دریافت میکند که میتواند در سرویس یا سایت دیگر استفاده شود.
بیشتر احرازکنندههای هویت به سوال: «چگونه کد ششرقمی را نشان دهیم؟» پاسخ میدهند. در اینجا وظیفه بزرگتری حل میشود: چگونه به طور ایمن دور زندگی کلیدهای TOTP را مدیریت کنیم — از افزودن و نگهداری تا بازیابی در دستگاه دیگر و حذف ثبت.
حالت آفلاین کاملاً کار میکند
در نگاه اول، مزیت اصلی فقط تولید کدهای محلی است. اما در MeldID، حالت آفلاین چیزهای بیشتری را شامل میشود.
رکوردهای ذخیرهشده قبلاً، بدون اینترنت نیز فعال باقی میمانند. کدها مستقیماً در گوشی تولید میشوند، بنابراین غیبت موقت اتصال، مانع عبور از فرآیند احراز هویت دو مرحلهای نمیشود.
ثبت TOTP جدید نیز میتواند آفلاین انجام شود. این ثبت به صورت محلی ذخیره میشود و فوراً برای تولید کدها استفاده میشود. وقتی اینترنت فعال شود، ثبتها به صورت خودکار به ذخیرهگاه امن ارسال شده و همگامسازی میشوند با دیگر دستگاهها.
ویرایش و حذف رکوردهای همگامشده نیازمند اتصال به سرور است. این کار اجازه نمیدهد نسخههای متفاوتی از یک مخزن در دستگاههای مختلف داشته باشید.
در نتیجه، تعادل برقرار میشود: فعالیتهای اصلی بدون شبکه در دسترس هستند، و تغییراتی که باید بهطور همزمان در همه دستگاهها اعمال شوند، پس از اتصال مجدد به صورت آنلاین انجام میگیرند.
گوشی جدید به معنای مجموعه جدیدی از کدها نیست
مشکل ناسازگارترین واقعگرایانهترینها در هر احراز هویتکننده پس از از دست رفتن، خرابی یا تعویض گوشی بروز میکند. در حالت معمول، باید کدهای پشتیبان پیدا کرد، رکوردها را دستی منتقل کرد یا برنامه را با هر سرویس مجدداً وصل کرد.
در اینجا، مخزن به جای اینکه با دستگاه خاص مرتبط باشد، با حساب کاربری MeldID مرتبط است. پس از ورود به گوشی جدید و راهاندازی مخزن امن، رکوردها به صورت خودکار بازیابی میشوند.
مهم نیست که دستگاه قبلی اندروید بوده یا آیفون، یا برعکس. میتوان گوشیهای دوم، سوم و بیشتر را متصل کرد بدون نیاز به فرآیند انتقال جداگانه برای هر پلتفرم.
تصور کنید که گوشی هوشمند ناگهان در سفر خراب شود. به جای بازیابی جداگانه در هر سرویس، کاربر وارد MeldID در دستگاه جدید میشود و فرآیند تنظیم مخزن را کامل میکند. پس از آن، رکوردهای TOTP او به برنامه بازمیگردند.
در یک گوشی، میتوان چند حساب MeldID مختلف داشت. مخازن آنها جدا باقی میمانند: رکوردهای یک حساب با دادههای حساب دیگر مخلوط نمیشوند و بدون مجوز مناسب بر روی دستگاه ظاهر نمیشوند.
چی چیزی در سرور نگهداری میشود
بازیابی خودکار به این معنی است که دادهها باید در جایی نگهداری شوند. اما کلیدهای TOTP در قالب متن باز در پایگاه داده ذخیره نمیشوند.
محتوای رکورد در یک کانتینر رمزنگاری شده قرار میگیرد. در معماری فعلی، از رمزنگاری تأیید شده AES-256-GCM استفاده میشود و کلید مخزن امن از پایگاه داده جدا است.
بنابراین، نشت یک پایگاه داده، فهرست سریهای تولید کد را به صورت کامل در اختیار هکر قرار نمیدهد. مهاجم بلوکهای رمزنگاری شده را دریافت میکند، نه کلیدهای TOTP باز شده.
در اینجا مهم است که وعدههای مطلق ندهیم. به زبان سادهتر، کلیدهای TOTP در پایگاه داده به صورت متن باز ذخیره نمیشوند، و یک نسخه از پایگاه کافی نیست تا بتوان آنها را تولید کرد.
تأیید ورود با MeldID
وظیفه مهم دیگر برنامه — تایید ورود، یا همان Login Approval است.
اگر وبسایت یا برنامه، MeldID را پشتیبانی کند، کاربر میتواند با یک اقدام، ورود به حساب خود را آغاز کند. زمانی که حفاظت فعال باشد، موفقیت در احراز هویت کافی نیست: تأیید در دستگاه امن شخصی، تنها پس از تأیید صورت میگیرد.
درخواست را میتوان تایید یا رد کرد؛ تایید زمانی است که کاربر ورود را آغاز کرده و رد زمانی است که عملیات مشکوک است.
برخلاف تایید معمولی Push، Login Approval مستقیماً در معماری MeldID تعبیه شده و میتواند توسط تمام سرویسهایی که این سیستم هویت را پشتیبانی میکنند، مورد استفاده قرار گیرد.
Push فقط به عنوان اطلاعرسانی درباره عملیات جدید استفاده میشود. در آن رمز عبور، کد TOTP، توکن یا اطلاعات دیگری که برای تأیید لازم است، وجود ندارد.
توامندی TOTP و Login Approval
توامن استاندارد است و در سرویسهایی که MeldID را نمیدانند، کار میکند. پس از بارگذاری رکورد، کدها به صورت محلی تولید میشوند.
Login Approval در جایی لازم است که خود، فرآیند ورود از طریق MeldID انجام میشود. این قابلیت، ورود کاربر را آگاهانه میکند و میتواند قبل از ایجاد جلسه، مانع شود.
در نتیجه، برنامه میتواند به عنوان یک احراز هویت ساده برای سایتهای خارجی و همزمان ابزاری برای تأیید ورود به سیستمهای متصل باشد.
چه چیزی در خود MeldID تغییر کرده است
وقتی برای اولین بار با پروژه آشنا شدم، ایده اصلی آن مدیریت حساب کاربری واحد و پروفایل قابل حمل بود. حالا، واضحتر شده که MeldID به تدریج در حال تبدیل به مرکز کنترل شخصی دسترسی دیجیتال است.
در اینجا میتوان:
کدهای TOTP بدون نیاز به اینترنت دریافت کرد؛
رکوردهای جدید را به صورت آفلاین افزود؛
آنها را به صورت خودکار در دستگاه جدید بازیابی کرد؛
چند گوشی را استفاده نمود؛
چندین حساب در یک دستگاه را جدا نگه داشت؛
ورودهای جدید را تایید یا رد کرد.
بنابراین، ارزش برنامه در این نیست که یک کد ششرقمی دیگر نشان دهد. هدف آن گستردهتر است — حفظ دسترسی در صورت تغییر دستگاه، جلوگیری از از دست رفتن دادهها بدون شبکه، و ارائه آخرین انتخاب افتاده و آگاهانه پیش از شروع یک نشست جدید.
امنیت در اینجا بر پایه مجموعهای از راهحلها استوار است: کلیدهای TOTP در حالت متن باز نگهداری نمیشوند، دسترسی هرگز به صورت دائمی به یک گوشی محدود نمیشود، حسابهای مختلف از هم جدا باقی میمانند، و ورود به سرویسهای پشتیبانیشده تنها پس از تأیید از دستگاه اعتماد شده انجام میشود.