Кіріспе

Криптографиялық қолданбалы бағдарламалау интерфейсі

Bouncy Castle – криптографияда қолданылатын API жиынтығы. Ол Java және C# бағдарламалау тілдері үшін API-лерді қамтиды. Бұл API-лерді Австралияда тіркелген қайырымдылық ұйымы қолдайды: Bouncy Castle Inc.

Bouncy Castle Австралияда жасалған, сондықтан АҚШ-тың криптографияны экспорттауға қатысты шектеулері оған қолданылмайды.

Сәулет

Bouncy Castle архитектурасы негізгі криптографиялық мүмкіндіктерді қолдайтын екі негізгі компоненттен тұрады. Бұл – «жеңіл салмақты» API және Java Cryptography Extension (JCE) провайдері. JCE провайдеріне негізделген қосымша компоненттер PGP қолдауы, S/MIME сияқты қосымша функционалдықты қолдайды. Төменгі деңгейлі немесе «жеңіл салмақты» API – барлық негізгі криптографиялық алгоритмдерді іске асыратын API жиынтығы. Бұл API қажет болған жағдайда қолдануға оңай болу үшін жасалды, бірақ JCE провайдері үшін негізгі құрылыс блогы болды. Мақсаты – төменгі деңгейлі API-ді жады шектеулі құрылғыларда (JavaME) немесе JCE кітапханаларына оңай қол жеткізу мүмкін болмаған жағдайларда (мысалы, апплеттерді тарату) пайдалану. «Жеңіл салмақты» API тек Java коды болғандықтан, Java виртуалды машинасы (JVM) кодтың жұмысына ешқандай шектеу қоймайды. Bouncy Castle тарихының басында, бұл JCE провайдерлерінің жұмысын шектемейтін Jurisdiction Policy файлдарынан зардап көрмеген, күшті криптографияны дамытудың жалғыз жолы болды. JCE үйлесімді провайдері төменгі деңгейлі API-дің негізінде құрылған. Сондықтан, JCE провайдерінің бастапқы коды төменгі деңгейлі API-ді пайдалана отырып, көптеген «жалпы» криптографиялық мәселелерді шешудің мысалы болып табылады. JCE провайдерін қолдана отырып көптеген жобалар жасалды, соның ішінде ашық бастапқы кодты сертификаттау органы EJBCA.

Сертификатталған шығарылымдар

C# және Java нұсқаларында FIPS 140 2 деңгейі 1 сертификатталған ағындар да бар. Бұл нұсқалар стандартты нұсқалардан осылай ерекшеленеді: модульдер стандартты нұсқалар сияқты құрылған болғанымен, төменгі деңгейдегі API-лар мүлдем басқа – бұл негізінен алгоритм қолданылған кезде FIPS талап ететін бақылауларды күшейту үшін жасалған. Java API-нің JCE деңгейі үшін провайдер әлі де стандартты нұсқаның орнын толыққанды алмастыра алады. FIPS сертификатталған алғашқы нұсқалар 2016 жылдың қараша айында жарияланды, Java-ның ең соңғы нұсқасына 4616 сертификат нөмірі, ал C#-тың ең соңғы нұсқасына 4416 сертификат нөмірі тағайындалды.

Спунджы қамалы

Android операциялық жүйесі 2014 жылдың басында Bouncy Castle-дың өңделген нұсқасын қамтиды. Сынып атауларының қақтығысуына байланысты, бұл Android қолданбаларына Bouncy Castle-дың ресми нұсқасын өзгеріссіз қосуға және пайдалануға мүмкіндік бермейді. Spongy Castle деп аталатын үшінші тараптық жоба осы мәселенің шешімі ретінде кітапхананың атауын өзгертілген нұсқасын таратады.

Сызықты қамал

Бастапқыда, Spongy Castle-дың FIPS 140 2 нұсқасы да жасалуы мүмкін деп есептелді. Бірақ Android-тің DEX файлдарын өңдеу процесі көрсеткендей, FIPS талаптарына сәйкес, провайдер қосымшадан бөлек, тікелей құрылғыға орнатылуы керек болды. Android үшін FIPS 140 2 нұсқасы енді Stripy Castle деп аталады және org.stripycastle пакетімен таратылады. Бұл, Android-тің Bouncy Castle нұсқасымен және Spongy Castle-ды пайдаланатын, бірақ FIPS 140 2 сертификатталған қызметтерді қажет етпейтін қосымшалармен келесідей қақтығыстарды болдырмау үшін қажет болды.