อ่าน 13 นาที
คาสึมิ
KASUMI เป็นการ เข้ารหัสแบบบล็อก ที่ใช้ใน ระบบ สื่อสารเคลื่อนที่ UMTS , GSM และ GPRS ใน UMTS นั้น KASUMI ถูกใช้ในอัลก อริธึม การรักษาความลับ ( f8 ) และ อัลกอริธึม ความสมบูรณ์ ( f9...
คาสึมิ
| ทั่วไป | |
|---|---|
| นักออกแบบ | มิตซูบิชิ อิเล็กทริค |
| มาจาก | มิสตี้1 |
| รายละเอียดรหัสลับ | |
| ขนาดกุญแจ | 128 บิต |
| ขนาดบล็อก | 64 บิต |
| โครงสร้าง | เครือข่ายไฟสเทล |
| รอบ | 8 |
KASUMIเป็นการเข้ารหัสแบบบล็อกที่ใช้ใน ระบบ สื่อสารเคลื่อนที่UMTS , GSMและGPRS ใน UMTS นั้น KASUMI ถูกใช้ในอัลก อริธึม การรักษาความลับ ( f8 ) และ อัลกอริธึม ความสมบูรณ์ ( f9 ) โดยใช้ชื่อ UEA1 และ UIA1 ตามลำดับ[ 1 ] ใน GSM นั้น KASUMI ถูกใช้ใน ตัวสร้างกระแสคีย์ A5/3และใน GPRS ถูกใช้ในตัวสร้างกระแสคีย์ GEA3
KASUMI ได้รับการออกแบบสำหรับ3GPPเพื่อใช้ในระบบรักษาความปลอดภัย UMTS โดยกลุ่มผู้เชี่ยวชาญด้านอัลกอริทึมความปลอดภัย (SAGE) ซึ่ง เป็น ส่วนหนึ่งของหน่วยงานมาตรฐานยุโรปETSI [ 2 ] เนื่องจากแรงกดดันด้านกำหนดการในการกำหนดมาตรฐาน 3GPP แทนที่จะพัฒนารหัสลับใหม่ SAGE จึงตกลงกับกลุ่มข้อกำหนดทางเทคนิคของ 3GPP (TSG) สำหรับด้านระบบของความปลอดภัย 3G (SA3) ที่จะพัฒนาโดยอิงจากอัลกอริทึมที่มีอยู่ซึ่งได้รับการประเมินมาบ้างแล้ว[ 2 ] พวกเขาเลือกอัลกอริทึมการเข้ารหัสMISTY1ที่พัฒนา[ 3 ] และจดสิทธิบัตร[ 4 ] โดยบริษัท Mitsubishi Electric Corporationอัลกอริทึมดั้งเดิมได้รับการแก้ไขเล็กน้อยเพื่อให้ง่ายต่อการใช้งานฮาร์ดแวร์และเพื่อให้ตรงตามข้อกำหนดอื่นๆ ที่กำหนดไว้สำหรับความปลอดภัยของการสื่อสารเคลื่อนที่ 3G
KASUMI ตั้งชื่อตามอัลกอริธึมดั้งเดิมMISTY1 —霞み(ฮิระงะนะคะซุみ, romaji kasumi ) เป็น คำ ภาษาญี่ปุ่นที่แปลว่า "หมอก"
ในเดือนมกราคม พ.ศ. 2553 Orr Dunkelman , Nathan Keller และAdi Shamirได้เผยแพร่เอกสารที่แสดงให้เห็นว่าพวกเขาสามารถเจาะระบบ Kasumi ได้ด้วยการโจมตีด้วยคีย์ที่เกี่ยวข้องและทรัพยากรการคำนวณเพียงเล็กน้อย การโจมตีนี้ไม่ได้ผลกับMISTY1 [ 5 ]
คำอธิบาย
อัลกอริทึม KASUMI ถูกกำหนดไว้ในข้อกำหนดทางเทคนิคของ 3GPP [ 6 ] KASUMI เป็นการเข้ารหัสแบบบล็อกที่มีคีย์ 128 บิตและอินพุตและเอาต์พุต 64 บิต แกนหลักของ KASUMI คือเครือข่าย Feistel แปด รอบ ฟังก์ชันรอบในเครือข่าย Feistel หลักเป็นการแปลงเครือข่ายแบบ Feistel ที่ไม่สามารถย้อนกลับได้ ในแต่ละรอบ ฟังก์ชันรอบจะใช้คีย์รอบซึ่งประกอบด้วยคีย์ย่อย 16 บิตแปดตัวที่ได้มาจากคีย์ 128 บิตดั้งเดิมโดยใช้ตารางคีย์คงที่
ตารางสำคัญ
คีย์K ขนาด 128 บิต จะถูกแบ่งออกเป็นคีย์ย่อย K iขนาด 16 บิต จำนวน 8 คีย์:
นอกจากนี้ ยังมีการใช้คีย์K' ที่ถูกดัดแปลง ซึ่งแบ่งออกเป็นคีย์ย่อย 16 บิตK' i เช่นเดียวกัน คีย์ที่ถูกดัดแปลงนี้ได้มาจากคีย์ดั้งเดิมโดยการ XOR กับ 0x123456789ABCDEFFEDCBA9876543210 (ซึ่งเลือกมาเป็นตัวเลข "ที่ไม่ได้มีอะไรซ่อนอยู่" )
ปุ่มกลมนั้นได้มาจากปุ่มย่อยโดยการหมุนบิตไปทางซ้ายตามจำนวนที่กำหนด หรือจากปุ่มย่อยที่แก้ไขแล้ว (โดยไม่เปลี่ยนแปลง)
ปุ่มกลมมีดังต่อไปนี้:
การบวกดัชนีคีย์ย่อยเป็นแบบวนรอบ ดังนั้นหากi+jมากกว่า 8 จะต้องลบ 8 ออกจากผลลัพธ์เพื่อให้ได้ดัชนีคีย์ย่อยที่แท้จริง
อัลกอริทึม
อัลกอริทึม KASUMI ประมวลผลคำ 64 บิตเป็นสองส่วน ส่วนละ 32 บิต คือ ส่วนซ้าย ( ) และส่วนขวา ( ) คำที่ป้อนเข้ามาคือการรวมกันของส่วนซ้ายและส่วนขวาของรอบแรก:
.
ในแต่ละรอบ ครึ่งขวาจะถูก XOR กับผลลัพธ์ของฟังก์ชันรอบนั้น จากนั้นจึงสลับครึ่งทั้งสอง:
โดยที่KL i , KO i , KI iคือปุ่มรอบสำหรับรอบ ที่i
ฟังก์ชันการปัดเศษสำหรับจำนวนคู่และจำนวนคี่จะแตกต่างกันเล็กน้อย ในแต่ละกรณี ฟังก์ชันการปัดเศษจะเป็นการประกอบกันของฟังก์ชันสองฟังก์ชันFL iและFO iสำหรับจำนวนคี่
และเพื่อให้ได้ผลลัพธ์ที่สมดุล
.
ผลลัพธ์ที่ได้คือการรวมกันของผลลัพธ์จากรอบที่แล้ว
.
ทั้ง ฟังก์ชัน FLและFOแบ่งข้อมูลอินพุต 32 บิตออกเป็นสองส่วน ส่วนละ 16 บิต ฟังก์ชัน FLเป็นการประมวลผลบิตแบบไม่ย้อนกลับ ในขณะที่ ฟังก์ชัน FOเป็นวงจรแบบ Feistel สามรอบที่ไม่ย้อนกลับเช่นกัน
ฟังก์ชัน FL
อินพุต 32 บิตxจะถูกแบ่งออกเป็นสองส่วน ส่วนละ 16 บิต ขั้นแรก ส่วนซ้ายของอินพุตจะถูก AND กับค่า round key แบบบิตต่อบิต แล้วหมุนไปทางซ้ายหนึ่งบิต ผลลัพธ์ที่ได้จะถูก XOR กับส่วนขวาของอินพุต เพื่อให้ได้ส่วน ขวา ของเอาต์พุต
จากนั้น นำครึ่งขวาของผลลัพธ์ไปทำการ OR แบบบิตต่อบิตกับคีย์รอบและหมุนไปทางซ้ายหนึ่งบิต ผลลัพธ์ที่ได้จะถูกนำไปทำการ XOR กับครึ่งซ้ายของอินพุต เพื่อให้ได้ครึ่ง ซ้าย ของผลลัพธ์
ผลลัพธ์ของฟังก์ชันคือการต่อกันของครึ่งซ้ายและครึ่งขวา
ฟังก์ชัน FO
อินพุต 32 บิตxของจะถูกแบ่งออกเป็นสองส่วน 16 บิตและส่งผ่านเครือข่าย Feistel สามรอบ
ในแต่ละรอบทั้งสามรอบ (โดยกำหนดดัชนีเป็นjซึ่งมีค่าเป็น 1, 2 และ 3) ครึ่งซ้ายจะถูกปรับเปลี่ยนเพื่อให้ได้ครึ่งขวาใหม่ และครึ่งขวาจะกลายเป็นครึ่งซ้ายของรอบถัดไป
ผลลัพธ์ของฟังก์ชันคือ.
ฟังก์ชัน FI
ฟังก์ชันFIเป็นเครือข่ายที่มีลักษณะคล้าย Feistel ที่ไม่ปกติ
อินพุต 16 บิตของฟังก์ชันจะถูกแบ่งออกเป็นสองส่วน โดยส่วน หนึ่งมีความกว้าง 9 บิต และอีกส่วนหนึ่งมีความกว้าง 7 บิต
บิตในครึ่งซ้าย จะถูกสลับตำแหน่งก่อนโดย กล่องแทนที่ 9 บิต(S-box) S9จากนั้นผลลัพธ์จะถูก XOR กับครึ่งขวาที่ขยายด้วยศูนย์เพื่อให้ได้ครึ่งขวา 9 บิตใหม่
บิตในครึ่งขวาจะถูกสลับตำแหน่งโดย S-box 7 บิตS7และผลลัพธ์จะถูก XOR กับบิตที่มีค่าน้อยที่สุดเจ็ดบิต ( LS7 ) ของครึ่งขวาใหม่เพื่อให้ได้ครึ่งซ้าย 7 บิตใหม่
คำกลางจะถูก XOR กับคีย์รอบ KI เพื่อให้ได้ ซึ่งมีความกว้าง 7 บิต และมีความกว้าง 9 บิต
จากนั้น บิตในครึ่งขวา จะถูกสลับตำแหน่งโดย S-box S9ขนาด 9 บิตและผลลัพธ์จะถูก XOR กับครึ่งซ้ายที่ขยายด้วยศูนย์ เพื่อให้ได้ครึ่งขวาใหม่ ขนาด 9 บิตของเอาต์พุต
สุดท้าย บิตของครึ่งซ้ายจะถูกสลับตำแหน่งโดย S-box 7 บิตS7และผลลัพธ์จะถูก XOR กับบิตที่มีค่าน้อยที่สุดเจ็ดบิต ( LS7 ) ของครึ่งขวาของเอาต์พุตเพื่อให้ได้ครึ่งซ้าย 7 บิตของเอาต์พุต
ผลลัพธ์ที่ได้คือการเชื่อมต่อครึ่งซ้ายและครึ่งขวาสุดท้ายเข้าด้วยกัน
กล่องทดแทน
กล่องทดแทน (S-boxes) S7 และ S9 ถูกกำหนดโดยทั้งนิพจน์ AND-XOR ระดับบิตและตารางค้นหาในข้อกำหนด นิพจน์ระดับบิตมีไว้สำหรับการใช้งานในฮาร์ดแวร์ แต่ในปัจจุบันเป็นเรื่องปกติที่จะใช้ตารางค้นหาแม้ในการออกแบบฮาร์ดแวร์
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 , 2645 , 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 , 232158 , 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 , 683 , 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 , 325149 , 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 };การวิเคราะห์รหัส
ในปี พ.ศ. 2544 Kühn (2544) ได้นำเสนอการโจมตีแบบดิฟเฟอเรนเชียลที่เป็นไปไม่ได้ ในหกรอบของ KASUMI [ 7 ]
ในปี 2546 Elad Barkan, Eli Bihamและ Nathan Keller ได้สาธิตการโจมตีแบบ man-in-the-middleต่อ โปรโตคอล GSMซึ่งหลีกเลี่ยงการเข้ารหัส A5/3 และทำให้โปรโตคอลถูกทำลาย อย่างไรก็ตาม วิธีนี้ไม่ได้โจมตีการเข้ารหัส A5/3 [ 8 ]บทความฉบับเต็มของพวกเขาได้รับการตีพิมพ์ในภายหลังในปี 2549 [ 9 ]
ในปี 2548 นักวิจัยชาวอิสราเอลEli Biham , Orr Dunkelmanและ Nathan Keller ได้เผยแพร่การโจมตีแบบสี่เหลี่ยมผืนผ้า (บูมเมอแรง) ที่เกี่ยวข้อง กับคีย์ บน KASUMI ซึ่งสามารถทำลายทั้ง 8 รอบได้เร็วกว่าการค้นหาแบบครบถ้วน[ 10 ] การโจมตีนี้ต้องการข้อความธรรมดาที่เลือก 2 54.6ข้อความ ซึ่งแต่ละข้อความได้รับการเข้ารหัสภายใต้คีย์ที่เกี่ยวข้อง 4 คีย์ และมีความซับซ้อนของเวลาเทียบเท่ากับการเข้ารหัส KASUMI 2 76.1ครั้ง แม้ว่านี่จะไม่ใช่การโจมตีที่ใช้งานได้จริง แต่ก็ทำให้ข้อพิสูจน์บางประการเกี่ยวกับความปลอดภัยของโปรโตคอล 3GPP ที่อาศัยความแข็งแกร่งที่คาดการณ์ไว้ของ KASUMI เป็นโมฆะ
ในปี 2010 Dunkelman, Keller และ Shamir ได้เผยแพร่การโจมตีแบบใหม่ที่อนุญาตให้ฝ่ายตรงข้ามสามารถกู้คืนคีย์ A5/3 ทั้งหมดได้โดย การ โจมตีคีย์ที่เกี่ยวข้อง[ 5 ]ความซับซ้อนของเวลาและพื้นที่ในการโจมตีนั้นต่ำพอที่ผู้เขียนจะทำการโจมตีได้ภายในสองชั่วโมงบน คอมพิวเตอร์เดสก์ท็อป Intel Core 2 Duoแม้จะใช้การใช้งาน KASUMI อ้างอิงที่ไม่ได้ปรับให้เหมาะสมก็ตาม ผู้เขียนตั้งข้อสังเกตว่าการโจมตีนี้อาจไม่สามารถนำไปใช้กับวิธีการใช้ A5/3 ในระบบ 3G ได้ จุดประสงค์หลักของพวกเขาคือการทำลายความน่าเชื่อถือของการรับรองของ 3GPP ที่ว่าการเปลี่ยนแปลง MISTY ของพวกเขาจะไม่ส่งผลกระทบอย่างมีนัยสำคัญต่อความปลอดภัยของอัลกอริทึม
ดูเพิ่มเติม
ลิงก์ภายนอก
- หน้าแรกของนาธาน เคลเลอร์
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ คาสึมิ
KASUMI เป็นการ เข้ารหัสแบบบล็อก ที่ใช้ใน ระบบ สื่อสารเคลื่อนที่ UMTS , GSM และ GPRS ใน UMTS นั้น KASUMI ถูกใช้ในอัลก อริธึม การรักษาความลับ ( f8 ) และ อัลกอริธึม ความสมบูรณ์ ( f9...
คำอธิบาย
อัลกอริทึม KASUMI ถูกกำหนดไว้ในข้อกำหนดทางเทคนิคของ 3GPP [ 6 ] KASUMI เป็นการเข้ารหัสแบบบล็อกที่มีคีย์ 128 บิตและอินพุตและเอาต์พุต 64 บิต แกนหลักของ KASUMI คือ เครือข่าย Feistel แปด รอบ ฟังก์ชันรอบในเครือข่าย Feistel หลักเป็นการแปลงเครือข่ายแบบ Feistel...
ตารางสำคัญ
คีย์ K ขนาด 128 บิต จะถูกแบ่งออกเป็นคีย์ย่อย K i ขนาด 16 บิต จำนวน 8 คีย์:
อัลกอริทึม
อัลกอริทึม KASUMI ประมวลผลคำ 64 บิตเป็นสองส่วน ส่วนละ 32 บิต คือ ส่วนซ้าย ( ) และส่วนขวา ( ) คำที่ป้อนเข้ามาคือการรวมกันของส่วนซ้ายและส่วนขวาของรอบแรก: แอล ฉัน {\displaystyle L_{i}} อาร์ ฉัน {\displaystyle R_{i}}