Aprender a programar, ¿para todo el mundo?

Juan dibuja en nuestra pizarra

Suele hablarse con cierta ligereza de quién (todos) y cuándo (bien pronto) debería aprender a programar. Los que nos hemos enfrentado a gente que empezaba con ello descubrimos rápidamente que no es tan fácil. Es cierto que casi cualquiera debería poder dominar los conceptos básicos con rapidez, pero en la práctica hay personas a las que les cuesta mucho. Sobre el momento, creo que requiere un cierto nivel de madurez que no todo el mundo alcanza en el mismo momento. Luego está el siguiente nivel, que es programar bien, algo que ya no está al alcance de todo el mundo, o eso parece.

En 10 Signs You Will Suck at Programming hablan de algunas señales que nos podrían indicar que tal vez no vaya a ser lo nuestro. Parece que el autor está de acuerdo con lo que decíamos arriba:

As an Educator that teaches Full-Stack Web Development, I have taught many “first time programmers”. And the good news is that I have rarely found a student that couldn’t learn to program. I see it as a basic human skill, just like reading, writing, and arithmetic. Anyone can do it, it is part of our human capacities, but does need to be learned.

Esos indicios de dificultades a la hora de programa serían, según Jonathan Bluks:

  • Falta de curiosidad
  • Falta de autonomía e ingenio.
  • Falta de persinstencia cuando nos encontramos un problema.
  • No tener sentimiento de éxito cuando superamos un problema.
  • Impaciencia en el aprendizaje y la comprensión.
  • Aburrirse o cansarse pensando.
  • Incapacidad de pensar por sí mismo.
  • Pensamiento rígido, cerrado o desorganizado.
  • Necesidad de tener la respuesta correcta, en lugar de reconocer un rango de buenas y malas respuestas.
  • No prestar atención cuidadosa a los detalles.

Según el autor:

1 Lack of curiosity
2 Lack of autonomy and resourcefulness
3 Lack of persistence in the face of a problem
4 No feeling of success in overcoming a problem
5 Impatient about learning and understanding
6 Getting bored/tired from thinking
7 Inability to think for yourself
8 Rigid, narrow and/or disorganized thinking
9 Needing the “right” answer instead of recognizing a spectrum of “good” and “bad” answers
10 Not paying careful attention to details

Como conclusión, nos dice, programar puede ser difícil pero casi todo el mundo puede hacerlo.

While programming can be a difficult skill to learn, it is certainly one that most people can learn.

Revocación de certificados, el fin de OCSP

Teatro romano de Mérida. Columnas

Me gusta hacer el ejercicio con personas más o menos técnicas de preguntar quén ha examinado alguna vez un certificado de una página web (el famoso candadito); suele resultar que casi nadie lo ha mirado y entonces aprovecho para mirar la información que aparece y lo confusa que es. Incluso, como digo, para personas de perfil más o menos técnico. Lo malo es que entre los consejos de seguridad habituales suele estar el de examinarlos. Y lo peor es que quién más quién menos se ha encontrado con una página legítima (¿en la red interna de su empresa? ¿en alguna organización poco cuidadosa con esos temas?) en la que ha necesitado darle al botón de ‘me fío, sigue adelante’ para poder llevar a cabo su cometido.

No tiene mucho que ver (o sí) pero lo cierto es que los certificados son unos grandes maltratados.

Los certificados suelen tener la posibilidad de ser revocados (esto es, decir que ya no valen) pero, adivinen: todavía menos gente mira esa información. Hace unos meses la gente de Let’s Encrypt anunciaba el Ending OCSP Support in 2025 que supondría el fin del uso del protocolo OCSP (Online Certificate Status Protocol). en The Slow Death of OCSP comentaban con cierto detalle el tema y por eso lo traemos aquí.

Este protocolo pretende proporcionar apoyo a la revocación en tiempo real de los certificados y su verificación.

As the name suggests, OCSP is intended to support real-time certificate revocation checking.

El problema es que no se ha utilizado mucho al principio, y cuando se empezó a usar más había problemas de rendimiento.

Because browsers were not implementing OCSP, CAs got used to receiving no traffic to their OCSP servers and didn’t spend a lot of time supporting that infrastructure. By the time the usage eventually grew, OCSP performance problems were common and frequent.

Había más problemas, que el autor detalla.

La alternativa son las listas de revocación de certificados, CLR (Certificate Revocation Lists), que permitirían a los emisores de estos elementos publicar su lista, que se pueden descargar de forma periodica y usarse para la verificación.

From the very beginning, we had Certificate Revocation Lists, or CRLs. The idea behind these lists was simple: every certificate issuer would also track and continuously publish a complete list of all revoked certificates. Certificate consumers would periodically download the CRLs from the CAs they cared about and verify that the certificates they were using were still valid.

Esto ha cambiado un poco porque ahora son los responsables (y otros agentes) de los navegadores los que gestionan estas listas.

Instead of user agents consuming the CRLs directly, major browser vendors (and, presumably, operating systems) maintain their proprietary revocation checking built on continuous processing of all known CRLs.

Termina diciendo que probablemente la mejor solución es que los certificados tengan vidas relativamente cortas (unos días), y así no hay que preocuparse de revocarlos.

At the end of the day, with short-lived certificates, we—finally—have a plausible revocation checking story, even if it doesn’t actually involve any revocation.

Curioso como los pilares de nuestra seguridad tienen a veces tantas dificultades para alcanzar situaciones razonables.

Atacando a atacantes poco habilidosos

Sintetizador Moog IIIp

Volvemos al tema de las defensas poco ortodoxas. En Hacker infects 18,000 “script kiddies” with fake malware builder nos contaban el caso de alguien que se dedicó a infectar a atacantes poco hábiles.

Los script kiddies son dentro del mundo de la seguridad informática poco apreciados: normalmente consiguen herramientas que han realizado otros y las utilizan contra sus objetivos.

En este caso, alguien se dedicó a atacarles con un constructor de ataques falso, que lo que en realidad hacía era infectarles a ellos.

A threat actor targeted low-skilled hackers, known as “script kiddies,” with a fake malware builder that secretly infected them with a backdoor to steal data and take over computers.

Hasta para hacer maldades hay que saber un poco. Y tener cuidado.

Curioso.

Asegurando y promoviendo la innovación en ciberseguridad. En EEUU.

Flores

No es que haga un seguimiento exhaustivo, pero normalmente de estas cosas nos enteramos. En enero de este año el Presidente de EEUU firmó la Executive Order on Strengthening and Promoting Innovation in the Nation’s Cybersecurity donde se refuerza la idea de que hay que prestar atención a la ciberseguridad.

Esto ha cambiado mucho a lo largo del tiempo y muchas organizaciones se van dando cuenta (a veces por las malas) de que efectivamente hay que prestar atención a estos asuntos. No es que creamos que las leyes tengan efectos mágicos sobre los resultados, pero sí que es verdad que señalan direcciones y acciones que muchas seguirán.

La orden tenía 11 secciones y marcaba en algunos casos plazos (fundamentalmente para las agencia gubernamentales) sobre determinadas acciones que debían llevar a cabo, y nombra un enemigo ‘oficial’.

I am ordering additional actions to improve our Nation’s cybersecurity, focusing on defending our digital infrastructure, securing the services and capabilities most vital to the digital domain, and building our capability to address key threats, including those from the People’s Republic of China

Por lo demás, no estoy seguro de que haya grandes novedades reseñables, más allá de la atención por parte de los políticos a cuestiones que son importante y por las que se pasa de largo en muchas ocasiones.

La policía puede limpiar tu sistema

Muro, cruz de madera y plantas

Creo que no es la primera vez que hablamos de esto, pero tampoco estoy seguro. En FBI Deletes PlugX Malware from 4,250 Hacked Computers in Multi-Month Operation nos cuentan como el FBI borró, con autorización judicial, un programa malicioso (malware) de más de 4000 sitios.

The U.S. Department of Justice (DoJ) on Tuesday disclosed that a court-authorized operation allowed the Federal Bureau of Investigation (FBI) to delete PlugX malware from over 4,250 infected computers as part of a “multi-month law enforcement operation.”

Si lo pensamos, es bastante interesante como este tipo de acciones puden resonar en el sentido de que nos parezca positivo que las policías se dediquen a protegernos, aunque el tema puede tener sus propias aristas: ¿entrar en mi sistema para arreglarlo? ¿Y si al arreglarlo estropean otra cosa? ¿Es legítimo puesto que por mi inacción se pueden estar produciendo daños a otros?

El trabajo consistión en borrar los ficheros creados por el programa malicioso, borrar las claves de registro del programa que le permitían ejecutarse automáticamente, crear un programa temporal que borraba el programa después de detenerlo, y algunas tareas más de limpieza.

Según el FBI no era peligroso para las máquinas infectadas.

The FBI said the self-delete command does not affect any legitimate functions or files on the targeted devices located within the U.S. nor transmit any other data from them.

Interesante.