Científico de Investigación - Científico de Investigación – Compiladores y Análisis de Programas (disponible algún horario híbrido)

Job expired!

Riverside Research es una organización sin fines de lucro de Seguridad Nacional independiente dedicada a la investigación y desarrollo en el interés nacional. Proporcionamos servicios técnicos de alta gama, investigación y desarrollo, y soluciones de prototipos para algunos de los problemas técnicos más desafiantes del país.

Número de trabajo: 1445

Para bien o para mal, casi no existe faceta de nuestro mundo moderno que funcione sin un sistema informático. Prácticamente todos esos sistemas informáticos dependen de "software de sistemas" para gestionar tareas específicas y cerrar la brecha entre el hardware y el software de nivel superior. Ya sea un sistema integrado que utiliza un tejido FPGA acoplado para delegar tareas críticas de rendimiento o seguridad o un servidor que utiliza un hipervisor para gestionar invitados co-residentes, hay un código de bajo nivel asegurando que el código de nivel superior pueda ver un mundo ordenado y sensato. Ese código de nivel inferior está lleno de complejidad mientras trabaja para cerrar la brecha desde las realidades de las diversas ISAs de hardware a las abstracciones de nivel superior. También es fundamental para la historia de seguridad de todos nuestros sistemas. En Riverside Research, el grupo de Sistemas Seguros y Resilientes trabaja para fortalecer ese código y proporcionar a nuestros clientes unas bases seguras para las pilas de software críticas para su misión. Es esencial adelantarnos al atacante en lugar de jugar al whack-a-mole con las correcciones de errores. A veces, los ordenadores pueden ayudarnos a analizar e implementar protecciones en estas capas de software en forma de análisis de programas y mecanismos de seguridad basados en compiladores.

Riverside Research está buscando un científico de investigación de nivel medio o senior para apoyar la investigación y desarrollo de tecnologías de seguridad de análisis de programas y compiladores de última generación. Como miembro clave de nuestro equipo de Sistemas Seguros y Resilientes, el científico de investigación liderará los esfuerzos para prototipar nuevas características en compiladores de código abierto como LLVM y herramientas y marcos de análisis de programas como angr u otros. Serán fundamentales los sólidos fundamentos en prácticas de desarrollo de software para proyectos grandes (control de versión, técnicas de depuración, etc.), la comprensión del software y la interfaz software/hardware, y una sólida formación en fundamentos de ciencias de la computación (por ejemplo, algoritmos, estructuras de datos, lenguajes de programación) para diseñar y prototipar eficientemente herramientas y características dramáticas que avancen el estado del arte en compiladores y análisis de programas.

El científico de investigación contribuirá a un equipo diverso responsable de desarrollar tecnologías de compilación y análisis de programas que aumenten la seguridad del software del sistema como Linux o Xen. Se espera que prototipen y promuevan tanto el código como los documentos de diseño/documentación acompañantes. Además, iniciarán el proceso de investigación liderando al equipo para diseñar soluciones a nuevos desafíos, desglosar problemas en subtareas, contribuir y supervisar la implementación, y evaluar los prototipos resultantes. El científico de investigación deberá tener las habilidades escritas necesarias para comunicar sus ideas y resultados a los interesados internos y externos. Como contribuyente de nivel medio o senior, se espera que el científico de investigación, con apoyo, persiga y haga crecer programas de I+D financiados con organizaciones de investigación gubernamentales (por ejemplo, DARPA, IARPA, laboratorios de servicio, etc.), lidere contratos de I+D existentes y traslade la tecnología a nuestras otras unidades de negocio. El científico de investigación también contribuirá a la comercialización técnica y a la redacción de propuestas en su área de investigación. El científico de investigación se comunicará con los miembros del equipo en todas las ubicaciones de Riverside Research.

El científico de investigación debería tener experiencia en "sistemas" (por ejemplo, C/C++, al menos un lenguaje de ensamblaje, Python, Rust) y en la manipulación de herramientas para el análisis de programas (estas pueden estar escritas en lenguajes de nivel superior y aprovechar DSLs o interpretes/compiladores de DSL). Un buen candidato para científico de investigación debería ser capaz de explicar por qué los fundamentos del lenguaje de programación desde C hasta Haskell y diferentes sabores de lenguajes específicos de dominio son relevantes para este papel.

Todas las oportunidades de Riverside Research requieren ciudadanía estadounidense.

Responsabilidades del trabajo:

  • Ayudar al grupo a diseñar soluciones innovadoras a los problemas de los clientes relacionados con el software de sistemas
  • Prototipar y evaluar características dentro de grandes proyectos de software como LLVM o angr
  • Construir nuevas herramientas y/o capacidades en una gama de lenguajes de programación relevantes
  • Escribir libros blancos y/o artículos publicados que documenten el trabajo innovador realizado
  • Documentar y comunicar decisiones de diseño, desafíos técnicos y progreso a los interesados internos y externos, tanto técnicos como no técnicos
  • Colaborar con los miembros del equipo en la depuración de programas, programación en pareja, revisión de artículos/propuestas, etc.
  • Participar en reuniones internas y con el cliente relevantes
  • Influir en la dirección técnica de los esfuerzos internos y/o de investigación y desarrollo por contrato

Cualificaciones Requeridas:

  • Titulación de maestría o de grado con más de 5 años de experiencia preferible en el campo técnico relacionado, como ciencias de la computación, ingeniería informática, ingeniería eléctrica o ciberseguridad
  • Sólidos fundamentos en desarrollo de software para trabajar dentro de un proyecto grande (por ejemplo, presentar PR, interactuar con comunidades y listas de correo de código abierto, ramas/fusiones/rebase de git, sistemas de construcción, etc)
  • Habilidades de liderazgo para desarrollar, organizar y ejecutar actividades de captura significativas, incluyendo la construcción de equipos de la industria, evaluación de la probabilidad de ganar y ejecución de planes de llamadas a clientes
  • Debe ser elegible para obtener una autorización de seguridad de nivel Secreto.
  • Habilidades de comunicación y creatividad para desarrollar, prototipar, evaluar y documentar características de seguridad significativas integradas en la tecnología de seguridad de sistemas existentes
  • Fluidez en varios lenguajes de programación, y sólida formación en lenguajes de programación, algoritmos y estructuras de datos fundamentales

Cualificaciones Deseadas:

  • Doctorado en Ciencias de la Computación o campo relacionado
  • Sólido conocimiento del proceso de investigación (por ejemplo, lectura y escritura de trabajos académicos, ideación para inventar soluciones a problemas difíciles)
  • Equilibrio saludable entre la orientación técnica y el sentido comercial
  • Capacidad para operar de forma independiente con supervisión y retroalimentación limitadas, y establecer una sólida relación de trabajo con el personal técnico, los gerentes de división y los colegas en el grupo y en todo Riverside Research
  • Proactivo y capacidad para gestionar el tiempo y las tareas técnicas de forma independiente sin supervisión directa
  • Habilidades superiores de comunicación escrita y verbal

Riverside Research se esfuerza por ser uno de los proveedores líderes en América de servicios técnicos y científicos independientes y de confianza.