استاندارد ایزو 10116 یا ISO/IEC 10116 سند مرجع خانوادهٔ امنیت اطلاعات در ISO/IEC است که حالتهای عملکرد (Modes of operation) را برای یک رمزبر بلوکی n-بیتی تعریف میکند؛ یعنی روشهایی که با آنها میتوانید دادههایی با طول دلخواه را با استفاده از یک الگوریتم رمزِ بلوکی (مثل AES یا Camellia) رمزگذاری/رمزگشایی کنید.
ویرایش چهارم این استاندارد در ژوئیهٔ ۲۰۱۷ منتشر شد و در مهٔ ۲۰۲۳ «تأیید دورهای» شد؛ همچنین اصلاحیهٔ ۲۰۲۱ یک حالت جدید به آن افزوده است. نکتهٔ مهم: 10116 صرفاً محرمانگی را پوشش میدهد و «صحت/تمامیت داده» در حوزهٔ این سند نیست. برای MAC و رمزنگاریِ همزمانِ محرمانگی+تمامیت، باید به ISO/IEC 9797-1 و ISO/IEC 19772 رجوع کنید.

چه چیزهایی دقیقاً در ISO/IEC 10116 تعریف شده است؟
نسخهٔ ۲۰۱۷ پنج حالت کلاسیک را استاندارد میکند:
ECB، CBC، CFB، OFB و CTR. هر حالت، قواعد دقیقی برای ورودیها، متغیرهای داخلی، نحوهٔ بهکارگیری «بردار آغازین/متغیر شروع (SV)»، اندازهٔ پلهٔ پردازش (j) و قاعدهٔ padding دارد؛ همچنین برای هر حالت، شناسهٔ شیء (OID) تخصیص داده شده تا در کاربردهایی که OID لازم است، شناسهٔ یکتای استاندارد استفاده شود. این سند علاوهبر مشخصات رسمی، یک ضمیمهٔ راهنمای امنیتی هم دارد که نکات کاربردیِ هر حالت (مانند بایدها و نبایدهای انتخاب IV، مخاطرات تکرار شمارنده و …) را یادآوری میکند.
چه چیزی «نیست»؟
خود استاندارد صریح میگوید حالتهای استاندارد ایزو 10116 فقط محرمانگی را تأمین میکنند؛
- برای MAC با رمز بلوکی به ISO/IEC 9797-1 بروید،
- و اگر میخواهید محرمانگی + تمامیت + احراز مبدأ را همزمان داشته باشید، از روشهای AE (Authenticated Encryption) در ISO/IEC 19772 استفاده کنید. این تمایز در چکیدهٔ رسمی استاندارد آمده است.
اصلاحیهٔ ۲۰۲۱: اضافهشدن «CTR-ACPKM»
در اصلاحیهٔ ISO/IEC 10116:2017/Amd.1:2021 حالت ششم با نام CTR-ACPKM معرفی شد (Counter — Advanced Cryptographic Prolongation of Key Material). ایدهٔ اصلی این حالت، افزایش «طول عمر کلید» در حجمهای بالای داده است: پیام به «بخشها (sections)» با اندازهٔ N بیت تقسیم میشود و پس از هر بخش، کلید بخشی (section key) با یک تبدیل ACPKM از کلید قبلی مشتق میگردد؛ بنابراین با وجود اینکه ساختار کلی مانند CTR است، کلید در طول پردازش دورهای تغییر میکند. اصلاحیه همچنین مفاهیمی مثل key lifetime، section و section key را تعریف کرده و پارامترهای جدیدی مانند c (تعداد بیتهای شمارنده که افزایش مییابد)، N (اندازهٔ بخش) و j (اندازهٔ واحد پردازش) را به جدول نمادها افزوده است.
نکات اجرایی کلیدی از متن اصلاحیه:
- برای CTR-ACPKM، طول بلوک n مضربی از ۸ باشد و j هم مضربی از ۸ انتخاب شود.
- padding بهطور پیشفرض لازم نیست (طول پیام میتواند مضرب j نباشد).
- SV بهطول n−c بیت استفاده میشود و شمارنده در هر گام mod 2^n افزایش مییابد.
- شکلها و مثالهای عددی تازه برای این حالت افزوده شدهاند و OID تمامی حالتها در ضمیمهٔ A فهرست میشود.
ارتباط استاندارد ایزو 10116 با «خودِ الگوریتمهای بلوکی»
10116 «الگوریتم رمز» را تعیین نمیکند؛ بلکه چگونه استفادهکردن از یک رمز بلوکی را استاندارد میکند. فهرست رمزهای بلوکیِ پذیرفتهشده در ISO/IEC 18033-3 آمده است—از AES، Camellia، SEED (بلوک ۱۲۸-بیتی) تا TDEA، MISTY1، CAST-128، HIGHT (بلوک ۶۴-بیتی). بنابراین در یک مشخصهٔ فنی میتوانید بنویسید: AES-128 per ISO/IEC 18033-3 + CBC mode per ISO/IEC 10116:2017.
مطالعه پیشنهادی: استاندارد ایزو 10100: آزمونهای پذیرش سیلندر هیدرولیک
چرا برای سازمان شما مهم است؟
- یکدستسازی و تطابق: وقتی در RFP/قرارداد مینویسید «رمزگذاریِ بلوکی طبق ISO/IEC 10116»، مخاطب دقیقاً میداند نحوهٔ عمل چیست و پارامترها چگونه تعیین میشوند؛ کنترلگران و ارزیابها نیز میتوانند با اتکا به همین متن، انطباق را ارزیابی کنند.
- راهنمای امنیتی قابل استناد: ضمیمهٔ راهنمای امنیتی دربارهٔ انتخاب/مدیریت IV، قواعد padding، و دلالتهای هر حالت توضیح میدهد. این توصیهها جلوی خطاهای رایج را میگیرد (مثلاً استفادهٔ نابجا از ECB یا اشتراک IV در CBC).
- بهروزبودن و چرخهٔ عمر: نسخهٔ ۲۰۱۷ در سال ۲۰۲۳ «تأیید» شده و با اصلاحیهٔ ۲۰۲۱ توسعه یافته است؛ نسخهٔ 2006 و اصلاحیهٔ 2008 آن اکنون Withdrawn هستند.
مروری کوتاه بر حالتها و توصیههای عملی
ECB – سادهترین حالت؛ هر بلوک مستقل رمز میشود. خطر الگوهای تکراری باعث میشود در اغلب کاربردها توصیه نشود. (راهنمای امنیتی استاندارد هم هشدار میدهد).
CBC – هر بلوک با XOR از خروجی بلوک قبلی تغذیه میشود؛ به IV یکتا/تصادفی نیاز دارد و به انتخاب padding حساس است. برای جلوگیری از حملات شناختهشده، reuse-نشدن IV و احیاناً ترکیب با مکانیسمهای صحت ضروری است.
CFB – بازخورد از خروجی رمز برای تولید جریان keystream استفاده میشود؛ اندازهٔ «پله» j میتواند کوچکتر از n باشد (مثلاً ۸ بیت) تا دادهٔ جریانی را پوشش دهد.
OFB – همانند CFB، اما keystream مستقل از متنِ روشن تولید میشود؛ مزیت: عدم انتشار خطا، عیب: نیاز جدی به یکتایی/تصادفی بودن SV.
CTR – شمارنده (counter) با رمز بلوکی رمز میشود و keystream میسازد؛ بسیار موازیپذیر و رایج در رمزگذاری پرسرعتِ در حال انتقال/ذخیره. یادآوری: عدم تکرار (nonce reuse) شرط اصلی امنیت است.
CTR-ACPKM (اصلاحیهٔ ۲۰۲۱) – همان CTR، با چرخش دورهای کلید در طول پیامهای بلند: پیام به «بخش»های N بیتی تقسیم میشود و برای هر بخش، section key جدید از کلید قبلی مشتق میشود تا key lifetime افزایش یابد. پارامترهای جدید c، j، N باید بهدرستی انتخاب شوند.
یادداشت مهم طراحی: 10116 بهعمد به صحت/تمامیت ورود نمیکند. اگر میخواهید در یک پیام، هم محرمانگی و هم تمامیت داشته باشید، یا باید MAC جداگانه (ISO/IEC 9797-1) اضافه کنید (مثل Encrypt-then-MAC)، یا کلاً از طرحهای AE در ISO/IEC 19772 استفاده کنید.
پارامترها و نمادها در یک نگاه
استاندارد برای هر حالت مجموعهای از نمادها/پارامترها تعیین میکند—از n (اندازهٔ بلوک رمز)، j (طول واحد پردازش)، SV (متغیر شروع)، تا m (اندازهٔ واحد padding). در اصلاحیهٔ CTR-ACPKM، ورودیهای جدیدی مانند N (اندازهٔ بخش)، c (تعداد بیتهای قابلافزایش در شمارنده) و مفاهیم key lifetime / section / section key بهصراحت افزوده شدهاند. این جزئیات برای پیادهسازی امن حیاتیاند و باید در مشخصات پروژه مقداردهی صریح شوند.
نمونهٔ سناریوهای کاربردی
- رمزگذاری پایگاهداده/دیسک: حالت CTR بهدلیل موازیسازی و دسترسی تصادفی، پرکاربرد است؛ در صورت حجم بالای داده یا سیاستهای سختگیرانهٔ طولعمر کلید، CTR-ACPKM میتواند انتخاب بهتری باشد—کلید هر «بخش» عوض میشود و ریسکهای ناشی از مصرف زیاد یک کلید پایه کاهش مییابد.
- کانالهای ارتباطی با قالببندی بلوکی: CBC/CFB/OFB بسته به قیود سازگاری و تجهیزات رمز قدیمی هنوز دیده میشوند، اما برای نیاز همزمان به محرمانگی+تمامیت، در لایهٔ پروتکل معمولاً به AE از 19772 مهاجرت میشود.
- سختافزار رمز: انتخاب الگوریتم بلوکی از 18033-3 (مثلاً AES یا Camellia)، و انتخاب حالت از 10116 (مثلاً CTR یا CTR-ACPKM)؛ سپس OID رسمی همان حالت در پیام/واسط ثبت میشود.
چکلیست اجرا و انطباق (پیشنهادی برای RFP و پیادهسازی)
- الگوریتم بلوکی را طبق ISO/IEC 18033-3 تعیین کنید (مثلاً AES-128).
- حالت عملکرد را طبق ISO/IEC 10116 مشخص کنید (CBC/CFB/OFB/CTR یا CTR-ACPKM). در صورت نیاز به یکپارچهسازی OID، به ضمیمهٔ A ارجاع دهید.
- پارامترهای حالت را صریح بنویسید: طول SV/IV، روش تولید/یکتاسازی، اندازهٔ j، قواعد padding و—برای CTR-ACPKM—N، c، key lifetime.
- برای تمامیت/احراز، یکی از گزینهها را اضافه کنید: MAC per ISO/IEC 9797-1 یا AE per ISO/IEC 19772.
- به دستورالعملهای امنیتی ضمیمهٔ B توجه کنید (عدم استفاده از ECB برای دادهٔ ساختاریافته، یکتایی nonces/IVs، ممنوعیت reuse در CTR و …).
جمعبندی استاندارد ایزو 10116
استاندارد ایزو 10116 یا ISO/IEC 10116 «زبان مشترک» استفاده از رمزهای بلوکی را استاندارد میکند: پنج حالت کلاسیک ECB/CBC/CFB/OFB/CTR در نسخهٔ ۲۰۱۷، و CTR-ACPKM در اصلاحیهٔ ۲۰۲۱ برای افزایش طولعمر کلید در بارهای حجیم. این سند بهطور آگاهانه فقط محرمانگی را هدف میگیرد؛ بنابراین برای تمامیت باید سراغ ISO/IEC 9797-1 (MAC) یا ISO/IEC 19772 (رمزنگاری احرازشده) بروید.
اگر در حال تدوین RFP، طراحی محصول امنیتی، یا ارزیابی انطباق هستید، بهترین ترکیب عبارت است از: الگوریتم بلوکی per ISO/IEC 18033-3 + حالت عملکرد per ISO/IEC 10116 (+ Amd.1 در صورت نیاز) + مکانیزم تمامیت per 9797-1 یا 19772—ترکیبی که هم از نظر فنی درست است و هم در ممیزیها قابل دفاع. ISO+3ISO+3ISO+3Iteh


