Sikkerhedshensyn for MCOP |
forrige | MCOP: objektmodel og strømme | næste |
Eftersom en MCOP-server lytter på en TCP-port, kan potentielt set alle (hvis du er forbundet til internettet) forsøge at forbinde til en MCOP-tjeneste. Derfor er det vigtigt at identificere klienter. MCOP bruger md5-auth protokollen.
Protokollen md5-auth gør følgende for at sikre at kun udvalgte (pålidelige) klienter kan forbinde til en server:
Den antager at du kan give hver klient en hemmelig cookie.
Hver gang en klient forbindes, verificerer den at denne klient kender til den hemmelige cookie, uden virkelig at sende den (ikke engang på en form som nogen som lytter på netværkstrafik kunne finde ud af).
For at give hver klient den hemmelige cookie, putter MCOP den (normalt) i mcop
mappen (i /tmp/mcop-
). Du kan naturligvis kopiere den til andre maskiner. Men hvis du gør det, så brug en sikker overførselsmekanisme, såsom scp (fra ssh). USER
/secret-cookie
Godkendelsen af klienter anvender følgende skridt:
[SERVER] opret en ny (tilfældig) cookie R
[SERVER] send den til klienten
[KLIENT] læs den "hemmelige cookie" S fra en fil
[KLIENT] bland cookierne R og S for at oprette en blandet cookie M med MD5-algoritmen
[KLIENT] send M til serveren
[SERVER] verificerer at blanding af R og S giver præcis samme cookie som cookien M som blev modtaget fra klienten. Hvis dette stemmer er godkendelsen lykkedes.
Denne algoritme skulle være sikker, under forudsætning af at
De hemmelige og tilfældige cookier er “tilfældige nok” og
MD5-algoritmen ikke tillader at “originalteksten” kan afgøres, det vil sige den hemmelige cookie S og den tilfældige cookie R (som er kendt alligevel), fra den blandede cookie M.
MCOP-protokollen starter hver ny forbindelse med en godkendelsesprocess. Basalt ser den sådan her ud:
Serveren sender meddelelsen ServerHello, som beskriver de kendte godkendelsesprotokoller.
Klienten sender meddelelsen ClientHello, som indeholder godkendelsesinformation.
Serveren sender meddelelsen AuthAccept.
For at se at sikkerheden virkelig virker, bør vi kigge på hvordan meddelelser behandles for ikke godkendte forbindelser:
Inden godkendelsen er lykkedes, tager serveren ikke imod andre meddelelser fra forbindelsen. I stedet, hvis serveren for eksempel forventer sig meddelelsen “ClientHello”, og får meddelelsen mcopInvocation, så lukker den ned for forbindelsen.
Hvis klienten ikke sender en gyldig MCOP-meddelelse overhovedet (ingen magisk værdi MCOP i meddelelseshovedet) i godkendelsesfasen, uden noget andet, så lukkes der for forbindelsen.
Hvis klienten forsøger at sende en meget stor meddelelse (> 4096 byte) under godkendelsesfasen, kappes meddelelsesstørrelsen ned til 0 byte, hvilket gør at den ikke accepteres til godkendelse. Dette er der for at forhindre at ikke godkendte klienter sender f.eks. en 100 Mbyte meddelelse, som ville blive modtaget og kunne forårsage at serveren løber tør for hukommelse.
Hvis klienten sender en fejlagtig ClientHello meddelelse (en hvor afkodningen mislykkes), så lukkes der for forbindelsen.
Hvis klienten ikke sender noget i det hele taget, skal en tidsgrænse overskrides (endnu ikke implementeret).
forrige | hjem | næste |
MCOP for CORBA-brugere | op | MCOP protokolspecifikation |