Si bajás los archivos:
http://www.cse.chalmers.se/~russo/eci11/lectures/ExampleToLabeled2T.hs
http://www.cse.chalmers.se/~russo/eci11/lectures/ExampleToLabeled2U.hs
Y decís, en la terminal, ghci ExampleToLabeled2T.hs, y luego corrés la función 'execute' dentro de gchi, no te tira esto?
The result is: "PublicData"
With the label: <{} , {ALL}>
LerrLow te lo tira cuando el label que necesitás es demasiado bajo (comparado con tus privilegios y clearance actual).
Saludos!
- Fede
Cuando tenes LerrLow significa que tu programa esta haciendo algo pobrablemente inseguro, por ejemplo, tratando de escribir en lugares mas halla de tu current label, etc.
Saludos,
Alejandro
________________________________________
From: eci-2011...@googlegroups.com [eci-2011...@googlegroups.com] On Behalf Of Matias Laporte [matias...@gmail.com]
Sent: Tuesday, August 16, 2011 4:24 PM
To: eci-2011...@googlegroups.com
Subject: [ECI-2011-T3] Exception: LerrLow
Gracias!
Matías Laporte
www.tecnogeek.com<http://www.tecnogeek.com>
www.matiaslaporte.com.ar<http://www.matiaslaporte.com.ar>
| Güenas: Me da un poquito de vergüenza preguntar, pero el enunciado Day 2.3 dice (1): "it should not be possible to concatenate two secret files and store ... into a public one" Inmediatamente dice (2): "cat2:: (Less s1 s3, Less s2 s3) => ... s1 ... s2 ... s3 -> s3" Yo entiendo que (1) H H L no esta permitido (2) s1 y s2 deben tener menor nivel de seguridad que s3 Hasta aca vengo bien? pero no veo que (1) y (2) sean coherentes. Qué estoy malinterpretando? Gracias Carlos Pantelides ----------------- http://seguridad-agile.blogspot.com/ |
H H L no está permitido, correcto. El tipo de la función te dice que, para cualquier tripla de privilegios (s1, s2, s3), tiene que ser que s1 <= s3, s2 <= s3, para que esta función tome esos parámetros. Entonces, s3 es el más privilegiado de los tres, pues es mayor que s1 y que s2. En H H L, estarías usando s1 = H, s2 = H, s3 = L. Pero no existe una instancia Less s1 s3, porque sería Less H L. En otras palabras, no existe s1 <= s3, porque sería H <= L, que es falso. High es estríctamente mayor que Low.
Espero no haber confundido más :s
- Fede
Leyendo tu mail en realidad veo que no hay contradicción y que mi confusión viene luego, cuando el enunciado dice:
s_file1 :: File H
s_file1 = mkFile "SecretFile1"
s_file2 :: File H
s_file2 = mkFile "SecretFile2"
p_file :: File L
p_file = mkFile "PublicFile"
execute :: IO ()
execute = do
revealIO $ cat2 s_file1 p_file s_file2
return()
Esto esta diciendo H H L, ok?
Implemento cat2 según la firma y me compila ok. Incluso se ejecuta (no hace lo que quiero aun...)
Doy vuelta todo, tal como me parece razonable:
[Trustworthy]
s_file1 :: File L
s_file2 :: File L
p_file :: File H
y
[Untrustworthy]
cat2 :: (Less s3 s1, Less s3 s2) => ....
Compila y anda (con limitaciones que no vienen al caso aun)
Otra pregunta: como accedo a la documentacion de up y amigos, como
SecLib.LatticeLH
SecLib.Trustworthy
SecLib.Untrustworthy
( o sea las limitaciones que ahora si vienen al caso...) ?
Carlos Pantelides
-----------------
http://seguridad-agile.blogspot.com/
>
[Untrustworthy]
cat2 :: (Less s3 s1, Less s3 s2) => ....
no es el correcto (asumiendo que s3 es el nivel del archivo destinatario). Cuidado a no comentar mucho el ejercicio que se termine revelando en el googlegroups.
Saludos,
Alejandro
____________________________
From: eci-2011...@googlegroups.com [eci-2011...@googlegroups.com] On Behalf Of Carlos Pantelides [carlos_p...@yahoo.com]
Sent: Wednesday, August 17, 2011 8:15 PM
To: eci-2011...@googlegroups.com
Subject: Re: [ECI-2011-T3] Duda Day 2.3
| Listo el pollo, gracias. Hallé la doc en http://www.cse.chalmers.se/%7Erusso/seclib.htm Parece que comprendí, o al menos logré el comportamiento esperado... |