Bueno, el primer paso sería obtener una noción exacta sobre lo que son la ciberseguridad y la programación, y lo que no son.
Ambos son muy distintos entre sí: muchas personas en ciberseguridad nunca programan en absoluto, y muchos programadores no saben nada sobre ciberseguridad.
Si necesitará programar en ciberseguridad depende en gran medida de en qué subcampo se especializará. La ciberseguridad es un campo increíblemente enorme y no creo que una sola persona pueda ser proeficiente o incluso saber todo lo que hay en ese campo.
- ¿Qué hace que los beneficios del rescate de ciberataques WannaCry sean difíciles de rastrear?
- ¿Son las grandes vacantes en los trabajos de seguridad cibernética un mito?
- ¿Cuáles son algunos buenos analistas / empresas de seguridad de contratos que revisan el código por posibles violaciones de seguridad?
- ¿Qué opinas de los recientes ciberataques en el NHS y en todo el mundo? ¿Qué se puede hacer mejor para prevenir esto?
- ¿Cuál es la razón detrás de ingresar el texto captcha en la mayoría de los sitios?
Una cosa es segura: en el 99.9% de los casos no necesitará saber matemáticas avanzadas, al contrario de lo que algunas personas afirman aquí. La excepción es si ingresa a la criptografía académica, que es el estudio de las debilidades de los algoritmos criptográficos (criptología) o de su diseño. Este subcampo está más cerca de las matemáticas puras que de la ciberseguridad.
En (supongo que un poco) el 70% de los casos no necesitará programar, al menos no más que unos pocos scripts para automatizar cosas aburridas. Solo para estar seguro, no está de más aprender Python, ya que este lenguaje es fácil de aprender pero también muy útil para automatizar otros programas. IDApro, un desensamblador, usa python como lenguaje de script por ejemplo. Otro caso sería Bash, que se utiliza para controlar Linux.
Otro desacuerdo con las respuestas anteriores: no aprendes Kali Linux. Kali Linux es solo una colección de herramientas. (Piense en ello como una caja de herramientas). Aprendes a usar las herramientas ellos mismos. Kali y sus herramientas son de su interés si desea ingresar al subcampo Ethical Hacker / Pentester de Ciberseguridad. Esto es probablemente lo más cercano a lo que las personas piensan cuando escuchan “piratería”, pero es fundamentalmente diferente de lo que se ve en las películas. Lo que prueba como probador de penetración son agujeros en los firewalls, configuraciones de aplicaciones web, servidores de correo electrónico, políticas de contraseña, redes (cableadas e inalámbricas) … Encontrar esos agujeros es bueno, pero también debe aprender cómo prevenirlos en primer lugar y cómo para enchufarlos.
Sin embargo, la mayor debilidad en cualquier sistema informático son las personas que los usan. Usted los “prueba” usando ingeniería social. Usted los “arregla” haciendo discursos y talleres, con la esperanza de que les apasione la seguridad, o al menos lo suficientemente paranoicos como para evitar los peores delitos contra el sentido común. Sin embargo, la triste realidad es que a la mayoría no le importa si su lugar de trabajo es pirateado o no.
Suponiendo que ingrese a IPS (sistemas de prevención de intrusiones), puede escribir algunas reglas de firewall o usar algunos lenguajes de secuencias de comandos patentados para configurar dispositivos de seguridad (un dispositivo es básicamente una pieza de hardware especializada en un rack de servidores que solo hace un solo trabajo) Tiene dispositivos para cortafuegos, escáneres de virus, escáneres de correo electrónico, motores de búsqueda …) o puede que ni siquiera necesite secuencias de comandos porque los fabricantes decidieron implementar una interfaz simple de apuntar y hacer clic.
Por último, está el campo de la verificación de software donde definitivamente debes saber cómo programar. La verificación del software implica observar de cerca el código fuente que alguien más escribió e intentar encontrar (y corregir) los errores y agujeros que podrían provocar problemas de seguridad. Este es ciertamente un trabajo muy desafiante y probablemente no lo harás pronto. Sospecho que solo la criptografía pura se acerca al desafío intelectual de la verificación de software. Un buen experto veterano en este campo puede verificar de manera confiable una cantidad de líneas de código de alrededor de un solo dígito por día. El lenguaje de programación depende de qué idioma se haya usado / utilizado para ese software en particular. Como la mayoría del software está escrito en Java, C, C ++ (en este orden), es muy probable que necesite estos lenguajes. El ensamblaje para x86 o arquitectura de brazo también podría ayudar.
En general, para corregir las debilidades en cualquier sistema, debe tener un conocimiento profundo de ese sistema. Esto se aplica a todo en ciberseguridad: redes, sistemas operativos, aplicaciones web, correos electrónicos …
Finalmente, podría combinar cualquiera de esos subcampos en una nueva pieza de software: escriba un cortafuegos simple y crudo usted mismo. O un escáner de correo electrónico para detener el spam. O …
Para volver a su pregunta: ¿Dónde o cómo empiezo? Bueno, esa es una buena pregunta. Yo diría: elige un subcampo, búscalo en wikipedia, sigue los enlaces de referencia al final del artículo y los enlaces a cualquier palabra que no entiendas. Examine quora (por cierto, la función de búsqueda de Quoras para respuestas apesta, prefiero usar google con el prefijo “site: quora.com” antes de cualquier pregunta). Si lo desea, también hay libros sobre seguridad informática en general disponibles, que le darán un resumen del campo sin profundizar demasiado. Puedes ver videos de YouTube si eso es lo tuyo (personalmente prefiero los libros)
Espero que esta respuesta te ayude un poco. Desafortunadamente, debido al tamaño y la complejidad de la Ciberseguridad, esta pregunta es un poco como preguntar cómo comenzar a construir un programa espacial para llegar a la luna.