370 likes | 560 Views
Математически основи Lec 2. 1. Основни понятия за функциите 1.1 . Функции (1-1, еднопосочна - one-way, прагова - trapdoor one-way)
E N D
Математически основи Lec 2 1. Основни понятия за функциите 1.1. Функции (1-1, еднопосочна - one-way, прагова - trapdoor one-way) Едно множество се състои от отделни обекти, които се наричат елементи на множеството. Например, едно множество X може да има елементите a, b, c, и това се означава като X={a,b,c}. Определение Една функция е определена от две множестваX и Y и едно правилоf, което определя за всеки елемент Xточно един елемент на Y . Множеството X се нарича дефиниционна област - domain на функцията и Y- codomain. Ако x е един елемент на X (обикновено се записва като )изображението на xе елемент наY, който правилото f се асоциира сx; изображенеието наyна x се ознaчава като y = f(x). Стандарното означение за една функцияf от множество X в множество Y f : Ако , тогава един оригинал - preimage на yе един елемент за всяко f(x) = y. Множеството от всички елементи на Y, които имат поне един оригинал се нарича изображение - image наf, означено с Im(f).
1.1. Функции (1-1, еднопосочна - one-way, прагова - trapdoor one-way)Продължение Пример (function) Разглеждаме множествата X={a,b,c}, Y={1,2,3,4}, и правилото f от X към Y определено като f(a) = 2, f(b) = 4, f(c) = 1. Фигурата показва схематично това . Оригиналът на елемент 2 е а. Изображението на f е {1,2,3}. Една функция в смисъла на схема , понякога наричана диаграма на функцията - functional diagram, се представя по начина даден на фигурата - всеки елемент в домейна Х има точно една насочена линия, започваща от него. Всеки елемент в кодомейн Y може да има някакъв брой насочени линии, посочващи го (включително и нула линии).
1.1. Функции (1-1, еднопосочна - one-way, прагова - trapdoor one-way)Продължение Пример(function) Взема се X={1,2,3,….10} и нека f да бъде правило, което за всяко f(x) = rx, където rx е остатъкът когато x2 е разделено на 11. Тогава е ясно f(1) = 1 f(2) = 4 f(3) = 9 f(4) = 5 f(5) = 3f(6) = 3 f(7) = 5 f(8) = 9 f(9) = 4 f(10) = 1:изображението на f е множеството Y = {1, 3, 4, 5, 9}. Пример (function) Взема се X = {1, 2, 3,...,1050} и нека f да бъде правилото f(x) = rx, къдетоrxе остатъкът когато x2е разделено на 1050 + 1. За всяко хтук не може да се запише f както в горния пример, но въпреки че функцията е напълно специфична в домейна и математическото описание на правилото f.
1.1. Функции (1-1, еднопосочна - one-way, прагова - trapdoor one-way)1-1 функции.Определение Една функция (или трансформация) е 1 - 1(one-to-one), ако всеки елемент в кодомейна Y е образът на най-много един елемент в домейна X.Определение Една функция (или трансформация) е на/върху, ако всеки елемент в кодомейна е изображение на поне един елемент на домейна. Еквивалентно, една функция е на/върху, ако Im(f) = Y .Определение Ако една функция е 1-1 и Im(f) = Y, тогава f се нарича биекция - bijection.Fact Ако1 − 1тогава е биекция. В частния случай 1 − 1, и X и Y са крайни множества с еднакъв размер, тогава f е една биекция. В смисъла на схематичното представяне, ако f е биекция, тогава всеки елемент в Y има точно една насочена линия инцидентна с него. Функцията описана в примера на слайд 2 не е биекция. В него елемент 3 не е образ на никой елемент в домейна. В примера на слайд 3 всеки елемент в кодомейна има два оригинала.Определение Ако f е едно биекция от X към Y тогава е проста работа да се определи една биекцияg от Y към X както следва: за всяко у се определя g(y)=x, където и f(x) = y. Тази функция g получена от f се нарича обратна - inverse functсion наf и се отбелязва чрез g = f−1.
1.1. Функции (1-1, еднопосочна - one-way, прагова - trapdoor one-way)One-way функции(еднопосочна функция) Пример (inverse function) Нека X = {a, b, c, d, e}, и Y = {1, 2, 3, 4, 5}, и се разглежда правилото f дадено чрез насочените линии на фигурата f е една биекция и нейната обратна g е получена чрез обръщане на стрелките в краищата. Домейнът на g е Y и кодомейнът е X. Забележете, че ако f е една биекция, тогава такава е и f −1. В криптографията взаимо еднозначното съответствие е употребено като инструмент за шифриране на съобщения и обратната трансформация е употребена за дешифриране. В криптографията биекцията се употребява като инструмент за шифриране на съобщение и обратната трансформация – за дешифриране. Ако трансформациите на са биекция не ще е възможно винаги да се дешифрира до едно уникално съобщение. One-way функции Определение Една функция f от едно множество X в едно множество Y се нарича еднопосочна - one-way function акоf(x) е „лесна” за изчисляване за всички , но за „основно всички” елементи е «изчислително (компютърно) невъзможно» да се намери някакво , такова че f(x) = y.
1.1. Функции (1-1, еднопосочна - one-way, прагова - trapdoor one-way)One-way функции(еднопосочна функция) Пример (one-way function) Взема се X = {1, 2, 3,... ,16}и се определя f(x) = rx за всички , където rx е остатъкът когато 3xе разделено на 17. Точно, x 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 f(x) 3 9 10 13 5 15 11 16 14 8 7 4 12 2 6 1 Дадени са числа от 1 до 16. На пръв поглед е лесно да се направи изчислението например за f(x) = 7. но не всички числа в кодомейна са така лесни. Тук не стои въпросът в това, че числата са малки по стойност, а в това да се намери x при дадено f(x). Дори за много големи числа, f(x)може да бъде изчислена, използвайки повтарящ се алгоритъм за коренуване и умножение, където процесът за намирането е твърде труден. Пример(one-way function) Едно просто число - prime number е положително цяло число по-голямо от 1, чиито положителни цели делители са 1 и самото число. Избират се прости p = 48611, q = 53993, получава се n = pq = 2624653723, и нека X = {1, 2, 3,..., n − 1}. Определя се една функция f на X чрез f(x) = rx за всяко , където rx е остатъкът, когато x3е разделено на n. За пример, f(2489991)=1981394214, тогава 24899913=5881949859.n + 1981394214.
1.1. Функции (1-1, еднопосочна - one-way, прагова - trapdoor one-way)Прагова еднопосочна функция Прагова еднопосочна функция - Trapdoor one-way function Определение Прагова еднопосочна функция - trapdoor one-way function е една еднопосочна функция с допълнителни свойства, които дават допълнителна информация (наречена прагова информация - trapdoor information), която става приложима за да се намери за дадено едно такова че f(x) = y. Пример Илюстрира концепцията за прагова еднопосочна функция. С допълнителна информация за множителите на n=2624653723 (именно, p=48611 и q=53993, всяко от които е 5-цифрено десетично число) става много по-лесно да се обърне функцията. Множителите на 2624653723са достатъчно големи, че намирайки ги на ръка е много трудно. Разбира се, резонни компютърни програми могат относително бързо да ги изчислят бързо. Ако, от друга страна, се изберат p и q да бъдат много големи специални прости числа (всяко с около 100 десетични цифри) тогава, по днешните стандарти това е трудно за компютрите да изведат pи q просто от n. Това е известният проблем за разлагане на множители -integer factorization problem и един източник на много прагови еднопосочни функции.
1.2 Пермутации. Пермутациите са функции, които се често използвани в криптографските конструкции. Определение Нека S е крайно множество от елементи. Една пермутация - permutation p над S е двусвързаност от S със себе си (т.е. ). Пример (permutation) Нека S = {1, 2, 3, 4, 5}. Една пермутация е определена както следва: p(1) = 3; p(2) = 5; p(3) = 4; p(4) = 2; p(5) = 1. Една пермутация може да бъде описана по различни начини. Може да бъде показана както по-горе или с една матрица: (1.1) където горната редица на матрицата е домейнът и долната редица е изображението p. Разбира се, са възможни и други представяния. Откакто пемутациите представляват бисекция, те имат обратни. Ако пермутацията се запише като матрица (1.1), нейната обратна се намира с размяната на местата на редовете в матрицата и преподреждане на елементите на новия горен ред, ако се желае (долният ред се преподрежда съответно на горния). Обратната на p в примера е
1.3. Инволюция - Involution Определение Нека S е едно крайно множество и нека f да бъде биекция от Sкъм S (т.е. ). Функцията се нарича инволюция– involution, ако f = f−1. Един еквивалентен начин да се установи това е f(f(x)) = xза всички Пример (involution) На фигурата е показан един пример за инволюция. В диаграмата на една инволюция забележете, че ако j е образ на i, тогава iе образ на j.
1.4 Основна терминология и концепции Домейни на шифриране и кодомейни • A означава едно крайно множество наречено азбука за дефиниране/определяне - alphabet of definition. Например, A = {0; 1},двоичната азбука - binary alphabet. • M означава множество, наречено пространство на съобщенията - message space. M съдържа стрингове от символи от една азбука за определяне. Един елемент на M е наричан съобщение на явния текст - plaintext message или просто явен текст -plaintext. Например, M може да съдържа двоични стрингове, текст, компютърен код и др. • C означава множество, наречено пространство на шифрованите текстове - ciphertext space. C съдържа стрингове от символи на една азбука за определяне, която може да бъде различна от азбуката за определяне на M. Един елемент на C се нарича шифрован текст - ciphertext.
Трансформации на шифриране и дешифриране • K означава множество на пространството на ключа - key space. Един елемент от него се нарича ключ - key. • Всеки елемент уникално определя биекцията от M към C, означавана с Ee. Ee се нарича функция на шифриране - encryption function - или encryption transformation. Забележете, че Ee трябва да бъде функция на взаимно еднозначно съответствие, ако процесът е обратим и едно съобщение на явния текст е уникално възстановено от всеки отделен шифротекст. • Всяко Dd означава една биекция от Cкъм M(т.е. ). Dd е функция на дешифриране - decryption function / decryption transformation. • Процесът на прилагане на трансформацията Ee в едно съобщение обикновено се отнася към криптиране на m. • Процесът на прилагане на трансформацията Dd към един шифротекст се отнася към дешифриране на c. • Една схема на шифриране съдържа едно множество за трансформация за шифриране и съответното множество трансформация за дешифриране с особеност, че за всяко има един уникален ключ такъв, че Dd = Eе−1; това е • Dd(Ee(m)) = m за всички . Една шифрираща схема понякога се отнася за шифър. • Ключовете e и d в предната дефиниция се отнасят към двойка ключове - key pair. И понякога се означават (e,d). Забележете, че e и d могат да са еднакви. • Да се конструира-construct една схема за шифриранесе изисква човек да избере пространство на съобщенията M, пространство на шифрованите текстове, пространство на ключовете и множество на шифровъчни трансформации и съответното множество на дешифриращи трансформации .
Постигане на конфиденциалност Една схема за шифриране може да бъде употребена както следва за целите на постигане на конфиденциалност / поверителност. Две партии Alice и Bob първо секретно избират или секретно разменят една двойка ключове (e, d). В следващ момент, ако Alice иска да изпрати едно съобщение на Bob, тя изчислява c = Ee(m) и го предава на Bob. При получаването на c, Bob определя Dd(c) = m и вече разкри-ва оригиналното съобщение и m. Изниква въпросът защо е необходим ключа? Защо не се избере една шифрираща и кореспондиращата й дешифрираща функции? Пример (encryption scheme) Нека M = {m1,m2,m3} и C = {c1, c2, c3}. Има точно 3!=6 биекции от M към C. Ключовото пространство K = {1, 2, 3, 4, 5, 6}има шест елемента в него, всеки определящ една от трансформа-циите. Фигурата илюстрира шестте шифриращи функции, които са означени с Alice и Bob са съгласни с трансформацията наречена E1. За да се шифрирасъобщението m1,Alice изчислява E1(m1) = c3 и изпращаc3наBob. Bob дешифрира c3 инверсирайки стрелките на диаграмата за E1 и наблюдава m1.
Постигане на конфиденциалност Фигурата дава един прост модел на комуникация между две страни/партии, употребаващи шифриране. Участници в комуникациите Обръщайки се към фигурата, следната терминология се определя: • Обекти-entity или партия-party е някой или нещо, което изпраща, приема или манипулира информацията. Alice и Bob са елементи/обекти; • Изпращач/подател-sender е един обект в двупартийна комуникация, който е легитимен предавател на информация; • Получател-receiver е един обект в двупартийна комуникация, който е приемник на информацията; • Неприятел-adversary е един обект в комуникацията между двама, който не е нито подател нито приемник на информацията, и който се опитва да провали информационната секретност на обслужването между предавателя и приемника. Различни имена се използват – враг, хакер, подслушвач, трапер, досадник (enemy, attacker, opponent, tapper, eavesdropper, intruder и interloper). Един неприятел ще играе често ролята на легитимен изпращач на съобщения и легитимен получател.
Канали. Секретност Канали Каналът служи за предаване на информацияот един обект на друг. • Физически секретен канал или секретен канал е този, който физически не е достъпен неприятеля. • Един не секретен канал е този, че партиите или други от тези, за които е предназначена информацията, могат да я пренареждат, изтриват, вмъкват или четат. • Един секретен канал е един, в който един неприятел не трябва да има възможност да я пренарежда, изтрива, вмъква или чете. Секретност Една основна предпоставка в криптографията е, че множествата са публично знание. Когато две партии искат да комуникират секретно, употребявайки схема за шифриране, единственото което пазят секретно е двойката ключове (e, d), която те употребяват, и която трябва да изберат. Може да се постигне допълнителна секретност чрез запазване секретен класа на шифриращите и дешифриращите трансформации, но това не е основа за секретността на цялата схема на това приближение. Историята е била показала, че държането на секретността на трансформациите е наистина много трудно.
Канали. СекретностПродължение Определение Една схема за шифриране се казва, че е разбиваема – breakable, акотрета партия без предварително знание за двойката ключове (e, d), може систематично да разкрие явния текст от съответния шифрован текст за някакво определено време. Една схема за шифриране може да бъде разбита чрез опитване на всички възможни ключове за да се види, кои партиите за комуникиране използват (приемайки, че класът на шифриращите функции е публично знание). Това се нарича пълно/задълбочено търсене - exhaustive search за пространството на ключа. Тогава следва, че броят на ключовете (т.е. размерът на ключовото пространство) ще бъде достатъчно голямо за да направи това приближение изчислително (компютърно) невъзможно. Kerckhoffs’ desiderata (изисквания), едно множество от изисквания за шифровъч-ните системи. Те са дадени основно от Kerckhoffs (1883г.): 1. Системата трябва да бъде, ако не теоретично неразбиваема, практически неразбиваема; 2. Компромисът за детайлите на системата трябва да са неудобни за кореспондентите; 3. Ключът трябва да бъде запомнящ се без бележки и лесно променям; 4. Криптограмата да е предаваема по телеграф; 5. Шифриращите апарати да са портативни и да работят с една персона; 6. Системата да е лесна, не изискваща нито знание за дългия списък от правила нито мозъчно усилие.
Общо за секретност на информацията Терминологията е ограничена до шифриране и дешифриране за целите на частно мнение. Информационната секретност е много по-широка, заобикаляща такива неща като достоверност и цялостност на данната. Няколко дефиниции са уместни за дискусии и са дадени по-долу. • Обслужване на секретността на информацията- information security service е метод за произвеждане на някои специфични аспекти на секретността. Например, целостта на предаваната данна е обект на секретността и метод за осигуряване на този аспект е обслужване на информационната секретност. • Разбиването – Breaking едно обслужване на информационната секретност (което често включва повече от просто шифриране) предполага проваляне/разбиване на целта навъзнамеряваното обслужване. • Един пасивен неприятел - passive adversary е един враг, който може само да чете информацията от не секретните канали. • Един активен неприятел - active adversary е един враг, който може също да предава, променя или изтрива информация в един не секретен канал.
2. Теория на информацията (ТИ) Ентропия и несигурност ТИ определя количество на информацията (amount of information) в едно съобщение като минимум на битовете необходими да се кодират всеки възможен смисъл / значение на съобщението, приемайки всички съобщения да бъдат еднакво правдоподобни. Формално, количеството на информацията в едно съобщениеM се измерва с ентропията (entropy) на съобщението, означена с H(M). Най-общо ентропията на съобщението се измерва в битове и е log2n, където n е броят на възможните значения. Това допускане е когато значенията са еднакво вероятни. Ентропията на съобщенията също се измерва с несигурността (uncertainty). Това е броят на битовете на явния текст необходими за да се разкрието, когато съобщението е разбъркано в шифрования текст за да се научи явния текст. Стойност/цена на езика За даден език, рейт-стойност/цена на езика (rate of the language)е r = H(M) / N , където N е дължината на съобщението. Стойността на нормалния английски език - 1.0 бита/буква до 1.5 бита/буква, за голяма стойност на N. Shannon определя цена 2.3 бита/буква за 8-буквени парчета/късове, но тя спада до 1.3 и 1.5 за 16-буквени парчета. Thomas Cover - ентропията 1.3 бита/знак. Абсолютната стойност на езика (absolute rate) е максималният брой на битовете, с които може да се кодира за всеки знак, приемайки всяка знакова последователност за еднакво вероятна. Ако има L знака в езика, абсолютната стойност е: R = log2 L . Това е максималната ентропия на отделния знак. Излишеството на езика (redundancy) се означава с D, и се дефинира чрез: D = R – r . Стойността на английския език е 1.3, излишеството е 3.4 бита/буква. Това означава, че всяка буква носи 3.4 бита излишество на информацията. Едно ASCII съобщение на английски има 1.3 бита информация на байт от съобщението. Това означава 6.7 бита излишество на информацията, давайки едно общо излишество от 0.84 бита информация на бит от ASCII текст и ентропия 0.16 бита информация на бит от ASCII текста.
2. Теория на информацията (ТИ) Секретност на криптосистемите Криптосистема с перфектна секретност (perfect secrecy): криптосистема, в която шифрованият текст не произвежда никаква възможна информация за явния текст с изключение на възможната му дължина. Ентропията на една криптосистема е мярка за размера на ключовото пространство, K. То се апроксимира с логаритъм при основа 2 от броя на ключовете: H(K) = log2K Криптосистема с 64-битов ключ има ентропия 64 бита, а с 56-битов ключ – 56 бита. Unicity Distance За едно съобщение с дължина n,броят на различните ключове, които ще дешифрират шифрованото съобщение в някакъв разбираем явен текст на някакъв език като оригинален явен текст (също като един английски текстов стринг) се дава със следната формула: 2H(K) - nD - 1 Shannon определя unicity distance, U, също наречена unicity point, като една апроксимация на стойността на шифрования текст, такава че сумата на реалната информация (ентропията) в кореспондиращия явен текст плюс ентропията на шифрирания ключ е равна на броя на употребените битове в шифрования текст. За повечето симетрични криптосистеми, unicity distance се определя като ентропия на криптосистемата разделена на излишеството в езика. U = H(K) / D Unicity distance не може да прави детерминистични предсказвания, но дава вероятни резултати. Unicity distance изчислява минималната стойност на шифрования текст за който е вероятно, че има един единствен разбираем явен текст след дешифриране, когато е предприета атака на грубата сила. Най-общо, по-дълга unicity distance, по-добра криптосистема. Unicity distance е обратно пропорционална на излишеството. Когато излишеството достига 0, дори един тривиален шифър може да бъде неразбиваем с атака на шифрования текст. Shannon определя една криптосистема, за която unicity distance е безкрайна като една, която има идеална секретност (ideal secrecy).
2. Теория на информацията (ТИ) Объркване/смесване и разпространение Две основни техники за неизвестността на излишествата в явния текст съгласно Shannon са конфузията и дифузията (confusion и diffusion). Confusion затъмнява връзките между явния текст и шифрования текст. Това фрустрира/разстройва намеренията да се изследва шифрования текст търсейки излишества и статистически образци. Най-лесния начин да се направи това е чрез субституция. Diffusion разсейва/разпилява излишеството на явния текст чрез разпространяването/разпростирането й по шифрования текст. Криптоанализаторът търсейки това излишество ще трябва да има време за намирането му. Най-простия начин означаващ дифузия е чрез транспозиция (също наричана пермутация - permutation). Потоковите шифри се основават на конфузия единствено, въпреки че някои схеми на о.в. добавят дифузия. Блоковите алгоритми употребяват дифузия и конфузия.
3. Теория на сложността (Complexity Theory) Теорията на сложността произвежда една методология за анализиране на изчислителната сложност (computational complexity) за различни криптографски техники и алгоритми. Сложност н алгоритмите Сложността на един алгоритъм се определя от компютърната мощност необходима за изпълнението му. Сложността на алгоритъма се определя от две променливи: • T(за time complexity); • S(за space complexity, или изискване за паметта). Двете T и S се общо представят като функция на n, където n е размерът на входа. Обикновено, компютърната сложност на алгоритъм се представя с така нареченото „голямо О”(“big O”) означение: порядъкът на величината за компютърната сложност.Това е само един термин за функция на сложност, която нараства бързо когато n става по-голямо. Например, ако времето на сложността на даден алгоритъм е 4n2+ 7n + 12, тогава компютърната сложност е с порядък n2, представен с O(n2). Как размерът на входа действа на времето и изискванията за пространство (в паметта)? Например, ако T = O(n), тогава дублирайки размера на входа се дублира времето за стартиране на алгоритъма. Ако T = O(2n), тогава добавяйки един бит към размера на входа се удвоява времето за изпълнение на алгоритъма (в рамките на една константа).
3. Теория на сложността (Complexity Theory)Продължение Обикновено, алгоритмите се класифицират съгласно тяхната сложност за време или пространство: • Един алгоритъм е константен (constant), ако неговата сложност е независима от n (размер на входа): O(1); • Един алгоритъм е линеен (linear), ако неговата сложност за време е O(n); • Алгоритмите могат да бъдат също quadratic, cubic, и т.н. • Алгоритмите са полиномни – polynomial , ако са с комплексност е O(nm), когато m е константа. Класът от алгоритми, които имат полиномна сложност на времето се наричат алгоритми с полиномно време - polynomial-time; • Алгоритмите, чиято сложност е O(t f(n)), където t е една константа по-голяма от 1 и f (n) е някаква полиномна функция наn, се наричат експоненциални - exponential. Подмножеството на експоненциалните алгоритми със сложност O(cf(n)), където c е една константа и f (n) е повече от константа, но не по-малко от линейно, се нарича супер полиномно - superpolynomial.
3. Теория на сложността (Complexity Theory)Продължение Сложност на проблемите Теорията на сложността също класифицира присъщата сложност на проблемите, не точно сложността на специални алгоритми употребени за решаване на проблеми. • Проблемите, които могат да бъдат решени с полиномните – време алгоритми се наричат податливи/възприемчиви - tractable, защото те могат обикновено да бъдат решени за разумна стойност на времето за разумен размер на входовете. • Проблемите, които не могат да бъдат решени в полиномно време се наричат неподатливи - intractable, защото изчисленията на техните решения бързо стават неосъществими. Неподатливите проблеми са понякога наричани трудни - hard. • Проблемите, които могат само да бъдат решени с алгоритми, които са супер полиномни са изчислително неподатливи, дори за относително малки стойности на n. Alan Turing доказва, че някои проблеми са неразрешаеми – undecidable. Не може да се изнамери алгоритъм да ги реши, въпреки сложността на времето на алгоритъма. Проблемите могат да се разделят на класове на сложност, които зависят от сложността на решенията им: • Клас P съдържа всички проблеми, които могат да се решат за полиномно време; • Клас NP съдържа всички проблеми, които могат да се решат за полиномно време само на недерминистична Turing machine; • Клас PSPACE - проблемите в PSPACE могат да бъдат решени в полиномно пространство, но не е необходимо полиномно време. PSPACE включва NP, но някои проблеми в PSPACE са мислени за по трудни от NP. Има клас от проблеми, наречени PSPACE-complete проблеми, със свойството че, ако един от тях е в NP тогава PSPACE = NP и ако един от тях е в P тогава PSPACE = P ; • Клас проблеми наречени EXPTIME. Тези проблеми са разрешими в експоненциално време. EXPTIME-complete проблемите могат действително да бъдат доказани, но нерешими в детерминистично полиномно време.
4. Теория на числата Аритметика на модули „Аритметика на часовника”: Ако Милдред каже, че ще бъде в къщи в 10:00 и тя закъснее 13 часа, колко е часът на пристигане в къщи и колко години нейният баща ще я следи да изпълнява задълженията си? Това е аритметика по модул 12. Двадесет и три по модул 12 е11. (10 + 13) mod 12 = 23 mod 12 = 11 mod 12 Друг начин да се запише това е да се каже, че 23 и 11 са еквивалентни, модул 12: 23 ≡ 11 (mod 12) По същество, a ≡ b (mod n) ако a = b + kn за някакво цяло k. Определение Ако a е неотрицателно и b е между 0 и n, може да се мисли за bкато остатък ако a е разделено на n. Понякога, b се нарича остатък - residue на a, модул n. Понякога a се нарича – съответно - congruent на b, модул n (троен знак за равенство означава конгруентност). Това е различен начин да се кажат едни и същи неща. Определение Множеството от цели числа от 0 до n - 1 образува това което се нарича пълно множество на остатъците - complete set of residues модул n. Това означава, че за всяко цяло a, неговият остатък при модул nе някакво число от 0 до n - 1. Определение Операцията a mod n означава остатъка на a, тъй като остатъкът е едно цяло число между 0 и n - 1. Тази операция е модулна редукция - modular reduction. Например, 5 mod 3 = 2. Модулната аритметика е същата като нормалната аритметика - комутативна, асоциативна и дистрибутивна. Също, редуцирайки всеки междинен резултат по модул n получава същия резултат, който се получава за цялото изчисление и след това редуцира крайния резултат по модул n. (a + b) mod n = ((a mod n) + (b mod n)) mod n (a - b) mod n = ((a mod n) - (b mod n)) mod n (a*b) mod n = ((a mod n)*(b mod n)) mod n (a*(b + c)) mod n = (((a*b) mod n) + ((a*c) mod n)) mod n
4. Теория на числатаПродължение Криптографията използва много изчисления на mod n, защото изчислявайки дискретните логаритми и квадратните корени mod n може да бъдат труден за решаване проблем. Модулната аритметика За k- битови модули, n, междинните резултати от някакво събиране, изваждане или умножение не ще са повече от 2k- бита дълги. Така може да се изпълнява експонента и модулна аритметика без генериране на огромни междинни резултати. Изчислявайки на някои числа на степен по модул друго число, ax mod n, това е само последователност от умножения и деления, но има увеличение на скоростта. Един вид увеличение на скоростта цели да минимизира на броя на модулните умножения; друг вид – да се оптимизират индивидуалните модулни умножения. Например, ако се иска да се изчисли a8 mod n: (a*a*a*a*a*a*a*a) mod n Вместо това, се изпълнява три по-малки умножения и три по-малки модулни редукции: ((a2 mod n)2 mod n)2 mod n По същия начин, a16 mod n = (((a2 mod n)2 mod n)2 mod n)2 mod n Изчисляването на ax mod n, където x не е на степен 2, е само слабо по-трудно. Двоичното представяне на x като една сума на степен 2: 25 е 11001 е двоично, така 25 = 24 + 23 + 20. Така a25 mod n = (a*a24) mod n = (a*a8*a16) mod n = (a*((a2)2)2*(((a2)2)2)2) mod n = ((((a2*a)2)2)2*a) mod n С разумно съхраняване на междинните резултати, има нужда от само 6 умножения: (((((((a2mod n)*a) mod n)2 mod n)2 mod n)2 mod n)*a) mod n Това се нарича допълнително верижно свързване - addition chaining, или корен квадратен и метод за умножение. То употребява една проста и очевидна допълнителна верига, основаваща се на двоичното представяне. Обратното на експонента по модул n е изчисляване на дискретен логаритъм - discrete logarithm .
4. Теория на числатаПродължение Прости числа Определение Просто число - prime number е едно цяло число по-голямо от 1, което се представя с множител 1 и самото то; няма други числа да го делят. Две е едно просто число. Така също 73, 2521, 2365347734339, и 2756839 - 1. има безкраен брой прости числа. Криптографията, по-специално на публичния ключ, употребява често големи прости числа – 512 битови и по-дълги. Най-голям общ делител Определение Две числа са относително (взаимно) прости - relatively prime, когато нямат общи коефициенти различни от 1. С други думи, ако най-големият общ делител - greatest common divisor за a и n е равен на 1. това се пише: gcd(a,n) = 1 Числата 15 и 28 са относително прости, 15 и 27 – не са и 13 и 500 – са. Едно просто число е относително просто от всички други числа с изключение на множителите, от които е съставено. Еднопосочно изчисляване на най-големият общ делител на две числа става с алгоритъма на Евклид - Euclid’s algorithm (Elements - около 300 п.н.е.) Това е най-старият нетривиален алгоритъм. Knuth описва алгоритъма и някои съвременни модификации.
2.4 Теория на числатаПродължение Обратен модул на едно число Мултипликативното обратно на 4 е ¼, защото 4*1/4 = 1. В света на модулите, проблемът е по-сложен: 4*x ≡ 1 (mod 7) Това равенство е еквивалентно да се намери едно x и k такива че 4x = 7k + 1, където и двете x и k са цели числа. Общият проблем е намирането на x , такова че 1 = (a*x) mod n Това може да се напише като a-1 ≡ x (mod n) Проблемът за обратният модул е много по-труден за решаване. Понякога има решение, но друг път няма. Например, обратното на 5 по модул 14 е 3. от друга страна, 2 няма обратен модул 14. Общо, a-1 ≡ x (mod n) има уникално решение, ако a и n са относително прости числа. Ако a и n не са относително прости числа, тогава, a-1 ≡ x (mod n) няма решение. Ако n е просто число, тогава всяко число от 1 до n- 1 е относително просто на n и има точно един обратен модул на n в този диапазон. Сега, как да се намери обратното на a по модул n? Има два начина. Евклидовият алгоритъм може да изчисли също обратното на едно число по модул от n. Понякога това се нарича разширен алгоритъм на Евклид - extended Euclidean algorithm.
4. Теория на числатаПродължение Определяне на коефициенти Евклидовият алгоритъм може да бъде употребен за решаване на този клас проблеми: Дадена е матрица на mпроменливи x1, x2,...xm, да се намери матрица на mкоефициенти, u1, u2...um, такива че u1*x1 + ...+ um*xm = 1 Малка теорема на Ферма Ако m е просто число и a не е множител на m, тогава малката теорема на Ферма - Fermat’s little theorem гласи am-1 ≡ 1 (mod m) The Euler Totient Function Има друг метод за изчисляване на обратния модул от n, но не всякога е възможно да се използва. ОпределениеНамалено множество на остатъците - reduced set of residues mod n е подмножество на пълното множество на остатъците, което е от относително прости числа на n. Например, редуцираното множество от остатъците mod 12 е {1, 5, 7, 11}. ако n е просто число, тогава редуцираното множество на остатъците mod n е множество от всички числа от 1 до n- 1. числото 0 никога не е част от редуцираното множество на остатъците за кое и да е n е равно на 1. Euler totient function - phi функция и се пише като φ(n), е броят на елементите в редуцираното множество на остатъците по модул от n. С други думи, φ(n) е броят на положителните цели числа по-малки от n, които са относително прости числа на n (за всяко nпо-голямо от 1). Ако n е просто число, тогава φ(n) = n- 1. Ако n = pq, където p и q са прости числа, тогава φ(n) = (p- 1)(q- 1). Тези числа се появяват в някои алгоритми с публичен ключ; ето защо. Съгласно Euler’s generalization на Fermat’s little theorem, ако gcd(a,n) = 1, тогава aφ(n) mod n = 1 Сега е лесно да се изчисли a-1 mod n: x = aφ(n)-1 mod n Например, колко е обратното на 5 при модул 7? Докато 7 е просто число, φ(7) = 7- 1 = 6. Така, обратното на 5 при модул 7 е 56-1 mod 7 = 55 mod 7 = 3 Двата метода за изчисляване обратните могат да бъдат разширени за да се реши за x в генералния проблем (ако gcd(a,n) = 1): (a*x) mod n = b Употребявайки Ойлеровото обобщение, се решава x = (b*aφ(n)-1) mod n Употребявайки Евклидовия алгоритъм, се решава x = (b*(a-1 mod n)) mod n
4. Теория на числатаПродължение Теорема за китайския остатък (Chinese Remainder Theorem) Ако се знае факторизацията на прости числа на n, тогава може да се употреби нещо наречено Chinese remainder theorem за да се реши една система от уравнения. Базовата версия на тази теорема е открита през първи век от китайския математик Sun Tse. Въобще, ако факторизацията на прости числа на n е p1*p2*...*pt, тогава системата от уравнения (x mod pi) = ai, къдетоi = 1, 2,..., t има единствено решение, x, където x е по-малко от n. С други думи, едно число (по-малко от произведението на някои прости числа) е единствено идентифицирано с техните остатъци mod на тези прости числа. Например, употребяват се 3 и 5 като прости числа и 14 като число. 14 mod 3 = 2, и 14 mod 5 = 4. има само едно число по-малко от 3*5 = 15 което има тези остатъци: 14. Двата остатъка еднозначно определят числото. Така, за произволни a < p и b < q (където p и q са прости числа), съществува единствено x, където x е по-малко от pq, такова че x ≡ a (mod p), иx ≡ b (mod q) За да се намери това x, първо се употребява Евклидовия алгоритъм за да се намери u, такова че u*q ≡ 1 (mod p) Тогава се изчислява: x = (((a - b)*u) mod p)*q + b
4. Теория на числата Продължение Квадратични остатъци Определение Ако p е просто число и a е по-голямо от 0 и по-малко от p, тогава a е един квадратичен остатък - quadratic residue mod p ако x2 ≡ a (mod p),за някаквоx Не всички стойности за aотговарят на това свойство. За a за да бъде един квадратичен остатък при модул n, трябва да бъде един квадратичен остатък при модул на всички прости множители на n. Например, ако p = 7, квадратичните остатъци са 1, 2, и 4: 12 = 1 ≡ 1 (mod 7) 22 = 4 ≡ 4 (mod 7) 32 = 9 ≡ 2 (mod 7) 42 = 16 ≡ 2 (mod 7) 52 = 25 ≡ 4 (mod 7) 62 = 36 ≡ 1 (mod 7) Няма стойности на x, които да отговарят на някои от тези уравнения: x2 ≡ 3 (mod 7) x2 ≡ 5 (mod 7) x2 ≡ 6 (mod 7) Квадратични не остатъци - quadratic nonresidues modulo 7, числата които не са квадратични остатъци са 3, 5,и 6. Лесно е да се докаже, че, когато p е нечетно, има точно (p- 1)/2 квадратични остатъка mod p и същият брой не квадратични Също, ако a е един квадратичен остатък mod p, тогава a има точно два квадратни корена, един от двата е между 0 и (p- 1)/2, и другият между (p- 1)/2 и (p- 1). Един от тези квадратни корена е също един квадратичен остатък при mod p; това се нарича основен/главен квадратен корен - principal square root. Ако n е продукт на две прости числа, p и q, има точно (p- 1)(q- 1)/4 квадратични остатъка при mod n. Квадратичен остатък при mod n е един перфектен квадрат на модул n. Това е защото за да бъде квадрат при mod n, остатъкът трябва да бъде квадрат на mod p и квадрат на mod q. Например, има 11 квадратични остатъка на mod 35: 1, 4, 9, 11, 14, 15, 16, 21, 25, 29, и 30. Всеки квадратичен остатък има точно четири квадратни корена.
4. Теория на числатаПродължение Blum цели числа ОпределениеАко p и q са две прости числа и двете са конгруентни/съгласувани с 3 mod 4, тогава n = pq се нарича Blum integer. Ако n е Blum integer, всеки квадратичен остатък трябва да има точно 4 квадратни корена, един от който е също квадрат; той е главният квадратен корен. Например, главният квадратен корен на 139 mod 437 е 24. Другите три квадратни корена са 185, 252, и 413. Генератори Определение Ако p е просто число, и g е по-малко от p, тогава g е един генератор - generator mod p, ако за всяко b от 1 до p - 1, съществува някакво a , където ga ≡ b (mod p). Друг начин да се изкаже това е, че g е примитив - primitive по отношение на p. Например, ако p = 11, числото 2 е един генератор mod 11: 210 = 1024 ≡ 1 (mod 11) 21 = 2 ≡ 2 (mod 11) 28 = 256 ≡ 3 (mod 11) 22 = 4 ≡ 4 (mod 11) 24 = 16 ≡ 5 (mod 11) 29 = 512 ≡ 6 (mod 11) 27 = 128 ≡ 7 (mod 11) 23 = 8 ≡ 8 (mod 11) 26 = 64 ≡ 9 (mod 11) 25 = 32 ≡ 10 (mod 11) Всяко цифра от 1 до 10 може да бъде представена като 2a (mod p). За p = 11, генератори са 2, 6, 7, и 8. Другите числа не са генератори. Например, 3 не е генератор защото няма решение на 3a = 2 (mod 11)
4. Теория на числатаПродължение Най-общо, тестването дали някакво число е генератор не е лесен проблем. Лесно е обаче, ако се знае факторизацията за p - 1. Нека q1, q2,..., qn да са определени прости числа фактори/коефициенти/множители на p - 1. Да се тества едно число g дали е генератор mod p, се изчислява g(p- 1)/q mod p за всички стойности на q = q1, q2,..., qn. Ако това число е равно на 1 за някаква стойност на q, тогава g не е генератор. Ако тази стойност не е равна на 1 за някаква стойност на q, тогава g е един генератор. Например, нека p = 11. Простите числа фактори за p - 1 = 10 са 2 и 5. Да се тества дали 2 е един генератор: 2(11- 1)/5 (mod 11) = 4 2(11- 1)/2 (mod 11) = 10 Няма резултат 1, така че 2 е генератор. За да се тества дали 3 е генератор: 3(11- 1)/5 (mod 11) = 9 3(11- 1)/2 (mod 11) = 1 Следователно 3 не е генератор. Ако е необходимо да се намери генератор mod p, просто се избира случайно число от 1 до p - 1 и се тества дали е генератор. Достатъчно част от тях да бъдат, така че вероятно бързо ще се намери.
4. Теория на числатаПродължение Изчисляване в поле на Galois Определение Ако n е просто число или степента на голямо просто число, тогава е което математиците наричат ограничени/крайни полета - finite field . Употребява се p вместо n. Действително, този тип от крайни полета е така впечатляващ, че математиците му дават собствено име: Galois field, означени като GF(p). В полето на Galois, събирането, изваждането, умножението и делението на ненулеви елементи са добре определени/дефинирани. Има адитивна еднаквост/идентичност, 0 и мултипликативна идентичност,1. Всяко ненулево число е единствено противоположно (това не би било вярно, ако p не е просто число). Комутативният, асоциативният и дистрибутивният закони са верни. Аритметиката в едно поле на Galois е употребена в голяма част на криптографията. Много криптосистеми се основават на GF(p), където p е едно голямо просто число. За да се направи същността дори по-сложна, криптографите също употребяват аритметичен модул, който не може да бъде съкратен -irreducible полиноми на степен n, чиито коефициенти са цели числа модул q, къдетоq е просто число. Тези полета се наричат GF(qn). Цялата аритметика е направена по модул p (x), където p (x) е един не съкратим полином на степен n. Например, GF(23) има следните елементи: 0, 1, x, x + 1, x2, x2 + 1, x2 + x, x2 + x + 1. Когато се говори за полиноми, термина „просто число” се замества с „не съкратим”. Определение Един полином е не съкратим, ако той не може да се представи като продукт на два други полинома ( с изключение на 1 и на себе си, разбира се). Полиномът x2+ 1 е не съкратим върху целите числа. Полиномът x3+ 2x2 + x не е - той може да се представи като x (x + 1)(x + 1). Определение Един полином, който е генератор в дадено поле се нарича примитив; всички негови коефициенти са относително прости числа. Ще се видят примитивни полиноми отново когато се говори за регистри с линейни о.в. Изчислението в GF(2n) може да бъде бързо заместено с хардуер при изместващи регистри с линейни о.в. По тази причина изчислението върху GF(2n) е често по-бързо в сравнение с това върху GF(p). Точно като експоненциал-ност е много по-ефективно в GF(2n), така е и с изчисляването на дискретни логаритми. За полето на Galois GF(2n), криптографите употребяват тричлен p (x) =xn + x + 1 като модул, защото дългите стрингове от нули между xn и x коефициентите правят лесно заместването на едно бързо умножение тричленът трябва да е примитив, в противен случай математиката не работи. Стойности на n по-малки от 1000, за които xn + x + 1 е примитив са: 1, 3, 4, 6, 9, 15, 22, 28, 30, 46, 60, 63, 127, 153, 172, 303, 471, 532, 865, 900 Съществува хардуерни приложение на GF(2127), където p (x) = x127 + x + 1. Ефективни хардуерни архитектури за прилагане на експонента в GF(2n) са разгледани в литературата.
5. Разлагане на множители Разлагането на множители на едно число означава да се намерят неговите прости числа множители. 10 = 2*5 ; 60 = 2*2*3*5; 252601 = 41*61*101; 2113 - 1 = 3391*23279*65993*1868569*1066818132868207 Квадратен корен Mod n Ако n е произведение на две прости числа, тогава способността да се изчисли корен квадратен на mod n е изчислително еквивалентно на способността да се раздели на множители n. С други думи, някой който знае простите множители на n може лесно да определи квадратен корен на едно число mod n, във всеки друг случай изчислението е трудно толкова колкото изчислението на простите множители на n.
6. Генериране на прости числа Алгоритмите на криптографията с публичен ключ се нуждаят от прости числа. Всяка логична по размер мрежа има голяма нужда от тях. Има няколко важни въпроса свързани с генерацията на прости числа. 1.Ако всеки се нуждае от различни прости числа, защо не се стартира такава процедура? Не. Действително, има приблизително 10151 прости числа 512 битови на дължина или по-малки. За числата близки до n, вероятността, която едно случайно число да е просто число е приблизително 1 на ln n. Така общият брой на простите по-малки от n е n /(ln n). Има само 1077 атома във Вселената. Ако всеки атом се нуждае от един билион нови прости числа на всяка микросекунда от началото на времето до сега, ние ще се нуждаем от само 10109 прости числа; приблизително 10151 512-битови прости числа остават. 2.Какво ако двама души инцидентно вземат едно и също просто число? Това няма да се случи. С повече от 10151 прости числа за избиране, шансът тогава да се случи е значително малък. 3.Ако някой създаде база данни на всички прости числа, не ще ли е в състояние да разбие алгоритъм с публичен ключ? Да, но не може да го направи. Ако може да се съхрани един гигабайт информация на драйв тежащ 1 грам, тогава един списък от 512-битови прости числа ще тежи много повече.
6. Генериране на прости числаПродължение Строго прости числа Ако n е продукт на две прости числа, p и q, е възможно желателно да се употребят строго/силно прости числа - strong primes за p и q. Те са прости числа със сигурни свойства, които правят продукта n труден да се разложи на множители чрез специфични методи за разлагане на множители. Сред свойствата предлагани са: • Най-големият общ делител на p - 1 и q - 1 трябва да е малък; • Двете p - 1 и q - 1 ще имат големи прости числа за множители, респективно p’ и q’; • Двете p’ - 1 и q’ - 1 ще имат големи прости числа за множители; • Двете p + 1 и q + 1 ще имат големи прости числа за множители; • Двете (p - 1)/2 и (q - 1)/2 ще бъдат прости.
7. Дискретни логаритми и крайни полета Модулната експонента е друга еднопосочна функция употребена често в криптографията. Изчисляването на това представяне е лесно: ax mod n Обратният проблем за модулна експонента е да се намери дискретен логаритъм на едно число. Това е труден проблем: Да се намери x, където ax ≡ b (mod n). Например: Ако 3x ≡ 15 mod 17, тогава x = 6 Не всички дискретни логаритми имат решение ( запомнете, само целите числа са валидни решения). Лесно е да се види, че няма решение, x, на уравнението 3x = 7 (mod 13) Това е далеч по-трудно да се решат тези проблеми употребявайки 1024-битови числа.