Кіріспе
Криптографиялық протоколдарды құру үшін қолданылатын негізгі криптографиялық алгоритм Криптографиялық примитивтер - компьютерлік қауіпсіздік жүйелері үшін криптографиялық протоколдарды құру үшін жиі қолданылатын, жақсы қалыптасқан, төмен деңгейдегі криптографиялық алгоритмдер. Бұл жүйелер бір бағыттағы хэш функциялары мен шифрлау функцияларын қамтиды, бірақ олармен шектелмейді.
Cryptographic primitives are well established, low level cryptographic algorithms that are frequently used to build cryptographic protocols for computer security systems. These routines include, but are not limited to, one way hash functions and encryption functions.
Негізгі себептері
Криптографиялық жүйелерді құрастыру кезінде дизайнерлер криптографиялық примитивтерді негізгі құрылыс блоктары ретінде қолданады. Осыған байланысты, криптографиялық примитивтер нақты бір тапсырманы дәл анықталған және өте сенімді түрде орындауға арналған. Криптографиялық примитивтер құрылыс блоктары ретінде пайдаланылатындықтан, олар өте сенімді болуы керек, яғни олардың ерекшеліктеріне сәйкес орындалуы керек. Мысалы, егер шифрлау реті компьютерлік операциялардың санымен ғана бұзыла алады деп мәлімдесе және ол операциялардан әлдеқайда аз мөлшерде бұзылады, онда бұл криптографиялық примитив сәтсіз болды. Егер криптографиялық примитивтің сәтсіздігі анықталса, оны қолданатын барлық протоколдар зақымданған болады. Криптографиялық жүйелерді жасау өте қиын, ал олардың сенімділігін тексеру ұзақ уақыт алады, сондықтан жаңа криптографиялық жүйенің қажеттіліктеріне сәйкес жаңа криптографиялық примитивті жасау ешқашан ақылға қонымды емес (не қауіпсіз). Себептерге мыналар жатады: Дизайнер криптографиялық примитивтерде математикалық және практикалық мәндерге ие болмауы мүмкін. Жаңа криптографиялық примитивті жасау өте көп уақытты алады және қатеге ұшырайды, тіпті осы саланың мамандары үшін де. Бұл саладағы алгоритмдер жақсы жобаланғаннан басқа, криптологтар қауымдастығымен жақсы сыналуы керек болғандықтан, криптографиялық жүйе дизайн тұрғысынан жақсы көрінсе де, онда қателер болуы мүмкін. Мұндай тексеріске сәтті төтеп беру алгоритмнің пайдалану үшін жеткілікті қауіпсіз екендігіне сенімділік береді (әлі күнге дейін жалғыз сенімділік). Криптографиялық примитивтер үшін қауіпсіздік дәлелдемелері әдетте қол жетімді емес. Криптографиялық примитивтер - әрбір криптожүйенің құрылыс блоктарының бірі, мысалы, TLS, SSL, SSH және т.б. Криптожүйелердің дизайнерлері өздерінің қауіпсіздігін нақты дәлелдемейтін жағдайда олар қолданатын примитивтерді қауіпсіз деп қабылдауы керек. Протоколда пайдалану үшін ең жақсы примитивті таңдау әдетте ең жақсы қауіпсіздікті қамтамасыз етеді. Алайда, кез келген криптосистемада композициялық әлсіздіктер болуы мүмкін және оларды болдырмау дизайнердің жауапкершілігі.
The designer might not be competent in the mathematical and practical considerations involved in cryptographic primitives. Designing a new cryptographic primitive is very time consuming and very error prone, even for experts in the field. Since algorithms in this field are not only required to be designed well but also need to be tested well by the cryptologist community, even if a cryptographic routine looks good from a design point of view it might still contain errors. Successfully withstanding such scrutiny gives some confidence (in fact, so far, the only confidence) that the algorithm is indeed secure enough to use; security proofs for cryptographic primitives are generally not available. Cryptographic primitives are one of the building blocks of every cryptosystem, e. g., TLS, SSL, SSH, etc. Cryptosystem designers, not being in a position to definitively prove their security, must take the primitives they use as secure. Choosing the best primitive available for use in a protocol usually provides the best available security. However, compositional weaknesses are possible in any cryptosystem and it is the responsibility of the designer(s) to avoid them.
Криптографиялық примитивтерді біріктіру
Криптографиялық примитивтер криптографиялық жүйелер емес, өйткені олар өздері шектеулі. Мысалы, ашық шифрлау алгоритмі аутентификация механизмін немесе хабарлама тұтастығын нақты тексеруді қамтамасыз етпейді. Тек қауіпсіздік протоколдарында біріктірілген жағдайда ғана бірден көп қауіпсіздік талаптары қарастырылуы мүмкін. Мысалы, кодталған ғана емес, сонымен қатар шеберлікпен қорғалған (яғни құпия және тұтастығы қорғалған) хабарламаны беру үшін DES сияқты кодтау реті мен SHA 1 сияқты хэш реті біріктіріліп пайдаланылуы мүмкін. Егер шабуылшы шифрлау кілтін білмесе, олар хабарламаны өзгерте алмайды, сондықтан хабарламаның қорыту мәні жарамды болады. Криптографиялық примитивтерді біріктіріп қауіпсіздік протоколын жасау - бұл өз алдына толықтай мамандық. Пайдаланылатын қателердің көпшілігі (яғни крипто жүйелеріндегі қауіпсіздіксіздіктер) примитивтердегі жобалау қателеріне емес (әрқашан олар мұқият таңдалды деп есептеледі), бірақ оларды пайдалану тәсіліне байланысты, яғни протоколдың нашар дизайны және қатесі немесе жеткілікті мұқият емес іске асыру. Хатты жазу кезінде протоколдарды математикалық талдау әлі жетілмеген. Автоматтандырылған әдістермен, мысалы BAN логикасымен тексерілетін кейбір негізгі қасиеттер бар. Тіпті толық тексеру әдістері де бар (мысалы, SPI есептеуі), бірақ олар өте ауыр және автоматтандырылмайды. Протоколды жобалау терең білім мен көп тәжірибе талап ететін өнер; тіпті онда қателіктер жиі кездеседі. Нақты жүйеге арналған мысал OpenSSL осалдықтары жаңалықтары бетінде көрінеді.