I BOB BOUNCY CASTRLE KRIPTOGRAFIK KUTUBXONASI VA UNING TAXLILI.
BOUNCY CASTRLE haqida ma’lumot.
Ushbu loyiha ishi java ishlab chiquvchilari uchun mo'ljallangan kriptografik algoritm paketlaridan birining imkoniyatlari haqida umumiy ma'lumot beradi. Eng taniqli bunday to'plamlardan biri Sun JCE bo'lib, u turli xil kriptografik o'zgarishlarni amalga oshirish uchun qulay API-ni taqdim etadi. Biroq, Qo'shma Shtatlardan texnologiyalarni eksport qilishni tartibga soluvchi qonunlar tufayli, Sun JCE AQSh yoki Kanadadan tashqarida bo'lgan odamlar tomonidan yuklab olinmasligi va ishlatilmasligi mumkin. Shuning uchun ushbu paket standart Java tarqatish tarkibiga kiritilmagan.
Shu munosabat bilan, uchinchi tomon ishlab chiquvchilari o'xshash kriptografik paketlarni ishlab chiqdilar, ularning ba'zilari sotuvda (IAIK JCE, Digt Trusted Java va boshqalar kabi), ba'zilari esa bepul. Eng taniqli bepul echimlardan biri Cryptix JCE to'plami edi, ammo uni qo'llab-quvvatlash 2005 yildan beri to'xtatilgan. Boshqa echim - so'nggi JDK jo'natmalariga mos keladigan va quyidagi asosiy xususiyatlarga ega bo'lgan Bouncy Castle to'plami:
dasturchilar o'zlari tomonidan amalga oshirilgan JCE 1.2.1 dasturlarini o'z ichiga oladi (ya'ni paket Sunning JCE 1.2.1 kodlarini o'z ichiga olmaydi va shuning uchun Sun tomonidan litsenziyalanmagan);
texnik xususiyatlarni kodlovchi ASN.1 ob'ektini qo'llab-quvvatlaydi;
Open PGP, OCSP, TSP va boshqalarni qo'llab-quvvatlash.
Ushbu to'plam uchun litsenziya shartnomasi deyarli har qanday harakatlarni, shu jumladan, o'tkazish, sotish, o'zgartirish, nashr etish va boshqalarni amalga oshirishga imkon beradi, shuning uchun dasturiy ta'minot ishlab chiqaruvchisi barchaimkoniyatlaridan bemalol foydalanishi mumkin. ГОСТ hujjatlarida tasvirlangan kriptoalgoritmlarni o'z ichiga olgan ko'plab algoritmlar va protokollarni amalga oshirish ushbu to'plamni kriptografik dasturiy ta'minot ishlab chiqaruvchilari uchun ham, "Axborot xavfsizligini tashkil etish va texnologiyasi" soxasidagi "Kriptografik axborot xavfsizligi" va "Java-da dasturlash" fanlari o'qituvchilari uchun ham qiziqarli qiladi.
Bouncycastle kutubxonasiga quyidagilar kiradi:
org.bouncycastle.jce - JCE bilan ishlatiladigan kommunal xizmatlar to'plami;
org.bouncycastle.openssl - PEM OpenSSL fayllari bilan ishlash uchun sinflarni o'z ichiga olgan paket;
org.bouncycastle.asn1 - ASN.1 protokoli bilan ishlash uchun ishlatiladigan paket;
org.bouncycastle.crypto - asosiy kriptografik algoritmlarni o'z ichiga olgan to'plam;
org.bouncycastle.x509 - X.509 sertifikatlarini qo'llab-quvvatlash uchun ishlatiladigan to'plam.
Org.bouncycastle.crypto to'plami turli xil kriptografik algoritmlarni amalga oshirishni o'z ichiga olgan asosiy paketdir. U quyidagi pastki paketlarni o'z ichiga oladi:
org.bouncycastle.crypto.ag kelishuv - Diffie-Hellman protokolining bajarilishini o'z ichiga olgan paket. Algoritmning elliptik egri chiziqli versiyasini o'z ichiga oladi;
org.bouncycastle.crypto.digests - kalitsiz xabarlarni aralashtirish funktsiyalarini hisoblash uchun asosiy sinflarni o'z ichiga olgan to'plam. GOST 34.11-94, MD2, MD4, MD5, Tiger, RIPEMD, SHA turli konvolyutsiya uzunlikdagi algoritmlarini
va boshqalarni o'z ichiga oladi;
org.bouncycastle.crypto.engines - nosimmetrik shifrlashni amalga oshiradigan sinflarni o'z ichiga olgan paket. Ushbu to'plamning sinflari ГОСТ 28147-89, DES, TripleDES, AES, Blowfish, IDEA, RC2, RC4, RC5, RC6, Twofish, Skipjack va boshqa ko'plab algoritmlarga muvofiq bir qator baytlarni shifrlashga imkon beradi;
org.bouncycastle.crypto.modes - nosimmetrik shifr bilan matnni qayta ishlash usullarini ifodalovchi sinflarni o'z ichiga olgan paket (masalan, CBC, CFB, OFB va boshqalar);
org.bouncycastle.crypto.paddings - nosimmetrik blok shifrlari uchun bloklarni to'ldirishning turli usullarini ta'minlovchi paket;
org.bouncycastle.crypto.params - sinflari shifr va generator parametrlarini saqlash uchun foydalaniladigan paket;
org.bouncycastle.crypto.signers - xabarlar uchun EDS algoritmlarini ta'minlovchi paket. GOST 34.10-91, GOST 34.10-2001, RSA, DSA, ECDSA va hk.
Algoritmlarini o'z ichiga oladi;
org.bouncycastle.crypto.tls - TLS uchun API ta'minlovchi paket;
org.bouncycastle.crypto.generatorlar - kalitlar generatorlari, kalit juftlari va kriptografik algoritmlarning boshqa parametrlarini o'z ichiga olgan paket;
org.bouncycastle.crypto.macs - asosiy xabarlarni xashlash funktsiyalarini hisoblash algoritmlarini o'z ichiga olgan paket. Taqlidlarni yaratish rejimida GOST 28147-89 algoritmlari, CMAC, HMAC, shuningdek CBC yoki CFB usuli yordamida bloklarda matnni qayta ishlaydigan har qanday blok shifr yordamida MACni hisoblash algoritmi mavjud;
org.bouncycastle.crypto.encodings - assimetrik algoritmlar bilan ishlashga mo'ljallangan ma'lumotlarni kodlash algoritmlarini o'z ichiga olgan to'plam (masalan, PKCS 1 algoritmi).
Tarixi
Bouncy Castle, ikkita hamkasb har safar server tomonida Java SE-da ish joyini o'zgartirganda kriptografik kutubxonalar to'plamini qayta tiklashdan charchaganida paydo bo'ldi. Ishlab chiquvchilardan biri Java ME-ni (o'sha paytda J2ME) sevimli mashg'ulot sifatida rivojlantirishda faol ishtirok etgan va dizayn paytida, imkon qadar ko'proq Java virtual mashinalarini, shu jumladan J2ME-da bo'lganlarni loyihalashtirishda ko'rib chiqilgan . Ushbu dizaynni ko'rib chiqish Bouncy Castle da mavjud bo'lgan me'morchilikka olib keldi.
2000 yil may oyida tashkil etilgan loyiha dastlab faqat Java tilida yozilgan edi, ammo keyinchalik 2004 yilda C # API qo'shildi. Asl Java API sinov kodini o'z ichiga olgan taxminan 27000 satr koddan iborat bo'lib, J2ME, JCE / JCA uchun qo'llab- quvvatladi. provayder va X.509 bazaviy sertifikatini ishlab chiqaruvchi. Taqqoslash uchun 1.53 versiyasi test kodini o'z ichiga olgan 390,640 satr koddan iborat. Ko'proq algoritmlar, shuningdek PKCS # 10, PKCS # 12, CMS, S / MIME, OpenPGP, DTLS, TLS, OCSP, TSP, CMP, CRMF, DVCS, DANE, EST va atribut sertifikatlari bilan original versiya bilan bir xil xususiyatlarni qo'llab-quvvatlaydi. . C # API kodi taxminan 145000 qatorni tashkil qiladi va Java API-ning ko'pchiligini qo'llab- quvvatlaydi.
Loyihaning ba'zi bir asosiy xususiyatlari:
Muvofiqlik va moslashuvchanlikka e'tibor.
Ommabop qo'llab-quvvatlash vositalari orasida veb-saytda mavjud bo'lgan muammolarni kuzatuvchi, ishlab chiquvchilarning pochta ro'yxati va wiki- sahifalar mavjud.
Tijorat yordami Bouncy Castle veb-saytida keltirilgan tegishli API resurslari doirasida taqdim etiladi.
Arxitektura
Bouncy Castle arxitekturasi asosiy kriptografik imkoniyatlarni qo'llab-
quvvatlovchi ikkita asosiy komponentdan iborat. Ular "engil" API va Java Cryptography Extension (JCE) provayderi sifatida tanilgan. JCE provayderi ustiga o'rnatilgan qo'shimcha komponentlar PGP, S / MIME va boshqalarni qo'llab- quvvatlash kabi qo'shimcha funktsiyalarni qo'llab-quvvatlaydi.
Past darajadagi yoki "engil" API - bu barcha asosiy kriptografik algoritmlarni amalga oshiradigan API to'plamidir. API'lar kerak bo'lganda ishlatish uchun etarlicha sodda qilib yaratilgan, ammo JCE provayderi uchun asosiy qurilish bloklarini taqdim etgan. Maqsad cheklangan xotira qurilmalarida (JavaME) yoki JCE kutubxonalariga oddiy kirish imkoni bo'lmaganda (masalan, appletda tarqatish) past darajadagi API-dan foydalanishdir. Engil API shunchaki Java kodi bo'lgani uchun, Java Virtual Machine (JVM) kodning ishlashiga hech qanday cheklovlar qo'ymaydi va Bouncy Castle tarixining dastlabki kunlarida bu kuchli kriptografiyani rivojlantirishning yagona usuli edi. JCE sotuvchilariga "kuchli" shifrlashni amalga oshirishga ruxsat bermaydigan yurisdiktsiya siyosati bo'yicha.
Sertifikatlangan nashrlar
Endi C # va Java versiyalarida FIPS 140-2-darajali sertifikatlangan oqimlar mavjud, ular odatdagi versiyalardan farq qiladi, chunki modullar odatdagi versiyalarga o'xshash tarzda ishlab chiqilgan bo'lsa, past darajadagi API-lar juda boshqacha - asosan boshqaruvni qo'llab-quvvatlash uchun algoritmdan foydalanganda FIPS tomonidan talab qilinadi. JCE Java API qatlami bo'yicha, sotuvchi hali ham odatdagi chiqarishni o'zgartiradi. Dastlabki FIPS sertifikatlangan nashrlari 2016 yil noyabr oyida paydo bo'ldi, Java versiyasi 2768 sertifikat va C # versiyasi 2792 sertifikat berilgan.
Spongy Castle
Android operatsion tizimi 2014 yil boshida Bouncy Castle-ning o'zgartirilgan versiyasini o'z ichiga oladi. Sinf nomidagi ziddiyatlar tufayli, bu Android ilovalariga Bouncy Castle-ning rasmiy versiyasini o'z ichiga olishi va
ishlatishiga yo'l qo'ymaydi. Spongy Castle deb nomlangan uchinchi tomon loyihasi ushbu muammoni hal qilish uchun kutubxonaning o'zgartirilgan versiyasini tarqatmoqda.
Stripy Castle
Dastlab Spongy qal'asining FIPS 140-2 versiyasini ham yaratish mumkin deb o'ylaganlar. Android DEX fayllari qayta ishlanganligi sababli, FIPS maqsadlarida provayder qurilmada dasturdan alohida o'rnatilishi kerak. FIPS 140-2-ning Android versiyasi endi Stripy Castle deb nomlangan va org.stripycastle-da paketlangan. Bu Bouncy Castle-ning Android versiyasi bilan ziddiyatlarni, shuningdek Spongy Castle-dan foydalanishi mumkin bo'lgan va FIPS 140-2 sertifikatlangan xizmatlarini talab qilmaydigan dasturlar uchun ziddiyatlarni oldini olish uchun zarur edi.
|