Los ataques de ingeniería social. Recomendaciones contra una de las amenazas más extendidas de ciberseguridad.

El pasado 5 de febrero fue el día Mundial de la Seguridad a Internet. En el marco de celebración de este día, aprovechamos para compartir unas recomendaciones de seguridad contra los ataques de ingeniería social. La seguridad de un sistema radica en la seguridad del eslabón más débil. Es por ello que cuando se diseña un sistema informático se revisa cuidadosamente que toda la tecnología (servicios, aplicaciones, protocolos, etc.) tenga unas mínimas garantías de seguridad. Lo que a veces no se revisa tan cuidadosamente es la robustez del sistema frente a descuidos o fallos humanos, y esto siempre es un punto débil de los sistemas. La ingeniería social es el conjunto de acciones que tienen como finalidad el robo de información o el acceso no autorizado a sistemas informático mediante la manipulación psicológica de usuarios reales, aprovechando las tendencias naturales y las reacciones emocionales de las personas. ¿Cómo te pueden atacar? Una de las prácticas más habituales de ingeniería social es la del phising, correos electrónicos que simulan venir de instituciones de confianza y que nos redirigen a una página web falsa donde nos piden información sensible y la víctima, de forma vuluntaria, introduce sus datos personales y claves de acceso. Otra de las modalidades de ingeniería social es el baiting. Esta modalidad tiene como objetivo robar datos corporativos. Consiste en dejar, por ejemplo, un USB infectado al alcance de un empleado para que este lo encuentre y lo conecte en su ordenador. Una vez instalado, el usb ejecuta software malicioso que permite a los atacantes acceder a los datos de la compañía. Otro ejemplo de estos ataques es...

Buenos propósitos en tecnología para el 2019

Esperamos que este 2018 haya sido un año muy provechoso. Desde el Observatorio Tecnológico de los Estudios de Informática, Multimedia y Telecomunicación, despedimos el año 2018 con algunos consejos para aprovechar la tecnología al máximo y no tener sobresaltos: Mantén tu software actualizado Asegúrate de estar trabajando con la versión más reciente del sistema operativo y las aplicaciones que estás utilizando. Son especialmente críticas aplicaciones como el navegador web, los lectores de documentos (PDF, Word), antivirus, etc. Puede ser prudente esperar un par de días antes de instalar actualizaciones que no sean críticas, por si da algún problema. Pero no es buena la costumbre de darle siempre al botón “pregúntame mañana” cuando hay una actualización. Guarda una copia de seguridad de tu información Haz una copia de tu información con frecuencia y guárdala en un lugar seguro. Según el tipo de información, utiliza la nube o dispositivos de almacenamiento externo para guardar tus copias. Si no saben qué regalarte, un disco USB externo puede permitirte guardar terabytes de información de forma segura, económica y automática. Eso sí, si optas por el disco duro externo, lo ideal es tener dos discos duros con la copia de seguridad (por si uno de los dos se estropea), e irlos alternando y guardar uno de ellos en casa de algún pariente o amistad. Cuidado con la información sensible Revisa las carpetas compartidas en servicios como Dropbox y Drive: controla con quién compartes la información y qué permisos, y ten cuidado con la información que publicas en estos espacios compartidos. Cubre la cámara de tus dispositivos cuando no los estés utilizando. Ten presente que...

Descentralizando el mundo con blockchain (III)

(Trobareu la versió en català més avall) En esta serie de artículos, primero hemos visto el funcionamiento técnico de forma simplificada de una cadena de bloques como la de Bitcoin. Después hemos mostrado algunas de las aplicaciones más destacadas basadas en blockchain. Para terminar, en este artículo vamos a repasar posibles problemas de seguridad e inconvenientes que puede tener el uso de esta tecnología. Como veremos, la mayoría de los asuntos que trataremos tiene más que ver con los servicios implementados por encima de blockchain que no con la seguridad informática propiamente de la cadena de bloques. Para empezar, una primera duda moral que se nos plantea con la implantación de estas tecnologías está relacionada con los malos usos que se puedan hacer con ellas, al no existir organismos centralizados que regulen y controlen. Por ejemplo, es polémico el uso generalizado de Bitcoin para pagar actividades delictivas. El hecho de usar claves criptográficas como identidad de los usuarios que hacen y reciben los pagos en Bitcoin, añade una pseudo anonimidad a los pagos y hace que esta criptomoneda sea la forma más habitual de pago para la compra de drogas y armas en auténticos supermercados virtuales de este tipo de productos, como la archiconocida difunta web Silk Road. Sin embargo, esta aparente anonimidad puede llegar a suponer una trampa que revele el histórico de transacciones financieras de un usuario. De hecho, la policía danesa ya ha utilizado estrategias para analizar el histórico de transacciones que está publicado de forma abierta en el blockchain de Bitcoin para detener a traficantes de droga. Aunque la detención de criminales pueda parecer algo...

Optimización de código: un código más eficiente

En los primeros tiempos de la informática, programar exigía utilizar lenguajes muy próximos a la plataforma de ejecución. El código máquina o el lenguaje ensamblador permiten un control muy fino del proceso de ejecución: cómo se asignan los registros del procesador, cómo se almacenan los datos y se accede a la memoria, … Así es posible exprimir la máxima eficiencia de una plataforma, aunque el precio a pagar es la falta de portabilidad y el mayor coste de desarrollo y mantenimiento del código. Afortunadamente, hoy en día podemos utilizar lenguajes de programación de alto nivel, que abstraen estos detalles de la plataforma y nos permiten ser más productivos resolviendo problemas más complejos en menos tiempo. Sin embargo, con esta transición hemos perdido algo de eficiencia… ¿o no? Quizás tampoco tanta, porque los compiladores incorporan técnicas que permiten mejorar el rendimiento del código generado. La optimización de código es el conjunto de fases de un compilador que transforman un fragmento de código en otro fragmento con un comportamiento equivalente y que se ejecuta de forma más eficiente, es decir, usando menos recursos de cálculo como memoria o tiempo de ejecución. Es importante destacar que: La condición de tener un “comportamiento equivalente” es bastante onerosa, ya que incluye también situaciones de error donde el comportamiento debe ser el mismo. Pongamos como ejemplo una instrucción como “x = y / y“. La tentación es substituir esta expresión por “x =1“, pero es necesario garantizar que la variable y no puede ser igual a 0, porque entonces el código podría tener un comportamiento diferente según el lenguaje (p.ej. división por cero). También es fundamental garantizar que el código no será menos eficiente...