احراز هویت – چرا من باید دستم را در مقابل کارت شناسایی کنم؟

من اخیرا مجبور بودم خودم را به صورت آنلاین تایید کنم تا از خدمات مبتنی بر اینترنت استفاده کنم. فرآیند تأیید صحت از طریق تماس ویدئویی انجام شد و من کارت شناسایی خود را در مقابل دوربین لپ تاپ من در کنار صورتم نگه داشتم. من همچنین مجبور شدم کارت شناسایی را بچرخانم تا شخص دیگری در انتهای تماس ویدیویی بتواند ویژگی های امنیتی که در کارت شناسایی چاپ شده است را ببیند.

سپس فرد از من خواست تا دستم را در مقابل کارت شناسایی ، به طوری که آن را به زودی به طور کامل تحت پوشش دست من چندین بار.

این روش برای دستیابی به این تئاتر امنیتی درست است؟

احراز هویت مبتنی بر گواهی نامه

آیا سیستم های تأیید هویت گواهینامه می تواند در حمله MITM بر روی WiFi کنار گذاشته شود؟ من فقط به یک سرویس به نام REMME نگاه کردم و فکر میکردم که چقدر امن است.

برخی از نظر کارشناسان را در این مورد مورد نیاز است.

رمزگذاری – آیا استفاده از UUID به عنوان احراز هویت امن است؟

من یک برنامه کاربردی دارم که UUID را به عنوان یک احراز هویت استفاده می کند. UUID به عنوان KeyChain در داخل برنامه iOS من ذخیره می شود. وقتی UUID را پست می کنم، از https استفاده می کنم. آیا راهی برای به دست آوردن رمز عبور وجود دارد، مگر اینکه دسترسی فیزیکی یا راه دور به دستگاه داشته باشید؟ آیا این روش به شدت از بین رفته است؟

چرا این سوال یک تکراری نیست:

سوال او آدرس برای استفاده از UUID به عنوان ورودی در یک فیلد متنی است، در حالی که سوال من این است که UUID به عنوان احراز هویت پس از یک حالت کامل ورود به سیستم استفاده شود. اگر شما آن را در یک فیلد متنی تایپ کنید، کاربر باید UUID را بداند. (صحبت کردن در مورد برنامه من) اول از همه، کاربر UUID خود را نمی داند. دوم از همه، UUID در KeyChain رمزگذاری شده است.

احراز هویت – آیا می توانم کلید خصوصی را دور بریزم و از کلید عمومی مانند یک تابع هش استفاده کنم؟

بله بله من می دانم "پروتکل های خود را منفجر کنید مگر اینکه متخصص باشید". لازم نیست که به من دروغ بگید فقط می خواهم بدانم که آیا این ایده نقص وجود دارد و اگر کسی چنین کاری را قبلا انجام نداده است

انگیزه این است که می خواهم توانایی تأیید هویت کاربران را داشته باشم. من می دانم که راه حل استاندارد این است که کلمه عبور هلو را بخورند. اما من این واقعیت را دوست ندارد که رمز عبور خود را به سرور ارسال کند تا آن را بررسی کند. چه کسی در مورد گوش دادن طرف سرویس گیرنده می تواند رمز عبور را رمزگذاری و ارسال کند، اما من آن را دوست ندارم، زیرا ممکن است نکته کلید رمزگشایی من و کسی که ترافیک وب قبلی را ثبت کرده است بتواند تمامی رمزهای عبور را محاسبه کند. تأیید اعتبار یک مشکل جدید نیست، بنابراین من بیشتر در مورد جوانب مثبت و منفی راه حل های معمول قرار نمی گیرم.

ایده من

برای هر کاربر (a) سرور یک کلید عمومی (g ^ x_a) و رمز عبور رمزگذاری شده با آن کلید عمومی (g ^ {x_a} * p_a) را ذخیره می کند. کلید خصوصی مربوطه یا فورا از بین رفت و یا (هنوز بهتر) هرگز محاسبه نشده است. فرآیند احراز هویت به شرح زیر است:

  1. کاربر آلیس می خواهد برای تأیید اعتبار

  2. سرور باب یک کلید عمومی موقت عمومی G ^ t (دوباره بدون یک کلید خصوصی مرتبط) تولید می کند. باب این کلید موقت عمومی را در داده های آلیس خود افزایش می دهد. در نتیجه g ^ t * g ^ {x_a} = g ^ {t + x_a} = g ^ {x_a} 'و g ^ t * g ^ {x_a} * p_a = g ^ {t + x_a} * p_a = g ^ {x_a} '* p_a. باب از کلید عمومی موقت دور می شود و تنها با یک کلید عمومی جدید (g ^ {x_a} ') و رمز عبور آلیس رمزگذاری شده با این کلید است. او کلید جدیدی برای آلیس می فرستد.

  3. آلیس کلید دریافت شده توسط باب از آن برای رمزگذاری رمز عبور خود استفاده می کند. او مقدار رمزگذاری شده را به باب می فرستد.

  4. باب آلیس را تصدیق می کند اگر مقدار داده شده مطابقت با آنچه که در ضبط داشته است باشد.

برای recap

  1. هیچ وقت سرور یا یک هکر پایگاه داده رمزگشایی نمی کند. با کلید های خصوصی ردیابی رمزنگاری کلید عمومی به طور موثری مانند هش کار می کند.

  2. از آنجا که هر کاربر با یک کلید متفاوت رمزگذاری شده است، کلمه عبور به طور مؤثری گرم می شود. جدول رنگین کمان اینجا کار نمی کند

  3. یک هکر با تصویر قبلی از پایگاه داده می تواند ارزش های آینده g ^ x_a * p_a را با گوش دادن به ترافیک وب به دست نمی آورد، زیرا این امر نیاز به کشف کلید موقت دارد (که نیازمند حل مجله گسسته است). بنابراین یک تصویر پایگاه داده نشتی اجازه نمیدهد که مهاجم خود را مجبور به جعل هویت کاربران کند.

  4. هیچ سرور یا مشتری هیچ کلید خصوصی برای مدیریت ندارد. فقط مشتری نیاز به نگه داشتن اطلاعات مخفی و اطلاعات مخفی را می توان انسان قابل خواندن است.

  5. (معایب) مهاجم یک پنجره کوچک از زمان بین مراحل 2 و 4 دارد که می تواند به سرور نفوذ کند و با استفاده از داده هایی که پیدا کرده است، یک کاربر را جعل هویت کند.

احراز هویت یک برنامه کاربردی و ISO 27001

من یک برنامه صفحه جاوا اسکریپت یک صفحه دارم که با یک API .NET در حال اجرا در IIS ارتباط برقرار می کند. تأییدیه پس از بارگذاری ظاهر برنامه، با استفاده از یک نشانه OAuth از دفتر 365، به دست آمده با استفاده از ADAL.js و توسط WindowsAzureActiveDirectoryBearerAvhentication middleware از کتابخانه مایکروسافت OWIN تأیید شده است، همانند این برنامه نمونه.

دیروز کسی به من گفت که این رفتار ( داشتن یک برنامه JS به طور آشکار در اینترنت فقط با API ایمن در دسترس است) مطابق با استاندارد ISO 27001 نیست و کد منبع آن از یک مهاجم فقط در صورت موفقیت آمیز بودن با یک حساب تأیید شده در دسترس است. از آنجایی که من هرگز از ISO 27001 قبل از آن نشنیده بودم و من نیز به آن استاندارد دسترسی ندارم، شاید کسی بتواند به من بگوید این درست است یا خیر، و چه وضعیت فعلی در هنر است.