viernes, 17 de noviembre de 2023

Que es el fingerprint de un servidor SSH y que utilidad tiene Y Entendiendo (y usando) SSH fingerprint

Está Escrito:

Y el Verbo se hizo carne, y habitó entre nosotros, y vimos su gloria, gloria como del unigénito del Padre, lleno de gracia y de verdad. (Juan 1:14)

Tomado de: geekland

 La primera vez que nos conectamos a un servidor SSH obtenemos mensajes de advertencia sobre el fingerprint similares al siguiente:

The authenticity of host '192.168.1.123 (192.168.1.123)' can't be established.
ECDSA key fingerprint is SHA256:TiqZXJITgH/kUE9WoNP4TF2xkescmKxFIe33TpsQRC7.
Are you sure you want to continue connecting (yes/no)?

Esta advertencia es para prevenir que nos conectemos a un servidor SSH malicioso y evitar ataques man in the middle. En lenguaje llano, la advertencia nos está preguntando si estamos seguros de conectarnos al servidor SSH que tiene el fingerprint SHA256:RiqYXJITgH/kUE9WoNP4TF2xkescmKxFIe33TpsQRC8.

¿QUÉ ES EL FINGERPRINT DE UN SERVIDOR SSH?

En el momento que se generan las claves pública y privada de un servidor SSH, se genera una huella digital única para cada una de estas llaves. Esta huella digital única es el fingerprint y su principal función es identificar de forma inequívoca un servidor.

¿QUÉ UTILIDAD TIENE EL FINGERPRINT DE UN SERVIDOR SSH?

En el momento que nos conectamos al servidor SSH se inicia un proceso autenticación. El proceso es el siguiente:

  1. Cuando el cliente se conecta al servidor consulta el archivo ~/.ssh/known_hosts. El fichero ~/.ssh/known_hosts es una base de datos de fingerprints de los servidores SSH a los que nos hemos conectado.
  2. Si el fingerprint del servidor SSH al que nos conectamos está almacenado en ~/.ssh/known_hosts, querrá decir que no es la primera vez que nos conectamos al servidor. Por lo tanto a priori se trata de un servidor conocido y seguro al que nos podremos conectar sin ningún tipo de problema.
  3. En el caso que el fingerprint del servidor SSH no esté almacenado en nuestro ~/.ssh/known_hosts nos aparecerá el mensaje de advertencia que hemos visto al inicio del artículo. En este caso deberemos proceder según se indica en los puntos 4 y 5.
  4. Si no es la primera vez que nos conectamos al servidor y nos aparece la advertencia tenemos que responder no y abortar la conexión. Si nos encontramos con esta situación pueden estar pasando 2 cosas. La primera de ellas no es peligrosa y es que el administrador del servidor haya generado un par de llaves nuevo. Si este es el caso nos podemos conectar al servidor sin ningún tipo de problema.  La segunda es que estemos recibiendo un ataque del tipo man in the middle, y que el servidor al que nos estamos conectando sea un servidor malicioso que pretende robar nuestras credenciales. Una vez robadas nuestras credenciales el atacante podrá conectarse al servidor real en nombre nuestro. Si este es el caso aborten de inmediato la conexión al servidor.
  5. Si aparece el mensaje de advertencia y es la primera vez que nos conectamos al servidor no nos debemos preocupar. Tan solo tenemos que comprobar que el fingerprint de la advertencia corresponda al fingerprint del servidor SSH. Si el fingerprint es correcto escribiremos yes, presionaremos la tecla Enter y seguidamente nos conectaremos al servidor. En el momento que nos hayamos conectado al servidor, el fingerprint del servidor se almacenará en nuestro archivo ~/.ssh/known_hostsEn el caso que el fingerprint no sea correcto debemos responder no y abortar la conexión de inmediato.

Por lo tanto queda claro que el fingerprint es una mecanismo para asegurar que nos estamos conectado al servidor al que realmente queremos conectarnos.

¿CÓMO PODEMOS SABER EL FINGERPRINT DE NUESTRO SERVIDOR SSH?

Nos dirigimos al directorio donde se almacenan las claves privadas y públicas de nuestro servidor. Para ello ejecutamos el siguiente comando en la terminal:

cd /etc/ssh

Para visualizar nuestras claves privadas ejecutamos el siguiente comando en la terminal:

ls -l

El resultado obtenido en mi caso es el siguiente:

root@debian:/etc/ssh$ ls -ls
total 576
-rw-r–r– 1 root root 553122 ene 3 2017 moduli
-rw-r–r– 1 root root 1723 ene 3 2017 ssh_config
-rw-r–r– 1 root root 2513 may 10 2015 sshd_config
-rw——- 1 root root 668 jul 17 2014 ssh_host_ed25519_key
-rw-r–r– 1 root root 601 jul 17 2014 ssh_host_ed25519_key.pub
-rw——- 1 root root 227 jul 17 2014 ssh_host_ecdsa_key
-rw-r–r– 1 root root 173 jul 17 2014 ssh_host_ecdsa_key.pub
-rw——- 1 root root 1679 jul 17 2014 ssh_host_rsa_key
-rw-r–r– 1 root root 393 jul 17 2014 ssh_host_rsa_key.pub

El fingerprint de cada una de las llaves se almacena en los ficheros que terminan con la extensión .pub.

Si en el inicio del post consultan el mensaje de advertencia que obtengo al conectarme al servidor verán que se está usando la llave ECDSA. Por lo tanto consultaré el fingerprint de la llave ssh_host_ecdsa_key.pub ejecutado el siguiente comando en la terminal:

ssh-keygen -l -f ssh_host_ecdsa_key.pub

Cada una de los términos del comando tiene el siguiente significado:

ssh-keygen: Utilidad que uso para conseguir mi propósito.
-l: Opción que indica a ssh-keygen que muestre el fingerprint.
-f: Opción para poder especificar el nombre de una llave.
ssh_host_ecdsa_key.pub: Nombre de la llave que quiero averiguar el fingerprint.

El resultado obtenido de ejecutar el comando es el siguiente:

root@debian:ssh-keygen -l -f ssh_host_ecdsa_key.pub
SHA256:TiqZXJITgH/kUE9WoNP4TF2xkescmKxFIe33TpsQRC7 root@debian (ECDSA)

El fingerprint mostrado es el mismo que el que aparece en el mensaje de advertencia de conexión al servidor. Por lo tanto nos podemos conectar al servidor sin ningún tipo de temor.

COMO VER LA FINGERPRINT DE LOS SERVIDORES A LOS QUE ME HE CONECTADO

Como hemos dicho anteriormente, el archivo ~/.ssh/known_hosts almacena la totalidad de fingerprints de los servidores a los que nos hemos conectado.

Por lo tanto para consultar la totalidad de fingerprints tan solo tenemos que ejecutar el siguiente comando en la terminal:

cat ~/.ssh/known_hosts

Procediendo de la forma que describimos en el artículo conseguiremos obtener mayor seguridad en el momento de conectarnos a servidores SSH.

Tomado de: linuxtotal

Entendiendo (y usando) SSH fingerprint 

Copyright © 2005-2023 LinuxTotal.com.mx
Se concede permiso para copiar, distribuir y/o modificar este documento siempre y cuando se cite al autor y la fuente de linuxtotal.com.mx y según los términos de la GNU Free Documentation License, Versión 1.2 o cualquiera posterior publicada por la Free Software Foundation.

Autor: Sergio González D.  

y asi evitar ataques del tipo 'man in the middle'

ssh es quizás (en mi opinión) la mejor herramienta de comunicación que existe cuando se trata de establecer contacto con un servidor remoto Linux. Al decir remoto, me refiero que puede estar situado en el escritorio de al lado o al otro lado del mundo, en la LAN o en alguna parte de Internet. Claro, el servidor tiene que estar ejecutando el demonio o servicio sshd que normalmente funciona en el puerto 22 (ver el artículo servicios para aprender más sobre como iniciarlo). La ventaja de ssh (Secure SHell, por cierto) es que es seguro, el tráfico entre los equipos es encriptado, estable, robusto, fácil de actualizar y usar, etc. Ha tenido serios bugs como cualquier otro programa pero como buen software open source es rápidamente actualizado en cuestión de horas literalmente, cuando nuevas vulnerabilidades se le conocen, además de que tiene utilerías agregadas como scp y sftp, así como clientes excelentes tanto en Linux y Windows, en fin altamente recomendable su uso en la vida diaria de cualquier administrador o usuario Linux.


¿Si todo es tan maravilloso con ssh?, ¿Entonces cual es el problema?

Muy bien. El escenario es el siguiente para entender bien lo que sucede. El cliente se conecta (por primera vez) digamos desde un equipo Windows con un cliente ssh como puede ser putty (si no usas putty, te estás perdiendo el mejor cliente ssh del mundo) a un servidor Linux y aparece el siguiemte cuadro de diálogo: (algo similar pero en modo de texto aparecería desde una consola de texto):

LinuxTotal.com.mx ssh

- mmmmm, ¿Qué diablos es esto?, No tengo tiempo de leer eso, presionaré Si, bien ya entró.


Esto es lo que el usuario común hará al no comprender realmente lo que sucede entre el cliente y el servidor ssh. Al tratarse de un protocolo de comunicación altamente seguro y con tráfico encriptado de punto a punto, entran en juego algoritmos de encriptación. Cada servidor ssh tiene una huella digital única (fingerprint) generada al momento de la instalación. Este fingerprint identifica al servidor en específico. Traduciendo el diálogo anterior diría lo siguiente:

 La llave del servidor anfitrión no está registrada en el registro. Tu
 no tienes garantía que el servidor es la computadora que tu
 piensas que es.
 La clave fingerprint del servidor es:
 1024 63:d1:48:fc:9f:7e:1e:0d:27:d1:7b:23:75:06:34:a2
 Si tu confias en este host, presiona Si para añadir la clave al
 cache de PuTTY y establecer la conexión.
 Si quieres conectarte solo una vez, sin
 añadir la clave al cache, presiona No.
 Si no confias en este host, presiona Cancelar para abandonar la
 conexión.

¿Comienza a quedar claro?, se nos está advirtiendo que el equipo al que queremos conectarnos puede no ser el nuestro, es decir SE TIENE QUE ESTAR SEGURO QUE AL SERVIDOR LINUX QUE ME ESTOY CONECTANDO ES REALMENTE EL MIO y esto solo se logra conociendo previamente el fingerprint del servidor y tenerlo en la Palm, en una nota, o en un papel en la cartera o en un block de notas de la computadora de la casa u otra ubicación, como sea. Si por razones de trabajo u otras, se requiere acceder a un servidor de producción de forma remota ES SUMAMENTE IMPORTANTE CONOCER EL FINGERPRINT DEL SERVIDOR para estar seguro que no me estén interceptando (en un momento se explica esto, calma).

Ok, si, si, pero ¿Como diablos se cuál es el fingerprint de mi servidor?

Ábrete una terminal en tu servidor Linux y te cambias al directorio de configuración de ssh:

#> cd /etc/ssh
#> ls -l
total 173
drwxr-xr-x    2 root root    344 Feb 18 00:18 .
drwxr-xr-x  107 root root   9088 Feb 17 22:57 ..
-rw-------    1 root root 132839 Jan 27 07:51 moduli
-rw-r--r--    1 root root   2517 Jan 27 07:51 ssh_config
-rw-------    1 root root    668 Oct 20 21:26 ssh_host_dsa_key
-rw-r--r--    1 root root    600 Oct 20 21:26 ssh_host_dsa_key.pub
-rw-------    1 root root    525 Oct 20 21:26 ssh_host_key
-rw-r--r--    1 root root    329 Oct 20 21:26 ssh_host_key.pub
-rw-------    1 root root    887 Oct 20 21:26 ssh_host_rsa_key
-rw-r--r--    1 root root    220 Oct 20 21:26 ssh_host_rsa_key.pub
-rw-r-----    1 root root   3482 Feb 18 00:18 sshd_config

Notarás que existen algunos archivos con terminación .pub, pues esta es la parte pública de las llaves de tu servidor ssh pero en forma de un fingerprint, es decir la llave pública generada por los algoritmos dsa o rsa. Generalmente, por default, ssh guarda su llave pública o fingerprint en este caso en el archivo ssh_host_key.pub, si mostramos su contenido se verá lo siguiente:

#> more ssh_host_key.pub
1024 35 161635971725059974812816613188513865727625643323552121445765023013612487474922451108
80703826701959121218181176403629257123317219888287730368486491009806579706597689031242574789
96617659498748196451487737641156043897343204483595648176422701566886723150233655375182156814
44474810364877205687200614515477060949257 root@linux

No nos dice mucho, pero si usamos la herramienta adecuada de las que vienen junto con ssh, se podrá conocer el fingerprint del servidor en un formato de una cadena de números hexadecimales:

#> ssh-keygen -l -f ssh_host_key.pub
1024 63:d1:48:fc:9f:7e:1e:0d:27:d1:7b:23:75:06:34:a2 ssh_host_key.pub
-l -f

Nótese que es el mismo fingerprint mostrado por el diálogo de PuTTY con lo que ahora si estamos seguros que es nuestro servidor. En este punto queda claro entonces que la línea anterior es la que deberás conocer previamente y apuntarla y/o traerla contigo de alguna manera para cuando te conectes remotamente a tu servidor Linux estés totalmente seguro que es el tuyo.

NOTA: ssh puede usar dos protocolos: versión 1 y versión 2. La versión 1 es totalmente obsoleta y con algunas vulnerabilidades conocidas y por lo tanto es inseguro y no aconsejable su uso, se incluye por compatibilidad, pero hay que usar el 2. Si usas el protocolo 1 entonces tu archivo de llave privada (del lado del servidor solamente) es ssh_host_key (rsa1).
Si usas el protocolo 2 tus archivos de llave privada son ssh_host_rsa_key y ssh_host_dsa_key que se usan indistintamente por parte de ssh, aumentando asi el nivel de complejidad en el encriptado del tráfico.
Para asegurarte que solo uses la versión 2 de ssh incluye o asegúrate de tener la siguiente línea en el archivo de configuración de ssh (/etc/ssh/sshd_config).

Protcol 2

IMPORTANTE: Obsérvese que cuando hice el ejemplo de arriba, a propósito dejé la línea de la variable Protocol como se queda por default en muchas distros y que es la siguiente:

Protcol 1,2

Aceptando ambos protocolos y en primer lugar toma el 1, como se aprecia perfectamente en el ejemplo, al observar que el fingerprint corresponde al archivo de llave privada de la versión 1. Esto es algo inaceptable en un servidor Web o de producción en alguna empresa, asi que chécalo bien si es que eres el responsable d e los sistemas Linux.


¿Y quien es Man in the middle (MiM) o el hombre intermedio?

Ahora te preguntarás, ¿Si ssh es tan seguro, entonces cual es el riesgo, o porque la necedad de tener que conocer los fingerprints de mis servidores Linux?. ssh es seguro y confiable una vez establecida la comunicación entre el cliente y el servidor, pero en la vida real no todo es tan perfecto y existe una técnica de hackeo (¿o será hacking?) llamada Man in the middle -hombre intermedio-, que consiste en que el hacker (hombre intermedio) se coloca entre dos equipos (cliente y servidor) y el también es un servidor ssh pero obviamente con otro fingerprint distinto al servidor ssh genuino. Entonces, una vez montado el ataque, es decir, lograr que el tráfico del cliente dirigido al puerto 22 del servidor real se desvié al puerto 22 del hacker, este "cachará" los paquetes en su servidor ssh y los reenviará al servidor ssh genuino y cuando este responda al cliente pasará de vuelta por el equipo del hacker, pudiendo este con una herramienta como wireshark "observar" el tráfico entre los dos y como se desencripta lo que reciba/manda para poder ser pasado por su propio servidor ssh, entonces conocerá TODO lo que circula entre los dos extremos pero desencriptado.

Se entiende ahora la importancia de no presionar "Si" de primera instancia porque si algún hacker en nuestra empresa, ciberinternet, escuela, universidad, etc. logró lo anterior, entonces cuando nos conectemos al servidor ssh la primera vez VEREMOS SU FINGERPRINT NO EL NUESTRO, y si lo conocemos previamente entonces es obvio que no es nuestro servidor y no deberemos conectarnos y por supuesto avisar inmediatamente de la situación al administrador de sistemas del lugar.

Generalmente los ataques "Man in the middle" se logran realizar cuando en la red hay switches mal configurados o no monitorizados mediante técnicas conocidas como envenenamiento arp (arp poissoning), que en pocas palabras consiste en lograr que el switch canalize o envié todos los paquetes de todos sus puertos al puerto del hacker. Es decir corrompiendo las tablas arp (la relación de la dirección IP-dirección MAC) del switch. Tal vez las siguientes imágenes clarifiquen esto:

LinuxTotal.com.mx sshLinuxTotal.com.mx ssh

La conclusión importante de todo esto es que SSH ES TOTALMENTE SEGURO Y CONFIABLE, EL PROBLEMA ESTÁ EN LA RELATIVA FACILIDAD PARA REALIZAR SUPLANTACIONES TIPO MAN IN THE MIDDLE, QUE NO ES PROBLEMA DE LA APLICACIÓN SSH Y LA INSEGURIDAD PRODUCIDA ES POR PARTE DEL USUARIO QUE NO VERIFICA EL FINGERPRINT QUE SEA VÁLIDO O CONOCIDO POR ÉL.


¿Cómo hago para ver los fingerprints de los servidores ssh que ya he aceptado?

En Linux, en tu cuenta que uses se genera un directorio oculto llamado .ssh dentro de el encontrarás un archivo llamado known_hosts que si ejecutas el programa ssh-agent:

$> ssh-agent -l -f known_hosts

te dará una lista de los fingerprints de los hosts a los que te has conectado, basta con eliminar el renglón del host que quieras o eliminar todo el archivo para que la siguiente vez que te conectes al servidor ssh te pregunte de nuevo que si lo aceptas o no.

En Windows con PuTTY, en el menú de la ventana de la termina que se abre hay una opción "event log" donde se observa los fingerprints del servidor al que estás conectado. Si buscas en el registro de Windows "putty" te da la siguiente llave:

\HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys

Y es donde deja el registro de los fingerprints que has usado, pero no entiendo como los guarda porque deja una cadena muy larga y no se aprecia el fingerprint realmente, aunque si queda claro el servidor del que pertence, basta con que borres la clave del registro correspondiente y te volverá a preguntar la siguiente vez que te conectes.


Quiero cambiar mis archivos de fingerprint de mi servidor por otros ¿Cómo se hace eso?

Es perfectamente posible y hasta recomendable cada cierto tiempo en un servidor expuesto al Internet por ejemplo, cambiar el fingerprint de ssh. Para hacer esto usaremos nuestra ya conocida herramienta ssh-keygen: Veámoslo por pasos para dejarlo bien claro:

1er. Paso
Cambiarse a /etc/ssh, no tiene que ser forzosamente aqui pero por cuestiones de organización (y por que aqui están las llaves originales) dejemos nuestras nuevas llaves aqui.

#> cd /etc/ssh

2do. Paso
Asumimos que solo se trabajará con el protocolo 2, asi que debemos de generar archivos de llaves para los algoritmos dsa y rsa:

#> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /etc/ssh/mi_llave_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /etc/ssh/mi_llave_rsa.
Your public key has been saved in /etc/ssh/mi_llave_rsa.pub.
The key fingerprint is:
e1:40:bb:57:ae:62:dd:bc:a2:3c:3f:35:63:d2:ab:62 root@linux
#>

Se usa la opción -t para indicar el tipo de algoritmo en este caso rsa, se detiene la ejecucción y pregunta por el nombre del archivo donde se guardará la llave privada, indiqué: /etc/ssh/mi_llave_rsa, hay que indicar la ruta completa. Y después pregunta por una contraseña (passphrase), que cuidado!!!!, NO hay que poner nada. Es una llave privada no expuesta a nadie, y ssh en llaves generadas solo para el uso de archivos del mismo servidor necesita NO tener contraseña.

Repetimos lo mismo pero ahora para generar el archivo con dsa:

#> ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): /etc/ssh/mi_llave_dsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /etc/ssh/mi_llave_dsa.
Your public key has been saved in /etc/ssh/mi_llave_dsa.pub.
The key fingerprint is:
01:aa:d9:9e:33:f1:ea:50:d4:be:e8:e7:dd:a2:ce:de root@linux
#>

Tenemos ya, entonces, cuatro archivos, dos con las llaves privadas y dos con las llaves públicas, que son las que se exportan al cliente al momento de aceptarse la conexión:

#> ls -l mi_llave*
-rw-------  1 root root 668 Feb 19 00:53 mi_llave_dsa
-rw-r--r--  1 root root 602 Feb 19 00:53 mi_llave_dsa.pub
-rw-------  1 root root 883 Feb 19 00:48 mi_llave_rsa
-rw-r--r--  1 root root 222 Feb 19 00:48 mi_llave_rsa.pub

3er. Paso
Hay que reconfigurar el archivo de configuración de ssh (/etc/sshd/sshd_config) donde agregaremos la variable HostKey dos veces indicando en cada una la ruta y archivos recien creados, veamos el bloque completo de esa parte del archivo de configuración como debe quedar.

# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
#HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/mi_llave_rsa
HostKey /etc/ssh/mi_llave_dsa

Obsérvese que aparecen comentadas con un # los archivos de llaves originales, esto es normal, porque son el default.

4to. Paso
Reiniciar el servidor sshd:

#> service sshd restart

O si no se tiene el comando service:

#> /etc/rc.d/init.d sshd restart        
       
#> /etc/init.d/sshd restart

Listo es todo, ssh recibió una nueva huella digital que lo identifique.

¿Que pasará si nos conectamos de nuevo desde Windows con el cliente PuTTY?, veamos el mensaje tan apremiante que nos manda:LinuxTotal.com.mx ssh

Es muy distinto al del primer ejemplo. Debido a que ya se tiene almacenado en el cache del cliente la llave pública, su fingerprint, y al no concordar en este intento de conexión , ya que el servidor tiene un nuevo fingerprint, nos lo advierte.
ESTO ES PRECISAMENTE O ALGO MUY SIMILAR LO QUE SE VERÍA SI HAY UN ATAQUE MAN IN THE MIDDLE, ya que previamente nos hemos estado conectando siempre a nuestro servidor sin ningún mensaje, y de repente aparece esto y si no se ha cambiado el fingerprint o nadie aviso nada, cuidado habrá que investigar. Esto es a lo que me refería cuando mencionaba mas atrás que ssh es seguro, lo que no es seguro es que alguien se nos ponga en medio y peor aun que no hagamos caso a los mensajes. En el primer párrafo dice:

 La llave del servidor no concuerda con la que PuTTY tiene
 guardada en su registro. Esto significa que o el
 administrador ha cambiado la llave del host, o que te estás
 conectando a otra computadora que pretende
 ser el servidor.

Mas claro ni el agua.
En fin, en este caso se puede perfectamente apreciar que el fingerprint que muestra el diálogo es el mismo que se generó cuando creamos el archivo con tipo rsa:

e1:40:bb:57:ae:62:dd:bc:a2:3c:3f:35:63:d2:ab:62

Asi que con toda seguridad procedemos a presionar Si, sabiendo que SI es nuestro servidor.

Ojalá te sirva esta ayuda y si tienes dudas, comentarios, ampliaciones del documento, etc. son bienvenidas.


martes, 26 de septiembre de 2023

Elon Musk quería una IA de código abierto como Linux, pero Google no estaba interesado

Está Escrito:
El que labra su tierra se saciará de pan; Mas el que sigue a los vagabundos es falto de entendimiento. (P
roverbios 12:11)

Tomado de: Genbeta

La gran expansión que ha tenido la inteligencia artificial en los últimos años sin duda ha dado muchas ventajas a nuestra industria, y también a nosotros como usuarios al tener diferentes IA de consumo. Pero también debemos tener en cuenta que puede tener diferentes peligros, contra los que Elon Musk lleva en guerra desde hace ya más de 10 años.

El 'miedo' a la IA de Elon Musk comenzó en el año 2012 tras una charla con el investigador Demis Hassabis el que le comentó que 'las máquinas podrían volverse superinteligentes y superarnos a los simples mortales'. En ese momento Musk decidió invertir dinero en DeepMind, el mayor proyecto de IA que existía en ese momento, para poder monitorizarlo e intentar influir para evitar estos peligros.

Elon Musk está obsesionado con los peligros de la IA y su control

Tras entrar en DeepMind, Musk tuvo una charla con Larry Page de Google para describirle el proyecto y contar los peligros que veía en la IA. Y es que se había convertido en un tema obsesivo para el propio Elon al afirmar constantemente que 'la inteligencia artificial podría reemplazar a los humanos haciendo nuestra especie irrelevante'. Pero la gran sorpresa que se llevó fue cuando Google y el propio Page querían comprar DeepMind en 2014.

A partir de ese momento comenzó a tirar de todos sus contactos, incluido el propio Barack Obama, para promover la seguridad de la IA con una buena regulación y que no estuviera controlada por nadie. Esto hizo que fundara OpenAI junto a Sam Altman con el objetivo de crear una IA de código abierto para contrarrestar el crecimiento de Google.

'Queríamos tener algo así como una versión Linux de la IA que no estuviera controlada por ninguna persona o corporación' es como definió lo que quería buscar con OpenAI. Y es que ya sabemos que Linux es un software que está abierto para todo el mundo, y no dominado por una empresa como puede ser Microsoft o Apple con Windows y macOS respectivamente.

Pero Musk finalmente abandonó OpenAI en 2018 por diferentes discrepancias por Sam Altman sobre el futuro de la empresa. En 2023 llegó el plato fuerte que no quería ver Elon: el lanzamiento de ChatGPT y de Bard, haciendo un monopolio entre Microsoft y Google por la IA. Ante esto, él quiso poner un poco más difícil la tarea de entrenar a estas inteligencias artificiales que podrían utilizar todos los tweets que residían en Twitter. De esta manera limitó la cantidad de tweets que se podían ver durante un espacio temporal muy corto.

A partir de ese momento los esfuerzos de Musk por 'preservar la conciencia humana' se ha centrado en la creación de diferentes empresas para generar un competidor a ChatGPT que fuera neutralmente político. Pero deberemos ver si esta obsesión con el peligro de la IA termina llegando a buen puerto y consigue finalmente tener esa IA que tenga un funcionamiento similar a Linux a día de hoy.

Fuente | Time


martes, 18 de abril de 2023

La VPN de Opera vuelve a iOS

Está Escrito:

Pues por esto pagáis también los tributos, porque son servidores de Dios que atienden continuamente a esto mismo. Pagad a todos lo que debéis: al que tributo, tributo; al que impuesto, impuesto; al que respeto, respeto; al que honra, honra. (Romanos 13:6-7)

Tomado de: muycomputer

Opera suele destacar, desde siempre, por ser un navegador bastante innovador, al punto de que el resto suelen fijar su vista en las novedades presentadas por el mismo para sumarlas a sus propios navegadores. Esto no siempre ocurre así, claro, pero cuando no son los primeros, sí que muestran una rápida capacidad de respuesta, como ya vimos con el anuncio del integración de ChatGPT, que se produjo menos de una semana después del anuncio de Microsoft Edge con Copilot, y que ya está disponible desde hace varias semanas.

Un movimiento muy audaz por parte de Opera se produjo allá por 2016, cuando el navegador empezó a ofrecer conexión mediante VPN de manera totalmente gratuita. Desde entonces, esta ha sido una de las principales razones de muchos usuarios para optar por este navegador frente al resto de oferta en este sentido. Es cierto que podemos encontrar extensiones y complementos gratuitos que añaden la conectividad mediante VPN a otros navegadores, pero la integración del servicio en Opera y su fiabilidad son, sin duda, una garantía.

En sus primeros tiempos el servicio se ofrecía tanto para las versiones de escritorio como para las de Android e iOS, pero como recordábamos hace un año, cuando se produjo el lanzamiento de Opera VPN Prola compañía decidió poco después de su lanzamiento global retirar esta función de las versiones para Android e iOS, para desdicha de sus usuarios que, de este modo, se quedaron sin una de las funciones más valoradas.


Sin embargo esto ha cambiado, pues hace algún tiempo que la VPN gratuita volvió a Android y, según podemos leer en el blog oficial del navegador, el servicio de VPN gratuito de Opera también retorna a iOS. De esta manera, tal y como afirman en dicha publicación, «Opera se ha convertido en el primer navegador web en ofrecer una VPN integrada y gratuita en todas las plataformas principales: Mac, Windows, Linux, Android y ahora iOS«, sin duda un gran hito.

El despliegue de esta nueva función ya se ha iniciado, pero según afirman tardará unas semanas en completarse. La buena noticia es que su alcance es total y que, al igual que en el resto de plataformas, no será necesario contar con cuenta de usuario ni otro tipo de registro, de modo que la navegación al emplearlo será anónima. Y, por supuesto, el volumen de tráfico también será ilimitado. Eso sí, podemos entender este movimiento como una vía más para dar a conocer el servicio Pro que, muy probablemente, también será accesible desde Opera para iOS.


jueves, 6 de abril de 2023

Apache PLC4X Christofer Dutz


Está Escrito:

Cada uno de nosotros agrade a su prójimo en lo que es bueno, para edificación. Porque ni aun Cristo se agradó a sí mismo; antes bien, como está escrito: Los vituperios de los que te vituperaban, cayeron sobre mí. Porque las cosas que se escribieron antes, para nuestra enseñanza se escribieron, a fin de que por la paciencia y la consolación de las Escrituras, tengamos esperanza. (Romanos 15:2-4)

Tomado de: xataka

Christofer Dutz está hasta las narices. El desarrollador es uno de los seis responsables de mantener un componente llamado Apache PLC4X, un conjunto de librerías para la comunicación con controladores de lógica programable. Parece complejo y lo es, pero es que además es uno de esos elementos que permiten que las cosas funcionen como deben en multitud de sistemas de automatización e IoT.

Sin embargo el desarrollador explicaba hace tiempo que ya está harto de trabajar por amor al arte. "A la industria parece gustarle usar PLC4X y el Open Source en general, pero no parece estar dispuesta a apoyar [económicamente] a la gente que trabaja en ello". Las empresas se ahorran millones gracias a su trabajo, pero no aportan nada, y Dutz ha decidido que dejará de dar soporte gratuito a la comunidad PLC4X. O le pagan, o lo deja. El problema no es nuevo, pero es parte de una realidad terrible e injusta que necesita solución. 

Traduccion
Herramientas de compilación Apache PLC4X
Apache PLC4X Build-Tools es un subproyecto del proyecto Apache PLC4X y contiene todas las herramientas necesarias para construir el proyecto principal.

Actualmente, las únicas herramientas que contiene son un complemento maven que se usa para generar controladores y un nuevo tema de sitio maven-site-plugin.

Actualmente no contiene ningún módulo de generación de código real, sino solo el complemento y la API necesarios para cargar y usar módulos de generación de código.

Los piropos y los aplausos no bastan

En aquellos días conocíamos además el caso de Marak Squires, el desarrollador de dos de las librerías NPM más populares. Esos componentes software tienen una base de usuarios que hace que se descarguen casi 25 millones de veces cada semana, pero Squires decidió corromperlas para demostrar algo importante: "ya no apoyaré a las empresas Fortune 500 con mi trabajo gratuito".

Para Christofer Dutz la realidad es exactamente la misma. Harto de la situación, publicó en su blog en GitHub una entrada en la que explicaba cómo estaba cansado de trabajar en el proyecto Apache PLC4X sin obtener prácticamente nada a cambio.

Durante unos años no tuvo problema con ese trabajo: la empresa para la que trabajaba de hecho le pagaba para que se dedicase a jornada completa a ese proyecto crítico para muchos ámbitos de automatización industrial.

En ese post y en otro anterior contaba cómo por ejemplo su trabajo había permitido a una empresa ahorrar cerca de 20 millones de euros en costes de licencias que hubiera tenido que invertir en una solución comercial, y que con tres días de trabajo con otras tres personas lograron que su solución tuviera un rendimiento 1.300 veces superior al que ofrecía esa solución comercial.

Aún así, explicaba, "seguimos fracasando a la hora de conseguir clientes", y que oficiosamente la razón tenía que ver con temas políticos, no con el rendimiento de su solución. De hecho, contaba, tenían que firmar acuerdos de confidencialidad (NDAs) que impedían que hablaran abiertamente de sus éxitos.

"Todo en la industria de la automatización se considera alto secreto, y tan solo decirle al mundo que estás usando un producto dado parece imposible". Dutz dio conferencias y trató de comunicar lo importante que podía ser este proyecto para muchas empresas, pero no lo lograba porque en ese segmento "todo va de ferias industriales con stands extremadamente caros. Los presupuestos que los grandes protagonistas tienen a su disposición son simplemente increíbles. Como proyecto Open Source no tienen ninguna posibilidad de hacerse notar".

Lo que suele ocurrir es algo terrible: las empresas contactan con Dutz y sus colegas de proyecto para decirles básicamente lo mismo siempre: "gracias por trabajar en PLC4X, está haciendo nuestras vidas mucho más fáciles, así que lo estamos usando en nuestra empresa aeroespacial/de fundición/de fabricación de coches/farmacéutica pero tenemos este problema...". Y luego, básicamente, le piden ayuda sin más, esperando ayuda gratuita.

En 2020 ste desarrollador alemán decidió ir por libre y tratar de convertir su pasión en algo que le diera para vivir, pero lo pasó especialmente mal: "en Alemania una empresa necesita tener beneficios. Si tienes una empresa en déficit demasiado tiempo, te cerrarán la empresa". Dutz había seguido trabajando casi gratis en PLC4X, pero tenía que seguir pagando por comprar software y hardware de automatización para sus pruebas, y tuvo que acabar convenciendo a los funcionarios de que le dieran algo más de tiempo.

Photo 1534972195531 D756b9bfa9f2

Tras todo este tiempo Dutz confesaba que estaba "harto de luchar. Estoy harto de invertir mi precioso tiempo libre" y dejaba claro que sentía que "me estoy quemando sin obtener nada a cambio. Es como lo que ocurre con los chicos que trabajan en Sanidad ahora mismo [en referencia a su lucha contra la COVID-19]. Si creéis que las palabras amables y los aplausos son suficientes... creedme, no lo son".

Todo ello le ha hecho tomar una decisión radical. Dejará de trabajar por amor al arte y de dar soporte gratuito. Si no le pagan, lo dejará. "Si la industria no apoya a la gente que está tras el Open Source, yo al menos dejaré de apoyarles a ellos ciegamente de ahora en adelante".

Una realidad antigua, terrible e injusta

Lo ocurrido con Dutz y con Squires es en realidad la última gota de un vaso que lleva demasiado tiempo estando colmado. Podemos esbozar una sonrisa al recordar el eterno meme de que este va a ser el año de Linux en el escritorio, pero la realidad es muy distinta.

Puede que Linux no triunfe en PCs o portátiles, pero tanto Linux como otros muchos proyectos Open Source son absolutamente críticos para la infraestructura de internet que usamos a diario. Los ejemplos son ya famosos: Android está basado en Linux y otros muchos componentes Open Source (pero no, no es Open Source), y la presencia de Linux en servidores es gigantesca. No hablemos ya del mundo de la supercomputación, donde la cuota de mercado de Linux es absoluta: el 100% de los supercomputadores ma´s potentes del mundo están basados en Linux.

Las empresa más poderosas del planeta de hecho se han apuntado a esto del Open Source de forma muy cuca: presumen de usarlo y de compartir cierto número de proyectos como Open Source, pero lo que está claro es que reciben mucho más de lo que dan.

Los ejemplos son claros, y si hay una empresa que haya logrado lavar su imagen con este tipo de mensajes es Microsoft, que parece haber pasado del odio al amor y que ahora aprovecha Linux para reconciliarse con desarrolladores y para potenciar su gigantesca infraestructura en la nube, Azure. ¿Sabíais que Linux se usa más que Windows en Azure? Lo hace.

Otra cosa es que estas empresas le devuelvan al mundo del Open Source y a la comunidad todo eso que ellas reciben. Es cierto que algunas abren proyectos con licencias Open Source y permiten así que desarrolladores de todo el mundo contribuyan, pero las motivaciones suelen ser discutiblescomo ocurre con Chromium —todos lo han acabado adoptando salvo Safari y Firefox, que lucha contra todos— o con proyectos llamativos pero menores como Windows Terminal.

Luego se producen situaciones curiosas como la que afecta al núcleo del sistema operativo GNU/Linux. El kernel Linux, su componente fundamental, no para de ser mejorado y de evolucionar, y ¿sabéis quién contribuye a ese desarrollo? Las grandes empresas tecnológicas. En su informe de agosto de 2020 (PDF) la Linux Foundation revelaba los 20 grandes contribuyentes al código de Linux en los últimos años:


Captura De Pantalla 2022 01 13 A Las 12 35 32

Es algo que comentábamos hace tiempo y que revela cómo esa apuesta por el Open Source es, lógicamente, una apuesta interesada. Que empresas como Intel, Red Hat (ahora propiedad de IBM), Google, Samsung o AMD contribuyan al kernel se debe a su interés de que el kernel se adapte a sus necesidades con controladores y componentes que permitan sacar provecho de ciertos componentes hardware utilizados o desarrollados por esas empresas.

Sin embargo esas y otras muchas empresas y entidades hacen uso del Open Source sin apenas devolver nada a cambio. Un desarrollador se quejaba hace años de cómo Amazon ignoraba el trabajo de programadores voluntarios que contribuían a sus proyectos Open Source (y a su gigantesca plataforma Amazon Web Services).

Mientras, en febrero de 2021 nos enterábamos de que la Unión Europea se ahorra más de 95.000 millones de euros al año gracias a los desarrolladores Open Source.

Los desarrolladores Open Source solo reciben limosnas

El problema en muchos casos es el mismo: los desarrolladores Open Source contribuyen con su esfuerzo y su trabajo a todo tipo de proyectos porque esa es su pasión, pero la rentabilidad económica de ese esfuerzo es terrible.

Lo comentaba el desarrollador Open Source André Stalz en un artículo publicado en junio de 2019 en el que analizaba la situación. El autor eligió los proyectos Open Source más populares gracias a la plataforma OpenCollective, y estudió el retorno económico (por ejemplo a través de los Patreon que algunos de los voluntarios mantenían) o cosas como su reputación en GitHub.

Escogió 58 proyectos —los más populares— y logró estimar el salario anual de quienes trabajaban en ellos. "Entre estos casi sesneta proyectos, la mayoría de ellos están por debajo de los límites de la sostenibilidad".

Salarios Open Source

Como mostraba el gráfico que configuró, más del 50% de los proyectos estaban marcados con una burbuja roja, que indicaba que quienes los mantienen "no pueden sostener a sus responsables por encima de la línea de la pobreza". El 31% son de color naranja, que indica "desarrolladores dispuestos a trabajar por un salario que sería considerado inaceptable en nuestra industria".

Según sus cálculos, la mediana de la donación anual es de 217 dólares, que podrían considerarse casi como una limosna frente a los sueldos que cobran hoy en día desarrolladores expertos como los que trabajan en estos proyectos, y que en Estados Unidos rondan los 100.000 dólares con facilidad.