Avatar billede datamaker Nybegynder
20. april 2004 - 21:40 Der er 18 kommentarer og
1 løsning

Krypterer/dekrypter et password field

Jeg har et behov for at læse passwords i vores 3. parts systemdatabasen. Men da det er personfølsomme oplysninger der ligger i databasen, er det åbenbart krypteret. Er der i oracle en funktion eller procedure til at klare et sådan problem for mig, eller har vores leverandør selv lavet en form for kryptering?

Jeg er ganske ny i forbindelse med oracle, så bær venligst over med mig, hvis der kommer nogle mærkelige spg.

Denne sætning viser password og kundenummer
Select navn, password from kreg where id=xxxxxxxxxx;

Bemærk af hensyn til vores datasikkerhed, så er denne sætning næsten rigtig. Fields og tabeller mv. er ændret.
Avatar billede jpvj Nybegynder
20. april 2004 - 21:43 #1
Har du mulighed for at give os et klartext password sammen med det krypterede?

Så har vi en chance for at vurdere siturationen lidt bedre, og med lidt held lave et known plaintext angreb.
Avatar billede trer Nybegynder
20. april 2004 - 21:50 #2
Du kan læse den artikel jeg har skrevet om password kryptering (Password Systemer til husbehov) - den er skrevet med MsSQL kodeeksempler - men principperne gælder også Oracle (eller enhver anden database).

Grundlæggende - der er to former for kryptering - reversibel (som kan dekrypteres) og irreversibel (som ikke kan). De fleste login systemer benytter irreversibel kryptering og laver pwd kontrol ved at kryptere brugerens password og sammenligne med det krypterede.

Så hvis jeres leverandør har valgt en irreversibel algoritme, så kan han ikke hjælpe - og hvis han har valgt en simpel reversibel, så vil han sikkert ikke da det så bygger på security through obscurity og derfor ikke er særlig smart at oplyse om...

Det efterlader mulighed for  bruteforce angreb - men det tager altså ret lang tid...

Start med at prøve at kontakte jeres leverandør og hør hvad han siger.
Avatar billede datamaker Nybegynder
20. april 2004 - 22:28 #3
trer -> Ja, Jeg tænkte godt på at kontakte leverandør. Men det er et eksternt system, som jeg er ved at lave, og det er ikke sikkert det falder i god jord. Derfor vil jeg lige forsøge selv, inden jeg skal på knæ:) Du omtaler en artikel, vil du sætte et link.

jpvj -> hmm, jeg skal lige have oprettet en VPN tunnel til databasen. Jeg vender lige tilbage.
Avatar billede datamaker Nybegynder
20. april 2004 - 22:31 #4
Jeg var ved at rode lidt rundt, og faldt over OCI(eller sådan noget(API)). Der var beskrevet noget med, at man kan kalde en metode(OpenWallet) som havde noget med passwords at gøre. Endvidere var der nogle metoder til crypt/encrypt. Jeg tænkte, om det kan være det er noget i den stil der er blevet brugt
Avatar billede pnielsen Nybegynder
20. april 2004 - 22:52 #5
Open Wallet bruges normalt i webapplicationer med SSL . Ved ikke om det er brugt i det system her??

hvis det er Oracles dba_users tabel du kigger på, er den irreversibel. Iøvrigt bliver krypteringen lavet ud fra dit username. Feks: har du 2 brugere x og y med samme password, vil de ikke have samme værdi i password kolonnen i dba_users.

Mht. din application er det jo nemt at se om der er en database trigger på din tabel.
Hvis der er en trigger på som kryptere passwordet, kan du jo se hvad den gør. Hvis den kalder en function, må du ind og se om der bruges en eller anden bestemt nøgle.

Men det kan jo også være at det ligger oppe i din application, og så er du nok lidt på bar bund - da du så ikke har adgang til koden.

I Oracle har man f.eks. den pakke der hedder DBMS_OBFUSCATION_TOOLKIT. Her kan du lave reversibel passwords. Se dokumentationen på otn.oracle.com for mere info.
Avatar billede datamaker Nybegynder
20. april 2004 - 22:54 #6
Her er passwordet:
jpvj ->
1234      er blevet      AZ5UX/WUk0r0o

Jeg håber det siger dig noget. Jeg skal måske for en god ordens skyld nævne, at det ikke kun er dette password jeg ønsker dekrypteret. Jeg skal bruge alt dette for at kunne validerer en kunde mod databasen.
Avatar billede datamaker Nybegynder
20. april 2004 - 22:56 #7
pnielsen ->
Vil du uddybe lidt mere omkring det med trigger. Jeg er stødt på det, men kunne ikke umiddelbart se, om det var noget jeg skulle bruge meget krudt på. Kan jeg få en oversigt over triggers i databasen?
Avatar billede pnielsen Nybegynder
20. april 2004 - 23:09 #8
En trigger en noget du kan sætte på din tabel -som udfører en handling når du f.eks. indsætter noget i din tabel. Så den kunne f.eks. kalde en function som kryptere din streng.

login i sqlplus som den bruger der ejer tabellen og se hvad din triggere gør ved at køre denne sql:
select trigger_body from user_triggers where table_name='KREG';
Det forudsætter at du logger ind som den bruger og at din tabel virkeligt hedder KREG.
Ellers login som en dba bruger på databasen og kør denne:
select trigger_body from dba_triggers where table_name='KREG' and TABLE_OWNER='EJER';
Udskift ejer og tabel navn med det rigtige.
Avatar billede jpvj Nybegynder
21. april 2004 - 00:33 #9
pnielsen> Du har vist haft fingrene meget længere nede i Oracle end jeg får det næste år :-)

Vil overlade roret til dig.
Avatar billede trer Nybegynder
21. april 2004 - 08:38 #10
Her er artikel-linket: http://www.eksperten.dk/artikler/171

Og et lille tip; hvis du gentagne gange krypterer 1234 - får du så samme krypterede kode?  Hvis du gør, så er det ret nemt at bryde da du så kan tage fx SLUUGs ordbogsfil, kryptere den og joine på de krypterede felter.
Avatar billede datamaker Nybegynder
21. april 2004 - 08:39 #11
pnielsen-> Det lader ikke til, at der er nogen user_triggers tabel. Er der forskel på brugere. Mit problem er, at jeg er rimelig ny her på stedet, og at der ikke er dokumenteret særligt meget omkring opsætningen på Unixmaskinen(herunder oracle). Ja, faktisk ingen dokumentation overhoved. Så jeg kender kun en bruger. Kan man se brugernavnet på de forskellige brugere, da jeg formegentlig så kan finde frem til passwordet?
Avatar billede trer Nybegynder
21. april 2004 - 08:42 #12
datamaker> du mangler vist rettigheder - Check ALL_USERS og se om du har adgang til DBA_USERS. Du kan også forsøge adgang til ALL_TRIGGERS eller ALL_OBJECTS (damn... det er længe siden jeg rigtig har rodet i Oracle, håber at jeg bruger de rigtige tabel-navne :-)
Avatar billede datamaker Nybegynder
21. april 2004 - 09:03 #13
Ved at bruge all_users tabellen fandt jeg de forskellige brugere. Hmm, dette bliver ikke nemt. Jeg skal lige have fundet ud af, hvilket password de mon har fået i tidernes morgen:)

Er der nogen, som har et godt sted at begynde, hvis man skal i gang med at bruge oracle(sql+)?
Avatar billede trer Nybegynder
21. april 2004 - 09:10 #14
thja - man kan finde en del på det der hedder metalinks - http://www.metalink.oracle.com - og på dine installations-cd'er bør der være en fuld dokumentation over pl/sql. Man kan også få nogle plakater i A2 størrelse over metadata tabeller i Oracle - men jeg aner ikke hvor man får dem fra...
Avatar billede trer Nybegynder
21. april 2004 - 09:11 #15
hmm - bare for sjovs skyld - du har checket at sys/system har fået ændret passwords i forhold til default-password fra installationen ?
Avatar billede datamaker Nybegynder
21. april 2004 - 10:29 #16
trer-> Det var også min leverandørs fortolkning. Kender du std. passwordet
Avatar billede datamaker Nybegynder
21. april 2004 - 11:23 #17
trer-> Jeg har fundet det rigtige password.

pnielsen-> Jeg har vist ikke nogle rækker i user_triggers!
Avatar billede trer Nybegynder
21. april 2004 - 17:37 #18
du vil kun kunne se rækker i user-triggers såfremt triggerne er ejet af den bruger du er logget ind som. Prøv dba_triggers eller all_triggers i stedet (eller all_objects med object_type lig trigger).
Avatar billede datamaker Nybegynder
27. april 2004 - 15:02 #19
nå, jeg kommer det vist ikke nærmere med den database jeg har. Vil I smide et svar, så I alle kan få nogle point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester