Los programadores y la criptografía

En why I don’t touch crypto explican un par de buenas razones para no tratar de inventar nada relacionado con la criptografía. Un buen recordatorio:

La generación de números (seudo)aleatorios es un problema difícil y hablan
de un fallo:

Last week’s issue in the random number generator in Cryptocat is a very good example.

The bug was an off-by-one error in their random number generator. The output of the function was still random numbers, looking at the output would clearly show random numbers. Given that fact, the natural bias for seeing code as being correct is only reinforced.

Comprender los conceptos no es suficiente, es muy fácil equivocarse:

I’m just plain not good enough. Crypto is a world where understanding the concepts, understanding the math and writing tests just isn’t good enough.

Anuncios

Falsas creencias de los programadores sobre redes y tiempo

En Falsehoods programmers believe about networks un recordatorio de cosas que deberíamos mirar porque probablemente no tenemos claras del todo.

En Falsehoods programmers believe about time otra lista para tener en cuenta sobre el tiempo en los programas que hacen.

Algunas que incluso te encuentras en los primeros cursos de programación,
pero que sigues haciendo mal:

A week always begins and ends in the same month.
A week (or a month) always begins and ends in the same year.

Ya habíamos comentado el de Algunas cosas falsas que los programadores creen sobre los nombres.

Algunas cosas falsas que los programadores creen sobre los nombres

Programar es decidir y suponer cosas: una parte importante de la disciplina es tener claro que es lo que se supone y que esas decisiones sean lo más conscientes posibles. Muchos problemas de seguridad (y también de robustez y simple funcionamiento) tienen que ver con el ‘es que yo creía …’, ‘¿quién imaginaba que alguien podría hacer eso?’ y afirmaciones similares.

En Falsehoods Programmers Believe About Names Patrick McKenzie escribe 40 suposiciones que vemos frecuentemente sobre los nombres de personas que no tienen por qué ser ciertas.

Dos ejemplos:

# My system will never have to deal with names from China.

# People have names.

Es muy difícil imaginarse todos esos casos, pero hay que tener cuidado (sobre todo dependiendo del contexto en el que nos movamos) de que nuestra aplicación no termine teniendo (o causando) problemas por suponer demasiado.

En forma humorística, ya lo decían en Exploits of a Mom.

Madoff y los programadores

Lo cuentan, por ejemplo, en BREAKING NEWS: Two Madoff Computer Programmers Charged With Conspiracy For Enabling Massive Ponzi Scheme: esencialmente dicen que sin la ayuda de los dos programadores la estafa de Madoff no hubiera posible. Por lo visto sus programas simulaban compras y ventas de activos entre los clientes que nunca habían existido.
Madoff ya había sido sentenciado, los dos programadores fueron detenidos la semana pasada.