چطور میشه یه کد خودش-متعامد رو بزرگ‌تر کرد؟!

Fall Back

خب بچه‌ها، امروز می‌خوام درباره یه موضوع خیلی باحال تو دنیای رمزنگاری و ریاضی حرف بزنم: “کدهای خودش-متعامد” و اینکه چطوری میشه این کدها رو بیشتر و بزرگ‌ترشون کرد. اگه تا حالا این اسم به گوشت نخوره نگران نباش! توضیحش میدم.

کد خودش-متعامد یعنی چی؟

ببین، اینا یه جور کد توی ریاضیات و مهندسی کامپیوتر هستن که یه ویژگی خاص دارن: هر بردار (یعنی یه ردیف از اعداد) توی این کدها، عمود (یا اصطلاحاً “متعامد”) بر خودش و بقیه بردارهای کد قرار می‌گیره. به این میگن خودش-متعامد. حالا بسته به اینکه چطور این “عمود بودن” سنجیده بشه، دو مدل داریم: اقلیدسی (Euclidean) و هرمی‌تی (Hermitian). توضیح: کد اقلیدسی بر اساس ضرب داخلی ساده کار می‌کنه؛ کد هرمی‌تی هم یه مدل پیچیده‌تر از ضرب داخلیه که توی بعضی فضاهای خاص کاربرد داره.

اصل ماجرا

توی یه مقاله جدید که توی arXiv منتشر شده (اسمش هم “چطور یه کد خودش-متعامد رو گسترش بدیم”ه)، نویسنده‌ها نشون دادن که اگه یه کد خودش-متعامد داشته باشیم، میشه به روشی خاص اون رو بزرگ‌تر کرد و باز هم خاصیت خودش-متعامد بودنش رو حفظ کنیم، یعنی خرابش نکنیم! این برای دو نوع کد بالا (اقلیدسی و هرمی‌تی) جواب می‌ده. مثلاً اگه یه کد هرمی‌تی خودش-متعامد با بُعد k داشته باشی، همیشه می‌تونی اون رو داخل یه کد با بُعد k+1 جا بدی که باز هم خودش-متعامده! این خیلی باحاله.

برای کدهای اقلیدسی خودش-متعامد هم تقریباً همین داستانه ولی با یه شرط: اگه k (تعداد بردارها یا همون بُعد کد) کمتر از n/2 – ۱ باشه (n اندازه اصلی کده)، باز میشه کد رو گسترش داد و باز هم خودش-متعامد بمونه. توضیح: [n,k] یعنی اندازه کلی کد n تاست و توش k تا بردار مستقل هست.

یه نکته ریز برای حالت خاص

حالا اگر k بشه n/2 – 1، شرایط یه خورده فرق می‌کنه. توی حالت اقلیدسی وقتی p=2 (یعنی اعداد رو فقط مدولوی ۲ حساب می‌کنیم، مثلاً همه چی فقط صفر و یکه)، باز میشه گسترش داد. ولی اگه p یه عدد اول فرد باشه (مثل ۳ یا ۵ و…)، دیگه فقط اگه یه شرط اضافه خاص برقرار باشه می‌تونیم گسترش بدیم. یعنی همیشه نمیشه، باید اون شرط اضافه برقرار بشه.

الگوریتم هم دارن!

جالب‌تر اینکه توی این مقاله، دو تا الگوریتم هم معرفی کردن که دقیقاً توضیح می‌ده چجوری این گسترش رو انجام بدیم. یعنی فقط حرف نزده، راهکار عملی هم داده. بنابراین کسایی که واقعاً دنبال ساخت کدهای محافظت‌شده و ایمن برای انتقال داده هستن، می‌تونن با این الگوریتم‌ها کار رو جلو ببرن.

جمع‌بندی دوستانه

در کل، این مقاله نشون داده که تقریباً همیشه میشه یه کد خودش-متعامد رو بزرگ‌تر کرد و مثلاً به درد کسایی که بخوان اطلاعات بیشتری رو با همون امنیت قدیم جابه‌جا کنن می‌خوره. البته به جز اون حالت خاص که شرط اضافی نیاز داره. خلاصه اگه دنبال روش‌های کدنویسی و رمزنگاری دقیق و ایمن هستی، این راهکارها خیلی به کارت میان!

منبع: +