Сигурност у програмском језику Java https://docs.oracle.com/javase/8/do cs/technotes/guides/security/overvie w/jsoverview.html
Java сигурносна архитектура Сигурносна архитектура за програмски језик Java подразумева велики број интерфејса за програмирање апликација (API), алата и имплементација најчешће коришћених сигурносних алгоритама, механизама и протокола Једна група доступних интерфејса односи се на криптографију и инфраструктуру јавних кључева (PKI) и служи за развој сигурносних апликација Друга група интерфејса омогућава аутентикацију и контролу приступа и служи да омогући апликацијама да се заштите од неауторизованог приступа заштићеним ресурсима
Java сигурносна архитектура (2) Архитектура подразумева да су сви сигурносни сервиси имплементирани у пружаоцима сервиса (providers) Пружаоци сервиса се могу укључити у Java платформу путем стандардног интерфејса Овакав начин подршке за сигурносне сервисе омогућава апликацијама да их користе без познавања детаља саме имплементације Java платформа укључује одређени скуп подразумеваних пружаоца услуга који имплементирају основни скуп сигурносних сервиса Платформа дозвољава да се инсталирају и нови специфични пружаоци услуга и на тај начин је омогућено програмерима да додају нове сигурносне механизме
API принципи дизајна Независност имплементације Апликације користе једног или више независних пружаоца услуга ради примене сигурносног сервиса Међусобна компатибилност различитих имплементација Апликација може да користи различите пружаоце услуга и пружаоци услуга могу да буду коришћени од стране различитих апликација Проширивост коришћених сервиса Платформа укључује пружаоце услуга који имплементирају скуп сигурносних сервиса који су тренутно актуелни, али даје подршку за додавање нових
Пружаоц услуга java.security.provider класа представља појам пружаоца услуга у Java платформи Специфицира назив пружаоца услуга и списак сервиса које тај пружаоц услуга имплементира Истовремено може бити конфигурисано неколико различитих пружаоца услуга поређаних по приоритету Када је потребан одређени сигурносни сервис одабира се пружаоц услуга највишег приоритета који га имплементира
Пример одабир хеш алгоритма MessageDigest md = MessageDigest.getInstance ("SHA-256"); MessageDigest md = MessageDigest.getInstance ("SHA-256", "ProviderC");
Подразумевани пружаоци услуга Java платформа укључује одређени број подразумеваних пружаоца услуга Ови су већ конфигурисани и могу се одмах користити
Криптографска архитектура - JCA Укључује следеће сервисе: Хеш алгоритме Алгоритме за дигитално потписивање Симетричне блоковске алгоритме Симетричне алгоритме тока Асиметричне алгоритме Алгоритме засноване на лозинци (PBE) Криптографију помоћу елиптичне криве (ECC) Алгоритме за размену кључева Генераторе кључева Алгоритме за генерисање MAC кодова Генераторе псеудо-случајних бројева
JCA - пакети Из историјских разлога (контрола извоза), криптографски API су организовани у два пакета: java.security пакет у коме су класе које не подлежу контроли (Signature, MessageDigest) javax.crypto пакет у коме су класе које подлежу контроли (Cipher, KeyAgreement)
Подразумевани подржани сервиси Подразумевани пружаоци услуга у Java платформи подржавају неке од најчешће коришћених алгоритама, као што су: RSA и DSA за потписивање DES и AES за симетрично шифровање MD5, SHA-1 и SHA-256 хеш алгоритме Diffie-Hellman алгоритам за размену кључева
Java PKI Java платформа има API и пружаоце услуга за рад са X.509 дигиталним сертификатима, затим листама повучених сертификата (CRL), као и креирањем и валидацијом сертификационе путање у сагласности са PKIX инфраструктуром Класе везане за PKI налазе се у java.security пакету и java.security.cert пакету
Чување кључева и сертификата Java пружа структуре података за складиштење и чување криптографских кључева и сертификата java.security.keystore класа представља сигуран репозиторијум криптографских кључева и/или сертификата од поверења java.security.cert.certstore класа представља јавно доступни репозиторијум неповезаних сертификата и сертификата који нису од поверења, као и листа повучених сертификата
Подржани формати KeyStore и CertStore имплементације разликују се по типу подржаног формата Java платформа подржава следеће типове: PKCS11 (према стандарду), PKCS12 (према стандарду), JKS (Java Key Store), DKS (Domain Key Store)