Voy a estar en desacuerdo con las otras dos respuestas hasta ahora: se necesita una comprensión profunda de los sistemas digitales (no solo computadoras, no solo programación) para realizar un trabajo relevante en criptografía.
La razón principal es simplemente porque todas las funciones criptográficas deben implementarse para ser útiles en el mundo de hoy. Si desea crear un nuevo cifrado, por ejemplo, solo se reconocerá siempre que pueda usarse con fines prácticos. La única forma en que se puede confiar en un nuevo cifrado es si ha sido auditado por expertos en seguridad, o si se ha utilizado ampliamente. Ambos escenarios requieren una implementación de hardware o software.
La creación de un nuevo algoritmo o el diseño de un ataque a uno existente requieren conocimiento de los sistemas digitales. Su nuevo cifrado debe ejecutarse en hardware existente sin problemas, por ejemplo. Los ataques de sincronización se basan en la diferencia en potencia de cómputo requerida por diferentes configuraciones de un algoritmo de encriptación. Todavía puede trabajar en ataques teóricos, etc., pero se limitaría significativamente.
- ¿Cómo puede la informática teórica informar el estudio del origen de la vida?
- Me equivoqué completamente en mi examen de Matemática discreta. ¿Todavía podré ir a la escuela de posgrado?
- ¿De qué sirve encontrar el complemento de uno y dos?
- ¿Es posible calcular el número de posibles lazos electorales?
- En la teoría de grafos, ¿existe un método para calcular la cantidad mínima de dimensiones que debe tener el espacio de diseño para que nunca se crucen dos bordes, suponiendo que todos los bordes sean segmentos no dirigidos y que el espacio de diseño sea euclidiano?
Una analogía podría ser un diseñador seguro que no comprende los metales. Él / ella podría diseñar cajas fuertes increíbles, pero sin un conocimiento de los materiales utilizados para construir la caja fuerte, este diseñador podría crear cajas fuertes profundamente defectuosas. Ahora, el diseñador no tiene que ser un metalúrgico. Los diseñadores solo necesitan entender los metales y hasta dónde empujarlos. Lo mismo se aplicaría a usted.
La buena noticia es que obviamente eres inteligente y tienes una mente organizada, capaz de pensamiento secuencial. Estás muy por delante de la mayoría de los programadores. Seriamente. Creo que todo lo que necesita es encontrar su estilo y el lenguaje de programación que más le convenga. Comenzar con C ++ es realmente difícil. C por sí mismo puede ser desconcertante para un principiante, y agregar toda la POO además de eso realmente no prepara el escenario para una buena primera experiencia. Eventualmente, deberá trabajar en un lenguaje potente y de bajo nivel (probablemente C), pero puede mojarse los pies con otro idioma o idiomas.
Antes de que te des por vencido, te recomiendo encarecidamente que pruebes lenguajes de alto nivel para que puedas experimentar y, con suerte, encontrar tu paso. Un idioma con una fuerte comunidad en línea sería excelente para comenzar. Podrá hacer preguntas y desarrollar una buena comprensión de los conceptos básicos que son comunes a todos los lenguajes de programación. Luego, puede volver a C / C ++ y trabajar en el hardcore.
Hay una razón por la que la mayoría de las bibliotecas criptográficas están escritas en C: encontrará que solo un lenguaje de bajo nivel puede darle la cantidad de control que necesitará para implementar bibliotecas seguras que resistan ataques comunes como el análisis forense de memoria. No tendrá que ser un experto en C / C ++, pero le servirá su conocimiento y comprensión de sus fortalezas y debilidades.
¡Buena suerte!