رمزگذاری فایل – یک هش HMAC از اطلاعات متن ساده به اندازه کافی امن برای استفاده به عنوان یک شاخص جستجو برای داده های رمز شده

من بر روی یک برنامه کار می کنم که فایل ها را از سرورهای خارجی بر روی https بارگیری می کند و آنها را روی دیسک ذخیره می کند به نحوی نسبتا امن. به طور خاص، با استفاده از یک رمزنگاری منحصر به فرد رمزنگاری شده، یک بلوک رمزگذاری AES256، حالت بلوک CTR و یک هش HMAC از داده های رمزگذاری شده و IV.

یکی از الزامات این پروژه این است که هیچ فایل تکراری نباید ذخیره شود. با توجه به نیاز به یک منحصر به فرد IV به طور امن ذخیره فایل ها، من می توانم به سادگی از هش از فایل رمزگذاری شده استفاده کنید تا ببینید آیا نسخه کپی شده است. یک sha256 یا sha512 از محتوای متن ساده کافی نیست، زیرا مشتری می تواند فایل های تک کاراکتری را دانلود و ذخیره کند و محتویات آنها را به راحتی حدس بزند، که به طور بالقوه می تواند سیستم را تا برنده های معروف متن ساده شناخته شود.

بنابراین من تعجب می کردم که آیا این برای نگهداری هش های HMAC از متن ساده، با استفاده از یک کلید مشتق شده از Argon2ID به عنوان کلید امضای HMAC، به راحتی در نظر گرفته شود؟

این هش ها در یک پایگاه داده کلید / ارزش ذخیره می شوند و به عنوان یک کلید جستجو برای دیدن اینکه آیا یک فایل دانلود شده است که ما قبلا آن را داشته ایم، استفاده می شود. کلید Argon2ID هرگز ذخیره نخواهد شد.

تزریق sql – راه امن برای آپلود متن و تصویر در php

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

  • نوع فایل
  • اظهارات sql
  • دسترسی به پوشه تصویر در ریشه،

من مطمئن نیستم که چقدر من امن . لطفا راهنمایی کنید که من باید در اسکریپت های زیر برای بهبود امنیت اضافه کنم؟

  200000) {
                echo "فایل خیلی بزرگ است"؛
                خروج ()؛
            }
            اگر ($ imageFileType! = "jpg" && $ imageFileType! = "png" && $ imageFileType! = "jpeg" && $ imageFileType! = "gif") {
                echo "فقط jpg / png / gif تصویر!"؛
                خروج ()؛
            }
            اگر ($ verifyimg ['mime']! = 'image / png' && $ verifyimg ['mime']! = 'image / jpg' && $ verifyimg ['mime']! = 'image / jpeg' && $ verifyimg ['mime']! = 'تصویر / gif ') {
                اکو "تصویر معتبر نیست"؛
                خروج؛
            }
            دیگر {
                $ new_img = substr (md5 (time ())، 0، 10). '.' . $ img_ext؛
                $ target_file = $ target_dir. $ new_img؛
                move_uploaded_file ($ _ FILES ["file"]["tmp_name"]، $ target_file)؛
                $ query = $ con-> prepare ('INSERT به اخبار (عنوان، محتوا، keytag، date، img) VALUES (: head،: content،: keytag،: date،: new_img)')؛
                $ query-> bindParam (': new_img'، $ new_img)؛

            }
        }
        اگر (خالی ($ _ FILES ['file']['name'])) {
            $ query = $ con-> prepare ('INSERT to news (header، content، keytag، date) VALUES (: head،: content،: keytag،: date)')؛
        }
        $ query-> bindParam (': heading'، $ _POST ['heading'])؛
        $ query-> bindParam (': content'، $ _POST ['content'])؛
        $ query-> bindParam (': keytag'، $ _POST ['keytag'])؛
        $ query-> bindParam (': date'، $ _POST ['date'])؛
        اگر ($ query-> execute ()) {
            اکو "به صورت موفقیت آمیز"؛
        }؛
    }
؟>

.htaccess

برای جلوگیری از دسترسی مستقیم

 RewriteEngine در
RewriteCond٪ {HTTP_REFERER}! ^ http: // www  .your-domain  .com /.*$ [NC]
RewriteCond٪ {HTTP_REFERER}! ^ http: // www  .your-domain  .com $ [NC]
RewriteRule. * . (wav | swf | jpg | jpeg | gif | png | bmp | js | css) $ - [F,NC,L]

رمزگذاری – چگونه می توان متن ساده پیام مخفی که در AES-256 CBC است را تغییر دهید

می گویند پیام مخفی رمزگذاری شده با AES-256 در حالت CBC

 5a04ec902686fb05a6b7a338b6e07760 14c4e6965fc2ed2cd358754494aceffa

جایی که 16 بایت برای اولین بار بردار است، 16 بایت دوم متن رمز است. متن ساده پیام مخفی بالا (ASCII کد شده) ما نفس می کشد.

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


تلاش کردم نمونه هایی از اینترنت را پیدا کنم اما من نمی توانم پیدا کنم: /

با این حال من می توانم یک مدل پیدا کنم که توضیح دهد چگونه رمزگشایی CBC کار می کند:

 اینجا را وارد کنید تصویر

متن ساده ما ما نفس می کشد. اجرای از 16 قلمرو ساخته شده است که به این معنی است که ما فقط یک بلوک متن ساده داریم. از مدل، ما همچنین می بینیم که متن رمزنگاری رمزگشایی شده است و XOR به گونه ای است که متن رمز را ایجاد می کند. به نظر می رسد، تغییرات لازم در بردار اولیه وجود دارد، بنابراین ما پیام مورد نظر را می گیریم امشب جلسه امتحان! . اما چگونه این دقیقا انجام می شود؟