انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: استفاده از ترفند هش بلاک چین در دیتابیس های متمرکز  (دفعات بازدید: 514 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین احمدرضا بشری

  • Jr. Member
  • *
  • ارسال: 48
  • جنسیت : پسر
    • وبلاگ شخصی احمدرضا بشری
سلام
چند وقتی میشه دوره بلاک چین جادی رو دارم میبینم (تازه کارم ) و خب ی ی سناریو ساده توی ذهنم طراحی کردم و بنظرم اومد که مطرحش کنم که ایده هاای شما رو هم بشنوم

فرض میکنیم برای ذخیره تراکنش هامون از دیتابیس های متمرکز استفاده میکنیم مثل sql, و ی دیتابیس داریم که ی جدول به نام transactions داره و این فیلدها توش هست:

id
user_id
code
amount
date

id که همون شمارندست ,
user_id هم شناسه کاربره که ربط داره به جدول users
code هم شماره پیگیری تراکنش
amount هم مبلغ تراکنش
date هم که تاریخ ایجاد


حالا من میخوام دو تا فیلد به نام های hash و previous_hash هم اضافه کنم
previous_hash : میشه hash فیلد قبلی ( اگر کلا فیلد قبلی نباشه خالیه )
hash : میشه هش همه ی  id و user_id و code و amount و date و previous_hash


حالا سناریو ها :

اگر یک هکر بخواد مثلا برای transacrion شماره 3  مقدار date رو عوض کنه چی میشه ؟
خب هر بار میایم به صورت همون فرمول قبلی که حساب میکرد یعنی
نقل‌قول
: میشه همش  id و user_id و code و amount و date و previous_hash
هش رو sign میکنیم و اگر برابر نبود invalid میشه


اگه خود هش رو عوض کنه ؟ دوباره مثل قبل sign میکنیم و چون برابر نیست invalid میشه

خب اگر هم تمامیه مقادیر رو عوض کرد و هم هش رو عوض کرد چی ؟

چون توی فیلد بعدی hash قبلی رو دارم
یعنی اگر این تراکنش id ۳ باشه خب توی تراکنش شماره ۴ ما hash تراکنش شماره ۳ رو داریم و اگر با hash شماره ۳ برابر نبود, شماره ۳ invalid میشه

اگر هش بعدی وجود نداشت که previous_hash رو نگه داره چی؟ خب این ی مشکله و هکر میتونه اخرین فیلد رو تا زمانی که فیلد بعدی نیومده مقادیرشو حساب کنه و hash رو تغییر بده

مسائل :
اصلا درسته که بیایم هش رو حساب کنیم ؟ چون بهرحال دیتابیس متمرکز هست , تمام این مسئله سر تغییر اطلاعات تراکنش هست و اگر راه حل بهتری براش هست ممنونم میشم بگید.

اگر فرض کنیم هکر یک script داشته باشه و بدونه فرمول محاسبه هش ما چیه و همه ی هش رو از اولین فیلد با هم تغییر بده چی ؟ هیچ کاری نمیتونیم بکنیم :)

اگر یدفعه حسابدار اومد گفت "عه تاریخ ثبت تراکنش شماره ۵ اشتباست باید تغییر بدیم"  چی؟
نمیتونه تغییر بده چون hash invalid میشه مگر اینکه ی فیلد update_at بزاریم که بر اونو تغییر بده که خب اگر حسابدار بتونه update_at رو تغییر بده , هکر هم میتونه تغییر بده پس زیاد فایده نداره ! :)

خب این فعلا تا اینجا به ذهنم رسید, ممنونم میشم از دوستان اگر ایده یا روش بهتری دارید و باگ ها و مشکلات امنیتی جدیدی توش میبینید بگید که سرش فکر کنیم :)
« آخرین ویرایش: 27 شهریور 1402، 10:52 ق‌ظ توسط احمدرضا بشری »
یاد بگیرید و اموزش بدید تا افراد بعد از شما به خوبی ازتون یاد کنند

آفلاین nixoeen

  • ناظر انجمن
  • *
  • ارسال: 4872
  • جنسیت : پسر
  • masoft قدیم
اگر یدفعه حسابدار اومد گفت "عه تاریخ ثبت تراکنش شماره ۵ اشتباست باید تغییر بدیم"  چی؟
در حسابداری و سیستم‌های مشابه، شما اجازهٔ تغییر مستقیم رو ندارید، بلکه یک رکورد جدید ایجاد می‌کنید که رکورد قبلی رو تصحیح می‌کنه. اینطوری مشخصه که چه فردی در چه تاریخی چه چیزی رو تصحیح کرده و لیستی از تمام تغییرات موجود خواهد بود. همچنین امکان دستکاری هر چیزی که تا الان ایجاد شده، از بین میره.

آفلاین احمدرضا بشری

  • Jr. Member
  • *
  • ارسال: 48
  • جنسیت : پسر
    • وبلاگ شخصی احمدرضا بشری
نقل‌قول
در حسابداری و سیستم‌های مشابه، شما اجازهٔ تغییر مستقیم رو ندارید، بلکه یک رکورد جدید ایجاد می‌کنید که رکورد قبلی رو تصحیح می‌کنه. اینطوری مشخصه که چه فردی در چه تاریخی چه چیزی رو تصحیح کرده و لیستی از تمام تغییرات موجود خواهد بود. همچنین امکان دستکاری هر چیزی که تا الان ایجاد شده، از بین میره.

ایول ایده خوبیه, برای اعمالش چه کاری میشه انجام داد؟
ی راهکاری ذهنی میتونه این باشه که فقط insert کنیم و عملا اپدیتی نداشته باشیم
برای گرفتن تمام تغییرات یک تراکنش هم میتونیم از فیلد code استفاده کنیم چون همه تراکنش ها یکی هستن پس code تراکنش نباید عوض بشه

هر وقتم خواستیم تمام تغییرات تراکنش رو بگیریم میتونیم با where روی فیلد code تمام تراکنش رو بگیریم و بعدشم از کوچیک به بزرگ (فیلد id) مرتبش کنیم (یا برعکس حالا) اینجوری مشخض میشه که اخرین تغییر بر اساس کدوم فیلد تغییر کرده و در چه زمانی هم تغییر کرده  ;D
یاد بگیرید و اموزش بدید تا افراد بعد از شما به خوبی ازتون یاد کنند