کاسومی

از testwiki
پرش به ناوبری پرش به جستجو

الگو:Infobox encryption method کاسومی یک رمزگذاری قطعه‌ای است که در سامانه جهانی مخابرات سیار، جی‌اس‌ام، سرویس بسته امواج رادیویی تلفن همراه استفاده می‌شود. در سامانه جهانی مخابرات سیار، کاسومی به عنوان الگوریتم‌های رازداری و یکپارچگی داده‌ها به ترتیب به نام‌های الگو:انگلیسی و الگو:به انگلیسی به کار رفته‌است.[۱] در جی‌اس‌ام، کاسومی در تولیدکنندهٔ جریان‌کلید برای A5/3 به کار رفته‌است. در سرویس بسته امواج رادیویی، کاسومی در تولیدکنندهٔ جریان‌کلید برای GEA3 به کار رفته‌است.

کاسومی برای پروژه مشارکتی نسل سوم شبکه تلفن همراه الگو:به انگلیسی طراحی شده بود تا به وسیلهٔ گروهی از متخصصان الگوریتم‌های امنیتی الگو:به انگلیسی (بخشی از سازمان استانداردهای اروپایی به نام نهاد استانداردهای مخابراتی اروپا) در سامانه امنیتی سامانه جهانی مخابرات سیار به کار رود.[۲]

به خاطر برنامهٔ فشرده برای استانداردسازی 3GPP، گروه SAGE پیشنهاد گروه فنی مخصوص 3GPP الگو:به انگلیسی را در مورد بخش امنیتی 3G الگو:به انگلیسی قبول کرد. پیشنهاد به این صورت بود که برای بخش امنیتی، به جای توسعه یک الگوریتم رمزگذاری جدید، از یک الگوریتم موجود که مورد ارزیابی قرار گرفته بود، استفاده شود.[۲] آن‌ها برای این کار، الگوریتم الگو:به انگلیسی را که توسعه‌یافته[۳] بود و توسط میتسوبیشی الکتریک، ثبت‌شده[۴] بود را انتخاب کردند. اصل الگوریتم برای پیاده‌سازی راحت‌تر توسط سخت‌افزار و فراهم‌کردن دیگر مجموعه نیازمندی‌های لازم برای امنیت ارتباطی تلفن‌های همراه 3G، مقداری تغییر کرد.

اسم کوسامی که بعد از نام اصلی الگوریتم الگو:به انگلیسی به علت معادل ژاپنی برای الگو:به انگلیسی انتخاب شد. (به هیراگانا معادل かすみ و به روماجی معادل kasumi است)

در ژانویه ۲۰۱۰، اوردانکلمن الگو:به انگلیسی، ناتان‌کلر الگو:به انگلیسی و ادی شامیر یک مقاله‌ای را منتشر نمودند که در آن نشان‌داده شده بود که می‌توان الگوریتم کوسامی را با یک حمله کلیدهای مرتبط الگو:به انگلیسی و منابع محاسباتی خیلی مدرن، شکست. البته این حمله در برابر MYSTY1 بی‌اثر بود.[۵]

توضیحات

کاسومی یک الگوریتم است که به صورت خاص در تکنولوژی‌های 3GPP تعریف‌شده‌است.[۶] کاسومی یک رمزگذاری قطعه‌ای با کلیدی به طول ۱۲۸ بیت، ورودی و خروجی ۶۴ بیتی است. هستهٔ اصلی کاسومی یک شبکهٔ فایستل با ۸ دور می‌باشد. توابع هر دور شبکهٔ فایستل، تبدیلات شبکه‌ای برگشت هستند. در هر دور، تابع مربوط به دور از یک زیرکلید ۱۶ بیتی که از طریق کلید ۱۲۸ بیتی اصلی الگوریتم و توسط یک زمان‌بند کلید ثابت تولیدشده است، استفاده می‌کند.

زمان‌بند کلید

کلید اصلی ۱۲۸ بیتی به اسم K، به ۸ زیرکلید ۱۶ بیتی Ki(1i8) تقسیم می‌شود:

الگو:آغاز چپ‌چین

K=K1K2K3K4K5K6K7K8

الگو:پایان چپ‌چین

همچنین در کنار کلید اصلی، یک کلید تغییریافته به اسم K' استفاده می‌شود که به روش مشابه، به ۸ زیرکلید ۱۶ بیتی Ki'(1i8) تقسیم می‌شود. این کلید تغییریافته به وسیلهٔ یای‌انحصاری کلید اصلی K با عدد (123456789ABCDEFFEDCBA9876543210)16 به دست می‌آید. الگو:به انگلیسی

این زیرکلیدهای هر دور، به وسیلهٔ چرخش بیتی به سمت چپ با مقداری مشخص یا از طریق کلیدهای تغییریافته (بدون تغییر) محاسبه می‌شوند.

کلیدهای ۸ دو به صورت زیر هستند:

الگو:آغاز چپ‌چین

KLi,1=ROL(Ki,1)KLi,2=K'i+2KOi,1=ROL(Ki+1,5)KOi,2=ROL(Ki+5,8)KOi,3=ROL(Ki+6,13)KIi,1=K'i+4KIi,2=K'i+3KIi,3=K'i+7

الگو:پایان چپ‌چین

زیراندیس‌های به کار رفته در فرمول‌های بالا به صورت گردشی است، یعنی اگر یک زیراندیس به صورت i+j از عدد ۸ بزرگتر شد، باید ۸ تا از آن کم شود تا مقدار واقعی اندیس محاسبه شود.

الگوریتم

الگوریتم کاسومی یک کلید ۶۴ بیتی را به صورت ۲ بخش ۳۲ بیتی در قالب بخش چپ (Li) و بخش راست (Ri) پردازش می‌کند. ورودی الگوریتم کاسومی، الحاق سمت چپ و راست از اولین دور می‌باشد:

الگو:آغاز چپ‌چین

input=R0L0

الگو:پایان چپ‌چین

در هر دور، بخش سمت راست (Ri) با خروجی تابع دور، یای‌انحصاری می‌شود و بعد از آن، جای دو بخش سمت چپ و راست تغییر می‌کند. (در تابع زیر، KLi,KOi,KIi همان کلیدهای دور iام محسوب می‌شوند)

الگو:آغاز چپ‌چین

Li=Fi(KLi,KOi,KIi,Li1)Ri1Ri=Li1

الگو:پایان چپ‌چین

تابع دور الگو:به انگلیسی برای دورهای زوج و فرد متفاوت می‌باشد. با این حال، در هر دور، تابع دور یک تابع از دو بخش FLi و FOi است. برای دورهای فرد، تابع دور به صورت زیر است:

الگو:آغاز چپ‌چین

Fi(Ki,Li1)=FO(KOi,KIi,FL(KLi,Li1))

الگو:پایان چپ‌چین

و برای دورهای زوج، تابع دور به صورت زیر است:

الگو:آغاز چپ‌چین

Fi(Ki,Li1)=FL(KLi,FO(KOi,KIi,Li1)).

الگو:پایان چپ‌چین

خروجی الگوریتم، الحاق بخش‌های خروجی دور آخر می‌باشد.

الگو:آغاز چپ‌چین

output=R8L8

الگو:پایان چپ‌چین

هر دو تابع FL و FO ورودی ۳۲ بیتی خود را به دو بخش ۱۶ بیتی تبدیل می‌کنند. تابع FL یک تابع تغییر بیت‌ها به صورت بازگشت‌پذیر است در حالی که تابع FO یک شبکه فایستل ۳ دوره بازگشت‌ناپذیر است.

تابع FL

ورودی ۳۲ بیتی (x) تابع FL(KLi,x)، به دو بخش ۱۶ بیتی تقسیم می‌شود: x=lr

بخش سمت چپ ورودی (l) با کلید دور KLi,1، به صورت بیتی عطف منطقی می‌شود و سپس به اندازهٔ یکی بیت، به سمت چپ چرخش داده می‌شود. خروجی آن، با سمت راست ورودی (rیای‌انحصاری می‌شود تا سمت راست خروجی (r) تولید شود:

الگو:آغاز چپ‌چین

r=ROL(lKLi,1,1)r

الگو:پایان چپ‌چین

سپس خروجی قبلی (r) با کلید دور KLi,2 فصل منطقی می‌شود و سپس به اندازهٔ یک بیت به سمت چپ، چرخش پیدا می‌کند. سپس خروجی آن، با سمت چپ ورودی (l) یای‌انحصاری می‌شود تا سمت چپ خروجی (l) تولید شود:

الگو:آغاز چپ‌چین

l=ROL(rKLi,2,1)l

الگو:پایان چپ‌چین

در نهایت خروجی، الحاق دو بخش سمت چپ و راست می‌باشد: x=lr

تابع FO

ورودی ۳۲ بیتی (x) تابع FO(KOi,KIi,x)، به دو بخش ۱۶ بیتی تقسیم می‌شود: x=l0r0

سپس در درون ۳ دور از شبکهٔ فایستل عبور می‌کند.

در هر یک از سه دور شبکهٔ فایستل (دارای اندیس‌های ۱ و ۲ و ۳) سمت چپ تغییر می‌کند تا سمت راست دور بعدی را بسازد و سمت راست، به عنوان سمپ چپ دور بعدی استفاده می‌شود.

الگو:آغاز چپ‌چین

rj=FI(KIi,j,lj1KOi,j)rj1lj=rj1

الگو:پایان چپ‌چین

در نهایت خروجی تابع به صورت روبرو خواهد بود: x=l3r3

تابع FI

تابع FI یک شبکه فایستل غیرمعمولی است.

ورودی ۱۶ بیتی (x) تابع FI(KI,x) به دو بخش به صورت روبرو تقسیم می‌شود: x=l0r0

طول بخش l0 به اندازهٔ ۹ بیت و طول بخش r0، ۷ بیت است.

بیت‌های موجود در بخش چپ (l0) ابتدا توسط یک جعبهٔ جایگزینی الگو:به انگلیسی (به نام S9) مخلوط شده و نتیجه با گسترش‌یافتهٔ بخش راست (r0) با بیت صفر، فصل منطقی می‌شود تا بخش سمت راست جدید (r1) تولید شود: الگو:آغاز چپ‌چین r1=S9(l0)(00r0)

الگو:پایان چپ‌چین

بیت‌های موجود در بخش راست (r0) با یک جعبهٔ جایگزینی ۷ بیتی (به نام S7) مخلوط شده و سپس نتیجهٔ آن با هفت بیت کم‌ارزش (LS7) سمت راست جدید (r1فصل منطقی می‌شود تا ۷ بیت جدید سمت چپ (l1) تولید شود:

الگو:آغاز چپ‌چین

l1=S7(r0)LS7(r1)

الگو:پایان چپ‌چین

در این‌جا کلمهٔ میانی x1=l1r1 با کلید دور KI فصل منطقی می‌شود تا x2=l2r2 تولید شود که در آن l2 به طول ۷ بیت و r2 به طول ۹ بیت است:

الگو:آغاز چپ‌چین

x2=KIx1

الگو:پایان چپ‌چین

بیت‌های موجود در بخش راست (r2) ابتدا توسط یک جعبهٔ جایگزینی (به نام S9) مخلوط شده و نتیجه با گسترش‌یافتهٔ بخش راست (l2) با بیت صفر، فصل منطقی می‌شود تا بخش سمت راست جدید (r3) تولید شود:

الگو:آغاز چپ‌چین

r3=S9(r2)(00l2)

الگو:پایان چپ‌چین

بیت‌های موجود در بخش چپ (l2) با یک جعبهٔ جایگزینی ۷ بیتی (به نام S7) مخلوط شده و سپس نتیجهٔ آن با هفت بیت کم‌ارزش (LS7) سمت راست جدید (r3فصل منطقی می‌شود تا ۷ بیت جدید سمت چپ (l3) تولید شود:

الگو:آغاز چپ‌چین

l3=S7(l2)LS7(r3)

الگو:پایان چپ‌چین

در نهایت خروجی تابع از الحاق دو بخش نهایی چپ و راست تولید می‌شود: x=l3r3

جعبه‌های جایگزینی

جعبه‌های جایگزنی به نام‌های S7 و S9 هر دو توسط عملیات عطف منطقی و یای انحصاری و جدول‌ها تعریف می‌شوند. عملیاتی منطقی برای پیاده‌سازی سخت‌افزاری استفاده می‌شوند ولی امروزه اکثراً برای نمایش آن از جدول‌ها استفاده می‌شوند. الگو:به انگلیسی

جدول جایگزینی S7 به صورت زیر تعریف‌شده‌است:

int S7[128] = {
   54, 50, 62, 56, 22, 34, 94, 96, 38,  6, 63, 93,  2, 18,123, 33,
   55,113, 39,114, 21, 67, 65, 12, 47, 73, 46, 27, 25,111,124, 81,
   53,  9,121, 79, 52, 60, 58, 48,101,127, 40,120,104, 70, 71, 43,
   20,122, 72, 61, 23,109, 13,100, 77,  1, 16,  7, 82, 10,105, 98,
  117,116, 76, 11, 89,106,  0,125,118, 99, 86, 69, 30, 57,126, 87,
  112, 51, 17,  5, 95, 14, 90, 84, 91,  8, 35,103, 32, 97, 28, 66,
  102, 31, 26, 45, 75,  4, 85, 92, 37, 74, 80, 49, 68, 29,115, 44,
   64,107,108, 24,110, 83, 36, 78, 42, 19, 15, 41, 88,119, 59,  3
};

جدول جایگزینی S9 به صورت زیر تعریف‌شده‌است:

int S9[512] = {
  167,239,161,379,391,334,  9,338, 38,226, 48,358,452,385, 90,397,
  183,253,147,331,415,340, 51,362,306,500,262, 82,216,159,356,177,
  175,241,489, 37,206, 17,  0,333, 44,254,378, 58,143,220, 81,400,
   95,  3,315,245, 54,235,218,405,472,264,172,494,371,290,399, 76,
  165,197,395,121,257,480,423,212,240, 28,462,176,406,507,288,223,
  501,407,249,265, 89,186,221,428,164, 74,440,196,458,421,350,163,
  232,158,134,354, 13,250,491,142,191, 69,193,425,152,227,366,135,
  344,300,276,242,437,320,113,278, 11,243, 87,317, 36, 93,496, 27,

  487,446,482, 41, 68,156,457,131,326,403,339, 20, 39,115,442,124,
  475,384,508, 53,112,170,479,151,126,169, 73,268,279,321,168,364,
  363,292, 46,499,393,327,324, 24,456,267,157,460,488,426,309,229,
  439,506,208,271,349,401,434,236, 16,209,359, 52, 56,120,199,277,
  465,416,252,287,246,  6, 83,305,420,345,153,502, 65, 61,244,282,
  173,222,418, 67,386,368,261,101,476,291,195,430, 49, 79,166,330,
  280,383,373,128,382,408,155,495,367,388,274,107,459,417, 62,454,
  132,225,203,316,234, 14,301, 91,503,286,424,211,347,307,140,374,

   35,103,125,427, 19,214,453,146,498,314,444,230,256,329,198,285,
   50,116, 78,410, 10,205,510,171,231, 45,139,467, 29, 86,505, 32,
   72, 26,342,150,313,490,431,238,411,325,149,473, 40,119,174,355,
  185,233,389, 71,448,273,372, 55,110,178,322, 12,469,392,369,190,
    1,109,375,137,181, 88, 75,308,260,484, 98,272,370,275,412,111,
  336,318,  4,504,492,259,304, 77,337,435, 21,357,303,332,483, 18,
   47, 85, 25,497,474,289,100,269,296,478,270,106, 31,104,433, 84,
  414,486,394, 96, 99,154,511,148,413,361,409,255,162,215,302,201,

  266,351,343,144,441,365,108,298,251, 34,182,509,138,210,335,133,
  311,352,328,141,396,346,123,319,450,281,429,228,443,481, 92,404,
  485,422,248,297, 23,213,130,466, 22,217,283, 70,294,360,419,127,
  312,377,  7,468,194,  2,117,295,463,258,224,447,247,187, 80,398,
  284,353,105,390,299,471,470,184, 57,200,348, 63,204,188, 33,451,
   97, 30,310,219, 94,160,129,493, 64,179,263,102,189,207,114,402,
  438,477,387,122,192, 42,381,  5,145,118,180,449,293,323,136,380,
   43, 66, 60,455,341,445,202,432,  8,237, 15,376,436,464, 59,461
};

رمزشناسی

در سال ۲۰۰۱، یک حلمه دیفرانسیلی غیرممکن الگو:به انگلیسی برای ۶ دور کاسومی توسط Kühn معرفی شد.[۷]

در سال ۲۰۰۳، الادبارکن الگو:به انگلیسی، الی‌بیهام الگو:به انگلیسی و ناتان‌کلر الگو:به انگلیسی یک حملهٔ مرد میانی را در برابر پروتکل جی‌اس‌ام معرفی کردند که مانع از رمزگذاری A5/3 شده و سبب شکستن پروتکل شد. اما این روش به رمزگذاری A5/3 حمله نکرد.[۸] نسخهٔ کامل این مقاله بعدها رد سال ۲۰۰۶ منتشر شد.[۹]

در سال ۲۰۰۵، الی‌بیهام الگو:به انگلیسی، یک محقق اسرائیلی، اردانکلمن الگو:به انگلیسی و ناتن‌کلر الگو:به انگلیسی یک مقاله در مورد حمله بومرنگ الگو:به انگلیسی برای کاسومی منتشر نمود که می‌تواند خیلی سریع‌تر از حمله جستجوی فراگیر ۸ دور کاسومی را بشکند.[۱۰] این حمله به 254.6 متن آشکار که هر کدام توسط ۴ کلید مرتبط به هم، رمز شده‌اند نیاز دارد و دارای پیچیدگی زمانی برابر با 276.1 عمل رمزگذاری کاسومی است. اگر چه این یک حمله کاربردی نیست، اما اعتبار برخی از اثبات‌ها را در مورد امنیت رمزگذاری پروتکل 3GPP را که بر اساس امنیت از پیش تعیین‌شدهٔ کاسومی بود، بی‌ارزش کرد.

در سال ۲۰۱۰، دانلکمن الگو:به انگلیسی و کلر الگو:به انگلیسی و شمیر الگو:به انگلیسی یک حملهٔ جدید را منتشر نمودند که یک شنونده اجازه می‌داد تا بتواند کلید کامل A5/3 را توسط حملهٔ کلیدهای مرتبط الگو:به انگلیسی[۵] بدست آورد. مدت زمان و پیچیدگی فضای حمله آن قدر کم بود که حتی نویسندگان معتقد بودند که با یک کامپیوتر اینتل کور ۲ و حتی استفاده از پیاده‌سازی‌های غیر بهینهٔ کاسومی، آن را می‌توان در ۲ ساعت شکست. نویسندگان اشاره کرده بودند که شاید حمله برای روش A5/3 که در سامانه‌های 3G استفاده شده‌است، قابل استفاده نباشد. دلیل اصلی آن‌ها این بود که 3GPP تضمین کرده بود که تغییرات آن‌ها در الگوریتم MISTY، به صورت جدی امنیت الگوریتم را تحت تأثیر قرار نداده‌است.

برای مطالعهٔ بیشتر

منابع

الگو:پانویس

پیوند به بیرون