domingo, 9 de mayo de 2010

No Confíes en Nadie


¿Trust no one? Tal vez hayan escuchado ese principio que en seguridad informática se refiere al hecho de desconfiar básicamente de –casi- todo y hasta de todos. ¿Qué tanto nos puede ayudar ese principio para servirnos de guía?

Instalo un sistema operativo: cómo saber si un par de líneas de código no están escritas para enviar cada tecla que presiono a un centro de comando y control gubernamental o corporativo? Un fabricante de software bien podría tratar de espiarnos por ejemplo con esos mensajes aparentemente inofensivos de “¿Desea permitir enviar este error para mejorar el producto?” O mejor aún, sin siquiera preguntarnos nada lo manda cifrado a la nave nodriza y pasa desapercibido.

Cuando compramos un ruteador, cómo saber que el hardware hace sólo lo que se supone debe de hacer? ¿Podemos estar seguros de que no hay instrucciones obscuras inscritas en el hardware que cambian el comportamiento del dispositivo de tal manera que lleva a cabo acciones a nuestras espaldas?

Hasta ahora, podría parecer paranoia extrema y sin sentido digna de la serie X-Files. Sin embargo, tal vez no está tan descomunalmente descabellado; piensen en todo el software y hardware que poseen en sus instituciones: no saben lo que pasa realmente tras bambalinas. Y aquí la palabra clave es confianza. Confían en que su fabricante no está inyectando instrucciones indeseables, confían en que la comunidad informática ya se hubiera dado cuenta; otorgamos un grado de confiabilidad a esos fierros, estándares y software donde está montado nuestro negocio. Depositan una confianza porque se sienten seguros de que los fabricantes de software y/o hardware son serios, respetables y que su negocio se vería afectado si algo obscuro saliera a la luz.

Pero esos mismos fabricantes serios y respetables, están bajo el peso de la ley y de los gobiernos que tienen fines de seguridad nacional más allá de los fines tan mundanos como es la supervivencia de una empresa.

Dados los argumentos expuestos, nace de manera natural el principio de “trust no one”. Desconfía de todo lo que no puedas comprobar por ti mismo, de lo que no hayas creado tú. Porque de otra manera no puedes estar 100% seguro de que esa aplicación y que ese firewall hacen sólo lo que dicen sus manuales. Y claro, si no puedes confiar en tu sistema operativo, mucho menos en cuestiones más “sociales” como por ejemplo los servicios de Facebook (privacidad), Twitter (exposición) o LinkedIn (conectividad). Recuerden, trust no one puede aplicar a una amplia gama de cuestiones que van desde el ratón, un antivirus y hasta hacer click en una liga.

Ahora bien, aquí viene la primera incongruencia del “No Confíes en Nadie”, dado que uno mismo es alguien. Así es que en principio, en todo caso tendría que confiar en al menos una persona (que sería yo mismo).

Por otro lado, para realmente no confiar en nadie, tendría que empezar desde fabricar mis propios chips (a juntar silicón se ha dicho) hasta acabar escribiendo mi propio sistema operativo y sus aplicaciones. Obvio no voy a escribir backdoors en mi hardware o software pero aún así podrían atacar mi sistema; tal vez haya hecho tal cantidad de errores que permitirían a un atacante entrar a mi sistema porque parece queso gruyere.

Así es que no se trata de “No confíes en nadie”, sino “Confía en la menor cantidad posible” o un “No confíes ciegamente”. En seguridad hay que ceder para obtener (tradeoff). No debemos estar en los extremos de confiar plenamente o desconfiar de absolutamente todo.

Por ejemplo, confiar ciegamente me llevaría a hacer click en cuanta liga me llegue, a instalar toda aplicación que me parezca cool o a meter mis datos personales y/o financieros en todo tipo de sitios. Desconfiar de todo derivaría tal vez en nunca más usar un equipo de cómputo o Internet. Dícese de confianza: “que posee las cualidades recomendables para el fin a que se destina”.