Database security. Kapittel 14 Building Secure Software. Inf329, Høst 2005 Isabel Maldonado st10900@student.uib.no



Like dokumenter
Sikkerhet og tilgangskontroll i RDBMS-er

Tilkobling og Triggere

SQL 3: Opprette tabeller, datainnsetting og utsnitt

1. SQL datadefinisjon og manipulering

Høgskolen i Telemark EKSAMEN 6102 DATABASER Tid: Hjelpemidler: Vedlegg: Eksempeldata til oppgave 1

Client-side Security

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19

Romlig datamanipulering

ORDBMS og OODBMS i praksis

UNIVERSITETET I OSLO SQL. Structured Query Language. (forts.) Institutt for Informatikk. INF Ragnar Normann 1

Datamodellering og databaser SQL, del 2

Datamodellering og databaser SQL, del 2

Datamodellering og databaser SQL, del 2

Metaspråket for å beskrive grammatikk

Rapport Semesteroppgave i datasikkerhet Harald Dahle (795955) og Joakim L. Gilje (796196)

Databaser. Relasjonsmodellen 2 Læreboka: Kap. 2 Relasjonsmodellen

Institutt for datateknikk. Fag TDT4145 Datamodellering og databasesystemer Løsningsforslag til øving 3: Algebra og SQL

Eksamen i Internetteknologi Fagkode: ITE1526

TOD063 Datastrukturer og algoritmer

Labquality/NKK ELEKTRONISK RESULTATSKJEMA VIA INTERNET. Åpning av skjemaet. Logg inn på Participant services. Velg resultatskjemaet

Feilmelding Årsak Løsning

Ulike DBMSer. Mest kjente: Oracle PostGreSQL* MySQL* SQLServer* DB2 SQLite Access (DBMS og utv. verktøy i ett) *Skal benyttes i kurset.

Videregående programmering 6

Applikasjonsutvikling med databaser

Ordliste. Obligatorisk oppgave 1 - Inf 1020

Databaser kort intro. Tom Heine Nätt

HVA ER XML? extensible Markup Language En standardisert måte å strukturere ulike typer data Åpent format Enkelt:

Tildeling av minne til prosesser

Tildeling av minne til prosesser

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

Hva er Derby og Java DB? Denne forelesningen. Java Database Connectivity (JDBC) Hva er Derby og Java DB?

Søkeveiledning for CINAHL (EBSCO)

Repetisjon: Normalformer og SQL

Elektroniske spor. Innsynsrett, anonymitet. Personvernutfordringer. Innsynsrett. Informasjonsplikt og innsynsrett

Transaksjoner og flerbrukerproblematikk. Transaksjoner

Oppgave 1a Definer følgende begreper: Nøkkel, supernøkkel og funksjonell avhengighet.

Algoritmer - definisjon

UNIVERSITETET I OSLO SQL. Structured Query Language. (forts.) Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Oppgave 1 (Opprett en database og en tabell)

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

Kompleksitetsanalyse Helge Hafting Opphavsrett: Forfatter og Stiftelsen TISIP Lærestoffet er utviklet for faget LO117D Algoritmiske metoder

Løse reelle problemer

Kapittel 14, Hashing. Tema. Definere hashing Studere ulike hashfunksjoner Studere kollisjonsproblemet 17-1

J2EE. CMP Entity Beans, Transaksjoner, JSP

Algoritmer og datastrukturer A.1 Filbehandling på bit-nivå

Java Database Connectivity (JDBC) Norvald H. Ryeng

Publisering av statiske og dynamiske websider til klasserom.net fra Dreamweaver og MySQL

EKSAMEN 6102 / 6102N DATABASER

Quotes (forespørsler)

OPPGAVE 5b og 8b Java Kode

Løsningsforslag til eksamen i IN2090 Databaser og datamodellering og INF1300 Introduksjon til databaser 6. desember :30 18:30 (4 timer)

DBMS Database Management System (repetisjon) Programmeringsgrensesnitt. Serialiserbarhet

Objektorientering i ER-modeller EER-modeller Enhanced Entity Relationship Models

Tabeller og enkle spørringer

6105 Windows Server og datanett

INF329,HØST

Effektiv Systemadministrasjon

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

Øvingsforelesning 5 Python (TDT4110)

10. ASP og SQL Innledning Recordset-objektet. Innhold. Referanse til læreboka Kapittel Se detaljer nedenfor.

Oppsett «Visma Contacts»

User Input / Output Handling. Innocent Code kap 3-4 INF-329 Øystein Lervik Larsen oysteinl@ii.uib.no 7/11-05

Kapittel 7: Mer om arv

Å bruke Java API-et til å sortere tabeller/arraylister der elementene er (referanser til) objekter

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Algoritmeanalyse. (og litt om datastrukturer)

TDT4225 Lagring og behandling av store datamengder

EKSAMEN DATABASER

HØGSKOLEN I SØR-TRØNDELAG

Teori om sikkerhetsteknologier

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

Øvingsforelesning 5 Python (TDT4110)

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

UNIVERSITETET SQL. Structured Query Language (forts.) Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Løsningsforslag EKSAMEN

Minfagplan.no. Brukermanual. Veiledning for lærere. Dokumentnummer: BV-001. Revision 1.4. August 25 th

INF 329: Web-Teknologier. Dataimplementasjon. Fra Kapittel 11 i «Designing Data-Intensive Web Applications» Presentasjonsdato: 17/10/2004

TDT4300 Datavarehus og datagruvedri3, Våren 2014

En liten rekap. Spørrespråk. I dag SELECT

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

Algoritmer og datastrukturer Kapittel 1 - Delkapittel 1.8

EKSAMEN I FAG TDT4100 Objekt-orientert programmering. Fredag 3. juni 2005 KL

9. ASP med databasekopling, del II

For mer informasjon om SQL Server 2014 Express, se Microsoft sine nettsider:

Administrator guide. Searchdaimon ES (Enterprise Server)

8. ASP med databasekopling, del I

Velkommen som ny bruker av Uni Økonomi!

Compello Fakturagodkjenning Versjon 10 Software as a service. Tilgang til ny modulen Regnskapsføring

Bachelor E. Theodor Rove Nordgård, Chris Sonko HIST DRIFT AV DATASYSTEMER

Utvikling fra kjernen og ut

Klasser, objekter, pekere og UML. INF gruppe 13

HTML og relasjonsdatabaser med PHP

Løsningsskisse, eksamen J2EE og distribuerte systemer 19.mai 2004

Compello Fakturagodkjenning Versjon 10.5 As a Service. Tilgang til Compello Desktop - Regnskapsføring og Dokument import

Elementær Kryptografi (Appendix A, Cryptography Basics, Building Secure Software)

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

Object interaction. Innhold. Abstraksjon Grunnleggende programmering i Java Monica Strand 3. september 2007.

Maps og Hashing. INF Algoritmer og datastrukturer. Map - ADT. Map vs Array

Avansert bruk av SQL. Avanserte spørringer Valguttrykk Spørring på spørring Unionspørringer Delspørringer, vekselvirkende delspørringer Kvantorer

Transkript:

Database security Kapittel 14 Building Secure Software Inf329, Høst 2005 Isabel Maldonado st10900@student.uib.no

Kort introduksjon Database er en organisert samling av data. SQL(Structured Query Language) er et språk som brukes for å opprette, modifisere og hente ut data fra en relasjonsdatabase.

Hvor sikkerheten kommer inn Databasesikkerhet er et emne som kan sies å være ignorert. For å kunne foreta SQL-spørringer, må man først koble seg opp til database (oftest over en usikker kanal), foreta en gyldig spørring, hente resultatet av denne, og til slutt lukke forbindelsen opp mot databasen. Sensitive opplysninger lagres ofte i en database. En bør vurdere å beskytte databasen sin, både for uvedkommende og brukere som har gyldig tilgang.

Databasesikkerhet Dårlig sikkerhet kan fører til tap av Konfidensialitet Privat info Integritet Tilgjengelighet Beskyttelse: Access control Kryptering

Klient server kommunikasjon Det er nødvendig å beskytte sensitiv data som blir overført via kommunikasjonensnettverket. Krytering kan taes i bruk, men få databaser støtter sterk kryptering for forbindelse. Mulige metoder: SSH, SSL eller stream ciphers MySQL støtter SSL-forbindelser. MS SQL server støtter ikke kryptering, men en VPN-forbindelse (Virtual Private Network) kan settes opp. For store datamengder kan en streamcipher (128 bit nøkkel) benyttes

Field protection Det er nødvendig å beskytte felt (som inneholder f.eks passord, kredittkortnr,etc.) i databasen fra administrator av DB. Få databaser tilbyr krypteringsmekanismer. Det finnes ingen standard sikkerhetsmekanisme for databaser. Mekanismene som brukes for å lagre passord er lett reversible.

Field protection/data kryptering En løsning vil være å ta i bruk egen kryptering og hashing ved bruk av kjente algoritmer. Dvs, data krypteres før lagring og dekrypteres etter uthenting. Sifferteksten vil være binær, så det er nødvendig å kode denne til en tegnstreng, da SQL-kommandoer ikke støtter tilfeldige binærstrenger. Boken foreslår base64 enconding algoritme.

Field protection Et problem som oppstår med en slik løsning er at databasen ikke tilbyr måte å søke slik data effektivt. Eneste løsning vil da være hente all relevant data, og søke gjennom etter dekryptering, noe som vil være tidkrevende, og dermed påvirke effektiviteten negativt. Kryptering fører som regel til utvidelse av datamengden, siden feltene må lagres som tekst. Peter Gutmann publiserte en teknikk januar 1997 for å kryptere data slik at sifferteksten forblir samme størrelse som klarteksten.

Kode for Gumanns krypteringsteknikk #define ASCII_BASE 32 #define ASCII_RANGE 96 #define HIGH_BASE 32 #define HIGH_RANGE 96 #define DATA_BASE ( ASCII_BASE + HIGH_BASE ) #define DATA_RANGE ( ASCII_RANGE + HIGH_RANGE ) #define KSG_RANGE ( ( 256 / DATA_RANGE ) * DATA_RANGE ) /* Encrypt/decrypt a text string */ static void encrypttext(ksg_info * ksginfo, const BYTE * input, BYTE * output, const int length, const BOOLEAN isascii) { const int range = (isascii)? ASCII_RANGE : DATA_RANGE; int i; for (i = 0; i < length; i++) { int val, ch = input[i]; /* * If the input is outside the valid input range, don't try * to encrypt it */ if ((ch & 0x7F) < ASCII_BASE) { output[i] = ch; continue; }

Kode for Gutmanns krypteringsteknikk (forts.) } } /* Adjust the input if necessary */ ch -= (ch < 0x80)? ASCII_BASE : DATA_BASE; /* Encrypt the value */ do val = ksg(ksginfo); while (val >= KSG_RANGE); ch = (ch + val) % range; /* Adjust the output if necessary */ ch += (ch < ASCII_RANGE)? ASCII_BASE : DATA_BASE; output[i] = ch;

Access control Sikkerhetsmekanismen av databasen må inkludere bestemmelser for å begrense tilgangen til databasen; denne funksjonen er kalt access control. Access control er laget for å beskytte brukere og deres kontoer på en database fra hverandre.

Access control Databaser tar i bruk passord-autentisering Andre viktige komponenter for access control er objekter, actions, og rettigheter. Objekter kan være tabeller, views av tabeller eller kolonner. Men vanligst er det å tildele rettigheter på pertabell-basis

Kommandoer og rettigheter access control Superuser tildeler rettigheter for hver type objekt til andre brukere. I SQL kan følgende rettigheter tildeles: SELECT: Lese data MODIFY: Forandre data i tabell. DELETE: Fjerne data i tabell. INSERT: Legge ny data i tabell. UPDATE: Forandre data. GRANT brukes for å utvide en brukers rettigheter: GRANT action(s) ON object TO user(s) GRANT OPTION videreføring av rettigheter (hvis implementasjonen gir mulighet for det) Eier A av relasjon R, tildeler rettigheter på R til en annen bruker B. Dersom GRANT OPTION er gitt, vil B kunne også gi rettigheter til andre. REVOKE brukes for å fjerne rettigheter

Eksempel 1 Bruker A1 tildeler rettigheter til bruker A2 A1 opprettede tabeller Ulike måter å gjøre det på: GRANT SELECT ON mp3s TO A2; GRANT SELECT ON cds TO A2; GRANT SELECT, INSERT, DELETE, UPDATE ON mp3s TO A2; GRANT ALL ON mp3s TO A2; Tildele rettigheter til alle: GRANT ALL ON mp3s TO PUBLIC

Eksempel 2 Bruk av GRANT OPTION og REVOKE Bruk av GRANT OPTION: GRANT SELECT ON history, mp3s TO A2 with GRANT OPTION; A2 kan dele ut rettigheter: GRANT SELECT ON mp3s TO A3; Merk: A3 kan ikke gi SELECT rettigheten videre. Bruk av REVOKE: REVOKE SELECT ON mp3s FROM A2; Merk: SELECT rettigheten på mp3s for A3 blir automatisk fjernet. REVOKE ALL ON mp3s FROM PUBLIC REVOKE GRANT OPTION FOR SELECT ON history FROM A2;

VIEWs For Access Control Virtuell tabell som lages fra en eller flere reelle tabeller. Implementeres ved å kopiere data til midlertidige tabeller. En måte å begrense tilgangen til sensitiv informasjon. For hver bruker på systemet kan det settes opp en view, som kun vil inneholde den informasjonen som den spesifikke brukeren skal ha tilgang på. Store tabeller fører til at views blir trege.

Eksempel 3 Bruk av VIEW kommando Oppretter en view kalt: gen_ansatte_info, denne vil kun inneholde informasjon som skal være tilgjengelig for alle ansatte i bedriften. CREATE VIEW gen_ansatte_info AS SELECT Navn, Epost, Arb_tlf, Arbeidernr; FROM Ansatte_info; For å fjerne view kjører man: DROP VIEW gen_ansatte_info;

Statistisk angrep En del databaser holder kunde informasjon som bidrar til generell statistisk informasjon. Da andre får tilgang til denne informasjonen, er det viktig med personvern. Dvs. at det skal være vanskelig for en person/bedrifter å finne spesifikk informasjon om en gitt kunde. Navn, kredittkortnr, adresse etc. må holdes kjult. Det skal heller ikke gå an å foreta spørringer som gir én rad som svar, da dette tilsvarer én spesifikk kunde.

Løsning En mulig løsning er å kunne filtrere bort spørringer som ikke er en aggregate forespørsel (Dvs, som beregner over flere rader og returnerer en enkel resulat for hele settet.) The aggregate funksjon i standd SQL er: AVG(col) : returnerer gjennomsnittet av verdien i kolonnen. COUNT(col): returnerer antall verdier i kolonnen. MAX(col): Returnerer den største verdien i kolonnen. MIN(col): returnerer den minste verdien i kolonnen. SUM(col): returnerer summen av dataen i kolonnen.

Eksempel 4 Finne gjennomsnittslønnen for en person i byen Reno: SELECT AVG(income) FROM customers WHERE city = reno ; Likevel vil informasjonen som vi ønsker å holde skjult bidra til den informasjonen vi gir ut. Dersom kommandoen nedenfor returnerer 1, vet vi at det kun fins en slik person i Reno: SELECT COUNT(income) FROM customers WHERE city = reno AND stage = nv AND age =72; Dermed kan vi finne inntekten til denne personen slik: SELECT AVG(income) From customers WHERE city = reno AND state = nv AND age=72;

Eksempel 5: Et mer generelt angrep Går ut på å foreta indirekte spørringer: 1. Finne antall mennesker i Virginia: SELECT COUNT(*) FROM customers WHERE state = va ; Result: 10 000 $ 2. Finne gj.snittslønnen i Virgina + gj.snittslønnen til målet vårt: SELECT AVG(income) FROM customers WHERE state = va OR (city = reno AND state = nv AND age =72); Result=60 001 $ (Antall personer = 10 001) 3. Finne gjennomsnittslønn i Virginia SELECT AVG(income) FROM customers WHERE state = va Result= 60 000 $ 4. Den totale lønnen i Virginia : 10 000 * 60 000 = 600 000 000. 5. Målet vårt har følgende lønn: 60 001*10 001 600 000 000 = 70 001$

Oppsummering Hovedmekanismen innen sikkerhet for database systemer omhandler access control: passord-autentisering og tildeling av rettigher Kun superuser kan foreta operasjoner på objektene i databasen, andre må tildeles rettigheter. Ha kontroll over spørringene som blir foretatt, input fra bruker. Bruk kryptering for å beskytte datastrømmen. Beskytter ikke dataen i databasen Beskytt innholde i databasen, ved f.eks kryptering. Andre muligheter: Sikkerhetsklasser eller roller: der rettigheter tildeles rn rolle og en rolle tildeles en bruker.