Криптографиялық жолмен жасалған мекен-жай - Cryptographically Generated Address

A Криптографиялық жолмен жасалған мекен-жай (CGA) болып табылады Интернет протоколының 6-нұсқасы (IPv6) а-дан есептелген хост идентификаторы бар мекен-жай криптографиялық хэш функциясы.[1] Бұл процедура а-ны байланыстыруға арналған әдіс жалпы қол қою кілті дейін IPv6 мекен-жайы ішінде Қауіпсіз көршілерді табу хаттамасы (ЖІБЕРУ).[2]

Әдістеме

Криптографиялық жолмен құрылған мекен-жай 128 биттік IPv6 мекен-жайының ең аз 64 битін мекен-жай иесінің ашық кілтінің криптографиялық хэшіне ауыстыру арқылы жасалады. Хабарламаларға тиісті жеке кілтпен қол қойылады. Тек бастапқы мекен-жай және ашық кілт белгілі болған жағдайда ғана тексеруші хабарламаның сәйкесінше жіберушінің аутентификациясын орындай алады. Бұл әдіс жоқты талап етеді жалпыға қол жетімді инфрақұрылым. Жарамды CGA-ны кез-келген жіберуші, оның ішінде ықтимал шабуылдаушы құруы мүмкін, бірақ олар кез-келген қолданыстағы CGA-ны қолдана алмайды.

Сипаттамалары

Криптографиялық жолмен құрылған мекенжай - бұл интерфейс идентификаторы CGA генерациялау әдісіне сәйкес құрылған IPv6 мекен-жайы. Интерфейс идентификаторы IPv6 адресінің ең аз мәнді 64 битінен құралады және оның ішкі желісіндегі хосттың желілік интерфейсін анықтау үшін қолданылады. Ішкі желі ең маңызды 64 битпен, ішкі желі префиксімен анықталады.

IPv6 мекенжай форматы
биттер6464
өрісішкі желі префиксіинтерфейс идентификаторы

CGA-мен байланыстырылатын ашық кілттен басқа, CGA генерациялау әдісі алдын-ала анықталған ішкі желі префиксін қоса бірнеше басқа кіріс параметрлерін қабылдайды. Бұл параметрлер CGA генерациялау әдісін орындау кезінде туындайтын басқа параметрлермен бірге CGA Parameters мәліметтер құрылымы деп аталатын параметрлер жиынтығын құрайды. Сәйкес CGA тексеру үшін CGA параметрлерінің толық жиынтығы белгілі болуы керек.

CGA Parameters мәліметтер құрылымы мыналардан тұрады:

  • модификатор: кездейсоқ 128-бит қол қойылмаған бүтін сан;
  • ішкі желі: CGA қай ішкі желіге жататынын анықтайтын 64 биттік префикс;
  • collCount: 0, 1 немесе 2 болуы керек 8 биттік белгісіз бүтін сан;
  • publicKey: а ретінде ашық кілт DER - кодталған ASN.1 типтің құрылымы SubjectPublicKeyInfo;
  • кең өрістер: ауыспалы-ұзындықтың өрісі (әдепкі ұзындық 0).

Сонымен қатар, қауіпсіздік параметрі Сек CGA-ның күшін анықтайды дөрекі шабуылдар. Бұл 0-ден 7-ге дейін (және қоса) кез келген мәнге ие бола алатын және CGA интерфейс идентификаторының сол жақтағы үш битінде кодталған 3-биттік белгісіз бүтін сан. Мәні неғұрлым жоғары болса Сек, қауіпсіздік деңгейі неғұрлым жоғары болса, сонымен бірге CGA-ны құру үшін соғұрлым ұзақ уақыт қажет болады. Ыңғайлы болу үшін аралық Сек төмендегі псевдокодтағы мәндер 7-ден үлкен мәнге ие бола алмайтын 8 биттік белгісіз бүтін сандар ретінде сақталады деп есептеледі.

CGA генерациясы әдісі

Келесі псевдокод бөлігі жаңа криптографиялық жолданған мекен-жай жасау үшін қолданылатын CGA генерациялау әдісін ұсынады.

 1  рәсім generateCGA (Сек, ішкі желі, publicKey, кең өрістер): 2      модификатор : = кездейсоқ (0x00000000000000000000000000000000, // 16 октет (128 бит) 3 0xffffffffffffffffffffffffffffffff) 4 5 жапсырма1: 6      консоль : = біріктіру (модификатор, 0x000000000000000000, // 9 нөлдік октет 7 publicKey, қосымша өрістер) 8 9      дайджест : = SHA1 (консоль)10      Хаш2 := дайджест[0:14] // 14 * 8 = 112 сол жақтағы 1112 бит егер Сек ≠ 0 және Хаш2[0:2*Сек] ≠ 0: // 2 * сек * 8 = 16 * сек. Сол жақтағы биттер13 модификатор := модификатор + 114          бару 115 егер аяқталса1617      collCount : = 0x00 // 8-биттік соқтығысу саны1819 2. жапсырма:20      консоль : = біріктіру (модификатор, ішкі желі, collCount,21                            publicKey, қосымша өрістер)2223      дайджест : = SHA1 (консоль)24      Хеш1 := дайджест[0: 8] // 8 * 8 = 64 сол жақтағы бит2526 intID := Хеш1                                             // Hash1 интерфейс идентификаторына айналады ... 27 intID[0] := intID[0] екілік және 0x1c екілік немесе (Сек << 5) // ... Sec және u / g биттерін жазғаннан кейін2829 CGA : = біріктіру (ішкі желі, intID) // біріктіру арқылы CGA3031 құрайды егер көшірме (CGA):32          collCount := collCount + 13334          егер collCount = 3:35              тоқтату36          егер аяқталса3738          бару 239 егер аяқталса4041      қайту [CGA, [модификатор, ішкі желі, collCount, publicKey, кең өрістер]]42  аяқтау процедурасы

CGA интерфейсінің идентификаторы негізінен қалыптасады Хеш1, бұл CGA параметрлерінің қорытылған мәліметтер қорының алғашқы 64 битінен алынған (20-дан 24-ке дейінгі жолдар). 27-жолда алғашқы үш биттің орнына қайта жазылады Сек мәні және резервтелген «u» және «g» биттері (жетінші және сегізінші бит) 0 мәніне орнатылған.

The Сек параметр хэш кеңейтуді алғашқы 16 рет орындау арқылы жүзеге асырады Сек басқа хэш биттері, Хаш2, 0 болуы керек. Бұл хэш - CGA параметрлерінің қорытылған мәліметтер құрылымының нәтижесі ішкі желі және collCount мәні 0-ге орнатылған. A күшпен іздеу қолайлы табу үшін орындалады Хаш2, ұлғайта отырып модификатор әрбір итерация 1-ден (6-дан 15-ге дейінгі жолдар). Себебі көбірек биттер 0-ге тең болуы керек Сек мәні, іздеуді жүргізуге кететін орташа уақыт мәні мәнімен экспоненталық өседі Сек.

CGA құру үшін ішкі желі префиксі мен құрылған интерфейс идентификаторын біріктіргеннен кейін, мекен-жайдың қайталануын анықтау орындалуы мүмкін. Егер мекен-жай қазірдің өзінде қолданыста болса, онда соқтығысу есептегіші collCount 1-ге көбейтіліп, жаңа интерфейс идентификаторы пайда болады (20-дан 39-ға дейінгі жолдар). Себебі collCount есептеу кезінде пайдаланылмайды Хаш2, жаңа іздеу қажет емес Хаш2 мекенжай соқтығысқан кезде. Сол себепті, ішкі желі мекен-жайдың ішкі желісінің префиксі өзгерсе де, хосттың ашық кілті өзгермесе, сол модификаторды қайта қолдануға болады және жаңа іздеудің қажеті болмайтындай етіп қолданылмайды. Хаш2.

41-жолда CGA параметрлері деректер құрылымымен бірге қайтарылады.

CGA тексеру әдісі

Криптографиялық жолмен құрылған мекен-жай қол қойылған хабарламалардың сол мекен-жай тағайындалған хост арқылы жіберілгендігін тексеру үшін қолданылады. Бұл қол қою үшін пайдаланылған кілттер жұбы CGA-мен байланыстырылғанын тексеру арқылы жасалады. Ашық кілттің дұрыстығын осылайша тексеруге болатындықтан, ашық кілттің инфрақұрылымына қажеттілік жоқ. Егер хосттың да аутентификациясы талап етілсе, онда CGA алдын-ала аутентификациялануы керек, өйткені егер мұндай жағдайда адреске сенбесе (егер ол басқа адамдармен расталмаған болса), байланысқан ашық кілтке сенуге болмайды. CGA-ға қарағанда).

Ашық кілттің CGA-мен байланысқандығы тексерілген CGA тексеру әдісі кіріс ретінде сәйкес CGA Parameters мәліметтер құрылымын қажет етеді және оны келесідей жүзеге асыруға болады.

 1  рәсім растауCGA (CGA, [модификатор, ішкі желі, collCount, publicKey, кең өрістер]): 2      егер collCount > 2 немесе CGA[0:8] ≠ ішкі желі: 3          қайту жалған 4 егер аяқталса 5 6      консоль : = біріктіру (модификатор, ішкі желі, collCount, 7                            publicKey, кең өрістер) 8 9      дайджест : = SHA1 (консоль)10      Хеш1 := дайджест[0: 8] // 8 * 8 = 64 ең сол жақтағы биттер11 Хеш1[0] := Хеш1[0] екілік және 0x1c // Sec және u / g биттерін елемеңіз1213 intID := CGA[8:16] // интерфейс идентификаторы (оң жақтағы 64 бит) 14 intID[0] := intID[0] екілік және 0x1c // Sec және u / g биттерін елемеңіз1516 егер Хеш1intID:17          қайту 18. жалған егер аяқталса1920      Сек := CGA[8] >> 5 // интерфейс идентификаторынан Sec шығарыңыз2122 консоль : = біріктіру (модификатор, 0x000000000000000000, // 9 нөлдік октет23 publicKey, кең өрістер)2425      дайджест : = SHA1 (консоль)26      Хаш2 := дайджест[0:14] // 14 * 8 = 112 сол жақ биттер2728 егер Сек ≠ 0 және Хаш2[0:2*Сек] ≠ 0: // 2 * сек * 8 = 16 * сек. Сол жақтағы биттер29 қайту 30 егер аяқталса3132      қайту шын // тексеру сәтті өтті33 аяқтау процедурасы

Әдіс егер тексеруден басталады collCount CGA параметрлерінен деректер құрылымы жарамды мәнге ие және егер ішкі желі сол мәліметтер құрылымынан CGA ішкі желісінің префиксі сәйкес келеді (2-жолда). Бұл үшін жасалады қауіпсіздік себептері.

6-дан 18-ге дейін Хеш1 CGA Parameters деректер құрылымынан есептеледі (ол ашық кілт пен ішкі желінің префиксін қамтиды) және сәйкес разрядтар CGA интерфейс идентификаторымен салыстырылады. Бұл жағдайда бұл алғашқы үш битті орнату арқылы жасалады (Сек) және екеуінің де жетінші және сегізінші биттері («u» және «g» биттері) Хеш1 және салыстыру оңай болу үшін 11 және 14-жолдардағы 0 интерфейс идентификаторы.

Шығарғаннан кейін Сек CGA интерфейс идентификаторынан, Хаш2 есептелген және алғашқы 16 рет Сек хэштің биттері 0-мен салыстырылады (22-ден 30-ға дейінгі жолдар). Егер барлық тексерулер нәтижелі болса, онда ашық кілт сол CGA-мен байланыстырылған (яғни жарамды болуы керек).

Қауіпсіздік

Үшін шабуылдаушы жасау клиент ол шабуылдаушыға тиесілі емес белгілі бір CGA-дан жарамды хабарлама алды деп есептесеңіз, шабуылдаушы а табуы керек хэш соқтығысуы тиісті биттер үшін Хеш1 және Хаш2 орындау арқылы қатал шабуыл. Егер шабуылдаушы мақсатты CGA-мен бірдей CGA құру үшін пайдаланылуы мүмкін CGA параметрлер жиынтығын тапса (шабуылдаушы жеке кілтін білетін ашық кілтті қосқанда), онда шабуылдаушы CGA-ға иелік ететін хостты кейіптей алады. анықталуда (мүмкін, егер клиент бұрын хостпен байланысып, ашық кілттің өзгергенін, бірақ CGA өзгермегенін байқаса).

64 биттің Хеш1, интерфейс идентификаторында тек 59 қолданылады, өйткені 5 биттің үстінен жазылады. CGA үшін Сек 0-ге тең, бұл 59 бит беретін CGA параметрлерінің жиынтығын табу құны шамамен (in.) үлкен O белгісі ). Үлкен мәні Сек, дегенмен, бұл құнын есеге арттырады дейін өйткені алғашқы 16 рет Сек биттер Хаш2 содан кейін өзекті болады (яғни, ол биттердің 0-ге тең болуын талап ете отырып, хэш кеңейтуін жүзеге асырады). CGA генерациялау процесінде мекен-жай құру құны мәніне байланысты бірдей факторға көбейтіледі Сек, бірақ CGA-ны пайдалану және тексеру құны тұрақты болып қалады.

Себебі Сек CGA Parameters мәліметтер құрылымына кірмейді, бірақ мекен-жайдың өзі, шабуылдаушы a-ны қолдана алмайды Сек мақсатты мекен-жайдан гөрі кіші мән (мысалы, 0) қатал шабуылға жол бермеу (немесе кішірейту) үшін Хаш2. Бұл, атап айтқанда, мақсатты CGA-дан өзгеше CGA шығарады, өйткені интерфейс идентификаторының сол жақтағы үш битінің кем дегенде біреуі сәйкес келмейді. Егер мақсат Сек мән интерфейс идентификаторына бәрібір жазылады, содан кейін Хаш2 тексеру процесінде сол жақтағы 0-биттің қажетті мөлшері жетіспейтіндігі анықталды (әрине).

CGA генерациясы процесінде үш адрестің соқтығысуы екіталай. Егер қайталанатын мекен-жай үшінші рет анықталса, бұл, мүмкін, конфигурация немесе енгізу қателігінен немесе қызмет көрсетуден бас тарту шабуылы. Осы себепті үшін жарамды мәндер саны collCount 0-ден 2-ге дейінгі аралықпен шектелген, бұл параметр CGA-ны тексеру процесінде қаскүнемнің оны пайдалануына жол бермеу үшін және басқа да қатал іздеуді қажет етпестен әр түрлі мәндерді сынап көру үшін осы диапазонда болуы керек. Хаш2 әр уақытта әр түрлі мән қолданылып келеді.

Нәтижесінде дайджест жұмысына ішкі желі префиксін қосу арқылы Хеш1, шабуылдаушының әр түрлі ішкі желі префикстері бар адрестерге шабуыл жасау үшін алдын-ала есептелген бір дерекқорды қолдана алуы мүмкін. Сонымен қатар, тексеруші ашық кілттің дәл осы мекен-жаймен байланыстырылғандығына сенімді бола алады, мүмкін интерфейс идентификаторы бірдей, бірақ басқа ішкі желі префиксі бар мекен-жайға байланысты емес. CGA спецификациясына сәйкес, пайдалану керек ішкі желі дайджест операциялары үшін CGA Parameters мәліметтер құрылымынан, CGA тексеру процесінде CGA ішкі желісінің префиксімен сәйкес келетіндігін тексеру керек.

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ RFC 3972, Криптографиялық жолмен жасалған мекен-жайлар (CGA), Т. Аура (наурыз 2005)
  2. ^ RFC 3971, Көршінің қауіпсіздігін табу (ЖІБЕРУ), Дж. Аркко (ред.), Дж. Кемпф, Б. Зилл, П. Никандер (наурыз 2005)