Sujet bac NSI 2025 jour 2 (18 juin) | Correction
Exercice 1⚓︎
-
Le caractère espace (noté
_dans l'arbre) sera codé010 -
Pour décoder le mot, on descend dans l'arbre jusqu'à arriver à une feuille, puis on recommence avec la suite du mot binaire.
Ainsi le mot binaire '0001110101111110011001' peut être découpé en
'00 011 1010 1111 11001 1001' 'e s p i o n'
Le texte codé est : 'espion'
-
Un parcours en largeur d'abord permet de parcourir les feuilles par ordre de profondeur croissante. C'est donc celui qui permet ici d'obtenir les symboles par taille d'encodage croissante.
Partie B
-
Le total des occurrences est égal au nombre de symboles de la chaîne (22 dans l'exemple de la figure 2.) Pour avoir deux sous-groupes avec le nombre d'occurrences les plus proches possible, il faut que ces nombres soient le plus proche de la moitié (ici 11).
Dans le cas de la Figure 2., les deux sous-groupes ont un nombre d'occurrences égal à 11, c'est donc le partage optimal.
De plus l'ordre des symboles est bien conservé entre les sous-groupes et au sein de chaque sous groupe.
-
La profondeur de la racine étant 0, la profondeur maximale est atteinte pour les feuilles
oetdet elle est de 5. La hauteur de l'arbre de la Figure 3. est 5. Dans le contexte du codage de Shannon-Fano cela correspond donc Ă la taille maximale en bits du codage d'un symbole. -
En ASCII, la chaîne de caractères
je pense, donc je suisest encodée avec 22 octets, c'est à dire 22 x 8 = 176 bits.Le codage de Shannon-Faro demanderait ici beaucoup moins de bits : - 4 bits pour chacun des caractères
i u c pqui apparaissent chacun 1 fois : 16 bits - 5 bits pour chacun des caractèreso dqui apparaissent chacun 1 fois : 10 bits - 4 bits pour chacun des caractèresn jqui apparaissent chacun 2 fois : 16 bits - 3 bits pour le caractèresqui apparait 3 fois : 9 bits - 3 bits pour le caractère_qui apparait 4 fois : 12 bits - 2 bits pour le caractèreequi apparait 4 fois : 8 bitsAu total le codage de Shannon-Fano utilise 16 + 10 + 16 + 9 + 12 + 8 = 71 bits. C'est environ deux fois moins que le codage ASCII.
Cette performance du codage de Shannon-Fano s'explique autant par l'intérêt d'un codage préfixe qui utilise des codages plus courts pour les caractères les plus fréquents que par le nombre réduits de caractères codés dans le codage de Shannon-Fano : 12 au lieu des 128 de l'ASCII.
-
Dessin
Partie C
-
Python ou par compréhension:
-
Python Fonction
shannoncomplétée : -
La fonction récursive
shannonse termine car elle possède une condition d'arrêt (len(tab) == 1) et que les appels récursifs se font sur des tableau de tailles qui décroissent strictement, au dernier appel, le tableau ne contient que le caractère et a donc pour taille 1. -
On peut envisager une fonction sans le dictionnaire codage. Cependant ce dernier est utile pour ne pas avoir Ă rappeler la fonction
shannona chaque occurrence d'un symbole.
Exercice 2⚓︎
-
Une clé primaire doit respecter une contrainte d'unicité. Il peut y avoir des homonymes parmi les adhérents. L'attribut
nomne peut donc pas servir de clés primaire. -
La requête SQL va renvoyer les noms des jeux et des éditeurs pour tous les jeux de la relation
jeu. Ils seront triés par ordre alphabétique des noms des jeux. -
Les deux autres attributs de la relation
participationsont des clés étrangères :idAdherentqui fait référence à la clé primaire deadherentetnomEvenmentqui fait référence à la clé primaire de la relationevenement -
Voici la fonction
dict_empruntsqui sera appelée avec la liste des jeux créees ci-dessus -
Question plus difficile
Il est possible d'écrire une algorithme en compléxité linéraire qui parcours le dictionnaire
empruntset qui pour chaque jeu, soit ne fait rien si le jeu a un nombre d'emprunts inférieur à ceux du podium potentiel, soit ajoute à la liste d'une des 3 places du podium si le nombre d'emprunts est égal au nombre de cette place, soit crée une nouvelle liste singleton avec le jeu uniquement si le nombre d'emprunts est supérieur strictement au nombre d'une des places du podium sans être égal à un autre du podium.
Exercice 3⚓︎
-
11 (L) 8 (I) 1 (B) 17 (R) 4 (E)4 (E) 24 (Y) 16 (Q) 12 (M) 19 (T)en sommant et en appliquant le modulo 26
15 (P) 6 (G) 17 (R) 3 (D) 23 (X)LIBREsera codéPGRDXà l'aide de la cléEYQMT -
Python Il est aussi possible d'utiliser la méthode native Python
indexqui s'applique aux listes. -
Utiliser
ord(lettre) - ord('A')permettrait d'éviter la recherche séquentielle dans alphabet pour chaque lettre, donc de gagner en complexité temporelle. -
-
L'appel
chiffrement('RESEAU', 'GFTZ')va provoquer une erreur de type AssertionError et afficher le message'impossible'précisé dans assert. La clé est en effet trop courte. -
6 (G) 12 (M) 4 (E) 3 (D) 7 (H)5 (F) 21 (V) 4 (E) 8 (I) 19 (T)en soustrayant les indices de la clé et en appliquant le modulo 26
1 (B) 17 (R) 0 (A) 21 (V) 14 (O)Le message
GMEDHest déchiffré enBRAVOavec la cléFVEIT -
Pour déchiffrer le message on applique un procédé analogue au chiffrement, sauf qu'au lieu de sommer les indices de la clé on les soustrait (pour revenir à l'indice de départ). On applique aussi de nouveau le calcul du modulo 26.
-
Partie B - Sécururisation des communications
-
Un chiffrement symétrique utilise la même clé pour chiffrer et déchiffrer. L'exemple du masque jetable utilise un chiffrement symétrique. Cette clé unique impose qu'elle soit le même du côté emission et du côté réception.
Un chiffrement asymétrique utilise une clé pour chiffer et une autre pour déchiffrer. Cela demande à chaque utilisateur de posséder un couple de clé (une publique et un privée). RSA est un exemple d'algorithme de chiffrement asymétrique.
Le chiffrement symétrique propose des algorithmes très sûrs mais nécessite un échange de clé entre les parties, ce qui est parfois une difficulté à sa mise en oeuvre.
-
Avec un algorithme de chiffrement asymétrique tel que RSA, Bob utilisera sa clé privée pour déchiffrer le message envoyé par Alice et qu'elle a chiffré avec la clé publique de Bob.
-
L'utilisation de la seule clé publique de Bob ne suffit pas à garantir l'authenticité de la personne qui émet. Ainsi une tierce personne peut remplacer le message d'Alice par un autre qui sera lui aussi chiffré avec la clé publique de Bob. Pour garantir l'authenticité des parties dans un échange asymétrique, il faut utiliser une signature qui sera chiffré avec la clé privé de la personne qui émet, garantissant ainsi son identité.
-
HTTPS est un acronyme : HyperText Transfer Protocol Secure.
Il ajoute à HTTP deux propriétés essentielles à la sécurisation des communications :
-
le chiffrement des données qui garantit la confidentialité des échanges.
-
l'authenticité du serveur grace à un certificat d'authenticité délivré par une autorité de certification.
Le protocole HTTPS fonctionne avec le protocole TLS qui implique plusieurs étapes:
-
Vérification de l'authenticité du serveur par le client.
-
Création de la clé commune du chiffrement symétrique à l'aide d'un algorithme de chiffrement asymétrique offrant des garanties contre l'attaque de l'homme du milieu (man in the middle).
-
Échange des données sécurisé à l'aide du chiffrement symétrique avec la clé créee.
-
-
HTTPS permet d'utiliser un chiffrement symétrique très sur et rapide: AES. Il garantit de plus l'authenticité du serveur. HTTPS offre donc des fonctions supplémentaires à un algorithme de chiffrement asymétrique en combinant : authenticité, rapidité et confidentialité.
Partie C
-
Les adresses du réseau privé
192.168.110.0/24s'obtiennent en vérifiant si la partie réseau (préfixe) est la même que celle de l'adresse192.168.110.0sur la longueur du masque de 24 bits :255.255.255.0. Elles commencent donc toutes par192.168.110.L'adresse précisée dans la commande ping :
192.168.100.115ne fait donc pas partie de ce réseau. Sans routeur qui connecte les deux sous-réseau, cela explique que Marc n'obtienne aucun paquet réponse aux 4 envoyés et donc l'erreur obtenue.Pour vérifier la connexion avec le poste de travail 115 du même sous-réseau, Marc peut taper la commande :
ping 192.168.110.115 -
Si le masque de sous-réseau devient
11111111.11111111.11111111.11100000, il sera sur 27 bits. Pour trouver son écriture décimale, nous allons convertir le dernier octet,11100000, en décimal : 224 (128 + 64 + 32).Le masque de sous-réseau sera alors en décimal :
255.255.255.224. -
Le masque
255.255.255.224correspond à 27 bits pour la partie réseau.Il reste 32 - 27 = 5 bits pour la partie hôte.
Le nombre total d'adresses = \(2^5\) = 32 adresses
2 adresses sont réservées :
-
1 pour l’adresse du sous-réseau :
192.168.110.96 -
1 pour l’adresse de diffusion (broadcast) :
192.168.110.127
Il y 30 adresses IPv4 utilisables sur ce sous-réseau.
-
-
Pour avoir la la représentation binaire du nombre 134, nous pouvons utiliser la méthode des divisions euclidiennes successives par 2 ou trouver par une méthode gloutonne les puissances de 2 qui composent 134. 134 = 128 + 4 + 2.
Donc 134 s'écrit en binaire sur un octet : '10000110'.
-
Si Zoé possède l’adresse IPv4
192.168.110.134avec un masque de sous-réseau255.255.255.224, les machines qui sont connectées au même sous-réseau auront une adresse IPv4 avec les mêmes 27 premiers bits que ceux de l'adresse de Zoé donc une adresse en 192.168.110 et le dernier octet qui commence par les 3 bits100ceux de 134.-
Commande N°1 : 115 à une écriture binaire qui commence par
0et non1. L'adresse192.168.110.115n'est donc pas sur le même sous-réseau que Zoé. -
Commande N°2 : 153 s'écrit
10011001qui commence bien par100. L'adresse192.168.110.153est donc bien sur le même sous-réseau que Zoé.
La commande N°2
ping 192.168.110.153permet donc la réponse4 packets transmitted, 4 received, 0% packet loss, time 3002ms, même sans routeur.Il est indiqué que les sous-réseaux sont réliés par des routeurs. Aussi avec un routeur qui fonctionne, la commande N°1 pourrait aussi donner la même réponse.
-