سلام
چند وقتی میشه دوره بلاک چین جادی رو دارم میبینم (تازه کارم ) و خب ی ی سناریو ساده توی ذهنم طراحی کردم و بنظرم اومد که مطرحش کنم که ایده هاای شما رو هم بشنوم
فرض میکنیم برای ذخیره تراکنش هامون از دیتابیس های متمرکز استفاده میکنیم مثل 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 رو تغییر بده , هکر هم میتونه تغییر بده پس زیاد فایده نداره !
خب این فعلا تا اینجا به ذهنم رسید, ممنونم میشم از دوستان اگر ایده یا روش بهتری دارید و باگ ها و مشکلات امنیتی جدیدی توش میبینید بگید که سرش فکر کنیم