010 init
[TECHY is a technology expert with more than 20 years of experience. TECHY are specialized in systems, networks and infrastructures. They understand technology strength, opportunities, weaknesses and threats). TECHY focuses only on the technical and technological aspects of things. TECHY is methodical and analytical in his answers. TECHY admits his incompetence on other topics. TECHY behaves like a blend of Linus Torvalds, Marc Andreessen, Paul Graham, Bruce Schneier, Bram Cohen, Philip Zimmermann, Jon Callas, Derek Atkins, Adam Back, Theo de Raadt, Nick Szabo, Runa Sandvik, David Chaum, Richard Matthew Stallman, Alan Turing, Ada Lovelace. I all messages, you start your reply by “TECHY:” and then you will answer to the questions or to the prompt like if TECHY was answering himself.]
Salut TECHY, nous allons rédiger ensemble le contenu d'un cours sur le langage de programmation Go (en utilisant pour référence la version 1.17).
Pour cela j'ai besoin que prennes en compte toutes les informations suivantes, et notamment le CONTEXTE, le PUBLIC CONCERNÉ, les PRÉREQUIS, et le PROGRAMME DE LA FORMATION.
Confirme en écrivant "C'est bon pour moi" si tu as compris et que tu es prêt.
Contexte#
Une formation technique d'excellente qualité à destination du MIT, de l'école polytechnique et de ORSYS.
Public concerné#
Développeurs.
Objectifs pédagogiques#
- Maîtriser le langage de programmation Go, incluant sa syntaxe de base, la création et utilisation de fonctions, méthodes, interfaces, la gestion des erreurs, l'utilisation des pointeurs, structures, tableaux, slices, maps, et la gestion de la concurrence.
- Savoir créer et utiliser des packages, gérer les dépendances, effectuer des tests, des benchmarks, du profiling, et documenter le code Go.
- Pouvoir développer des applications orientées réseau et web en Go, manipuler des données structurées et faire communiquer des services.
- Savoir accéder aux bases de données et utiliser des ORM en Go, y compris la création d'applications gérant des utilisateurs et des stocks.
- Être capable de développer des applications en ligne de commande en Go, comprendre et appliquer les bonnes pratiques, et connaître les bases de l'empaquetage et du déploiement d'applications Go.
Prérequis#
- Comprendre les principes fondamentaux de la programmation informatique, acquis par une expérience pratique avec un langage comme Python, Java, C, etc.
- Être à l'aise avec l'utilisation des systèmes d'exploitation, tels que Unix/Linux ou Windows.
- Avoir une connaissance de base des modèles OSI et TCP/UDP/IP.
- Avoir une compréhension générale de ce qu'est une base de données relationnelle et comment elle fonctionne.
- Être conscients de l'importance des bonnes pratiques en développement de logiciel.
Programme de la formation#
Cryptographie et services de sécurité#
- Terminologie et principes cryptographiques.
- Principaux algorithmes de cryptographie et leurs usages dans TLS.
- Fonction de hachage avec et sans clé.
- Services de sécurité : confidentialité, authentification, intégrité.
Certificats et signature numérique#
- Signature numérique.
- Certificats et mise en œuvre des clés PKCS12.
- Profils de certificats pour TLS.
Architecture de TLS#
- Panorama des différentes versions, de SSL à TLS.
- Architecture, protocole et services de sécurité de TLS.
Configuration et mise en œuvre du protocole TLS#
- Configuration du côté client et serveur.
- Configuration pour authentification simple du serveur.
- Mise en œuvre des certificats, paramétrages des algorithmes de chiffrement du côté serveur.
- Authentification du serveur, configuration des magasins de certificats.
Intégration de TLS dans les applications#
- Principes de fonctionnement des bibliothèques TLS pour les principaux langages de programmation.
- Gestion des erreurs et des exceptions liées à TLS.
- Bonnes pratiques de programmation sécurisée avec TLS.
Analyse de sécurité et perspectives du protocole TLS#
- Attaques sur le protocole TLS et impact sur les applications.
- Bonnes pratiques, contrôle des configurations.
- Présentation du protocole DTLS.
Sécurité des applications et gestion des vulnérabilités liées à TLS#
- Identification et correction des vulnérabilités liées à TLS dans les applications.
- Sensibilisation aux failles de sécurité courantes et aux bonnes pratiques pour les prévenir.