اول از همه می خواهم اشاره کنم که من کاملا انجام می دهم NOT میخواهم رمز عبور خودم را به هیچ وجه اجرا نکنم. من فقط در مورد این موضوع فکر کردم و بعد از تحقیقاتی، راه حل خوبی پیدا نشد.
امیدوارم که یک راه حل شناخته شده برای این مشکل وجود داشته باشد که من نمیتوانم پیدا کنم.
فرض کنید سه طرف متعاقب وجود دارد:
- مشتری : فرض کنید یک گوشی هوشمند
- uC : یک میکروکنترلر شبکه با یک کانال ناامن اضافی به سرور
-
: برخی از جادوگران باطن سرور دارای یک پایگاه داده است و برای هر دو، سرویس دهنده و UC، سرویس معتبر وب را تأیید می کند
دستیابی به تأیید اعتبار از مشتری در برابر دستگاه UC با استفاده از رمز عبور یک بار در زیر فرض های زیر؟
- مشتری نباید قادر به تأیید هویت خود را قبل از اینکه سرور آن را "OK" داده است. فرض کنید برخی از فرایند رزرو / خرید و UC اقدام به اجازه دسترسی
- اسرار ممکن است بین سرور <-> مشتری و بین سرور <-> uC
- مشترک است. کانال بین مشتری و دستگاه UC باید به عنوان ناامن
- یک کاربر ممکن است چندین مشتری داشته باشد که همه باید قادر به تأیید هویت باشند
- دستگاه UC تنها یکی از بسیاری در زمینه است، بنابراین مشتری باید بتواند در برابر هر یک از آنها هویت ساز شود
- Client و سرور با استفاده از یک API REST ارتباط برقرار می کند
- دستگاه UC به وضوح محدود محاسبات قدرت / ذخیره سازی است، اما همچنین با استفاده از یک API REST برای برقراری ارتباط با سرور
- تمام ارتباطات API از طریق TLS انجام می شود
آیا MSC زیر امکان پذیر است؟ ایده من اساسا برای استفاده از یک زنجیره هش برای ایجاد OTP بود. اما از آنجا که مشتری نباید راز ایجاد هش را بداند، نسل OTP توسط سرور انجام می شود.
+ --------- + + --------- + + ----- +
| مشتری | | سرور | | uC |
+ --------- + + --------- + + ----- +
| | | ----------------
| | | - | فروشگاه ها h ^ n (p) |
| | | | و n = 1000 |
| | | | --------------- |
| | ---------- |
| | - | می داند p | |
| | | و n | |
| | | --------- | |
| | |
| درخواست دسترسی | |
| ----------------------> | |
| | ------------------ |
| | - | بررسی کنید که آیا دسترسی | |
| | | ممکن است اعطا شود |
| | | ----------------- | |
| | |
| OTP = h ^ (n-1) (p) | |
| <----------------------| |
| | |
| OTP | |
|---------------------------------------------------------> |
| | | -----------------
| | | - | دسترسی به دسترسی |
| | | | فروشگاه OTP، n-- |
| | | | ---------------- |
| | |
| | دسترسی به مجوز |
| | اگر n == 0: ایجاد جدید h ^ 1000 (p) |
| | <---------------------------------|
| | ---------------------- |
| |-| save granted access | |
| | | n-- | |
| | |---------------------| |
| | |
| | OK, h^1000(q) if needed |
| |---------------------------------> |
| | |
EDIT : فقط در مورد پنج دقیقه دیگر فکر کردم، متوجه شدم که این راه خوبی برای حل این مسئله نیست، زیرا سرور اساسا راز و فهرست زنجیره هش را ذخیره می کند. بنابراین در صورت نقض داده ها، OTP ها برای محاکمات بعدی n شناخته می شود.
آیا می توان این را تنها با ذخیره کردن فهرست زنجیره های هش در دستگاه UC حل کرد و تنها یک بار به سرور این ارتباط برقرار می کند؟ به عنوان مثال اگر مشتری مشتری UC برای شاخص فعلی خود را قبل از درخواست دسترسی از سرور نمایش دهد؟