sql >> Database >  >> RDS >> Database

Een inleiding tot de Java Security API

Beveiliging is een van de belangrijkste onderdelen van applicatieontwikkeling. De Java-taal maakt het gemakkelijk om veilige applicaties te ontwikkelen door veel opties en functies te bieden die applicaties veilig maken. Omdat het een groot onderwerp is, zal dit artikel ingaan op enkele belangrijke aspecten van de beveiligingsfuncties en API's die beschikbaar zijn op het Java-platform.

Overzicht

Het Java-platform is vanaf het begin gebouwd met het oog op veiligheid. De eigenschap type safe van de taal en automatische garbagecollection stelt dat de Java-architectuur probeerde beveiligingsfuncties vanaf de kern op te nemen.

De afgelopen jaren is veiligheid een belangrijk aandachtspunt geweest. Moderne browsers werken bijvoorbeeld aan het beperken of verminderen van plug-in-ondersteuning zoals Java, Silverlight en Flash, omdat ze kunnen worden misbruikt om ondeugende code op te nemen in een onschuldig ogende add-on. Hoewel de Java-omgeving schoon is, is de aard van de applet dat deze niet-vertrouwde code downloadt van het openbare netwerk. Dit kan een grote inbreuk op de beveiliging zijn. Ook is de browserwereld de afgelopen jaren aanzienlijk veranderd. De absolute behoefte aan Applet is bijna achterhaald. Misschien heeft dit en vooral de toenemende bezorgdheid over de veiligheid ervoor gezorgd dat Applet is afgeschaft van Java 9.

Java-beveiligingsframework

Java Security-services zijn uitgebreid en omvatten een groot aantal Application Programming Interfaces (API's), tools, een aantal implementaties van beveiligingsalgoritmen, mechanismen en protocollen. Dit biedt een uitgebreide omgeving om veilige applicaties te ontwikkelen en dienovereenkomstig te beheren.

De reikwijdte van de Java-beveiligings-API is uitgebreid. De basis voor het ontwikkelen van een veilige applicatie ligt in de cryptografische en openbare sleutelinfrastructuur (PKI)-interfaces, meerdere interoperabele gemeenschappelijke algoritmische implementatie en andere beveiligingsdiensten. Er zijn interfaces voor het uitvoeren van authenticatie en toegangscontrole. Hierdoor kunnen applicaties zich beschermen tegen ongeautoriseerde toegang tot beschermde bronnen.

Taalbeveiliging

Om te beginnen is de taal zelf gebouwd met de zorg om veiligheid in de kern op te nemen. Het eenvoudigste voorbeeld is misschien wel de incorporatie van typeveiligheid. Typ safe betekent dat programma's beperkte toegang tot geheugen hebben tijdens runtime. Dit wordt bereikt door geheugen alleen aan Java-objecten te koppelen. Objecten hebben een overeenkomstige klasse die het gedrag ervan definieert; dit zorgt ervoor dat het programma er alleen op kan reageren volgens het gedefinieerde gedrag. Dit idee resoneert met dynamische typecontrole, maar Java neemt ook waar mogelijk complexe statische typecontrole op om de beperking van zijn dynamische tegenhanger te omzeilen. De bytecodeverificator is bijvoorbeeld een effectieve statische typecontrole die tijdens het compileren wordt gebruikt om elk type fout aan het licht te brengen en proactief aan de ontwikkelaar te rapporteren. De bytecode-verifier zorgt ervoor dat een legitieme bytecode wordt uitgevoerd door te voldoen aan de Java-taalspecificatie. Afgezien hiervan controleert het ook op geheugenschending, onder/overlopen van stapels, juiste typecasts, enzovoort. Daarnaast zijn er modifiers zoals privé, beschermd en openbaar om beperkte toegang te handhaven.

Beveiligingsproviders

De diensten fungeren als aanbieder van beveiliging. Wanneer ze via standaardinterfaces op het Java-platform zijn aangesloten, maken ze het de toepassing gemakkelijk om beveiligingsservices te verkrijgen. Het voordeel van dit mechanisme is dat de ontwikkelaar de ingewikkelde details niet hoeft te kennen en zich in plaats daarvan kan concentreren op het integreren van de beveiligingsfuncties in de applicatie. Dit idee is ingekapseld in de abstracte klasse java.security.Provider . De beveiligingsservice wordt verkregen via de getInstance() methode geleverd door de Provider . Er kunnen veel providers zijn geconfigureerd waarbij elk een naam en een versienummer heeft geconfigureerd in elke runtime waarin het is geïnstalleerd. Een programma kan bijvoorbeeld een bepaald message digest-algoritme verkrijgen door optioneel een specifieke provider bij zijn naam als volgt aan te vragen:

MessageDigest messageDigest = MessageDigest.getInstance("MD5",
   "MyProvider1");

Cryptografie

Java cryptografische API's worden verdeeld over twee pakketten:java.security en javax.crypto . Java biedt een grote verscheidenheid aan cryptografische diensten door een aantal cryptografische algoritmen te implementeren. Een paar daarvan zijn als volgt:

  • java.security.MessageDigest: Deze klasse biedt de implementatie van een eenrichtings-hashfunctie die gegevens van willekeurige grootte neemt en een hash-waarde met een vaste lengte uitvoert. Het algoritme heet SHA-1 of SHA-256.
  • java.security.Signature: Deze klasse wordt gebruikt om de functionaliteit te bieden van een algoritme voor digitale handtekeningen, zoals DSA-, RSA- of DSA-algoritmen, met behulp van het SHA-256 message digest-algoritme. Een digitale handtekening wordt vooral gebruikt om de integriteit en authenticiteit van digitale gegevens te waarborgen.
  • java.security.SecureRandom: Deze klasse biedt functionaliteit om een ​​cryptografisch sterk willekeurig getal te genereren.

Public Key Infrastructure (PKI)

De PKI-infrastructuur maakt de veilige uitwisseling van gegevens mogelijk met behulp van cryptografie met openbare sleutels. Het omvat sleutels, certificaten, versleuteling met openbare sleutels en digitale certificaten. De klassen gerelateerd aan PKI worden opgeslagen in java.security en java.security.cert pakketten.

Verificatie

Verificatie is het proces van het verifiëren van de gebruikersidentiteit. Java stelt de applicatie in staat om gebruikersauthenticatie uit te voeren met behulp van de pluggable module. Er is een klasse genaamd LoginContext in de javax.security.auth.login pakket. Deze klasse wordt geïnstantieerd met een naam en een CallbackHandler. De LoginContext gebruikt de naam als een index voor de configuratie. De configuratie bepaalt de specifieke LoginModule (javax.security.auth.spi.LoginModule ). De CallbackHandler wordt doorgegeven aan de LoginModule om gebruikersnaam en wachtwoord te vragen, bijvoorbeeld in een GUI.

Beveiligde communicatie

Het Java-platform implementeert SSL- en TLS-protocollen die functionaliteit bieden voor berichtintegriteit, gegevenscodering en client- en serverauthenticatie. Dit kan worden gebruikt om een ​​veilige doorgang van datacommunicatie tussen peers te effenen bovenop het HTTP- of TCP/IP-protocol. De API-ondersteuning voor de implementatie is te vinden in de javax.net.ssl pakket. Er zijn veel ondersteunende klassen; bijvoorbeeld de SSLSocket class is een extensie van de java.net.Socket class om een ​​beveiligde socket te bieden met behulp van het SSL/TLS-protocol. Dit is niets anders dan een normale stream-socket met een extra beschermingslaag via het transportlaagprotocol (TCP).

Toegangscontrole

De klasse toegangscontrole beschermt de toegang tot gevoelige bronnen, zoals lokale bestanden. De java.lang.SecurityManager klasse bemiddelt alle toegang. Met deze klasse kan de toepassing een beveiligingsbeleid implementeren. Daarom kan een mogelijk onveilige bewerking tijdens de poging worden beperkt, zodat de toepassing volledige controle heeft over toegestane bewerkingen.

Conclusie

Dit is een korte rondleiding over de beveiligingsfuncties, functionaliteit en API's van het Java-platform. Java biedt uitgebreide ondersteuning voor het implementeren van beveiliging in een applicatie waar ontwikkelaars zich niet bewust kunnen zijn van de complexiteit van de implementatie ervan, maar er toch de vruchten van plukken. Dit maakt gebruik van een snelle en efficiënte levering van het product zonder dat u alles opnieuw hoeft op te bouwen.

Referenties

  • Java API-documentatie
  • Java-beveiligingsoverzicht

  1. Hoe de patch terug te draaien na een mislukte overgangsfase in R12.2

  2. oci_connect verbinding mislukt

  3. Een database maken in SQL Server (T-SQL)

  4. Dubbele rijen uit een tabel verwijderen