Кіріспе
Криптографияда шифрмәтін ұрлау (CTS) – шифрмәтінді ұлғайтусыз, блоктық шифрлау режимін пайдаланудың жалпы әдісі, бұл хабарламаларды блоктарға толық бөлінбеген жағдайда да өңдеуге мүмкіндік береді, бірақ күрделілігі шамалы артады.
Шифрлық мәтін пішімі
Шифрланған мәтінді тарату үшін бірнеше әртүрлі жол бар. Шифрланған мәтін биттері барлық жағдайларда бірдей, жай ғана басқа ретпен жіберіледі, сондықтан таңдау қауіпсіздікке әсер етпейді; бұл тек іске асырудың қолайлылығы мәселесі. Мұндағы нөмірлеуді олардың барлығын сипаттаған Дворкиннен алдық. Үшіншісі ең көп таралған, және оны Деймен мен Шнайер сипаттаған; Мейер байланысты, бірақ үйлесімсіз схеманы сипаттайды (бит реті және кілтті пайдалану тұрғысынан).
CS2
Шифрмәтіннің соңғы екі блогын ауыстыру көбінесе ыңғайлырақ, сондықтан шифрмәтін толық соңғы блокпен аяқталады, одан кейін уақытша кемітілген алдыңғы соңғы блок келеді. Бұл шифрмәтін блоктарының табиғи түрде сәйкес келуіне әкеледі. Ұрламау режимдерімен үйлесімділікті сақтау үшін CS2 опциясы осы ауыстыруды тек ұрланған шифрмәтіннің көлемі нөлден өзгеше болған жағдайда ғана жасайды, яғни бастапқы хабарлама блок өлшеміне толық бөлінбегенде. Бұл табиғи сәйкестікті және ұрламау режимдерімен үйлесімділікті сақтайды, бірақ сәйкес және сәйкес келмейтін хабарлама өлшемдерін әртүрлі қарауды қажет етеді.
CS3
Ең көп таралған балама нұсқа соңғы екі шифрмәтін блогын міндетті түрде ауыстырады. Төмендегі сипаттамаларда осы рет қолданылады.
ЕЦБ шифрлық мәтінін ұрлау
ЕЦБ режимінде шифрмәтін ұрлау соңғы екі блок арасында өзара тәуелділікті тудырады, соның салдарынан соңғы екі блок үшін қателік таралу қасиеттері өзгереді.
ЕЦБ шифрлау қадамдары (суретті қараңыз)
En-1 = Шифрлау (K, Pn-1). Pn-1 шифрлау арқылы En-1 құрылады. Бұл стандартты ECB режимінің әрекетімен бірдей. Cn = Басы (En-1, M). En-1-дің алғашқы M битін таңдап Cn құрылады. Соңғы шифрмәтін блогы Cn, екінші соңғы шифрмәтін блогының алғашқы M битінен тұрады. Барлық жағдайларда соңғы екі блок, сәйкес ашық мәтін блоктарынан өзгеше тәртіппен жіберіледі. Dn = Pn || Құйрық (En-1, B−M). Pn-ді En-1-дің төменгі ретті M битімен толықтыру. Cn-1 = Шифрлау (K, Dn). Dn шифрлау арқылы Cn-1 құрылады. Алғашқы M бит үшін, бұл ECB режиміндегідей (мәтіннің ретінен басқа) болады. Соңғы B−M бит үшін, бұл деректер осы кілт бойынша екінші рет шифрланады (олар En-1 құру кезінде 2-қадамда шифрланған болатын).
ЕЦБ-нің шифрлауды шешу қадамдары
Dn = Декрипттеу (K, Cn−1). Cn−1 кодты шешу арқылы Dn құрылады. Бұл шифрлау процесінің 4-қадамын кері қайтарады. En−1 = Cn || Tail (Dn, B−M). Cn мәтінін Dn-нің соңындағы (шифрлау процесінің 3-қадамында орналастырылған) шифрланған мәтінмен толықтыру. Pn = Head (Dn, M). Pn құру үшін Dn-нің алғашқы M битін таңдау. ECB шифрлау процесінің 3-қадамында сипатталғандай, Dn-нің алғашқы M биті Pn-ді қамтиды. Біз осы соңғы (толық емес болуы мүмкін) блокты кейінірек шығару үшін кезекке қоямыз. Pn−1 = Декрипттеу (K, En−1). En−1 кодты шешу арқылы Pn−1 құрылады. Бұл шифрлаудың 1-қадамын кері айналдырады.
ЕЦБ шифрлық мәтінін ұрлау қатесі таралуы
Cn-1 беріліміндегі бір биттік қате Pn-1 және Pn блоктарының толығымен бұзылуына себеп болады. Cn беріліміндегі бір биттік қате Pn-1 блогының толығымен бұзылуына себеп болады. Бұл, ЕЦБ-нің қателерді тарату ерекшелігінен едәуір өзгешелік.
CBC шифрлық мәтіннің ұрлануы
CBC-де жақын орналасқан блоктардың өңделуі арасында бұрыннан қарым-қатынас бар, сондықтан CTS бұл режимде аз түсінік береді. Қателіктердің таралуына әсер етеді.
CBC шифрлау қадамдары
Xn−1 = Pn−1 XOR Cn−2. Xn-1 құру үшін Pn−1-ді алдыңғы шифрмәтін блогы Cn−2-мен эксклюзивті OR операциясын жасаңыз. Бұл стандартты CBC режимінің әрекет етуімен бірдей. En−1 = Шифрлау (K, Xn−1). Xn-1-ді шифрлеп En−1-ді құрыңыз. Бұл стандартты CBC режимінің әрекет етуімен бірдей. Cn = Басы (En−1, M). Cn-ді құру үшін En−1-дің алғашқы M битін таңдаңыз. Соңғы шифрмәтін блогы Cn, екінші соңғы шифрмәтін блогының алғашқы M битінен тұрады. Барлық жағдайларда соңғы екі блок сәйкес ашық мәтін блоктарынан өзге тәртіппен жіберіледі. P = Pn || 0B−M. Pn-ді соңына 0B−M нөлдер қосып, ұзындығы B-ге тең P-ні құрыңыз. Бұл қадамдағы нөлдік толтыру 5-ші қадам үшін маңызды. Dn = En−1 XOR P. Dn-ды құру үшін En−1-ді P-мен эксклюзивті OR операциясын жасаңыз. Блоктың алғашқы M биті үшін бұл CBC режимімен бірдей; алдыңғы блоктан алынған шифрмәтіннің алғашқы M биті, En−1, соңғы ашық мәтін блогының M битімен XORed. 4-ші қадамдағы P-нің нөлдік толтыруы маңызды болды, себебі ол XOR операциясының соңғы B−M биттеріне әсерін En−1-дің соңғы B−M биттерін Dn-нің соңына көшірумен теңестіреді. Бұл En−1-ден 3-ші қадамда Cn құрылған кезде алынып тасталған биттер. Cn−1 = Шифрлау (K, Dn). Dn-ді шифрлеп Cn−1-ді құрыңыз. Алғашқы M бит үшін бұл CBC режиміндегідей (шифрмәтін тәртібінен басқа) болады. Соңғы B−M бит үшін бұл деректер осы кілт бойынша екінші рет шифрланады (олар En−1 құрылғанда 2-ші қадамда шифрланған еді).
CBC шифрлау қадамдары
Dn = Декрипттеу (K, Cn−1). Cn-1 мәтінін шешу арқылы Dn құрылады. Бұл шифрлау процесінің 6-қадамын кері қайтарады. C = Cn || 0B−M. Ұзындығы B болатын C блогын құру үшін Cn блогының соңына нөлдер қосылады. Cn мәтініне нөлдерді 3-қадамда қолдануға көмектесу үшін қосамыз. Xn = Dn XOR C. Xn құру үшін Dn мәтіні C мәтінімен XOR операциясы жасалады. Алғашқы M биттерді қарастыра отырып, бұл қадамда Cn (шифрлау процесінің En-1 мәтінінің алғашқы M биті) (қазір дешифрленген) Pn мәтінімен XOR Head (En-1, M) (шифрлау процесінің 4 және 5-қадамдарын қараңыз) арқылы XOR операциясының нәтижесіне тең. Басқаша айтқанда, біз Pn мәтінінің алғашқы M битін CBC әдісімен дешифрледік. Соңғы B−M биттерді қарастыра отырып, бұл En-1 мәтінінің соңғы B−M битін қалпына келтіреді. Pn = Head (Xn, M). Pn құру үшін Xn мәтінінің алғашқы M биті таңдалады. 3-қадамда сипатталғандай, Xn мәтінінің алғашқы M биті Pn мәтінін қамтиды. Бұл соңғы (толық емес болуы мүмкін) блокты шығару үшін кезекке қоямыз. En−1 = Cn || Tail (Xn, B−M). En-1 құру үшін Xn мәтінінің соңғы (B−M) биті Cn мәтініне қосады. 3-қадамда сипатталғандай, En-1 мәтіні Cn мәтінінен (ол M биттен тұрады) және Xn мәтінінің соңғы B−M битінен тұрады. En-1 мәтінін (шифрлау процесіндегідей) 6-қадамда өңдеу үшін қайта құрастырамыз. Xn−1 = Декрипттеу (K, En−1). Xn-1 мәтінін құру үшін En-1 мәтіні дешифрленеді. Бұл шифрлау процесінің 2-қадамын кері қайтарады. Xn-1 мәтіні шифрлау процесіндегідей. Pn−1 = Xn−1 XOR Cn−2. Pn-1 мәтінін құру үшін Xn-1 мәтіні алдыңғы шифрланған мәтін блогы Cn-2 мәтінімен XOR операциясы жасалады. Соңында, шифрлау процесінің 1-қадамынан бастап XOR операциясын кері қайтарамыз.
КБК-ны іске асыру туралы ескертулер
CBC шифрмәтінін ұрлау үшін, стандартты CBC интерфейсін қолдана отырып, сипатталған шифрмәтін ұрлау процесін іске асырудың тапқыр (бірақ түсініксіз) әдісі бар. Бұл әдісті пайдалану, арнайы іске асыруға қарағанда шифрды ашу кезеңінде бір қосымша блокты шифрден ашу операциясын талап етеді, бұл өнімділікке әсер етеді.
CBC стандартты интерфейсін пайдалана отырып шифрлау мәтінін ұрлау шифрлауы
Соңғы жартылай ашық мәтін блогын 0-мен толтырыңыз. Барлық толтырылған ашық мәтінді стандартты CBC режимінде шифрлеңіз. Соңғы екі шифрмәтін блогын ауыстырыңыз. Шифрмәтінді бастапқы мәтіннің ұзындығына дейін қысқартыңыз.
Стандартты CBC интерфейсін пайдалана отырып , шифрлық мәтінді ұрлау шифрлау
Dn = Декрипттеу (K, Cn−1). ЕЦБ режимін қолдана отырып, екінші соңғы шифрмәтін блогын шифрдан шығарыңыз. Cn = Cn || Tail (Dn, B−M). Шифрмәтінді блок өлшемінің еселігіне дейін, екінші соңғы шифрмәтін блогының шифрлауынан алынған соңғы B−M биттерімен толтырыңыз. Соңғы екі шифрмәтін блогын ауыстырыңыз. (Түзетілген) шифрмәтінді стандартты CBC режимін қолдана отырып шифрдан шығарыңыз. Ашық мәтінді бастапқы шифрмәтіннің ұзындығына дейін қысқартыңыз.
CBC шифрлық мәтінді ұрлау қатесі таралуы
Cn-1 беріліміндегі бір биттік қате Pn-1 және Pn блоктарының толығымен бұзылуына алып келеді. Cn беріліміндегі бір биттік қате Pn-дегі сәйкес биттік қатеге және Pn-1 блогының толығымен бұзылуына алып келеді.