Java platformasi xavfsizlikni, jumladan, til xavfsizligi, kriptografiya, ochiq kalitlar infratuzilmasi, autentifikatsiya, xavfsiz aloqa va kirishni boshqarishni ta'kidlaydi


Provayder tomonidan amalga oshirish qanday so'raladi va ta'minlanadi



Yüklə 67,8 Kb.
səhifə7/8
tarix19.12.2023
ölçüsü67,8 Kb.
#185149
1   2   3   4   5   6   7   8
Tarmoq MI 29 11

Provayder tomonidan amalga oshirish qanday so'raladi va ta'minlanadi

APIdagi har bir dvigatel klassi uchun dastur namunasi so‘raladi va vosita sinfidagi getInstance usullaridan birini chaqirish orqali kerakli algoritm nomini va ixtiyoriy ravishda provayder (yoki Provayder klassi) nomini ko‘rsatish orqali amalga oshiriladi. amalga oshirish istaydi.


static EngineClassName getInstance(String algorithm)


throws NoSuchAlgorithmException

static EngineClassName getInstance(String algorithm, String provider)


throws NoSuchAlgorithmException, NoSuchProviderException

static EngineClassName getInstance(String algorithm, Provider provider)


throws NoSuchAlgorithmException
bu erda EngineClassName - kerakli vosita turi (MessageDigest/Cipher/etc). Masalan:

MessageDigest md = MessageDigest.getInstance("SHA-256");


KeyAgreement ka = KeyAgreement.getInstance("DH", "SunJCE");
mos ravishda "SHA-256" MessageDigest va "DH" KeyAgreement obyektlarining namunasini qaytaring.
A ilovasida Java muhitida foydalanish uchun standartlashtirilgan nomlar ro'yxati mavjud. Ba'zi provayderlar bir xil algoritmga tegishli taxallus nomlarini ham qo'shishni tanlashi mumkin. Masalan, "SHA256" algoritmini "SHA-256" deb atash mumkin. Ilovalar taxallus o'rniga standart nomlardan foydalanishi kerak, chunki barcha provayderlar algoritm nomlarini bir xil tarzda qo'yishi mumkin emas.


QAYD: Algoritm nomi katta-kichik harflarga sezgir emas. Masalan, quyidagi barcha qo'ng'iroqlar ekvivalentdir:

MessageDigest.getInstance("SHA256")


MessageDigest.getInstance("sha256")
MessageDigest.getInstance("sHa256")

Agar provayder ko'rsatilmagan bo'lsa, getInstance ro'yxatdan o'tgan provayderlarni nomidagi algoritm bilan bog'langan so'ralgan kriptografik xizmatni amalga oshirish uchun qidiradi. Har qanday Java virtual mashinasida (JVM) provayderlar ma'lum bir imtiyozli tartibda o'rnatiladi, agar ma'lum bir provayder so'ralmasa, provayderlar ro'yxatini qidirish tartibi. Masalan, JVM’da ikkita provayder o‘rnatilgan deylik, PROVIDER_1 va PROVIDER_2. Tasavvur qiling:


PROVIDER_1 SHA-256 va DSEde-ni qo'llaydi.


PROVIDER_1 1-tartibga ega (eng yuqori ustuvorlik).
PROVIDER_2 SHA256-ni DSA, SHA-256, RC5 va RSA bilan amalga oshiradi.
PROVIDER_2 2-sonli imtiyozga ega.

Endi uchta stsenariyni ko'rib chiqamiz:


Agar biz SHA-256 ilovasini qidirayotgan bo'lsak, ikkala provayder ham bunday dasturni taqdim etadi. PROVIDER_1 ilovasi qaytarildi, chunki PROVIDER_1 eng yuqori ustuvorlikka ega va birinchi navbatda qidiriladi.
Agar biz DSA imzo algoritmi bilan SHA256 qidirayotgan bo‘lsak, avvalo PROVIDER_1 uni qidiradi. Hech qanday dastur topilmadi, shuning uchun PROVIDER_2 qidirildi. Amalga oshirish topilganligi sababli, u qaytariladi.
Aytaylik, biz SHA256withRSA imzo algoritmini qidirmoqdamiz. Hech bir o'rnatilgan provayder uni amalga oshirmaganligi sababli, NoSuchAlgorithmException yuboriladi.
Provayder argumentini o'z ichiga olgan getInstance usullari qaysi provayderdan algoritm olishni xohlayotganini aniqlamoqchi bo'lgan ishlab chiquvchilar uchundir. Masalan, federal agentlik federal sertifikat olgan provayder dasturidan foydalanishni xohlaydi. Faraz qilaylik, PROVIDER_1’dan SHA256withDSA ilovasi bunday sertifikatni olmagan, PROVIDER_2’ning DSA ilovasi esa uni olgan.
Federal agentlik dasturida quyidagi qoʻngʻiroq boʻladi, unda PROVIDER_2 koʻrsatiladi, chunki u sertifikatlangan dasturga ega:

Imzo dsa = Signature.getInstance("SHA256withDSA", "PROVIDER_2");


Bunday holda, agar PROVIDER_2 o'rnatilmagan bo'lsa, boshqa o'rnatilgan provayder so'ralgan algoritmni amalga oshirsa ham, NoSuchProviderException yuboriladi.

Dasturda barcha o'rnatilgan provayderlar ro'yxatini olish (Xavfsizlik sinfidagi getProviders usulidan foydalanish) va ro'yxatdan birini tanlash imkoniyati mavjud.


DIQQAT: Umumiy maqsadli ilovalar maxsus provayderlardan kriptografik xizmatlarni so'ramasligi kerak. Aks holda, ilovalar boshqa Java dasturlarida mavjud bo'lmagan maxsus provayderlarga bog'lanadi. Ular, shuningdek, ma'lum bir so'ralgan provayderdan ko'ra yuqoriroq afzallik tartibiga ega bo'lgan mavjud optimallashtirilgan provayderlardan (masalan, PKCS11 orqali apparat tezlatgichlari yoki Microsoft MSCAPI kabi mahalliy operatsion tizim dasturlari) foydalana olmasligi mumkin.


Provayderlarni o'rnatish

Foydalanish uchun avval kriptografik provayder o'rnatilishi, so'ngra statik yoki dinamik tarzda ro'yxatdan o'tkazilishi kerak. Ushbu nashr bilan birga yuborilgan turli xil Sun provayderlari mavjud (SUN, SunJCE, SunJSSE, SunRsaSign va boshqalar) allaqachon o'rnatilgan va ro'yxatdan o'tgan. Quyidagi bo'limlar qo'shimcha provayderlarni qanday o'rnatish va ro'yxatdan o'tkazishni tasvirlaydi.


Provayder sinflarini o'rnatish


Provayder sinflarini o'rnatishning ikki yo'li mavjud:

Oddiy Java sinf yo'lida


Sinf yo'lingizning istalgan joyiga sinflarni o'z ichiga olgan zip yoki JAR faylini joylashtiring. Ba'zi algoritm turlari (Ciphers) provayderdan imzolangan Jar fayli bo'lishini talab qiladi.

O'rnatilgan/jamlangan kengaytma sifatida


Provayder, agar u standart kengaytmalar katalogiga joylashtirilgan bo'lsa, o'rnatilgan kengaytma hisoblanadi. JDKda u quyidagilarda joylashgan bo'ladi:

Solaris, Linux yoki Mac OS X: /lib/ext


Windows: \lib\ext
Bu yerda ish vaqti dasturi oʻrnatilgan katalogga ishora qiladi, bu Java Runtime Environment (JRE) ning yuqori darajadagi katalogi yoki Java JDK dasturiy taʼminotidagi jre katalogidir. Misol uchun, agar sizda JDK 6 Solaris-da /home/user1/JDK1.6.0 nomli katalogda yoki Microsoft Windows-da C:\Java\JDK1.6.0 nomli katalogda o'rnatilgan bo'lsa, JAR faylini o'rnatishingiz kerak. quyidagi katalog:

Solaris, Linux yoki Mac OS X: /home/user1/JDK1.6.0/jre/lib/ext


Windows: C:\JDK1.6.0\jre\lib\ext
Xuddi shunday, agar sizda JRE 6 Solaris-da /home/user1/jre1.6.0 nomli katalogda yoki Microsoft Windows-da C:\jre1.6.0 nomli katalogda o'rnatilgan bo'lsa, JAR faylini quyidagi katalogga o'rnatishingiz kerak. :

Solaris, Linux yoki Mac OS X: /home/user1/jre1.6.0/lib/ext


Windows: C:\jre1.6.0\lib\ext
Kengaytmani qanday joylashtirish haqida ko'proq ma'lumot olish uchun Kengaytma qanday o'rnatiladi?
Provayderni ro'yxatdan o'tkazish
Keyingi qadam provayderni ro'yxatdan o'tgan provayderlar ro'yxatiga qo'shishdir. Provayderlar Java ilovasini ishga tushirishdan oldin xavfsizlik xususiyatlari konfiguratsiya faylini tahrirlash orqali statik tarzda yoki ish vaqtida usulni chaqirish orqali dinamik ravishda roʻyxatdan oʻtishlari mumkin. Ish vaqti muhitiga noto'g'ri provayderlarning o'rnatilishini oldini olish uchun provayderni dinamik ravishda ro'yxatdan o'tkazishga urinayotgan ilovalar tegishli ish vaqti imtiyoziga ega bo'lishi kerak.

Statik ro'yxatga olish


Konfiguratsiya fayli quyidagi manzilda joylashgan:

  • Solaris, Linux, or Mac OS X: /lib/security/java.security

  • Windows: \lib\security\java.security

Har bir ro'yxatdan o'tgan provayder uchun ushbu faylda quyidagi shakldagi bayonot bo'lishi kerak:


security.provider.n=masterClassName


Bu provayderni e'lon qiladi va uning afzal ko'rish tartibini belgilaydi. Afzallik tartibi - provayderlar so'ralgan algoritmlarni qidirish tartibi (aniq provayder so'ralmaganda). Buyurtma 1 ga asoslangan: 1 eng ko'p afzal, keyin 2 va hokazo.





Yüklə 67,8 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin