من بر روی یک برنامه کار می کنم که فایل ها را از سرورهای خارجی بر روی https بارگیری می کند و آنها را روی دیسک ذخیره می کند به نحوی نسبتا امن. به طور خاص، با استفاده از یک رمزنگاری منحصر به فرد رمزنگاری شده، یک بلوک رمزگذاری AES256، حالت بلوک CTR و یک هش HMAC از داده های رمزگذاری شده و IV.
یکی از الزامات این پروژه این است که هیچ فایل تکراری نباید ذخیره شود. با توجه به نیاز به یک منحصر به فرد IV به طور امن ذخیره فایل ها، من می توانم به سادگی از هش از فایل رمزگذاری شده استفاده کنید تا ببینید آیا نسخه کپی شده است. یک sha256 یا sha512 از محتوای متن ساده کافی نیست، زیرا مشتری می تواند فایل های تک کاراکتری را دانلود و ذخیره کند و محتویات آنها را به راحتی حدس بزند، که به طور بالقوه می تواند سیستم را تا برنده های معروف متن ساده شناخته شود.
بنابراین من تعجب می کردم که آیا این برای نگهداری هش های HMAC از متن ساده، با استفاده از یک کلید مشتق شده از Argon2ID به عنوان کلید امضای HMAC، به راحتی در نظر گرفته شود؟
این هش ها در یک پایگاه داده کلید / ارزش ذخیره می شوند و به عنوان یک کلید جستجو برای دیدن اینکه آیا یک فایل دانلود شده است که ما قبلا آن را داشته ایم، استفاده می شود. کلید Argon2ID هرگز ذخیره نخواهد شد.