Directoris encriptats amb CryptoAPI

Fa uns mesos vaig estar fent neteja al meu disc dur i em vaig donar compte de que tenia moltissimes coses que em podien comprometre, accessibles per a qualsevol membre de la meva familia (fotos de festes bojes i tal :P). Teniu alguna cosa que amagar? Documents importants? Els emails? Les vostres imatges secretes? Anem a posar una miqueta més de seguretat (gracies a la nostra paranoia) en les nostres vides!

Com diu el titular, en aquest article explicaré com configurar qualsevol carpeta perque estigui encriptada.


Requeriments:

  • L’últim kernel estable
  • Baixeu-lo de kernel.org si no el teniu ja a /usr/src. En el moment d’escriure aquest article és el 2.4.22. No em liaré a explicar ara com configurar un kernel, hi han milers d’articles i HOWTOs que ho expliquen i no és el propòsit d’aquest document (buscant al google facilment en trobeu molts, com per exemple aquest).

  • El cryptoapi
  • Baixeu-lo d’aqui. L’arxiu és el patch-int-2.4.21.0.gz (no us preocupeu si no trobeu la versió per el vostre kernel, funciona igual).

  • El cryptoloop
  • De la mateixa pàgina, i l’ultima versió que he vist és la patch-cryptoloop-jari-2.4.22.0.

Comencem!

Bueno, tenim les fonts del kernel a /usr/src/linux i tenim els pegats a /usr/src. Ara entreu a /usr/src/linux i executeu:

# patch -p1 <../patch-int-2.4.20.0 (i us sortiran els arxius que canvia)
# patch -p1 <../patch-cryptoloop-jari-2.4.22.0 (aqui també)

Si tot ha anat bé, ja podeu fer un make menuconfig (o lo que sigui que feu per configurar el kernel) i veureu que teniu una nova entrada al kernel: “Cryptographic options”. Alli dintre teniu que seleccionar Cryptographic API i una xifra, per exemple Twofish. Torneu al menu principal i escolliu Block devices, i dintre “loopback device support” i us apareixerà “cryptoloop support”, que també heu de marcar. Depenent de si ho compileu al kernel o com a moduls heu d’afegir els moduls que voleu carregar a l’arrancar l’ordinador a l’arxiu corresponent. Jo ho tinc compilat al kernel.

Compileu el kernel i tota aquesta pesca i arranqueu i ja teniu soport per directoris encriptats!

Com preparar-ho:

Posem per exemple que voleu encriptar les vostres imatges secretes. Cada directori encriptat estarà guardat en un arxiu que guardarem on més ens convingui. Crearem l’arxiu d’aquesta manera:

$ dd if=/dev/urandom of=/home/edgar/arxiuencriptat bs=1M count=50

canviant els paràmetres que s’hagin de canviar, com per exemple la direcció de l’arxiu encriptat i el numero de megues que ocuparà el directori (bs ens indica el tamany de cada bloc (pot ser 1K, 1M, 1G…) count ens indica el numero de sectors. 500 sectors de 1M cada un, fan 500 megues). Aquesta és una cosa que heu de decidir ara, ja que un cop fet, no es pot canviar el tamany de l’arxiu i si alguna vegada arribeu a ocupar tot l’espai del directori, n’haureu de fer un altre de més gran i moure les dades alli. Fixeu-vos que dd agafa les dades de /dev/urandom, un generador de numeros aleatoris del kernel. Això només és per més paranoia encara (mireu el document que he fet servir per escriure aixo per entendre per què)

Un cop tenim l’arxiu creat (no desespereu, trigarà depenent del tamany de l’arxiu :), heu de “montar” l’arxiu a un dispositiu especial del kernel, el loop, com si fos un dispositiu més del sistema (per exemple /dev/hda). I això ho fem amb el comand “losetup”:

$ losetup -e twofish /dev/loop0 /home/edgar/arxiuencriptat

Fixeu-vos que hem seleccionat la xifra que haviem compilat al kernel, twofish, però si havieu seleccionat alguna altre, només ho heu de canviar aqui.

Ens sortirà això:

Available keysizes (bits): 128 192 256
Keysize: 128
Password :

Seleccionarem el tamany de la clau introduïnt el numero corresponent. Seleccioneu el que volgueu depenent de la vostra paranoia… jeje. Un cop fet aixo, ens preguntarà per la contrasenya que voleu per poder accedir al disc. Per més seguretat, escolliu una frase bastant llarga, i numeros i lletres a l’atzar (però recordeu que poseu perque si no no hi podreu accedir…).

Ara el que hem de fer és donar format al dispositiu com si d’un disc dur es tractés. Podeu escollir el sistema d’arxius que més us agradi. Per exemple:

$ mkfs -t ext2 /dev/loop0

Ja tenim preparat el nou dispositiu per ser montat. Ho fem amb el mount de tota la vida. Escolliu el directori que voleu montar, com per exemple /home/edgar/imatges (el directori ha d’existir i estar buit) i executeu:

# mount -t ext2 /dev/loop0 /home/edgar/imatges

I ja esta! Copieu el que volgueu, però jo us recomano una cosa abans de fer-lo servir definitivament: comproveu que la contrasenya que heu escollit per el dispositiu funciona de veritat, perquè quan la creeu no hi ha confirmació. Per fer-ho, creeu un directori o un arxiu al directori encriptat, i després desmonteu el dispositiu:

# umount /home/edgar/imatges

i també desmonteu el dispositiu amb:

# losetup -d /dev/loop0

Després torneu a montar el dispositiu amb les comandes anteriors (pero sense la de $ mkfs -t ext2 /dev/loop0, evidentment) i comproveu que podeu accedir al directori o arxiu. Si podeu, enhorabona, teniu una mica més de seguretat en les vostres vides 🙂

Com fer-ho servir en el dia a dia:

Haver d’executar tants comandos per montar un directori és una mica rollo, perque heu de entrar com a root i executar totes les comandes des d’alli. Podeu agilitzar la cosa creant un petit script que ho executi tot, com a root, o també podeu afegir una linea a /etc/fstab com per exemple:

/home/edgar/arxiuencriptat /home/edgar/imatges ext2
loop=/dev/loop0,encryption=twofish,noauto,user 0 0

canviant les coses que siguin necessaries (per exemple, el sistema d’arxius o la xifra). Aixi que per poder accedir a les meves imatges, només he d’executar com a usuari normal:

$ mount /home/edgar/imatges

I em demanarà la contrasenya. La poso i tots contents 🙂

Espero que us hagueu divertit amb aquest article, i que us ajudi a ser més paranoics si cal en el dia a dia, si és possible! Ara només he posat com obtenir un directori encriptat, però és molt similar a obtenir una partició sencera encriptada. El rendiment general del sistema baixa si es fa aixi… però si algú ho fa, que ho expliqui per aqui!

P.D. Aquest article l’he de revisar perque ara mateix no puc comprovar que seguint pas a pas el que he posat funcioni, ja que ho he fet més o menys de memòria i mirant els documents que vaig fer servir. Però em sembla que ja està tot…

Ale, a passar-ho be!
Autor: mengor

This entry was posted in Seguretat. Bookmark the permalink.

10 Responses to Directoris encriptats amb CryptoAPI

  1. mengor says:

    pos res, que no me’n fiava d’algunes coses que he escrit i he vist que feia be. He instalat el cygwin aqui al curro, m’he baixat tot l’stuff necessari i he vist que hi ha alguns errors a l’escrit (però no veig per enlloc la opció d’editar). Suposo que els administradors del “site” podran modificar el meu article, i després borrar el comentari aquest.

    Comencem:

    On posa:

    # patch -p1 ../patch-int-2.4.20.0 (i us sortiran els arxius que canvia)
    # patch -p1 ../patch-cryptoloop-jari-2.4.22.0 (aqui també)

    Si tot ha anat bé, ja podeu fer un make menuconfig (o lo que sigui que feu per configurar el kernel) i veureu que teniu una nova entrada al kernel: “CryptoAPI”. Alli dintre teniu que seleccionar Cryptoapi, Cryptoloop i una xifra, per exemple Twofish. Depenent de si ho compileu al kernel o com a moduls heu d’afegir els moduls que voleu carregar a l’arrancar l’ordinador a l’arxiu corresponent. Jo ho tinc compilat al kernel.

    Ha de posar:

    # patch -p1 <../patch-int-2.4.20.0 (i us sortiran els arxius que canvia)
    # patch -p1 <../patch-cryptoloop-jari-2.4.22.0 (aqui també)

    Si tot ha anat bé, ja podeu fer un make menuconfig (o lo que sigui que feu per configurar el kernel) i veureu que teniu una nova entrada al kernel: “Cryptographic options”. Alli dintre teniu que seleccionar Cryptographic API i una xifra, per exemple Twofish. Torneu al menu principal i escolliu Block devices, i dintre “loopback device support” i us apareixerà “cryptoloop support”, que també heu de marcar. Depenent de si ho compileu al kernel o com a moduls heu d’afegir els moduls que voleu carregar a l’arrancar l’ordinador a l’arxiu corresponent. Jo ho tinc compilat al kernel.

    I ademés, on posa:

    també podeu afegir una linea a /etc/fstab com per exemple:

    /home/edgar/arxiuencriptat /home/edgar/imatges ext2 loop=/dev/loop0,encryption=twofish128,phash=rmd160,loinit=1,noauto,user 0 0

    canviant les coses que siguin necessaries (per exemple, la xifra i el tamany de la clau: si heu posat tamany 265, poseu twofish256).

    Ha de posar:

    també podeu afegir una linea a /etc/fstab com per exemple:

    /home/edgar/arxiuencriptat /home/edgar/imatges ext2 loop=/dev/loop0,encryption=twofish,noauto,user 0 0

    canviant les coses que siguin necessaries (per exemple el sistema d’arxius o la xifra).

    ———

    Espero que no hi hagi cap més errada! 🙂

    P.D. Als administradors: no podeu permetre l’edició dels articles per part dels creadors?

  2. davidcg says:

    Lo del tamaño de la key veo que lo mayor es de 256…

    ¿No sería más seguro encriptar con una de 2048 de GnuPG?, aunque creo que en algunos paises (tal vez incluso en españa) esa encriptación tan fuerte se considera delito y está regulada por el mismo organismo que regula el armamento.

    Por supuesto con GnuPG no podemos tener un directorio o una partición como con este método.

    Otra cosa, en el kernel 2.6.x me suena haber visto una entrada sobre encriptación. Suena interesante que lo incluyan ya por defecto.

    Hay otras cosas muy interesantes sobre estos temas que investigué un día que una noticia sobre la RIIA o la SGAE no me acuerdo me puso de muy mala leche.

    IIP, es una red irc totalmente anónima, nadie puede averiguar tu IP, no hay servidor central. Y es software libre sino recuerdo mal.

    Te conectas con cualquier cliente de irc al localhost y el puerto que tu quieras.

    Freenet, al instalarlo crea un nodo propio, luego te conectar mediante el navegador a localhost y un puerto, y poniendo una cadena rara en la “web” que te sale puedes acceder a páginas, archivos y en definitiva todo lo que permite el http o incluso subir archivos y páginas.

    Ténicamente no se como funciona y en la práctica tengo que investigar aún, pero en teoría podriamos subir y bajar toda clase de cosas como canciones y demás de maner a totalmente anónima y segura.

    Ideal para su uso en dictaduras.

    Ya buscaré las webs de esos dos programas y probaré a escribir un artículo básico.

    No vaya a ser que dentro de 10 años necesitemos estas cosas viendo como está la cosa con el TCPA, Palladium, flipadas de la RIIA y SGAE y demás chistes.

    🙂

    David Cifre García
    “La vida és una malaltia de transmissió sexual amb un 100% de mortalitat”

  3. sergi says:

    Als darrers 2.4 ja ve per defecte la criptoapi, no?

    Actualització: SI…ara m’en recordo…per alguna cosa s’ha de notar que vaig estar minimament atent a la xerrada del Tossati a la Hispalinux, no? 🙂 Si, la criptoapi ja está als darrers releases de la 2.4

    I per cert, si, 256 es poc avui en día…per a gent paranoica com jo :), pero contra més gran la clau més temps en desencriptar….no vull pensar en una partició de varis giges….i pel tema de la legislació, ara mateix no m’en recordo com estava espanya, pero encara que m’agrada anar de legal, si hi hagues una que em limites l’encriptat, ja et dic que me la passaría pel forro per inmoral, estúpida i unes quantes cosses més que no diré aquí.

    Ara ja només fa falta un article de com fer servir la criptoapi i tot aixó per encriptar tots els sistemes de fitxers (mandrake crec recordar que incloia un a la instalació, no?) i fins i tot la swap (si, si, la swap).


    sergi nuez
    si el programari lliure no és la resposta, la pregunta és incorrecta

  4. mengor says:

    Yo sólo he probado el algoritmo twofish, pero seguro que usando algún otro puedes obtener el tamaño de la clave deseado. Sólo es question de ir probando los algoritmos uno a uno o buscar por el web las características de cada uno 🙂

    Si es cierto que en el kernel 2.6 estas opciones de criptografía ya vienen por defecto, en la página del CryptoAPI ya dijeron hace tiempo que tenían esa intención, y por ello ahora han puesto un Disclaimer en la parte de abajo de http://www.kernel.org donde advierten que el uso de la criptografia es ilegal en ciertos lugares y que no debe ser exportado a lugares vetados por estados unidos y tal… xD Como si poniéndolo en la web ellos no lo pudieran usar… Estas cosas legales a veces hacen reir!

    El IIP yo lo uso a veces, pero sólo como curiosidad, porque no tengo nádie con quién hablar por alli 🙁

    El freenet también lo he usado, pero a mi me parece que es endemoniadamente LEEEENTO… ufff, desesperante! Pero todo puede ser cosa de configuración, a alguien le va aceptablemente rápido?

    Saludos!

  5. sergi says:

    si que es poden editar….els que están a la teva bitacola, pero no els altres (com és el cas d’aquest). El que passa es que si edites un article que tens a portada torna a la cua de pendents, i és un pal, pero és que sino es podríen fer burrades un cop está a portada 🙂


    sergi nuez
    si el programari lliure no és la resposta, la pregunta és incorrecta

  6. mengor says:

    que me l’editi el marble, no? 🙂

  7. jBilbo says:

    Pos això :), per cert molt bon article felicitats.

    Jonathan Hernández
    Linux User #280862 :: http://counter.li.org/
    GnuPG key ID: 348EAC17 :: pgp.escomposlinux.org

  8. mengor says:

    Gracies per canviar l’article! Però falta una part! la del /etc/fstab

    jeje ^_^

  9. sergi says:

    ja esta arreglat

  10. utopic says:

    Per navegar de forma anònima, que no vol dir encriptada, es podem fer servir proxys, si et fies del proxy, i n’encadenes uns quants si no t’importa perdre una mica de velocitat. Hi ha l’anon-proxy [apt-get rulez!] que suposa que fa la navegació anònima, pero no el correu, ni l’IRC ni res mes, no per qüestions tècniques sinò per evitar abusos [cuatre retocs a l’anon-proxy i anònim per tots els ports si no m’equivoco].

    — Utopic

    In a world without walls,
    who needs gates and windows?

    http://www.gnu.org

Leave a Reply