Tоshkеnt aхbоrоt tехnоlоgiyalari



Download 320,63 Kb.
bet5/5
Sana20.07.2022
Hajmi320,63 Kb.
#831511
1   2   3   4   5
Bog'liq
Individual loyiha4

security.provider.1=sun.security.provider.Sunsecurity.provider.2=sun.security.rsa
.SunRsaSignsecurity.provider.3=sun.security.ec.SunECsecurity.provider.4=com.sun.n et.ssl.internal.ssl.Providersecurity.provider.5=com.sun.crypto.provider.SunJCEsec urity.provider.6=sun.security.jgss.SunProvidersecurity.provider.7=com.sun.securit y.sasl.Providersecurity.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRIsecurit y.provider.9=sun.security.smartcardio.SunPCSCsecurity.provider.10=sun.security.ms capi.SunMSCAPI
Keyin qo‘shish kerak:
security.provider.11 = org.bouncycastle.jce.provider.BouncyCastleProvider
Iltimos, seriya raqami sizning xavfsizlik faylingizga bog’liqligini unutmang. O‘rnatish muvaffaqiyatli bo‘lganligini tekshirish uchun quyidagi oddiy dasturdan foydalanishingiz mumkin: public static void main (String [] args) {Provider provider
= Security.getProvider ("BC"); System.out.println (provayder);} Agar null qaytarsa o‘rnatish muvaffaqiyatsiz tugaganligini bildiradi. Agar BC sifatida ko‘rsatilgan bo‘lsa, o‘rnatish muvaffaqiyatli bo‘ldi.

      1. Java importini boshqarish bo‘yicha cheklovlar olib tashlandi.

Chet elga olib kirish va eksport qilish cheklovlari tufayli Java Kriptografik Algoritm Tizimi ba’zi cheklovlarga duch keladi. Cheklovlarni olib tashlash uchun siyosat fayli qaytadan yozilishi kerak.

      1. Siyosat faylini yuklab oling

    • jdk6 ->http: //www.oracle.com/technetwork/java/javase/downloads/jce-6- download-429243.html

    • jdk7 -> http: //www.oracle.com/technetwork/java/javase/downloads/jce-7- download-432124.html

    • jdk8 -> http: //www.oracle.com/technetwork/java/javase/downloads/jce8- download-2133166.html

Yuklangan siyosat fayliga ikkita fayl kerak bo‘ladi: local_policy.jarcUS_export_policy.jar

      1. sdk va jre-dagi ikkita siyosat faylini qayta yozing.

    • Sdk -> C: \ Program Files \ Java \ jdk1.8.0_144 \ jre \ lib \ xavfsizlik

    • Jre -> C: \ Program Files \ Java \ jre1.8.0_144 \ lib \ security-dagi siyosat faylining joylashuvi.

      1. Sinov

Agar siyosat fayli samarali bo‘lsa, tekshirish uchun quyidagi protseduradan foydalanishingiz mumkin:


public static void main(String[] args) { try {
KeyGenerator kg = KeyGenerator.getInstance("AES"); kg.init(256);
SecretKey secretKey = kg.generateKey(); System.out.println(secretKey.getFormat());
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
AES algoritmining cheklovi olib tashlanishidan oldin, AES algoritmi faqat 128 bitni qo‘llab-quvvatlagan.

Agar java.security.InvalidKeyException: Illegal key error yuzaga kelsa, bu cheklov bekor qilinmaganligini anglatadi.




II BOB BOUNCY CASTLE KRIPTOGRAFIK KUTUBXONASIDAN FOYDALANIB MA’LUMOTLARNI SHIFLASH.

    1. BOUNCY CASTLE dan xavfsizlik ta’minotchisi sifatida foydalanish


Bouncy Castle-dan xavfsizlik ta’minotchisi sifatida foydalanish uchun sizning class yo‘lingizda Jar bo‘lishi kerak. Keyin, ushbu yozuvdan keyin java.security faylini yangilashingiz yoki provayderni ish vaqtida ro‘yxatdan o‘tkazish uchun quyidagi kodni qo‘shishingiz mumkin.


/**



  • Security Providers initialization. The first call of the init method




  • will have the class loader do the job. This technique ensures proper




  • initialization without the need of maintaining

the



  • ${java_home}/lib/security/java.security file, that would otherwise




  • need the addition of the following line:

*
security.provider.n=org.bouncycastle.jce.provi der.BouncyCastleProvider.


*/ Security.insertProviderAt( new
BouncyCastleProvider(), 1 );


Kalit. Ma’lumotlarni tinch holatda shifrlash uchun biz nosimmetrik shifrlashdan foydalanamiz.
Agar siz nosimmetrik shifrlashni yaxshi bilmasangiz, bu aslida shifrlash uchun ham, parolni hal qilish uchun ham bitta kalitdan foydalanishni anglatadi. Shifrlashning boshqa turi assimetrik shifrlash bo‘lib, u ikkita kalitda ishlaydi, biri ochiq va ikkinchisi shaxsiy.
Eng oddiy yondashuv - himoya qilmoqchi bo‘lgan barcha ma’lumotlar uchun umumiy kalitdan foydalanish. Biroq, salbiy tomoni shundaki, agar hujumchi kalitga kirish huquqiga ega bo‘lsa, hujumchi faqat bitta kalit bilan barcha ma’lumotlarni parolini hal qilishi mumkin.


private static final SecureRandom SECURE_RANDOM = new SecureRandom( );
public static byte[] generateKey( int keyLength ) throws IOException, NoSuchProviderException,
NoSuchAlgorithmException

{


CipherKeyGenerator cipherKeyGenerator = new CipherKeyGenerator();

cipherKeyGenerator.init( new KeyGenerationParameters( SECURE_RANDOM, keyLength ) );


return cipherKeyGenerator.generateKey();


}

Agar sizning ma’lumotlaringiz alohida foydalanuvchilarga tegishli bo‘lsa, yanada xavfsiz yondashuv - foydalanuvchi tomonidan berilgan parol / parol (parolga asoslangan shifrlash (PBE)) asosida har bir foydalanuvchi uchun alohida kalitlarni olishdir. Shunday qilib, yomoni, bitta foydalanuvchi uchun kalitni biladigan tajovuzkor faqat ushbu foydalanuvchi uchun ma’lumotlarni parolini hal qilishi mumkin.


    1. BOUNCY CASTLE da AES / CBC / PKCS7Padding shifrlash


Quyida biz xabarni AES algoritmi bilan shifrlashni yozishga, shuningdek unga SHA512 algoritmi haqida raqamli imzo qo‘shishga harakat qilamiz.
Avvalo, yangi Maven loyihasini yaratib, "pom.xml" fayliga bog’liqlik qo‘shaylik:

org.bouncycastle
bcprov-jdk16
1.46

AESEngine nusxasini yaratamiz:

Hozircha hamma narsa oddiy. Ammo siz shunchaki AES dan foydalana olmaysiz. Shifrlash blokirovkalash rejimidan foydalanishimiz kerak, shunda keyingi blokning shifrlash natijasi oldingisining shifrlash natijasiga bog’liq bo‘ladi. Bunday taktika tajovuzkorning o‘rtaga qo‘shimcha bloklar qo‘yishiga to‘sqinlik qiladi, shuningdek, bizning barcha harakatlarimizga putur etkazishi mumkin bo‘lgan shifrlangan matnda keng tarqalgan iboralarni topishni qiyinlashtiradi. Cipher Block Chaining biz uchun CBCBlockCipher class ni amalga oshiradi:


Endi yana bitta muammoni hal qilishimiz kerak. AES va CBC bloklarda ishlaydi. Ixtiyoriy uzunlikdagi satrlarni uzatmoqdamiz. Agar biz uzatayotgan satrninfg kattaligini blok kattaligiga qoldiqsiz bo‘lish mumkin bo‘lmasa-chi? Blok o‘lchamidan kichikroq qolgan dumni qanday o‘tkazaman? Buning uchun to‘ldirish yoki padding, ya’ni xabar oxiriga qo‘shilgan qo‘shimcha ma’lumotlar ishlatiladi. Biz PKCS7 padding vositasidan foydalanamiz:


SHA512 yordamida shifrlangan xabarlarni imzolaymiz:


AES va SHA512 algoritmlari biz o‘z kodimizga baytlar qatorida o‘tadigan kalitlardan foydalanadi:


HMac nusxasiga kalit berilishi kerak:


Shuningdek, biz boshlang’ich vektori (Initialization Vector yoki IV) kerak - bu tasodifiy raqam, u kalit bilan birga shifrlash va parolni hal qilish algoritmida ishlatiladi. Har bir yangi xabar turli xil IVga ega bo‘ladi, bu sizga xabarlarning bir xil qismlari uchun ham turli xil shifrlash natijalarini yaratishga imkon beradi. Biz etkazilgan xabarlar, masalan, odamlarning ismlari, salomlashish yoki boshqa biron bir narsani takrorlashi mumkinligini tushunamiz. IV tufayli shifrlash turli xil xabarlarda takrorlanadigan matn qismlari uchun turli xil natijalarni beradi:



E’tibor bering, biz IV ishlab chiqarish uchun odatiy Random emas, balki SecureRandomdan foydalanganmiz. Normal Random kriptografik tasodifiy sonlarni yaratish uchun mos emas.
Shifrni kalitlarga va IV-ga o‘tkazib, uni ishga tushiramiz:

IV ni yashirish shart emas. Qabul qiluvchiga shifrlangan xabarning birinchi bloki sifatida yuborilishi mumkin va aniq matnda IV da hech qanday sir yo‘q:


Keyin hamma narsa oddiy. Biz cipher.processBytes va hmac.update ni chaqiramiz, ularga asl xabardan o‘qilgan bayt bloklarini uzatamiz va nihoyat oxirgi blokni hisoblash va yozish uchun cipher.doFinal-ga, shuningdek imzoni hisoblash uchun hmac.doFinal-ga murojat qilamiz:


Va eng muhimi! Oxir-oqibat, biz foydalanishda RAM-da shaxsiy ma’lumotlar va kalitlarga ega bo‘lmasliklari uchun jarayonda ishlatiladigan barcha baytli qatorlarni nollar bilan to‘ldiramiz:


Yakuniy natija:




XULOSA


Ushbu loyiha ishida biz Bouncy Castle kriptografik kutubxonasi haqida ma’lumotga ega bo‘ldik, bu kutubxona orqali shifrlashni ko‘rib chiqdik. Bouncy Castle bu kriptografiyada shifrlash uchun qo‘llaniladigan kutubxona bo‘lib Java da yozilgan dasturiy taminot ekan. Java dasturlash tili orqali shifrlashni amalga oshirdik. Buning uchun Maven proyekt hosil qilib Bouncy Castle uchun mo‘ljallangan dependency ni pom.xml file ga chaqirib olib main classida shifrladik.

FOYDALANILGAN ADABIYOTLAR





  1. О КРИПТОГРАФИЧЕСКОЙ БИБЛИОТЕКЕ BOUNCY CASTLE

М.С. Зуев, К.Г. Мирошников Тамбовский государственный университет имени Г.Р. Державина, Тамбов, Россия

  1. https://ru.xcv.wiki/wiki/Bouncy_Castle_(cryptography)




  1. https://russianblogs.com/article/99981031700/




  1. https://www.baeldung.com/java-bouncy-castle




  1. https://www.taithienbo.com/encryption-in-java-with-jca-and-bouncy-castle- api/

  2. https://urvanov.ru/2019/07/02/шифрование-aescbcpkcs7padding-с-bouncy- castle/

Download 320,63 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish