Sécurité Informatique Essentielle
Sécurité Informatique Essentielle
Jean-Charles Fabre
Septembre 2005
Page 1
SOMMAIRE
I.1. GENERALITES 3
I.2. LES ATTAQUES 11
I.3. LES DEFENSES 20
- Chiffrement symétrique – à clé secrète (exemples: le DES, l'AES)
- Chiffrement asymétrique – à clé publique (exemples: le RSA, Diffie-Hellman)
- Signatures électroniques et certificats
I.4. EVALUATION 61
II.1. PRINCIPE 74
II.2. EXEMPLE D'AUTHENTIFICATION PAR MOT-DE-PASSE : UNIX 75
II.3. AUTHENTIFICATION A DISTANCE 77
- Authentification à chiffre symétrique – à clé secrète (exemple: Kerberos)
- Authentification à chiffre asymétrique – à clé publique (exemple: Protocole Needham- Schroeder
II.4. AUTHENTIFICATION PAR CARTE A PUCE 86
Page 2
Chapitre I : INTRODUCTION A LA SECURITE DES SYSTEMES
INFORMATIQUES
I.1. GENERALITES
Page 3
Page 5
Page 6
Sécurité et sûreté de fonctionnement
Page 7
Page 8
Moyens pour la sûreté de fonctionnement
! méthodes, outils et solutions pour :
1. fournir au système l'aptitude à délivrer un service conforme au service spécifié
(fourniture de la sûreté de fonctionnement)
2. donner confiance dans cette aptitude (validation de la sûreté de fonctionnement)
FOURNITURE
Page 9
FAUTES
Page 10
I.2. LES ATTAQUES
Motivations des attaquants
Page 11
Page 12
Classification des attaques
Ecoute passive : accéder sans modification aux informations générées, transmises,
stockées ou affichées (confidentialité)
% voies de communication : accès physique au médium ou analyse du rayon-
nement émis
% mémoires ou disques : accès en lecture
% périphériques : écrans, claviers, imprimantes : analyse du rayonnement
% unités centrales : analyse du rayonnement
! matériels TEMPEST
Interception : modifier des informations transmises (intégrité)
% destruction de messages, “éblouissement”
% modification de messages
% insertion de messages (ex: rejeu)
Répudiation : refuser de reconnaître qu'on a effectué une opération (intégrité)
% l'émetteur refuse de reconnaître qu'il a émis un message
% le récepteur refuse de reconnaître qu'il l'a reçu
Cryptanalyse : obtenir des informations secrètes à partir d'informations publiques
(confidentialité et intégrité)
% message clair, clés, algorithme de chiffrement
Page 13
Page 15
Page 21
I.3.2. Autorisation
Ce principe n’est pas strictement appliqué dans les systèmes informatiques courants.
Illustration :
• Soit un programme P qui accède en lecture à un fichier F et en écriture à un fichier
G pendant son exécution.
• Lors de l’exécution de P, tout accès autre que ceux autorisés sur F et G, ou a
fortiori sur tout autre objet du système doit être interdit.
• La réalité :
o les droits ne sont pas associés à P, mais à l’utilisateur U qui exécute P
o pour résoudre le problème il faut un matériel / architecture / OS spécifiques
Page 22
I.3.3. Cryptologie = cryptographie + cryptanalyse
PRINCIPE :
Technique très ancienne d'abord utilisée pour les transmissions (et les fichiers) :
Exemple : chiffre de César : chiffrement : A ! D, B ! E, ..., Z ! C
déchiffrement : A ! X, B ! Y, C ! Z, D ! A, ...
Page 23
Confidentialité et intégrité :
Authentification :
De nombreux schémas d'authentification sont basés sur la cryptographie, en
particulier pour se prémunir contre les interceptions.
Exemples :
Authentifieur
Utilisateur U1 : {pass-1}K
id=Ui, pass-i
U2 : {pass-2}K
(pass-i) ...
Ui : {pass-i} K
...
Authentifieur
id=Ui
Utilisateur {a}Kui U1 : Ku1
U2 : Ku2
(Kui) {a+1}Kui ...
Ui : Kui
...
Page 26
Chiffres symétriques
Kc = Kd et [ ] = {}-1
Ce sont les chiffres les plus classiques (tous les chiffres connus avant 1976 !).
TRANSPOSITIONS
( cryptogramme :"EIRLRETLESPOPEREELRDOMEHM"
Par texte clef
La clef est aussi longue que le message, ce qui rend plus difficile la
cryptanalyse.
L E M E S S A G E A R R A N G E S O U S F O R M E
12 4 13 5 21 22 1 10 6 2 18 19 3 15 11 7 23 16 25 24 9 17 20 14 8
L E R I R E E S T L E P R O P R E D E L H O M M E
E L R E I T R E H S P L R M O D O E P M R E E L E
Page 28
SUBSTITUTIONS
Simple
Un décalage constant de l'alphabet est utilisé :
Exemple : chiffre de César : chiffrement : A ! D, B ! E, ..., Z ! C
déchiffrement : A ! X, ..., C! Z, D ! A, ...
( SECURITE ' VHFXULWH
Synonymique
Un caractère peut être codé par différents symboles, ce qui permet de dissimuler
la fréquence des lettres du langage naturel.
Exemple : A' ) * + ,
B' - .
C' / 0 1
Poly-alphabétique
Différents décalages sont utilisés au cours du chiffrement, selon la clef.
Exemple : Chiffre de Vigénère
M S E M I N A I R E S E C U R I T E
K T A B L E T A B L E T A B L E T A
C L E N T R T I S P W X C V C M M E
Page 29
CHIFFRES AUTOCLAVES
Autoclave de crypto :
M S E C U R I T E I N F O R M A T I Q U E
K C L E F U P G Z L X Z D T K E R K WE K
C U P G Z L X Z D T K E R K WE K S M Y O
Page 30
Cryptographie et information binaire
L'information binaire utilise un vocabulaire très restreint : 0 ou 1.
SUBSTITUTION
Page 31
TRANSPOSITIONS
Par permutation :
0 0
0
1
0 1
1 1
Par décalage :
0
1 1 0 1 1 1 0 0 0
0 1 1 0 1 1 1 0 0
Page 32
Le DES
(Data Encryption Standard)
Publié en 1976 par le NBS (National Bureau of Standards), le DES est une norme
(FIPS 46-1) recommandée pour le chiffrement commercial jusqu’en 1993.
Issu du “Lucifer” conçu par IBM, c’est un chiffre symétrique qui permet de chiffrer
des mots de 64 bits au moyen d'une clef de 56 bits.
Mis en œuvre par matériel (LSI, micro + ROM), le même circuit est utilisé pour le
chiffrement et le déchiffrement. Sa mise en œuvre par logiciel est peu efficace.
K(56 bits)
Remarque : En 1993, il a été re-certifié pour 5 ans, car il n’y avait pas d’alternative.
L’AES (Advanced Encryption Standard) a pris le relai en 2002.
Page 33
Page 34
CHIFFREMENT / DECHIFFREMENT
M C
$ $
L0 %%% IP &&& R0 L'0 = R16 %%% IP &&& R'0 = L16
Page 35
Les clés Ki courantes sont calculées à partir de K par un module appelé Key
Scheduler. Ce module génère 16 clés à partir de K de façon déterministe.
Equations de transformation
- Chiffrement : : " i # [1..16],
Ri = Li-1 ! f(Ri-1, Ki)
Li = Ri-1
Page 36
Mauvaises clés du DES
Certaines clefs du DES ne conviennent pas car elles réduisent sensiblement la solidité
du chiffre.
CLEFS FAIBLES
Les 4 clefs sont telles qu'elles conduisent à une valeur unique des clefs internes (les
registres C et D sont toujours égaux à 0 ou 1)
01 01 01 01 01 01 01 01
1F 1F 1F 1F 0E 0E 0E 0E
E0 E0 E0 E0 F1 F1 F1 F1
FE FE FE FE FE FE FE FE
CLEFS SEMI-FAIBLES
Les 12 clefs suivantes ne génèrent que 2 clefs internes distinctes :
E0 FE E0 FE F1 FE F1 FE 01 E0 01 E0 01 F1 01 F1
FE E0 FE E0 FE F1 FE F1 FE 1F FE 1F FE 0E FE 0E
1F FE 1F FE 0E FE 0E FE E0 1F E0 1F F1 0E F1 0E
01 FE 01 FE 01 FE 01 FE FE 01 FE 01 F1 01 F1 01
1F E0 1F E0 0E F1 0E F1 E0 1F 01 1F 01 0E 01 0E
01 E0 01 E0 01 F1 01 F1 1F 01 1F 01 0E 01 0E 01
Les clefs faibles ne diminuent pas la sécurité du DES, il suffit de les éviter.
Page 37
Chaque bit du texte chiffré doit dépendre de chaque bit du texte clair et de la clef
(c'est une des spécifications de l'algorithme).
Illustration
M 1000 0000 0000 0000
K 30 0000 0000 0000
C 958E 6E62 7A05 557B
Si un bit du texte chiffré est modifié :
C 858E 6E62 7A05 557B
K 30 0000 0000 0000
M 8D48 93C2 966C C211
Si un bit de la clef est modifié :
C 958E 6E62 7A05 557B
K 10 0000 0000 0000
M 6D4B 9453 7672 5395
Page 38
Mode CBC (Cipher Block Chaining) : autoclave de crypto
C i-1 C i-1
M DES DES Mi
i
{ecb} [ecb]
Ci
Vecteur Vecteur
d'initialisation K K d'initialisation
Page 39
K K
Vecteur Vecteur
d'initialisation d'initialisation
k k
DES DES
{ecb} k bits
{ecb} k bits
Page 40
Mode CFB (Cipher Feedback Block) : autoclave de crypto :
K K
C i-1 C i-1
k k
DES DES
{ecb} k bits
{ecb} k bits
V.I. V.I.
Mi (k bits)
Ci (k bits) Mi (k bits)
Page 41
Critiques du DES
" Clef de taille trop faible (56 bits) : 256 ) 1017
Une attaque exhaustive pourrait être menée avec les technologies actuelles en 3,5
heures sur une machine de 1 M$ (attaque par clair connu) en 1990. Des progrès
depuis !
$ changer l’algorithme pour étendre la clef à 128 bits ? : C’est l’AES !
$ on peut aussi envisager un chiffrement multiple (-> clé de 112 bits, clé de 168 bits
avec le Triple DES…. Lenteur !) :
E D E
M C
K1 K2 K1
D E D
C = {[{M}K1]K2}K1 M = [{[C]K1}K2]K1
Le concours :
• Algorithme de chiffrement symétrique public
• Caractéristiques : blocs de 128 bits ; clés de 128, 192, 256 bits
• Disponible pour toute utilisation, y compris sur SmartCards
Le déroulement :
• 20 Août 1998 : 15 candidats déclarés pour une analyse scientifique
• 20 Mars 1999 : 5 candidats retenus, MARS, RC6, Rijndael, Serpent, TwoFish
• 2 Octobre 2000 : « The winner is Rijndael » de deux chercheurs Belges
Joan Daemen et Vincent Rijmen
• 26 Novembre 2001 : Federal Information Standards Publication FIPS 197.
• 26 May 2002 : Le standard est effectif pour implémentation.
Page 43
Principe de l’AES
Comme la plupart des chiffrements par blocs modernes, le chiffrement s'effectue en
deux parties : une procédure d'expansion de la clé et la fonction principale de
chiffrement qui s’appuie sur des mécanismes classiques de substitution, permutation,
par décalages, XOR, des étapes (rounds).
L’objet de base est appelé State Array.
- nombre de lignes (rows) = 4 (4 octets, 32 bits)
- nombre de mots de 32 bits : taille du bloc /32 = nombre de colonnes (Nb)
- nombre de boucles de traitement (Nr)
Page 45
La substitution ByteSub
L’idée consiste à remplacer toute valeur d’octet possible par une autre calculée à par
inversion des valeurs (1/bi,j) et un produit matriciel : [b’]= M x [b] + [c].
y0 1 0 0 0 1 1 1 1 x0 1
y1 1 1 0 0 0 1 1 1 x1 1
y2 1 1 1 0 0 0 1 1 x2 0
y3 1 1 1 1 0 0 0 1 x3 0
y4 = 1 1 1 1 1 0 0 0 x4 + 0
y5 0 1 1 1 1 1 0 0 x5 1
y6 0 0 1 1 1 1 1 0 x6 1
y7 0 0 0 1 1 1 1 1 x7 0
Ces deux transformations en séquence donnent lieu à une S-BOX pour les 256
valeurs possibles d’un octet.
b’0,c 02 03 01 01 b0,c
b’1,c
b’2,c
= 01
01
02
01
03
02
01
03
b1,c
b2,c
b’3,c 03 01 01 02 b3,c
Page 47
L’opération AddRoundKey
Elle consiste a faire un XOR entre chaque octet de donnée et l’octet de la clé courante
correspondant à chaque étape : yi,j = xi,j ! ki,j.
L’algorithme de génération des différentes clés courantes diffère de celui qui est
utilisé dans le DES.
Il est appelé Key Expansion, car il repose sur une extension effective de la clé sur
une longueur de Nb(Nr+1) mots de 4-octets.
Cette série de valeurs pseudo-aléatoires (la clé initiale étant en fait la graine de
l’algorithme) est utilisée essentiellement lors de l’opération AddRoundKey.
Page 48
Les opérations de déchiffrement
Elle repose sur le même algorithme général et utilise des fonctions inverses de celle
qui ont été effectuées lors du chiffrement.
En conclusion :
- simplicité des opérations utilisées à l’exécution
- extensible pour des tailles de bloc supérieures
- extension de la taille des clés à 128, 192, 256
- efficacité !
Page 49
" On ne peut pas les utiliser comme signature digitale si les deux parties ne se font
pas confiance mutuellement.
En effet, on ne peut pas savoir si le message a été chiffré par l'émetteur ou le
récepteur (ou même un tiers auquel le récepteur aurait donné la clef).
Page 50
Chiffres asymétriques ou "à clé publique" : Kc + Kd
clé de chiffrement clé de déchiffrement
K K
c d
C = texte
M = texte chiffré ou M = texte
en clair cryptogramme en clair
chiffrement déchiffrement
Afin que les deux actions de chiffrement et déchiffrement permettent d'obtenir le bloc
de départ, il est nécessaire que, pour tout M # [0,n-1] :
M = CKd (mod n) = (MKc mod n )Kd mod n
c'est-à-dire : MKcKd (mod n) = M
Page 52
Le chiffre RSA
Chiffre dû à Rivest, Shamir et Adleman (MIT, 1978).
Le principe repose sur un problème de la théorie des nombres qui n'a pas aujourd'hui
de solution efficace : la factorisation des nombres ayant de grands facteurs premiers.
Soit n = P.Q avec P, Q premiers :
• il est facile de calculer n à partir de P et de Q
• il est difficile de retrouver P et Q à partir de n
Or, puisque n est le produit de deux nombres premiers (P, Q), le nombre d'Euler de n
s'écrit :
-(n) = (P-1).(Q-1)
On choisit Kc, Kd tels que1 :
Kc.Kd mod -(n) = 1
ce qui conduit à : MKcKd (mod n) = M
1 On choisit Kc, un nombre sur [1, -(n)], premier par rapport à -(n) et on calcule Kd, l'inverse modulo -(n)
de Kc, par : Kd = Kc [ -(-(n)) - 1] (mod -(n))
Page 53
Quantités publiques : n et Kp = Kc ou Kd
Quantités secrètes : -(n) et Ks = Kd ou Kc
Chiffrement : Soit M = 9
K
Alors C = M c (mod n) = 97 (mod 33)
= 4 782 969 (mod 33) = 15
Déchiffrement : Soit C= 15
Alors M = CKd (mod n) = 153 (mod 33)
= 3375 (mod 33) = 9
Page 54
Sécurité et performances du chiffre RSA
Sécurité :
Le problème de la cryptanalyse du RSA est au mieux aussi difficile que le problème
de la factorisation de n.
Il faut choisir n grand pour que la factorisation soit difficile : pour factoriser un
nombre de 115 chiffres décimaux il faut ~ 400 MIPS.ans avec les meilleures
méthodes de factorisation connues (il y a eu de grands progrès depuis 1970); il
faudrait ~ 400.000 MIPS.ans pour un nombre de 155 chiffres (~ 512 bits) et entre
4.000.000.000 MIPS.ans et 40.000.000.000 MIPS.ans pour 309 chiffres (1024 b.).
Remarque : le défi publié en août 1977 (129 chiffres décimaux, ~425 bits) a tenu
jusque fin avril 1994 : factorisé avec l’aide de 600 volontaires sur 1600 machines
pendant 8 mois (~5000 MIPS.ans + 45 h sur un MasPar 16K)
• n et Ks : ~ 512 ou 1024 bits, mais Kp peut être petit (par exemple : 3 ou 15)
• P et Q doivent être de tailles comparables (par exemple > 250 ou 500 bits)
• (P-1) et (Q-1) doivent contenir chacun un grand facteur
• le pgcd [ (P-1), (Q-1) ] doit être petit
Performances du chiffre RSA
En raison des opérations mathématiques utilisées, le RSA est beaucoup plus lent que
le DES, même en utilisant des circuits spécialisés (ordre de grandeur : n.100).
Page 55
Page 56
Génération de clé commune (Diffie-Hellman)
Page 57
Page 59
Page 60
I.4. EVALUATION
I.4.1.Méthodes d’Analyse des Risques
En France, il existe 2 méthodes d'évaluation d'une installation :
" MARION, proposée par l'APSAIRD (Assemblée Pleinière des Sociétés
d'Assurance Incendie et Risques Divers), utilisée (entre autres) pour évaluer les
montants des primes d'assurance
" MELISA, développée pour la DGA, visant plutôt les systèmes militaires et
gouvernementaux (confidentialité > intégrité > disponibilité)
Ces 2 méthodes consistent à
• analyser les vulnérabilités
• analyser les menaces
• analyser les risques
• évaluer les conséquences
• évaluer les coûts correspondants
• évaluer les coûts des contre-mesures
• sélectionner les solutions donnant le meilleur rapport efficacité/coût
• suivre l'évolution de l'installation
Page 61
I.4.2.Critères américains
Issus d'un souci (~1980) de créer un marché pour des systèmes informatiques
sécurisés pour pouvoir satisfaire à moindre coût les besoins de la Défense américaine
! confidentialité > intégrité > disponibilité
! Création d'une norme, sous forme de critères d'évaluation : le Livre Orange
TCSEC : TRUSTED COMPUTER SYSTEM EVALUATION CRITERIA (DOD, 1985)
• 7 classes (D, C1, C2, B1, B2, B3, A1) ordonnées
• un système informatique sera accepté dans une classe s'il vérifie à la fois
" des critères sur la doctrine de sécurité
" des critères sur la responsabilité (ou administration)
" des critères sur l'assurance (ou garantie)
" et des critères sur la documentation
Le Livre Orange ne s'applique directement qu'aux systèmes informatiques classiques
(isolés), mais pas facilement aux réseaux, aux bases de données, au temps réel, au
transactionnel...
Pour ces systèmes, des "Interprétations" et des Guides ont été publiés par le NCSC :
• Livre Rouge ou TNI : Trusted Network Interpretation of the TCSEC
• Personal Computer Security Consideration
• Guides pour l'audit, pour le contrôle d'accès discrétionnaire, les mots-de-
passe, la gestion de configuration
Page 62
CLASSIFICATION DU LIVRE ORANGE
D Protection minimale
C1 Protection discrétionnaire sécurité discrétionnaire
C2 audit
B1 labels
B2 Protection obligatoire protection structurée
B3 domaines de sécurité
A1 Protection vérifiée vérification
Page 63
DOCTRINE DE SECURITE
C1 +
C2 + +
B1 = = + +
B2 = = + +
B3 + (ACL) = = =
A1 = = = =
Page 64
RESPONSABILITE
Page 65
ASSURANCE OPERATIONNELLE
Page 66
ASSURANCE DU CYCLE DE VIE
Page 67
DOCUMENTATION
Page 68
CRITERES FEDERAUX
Norme en préparation (NIST et NSA) -> remplacer le Livre Orange et ses dérivés ->
préparer des critères communs...
Objectifs :
• mieux prendre en compte confidentialité, intégrité et disponibilité
• évaluation de produits plutôt que de systèmes
• séparer explicitement les aspects fonctionnels, les aspects liés au développement
et les aspects d’assurance (ou vérification), chacun de ces aspects étant évalués
avec différents niveaux
Assurance packages : exemples, correspondant à 7 niveaux de sécurité dans un ordre
croissant, regroupant des niveaux de fonctionnalité, de méthodes de développement et
de vérification “homogènes
Profils prédéfinis :
• 3 profils commerciaux : CS1 à CS3 (dans un ordre croissant de sécurité)
(CSR, Commercial Security Requirements)
• 4 profils (LP1 à LP4) pour des systèmes traitant des informations
confidentielles compartimentées et/ou multi-niveaux.
Page 69
Page 70
NOTION DE CRITERES COMMUNS
CC
(ISO)
Page 71
Page 72
I.4.5. Action coordonnée : CERT
"Computer Emergency Response Team"
Page 73
Page 74
II.2. EXEMPLE D'AUTHENTIFICATION PAR MOT-DE-PASSE : UNIX
Danger : fichier de mot-de-passe en clair
" fichier /etc/passwd contenant les mots-de-passe chiffrés (à sens unique)
deswarte:ld69f8tr6MNE2:393:39:Yves
Deswarte,20,6288:/users/deswarte:/bin/csh
Commande passwd :
8 caractères
(mot-de-passe en clair)
56 bits
25 fois
~DES 64 bits
"0000" 1 parmi 4096
Tirage aléatoire
11 car.
12 bits + 2 car.
(mot-de-passe
chiffré)
Page 75
Il n'est pas possible de décrypter les mots-de-passe chiffrés (fonction à sens unique)
En revanche, il est assez facile de tester des mots-de-passe devinés :
attaque par dictionnaire
Exemple : Crack : dictionnaire + règles de transformation
Dangers :
• pas de mot-de-passe
• mot-de-passe évident (informations locales, informations publiques, ...)
• mots-de-passe usuels (prénoms, couleurs, mois, ...)
• mots-de-passe de l'installation (ou de la maintenance)
• mot-de-passe initial d'un nouvel utilisateur
• même mot-de-passe partout (pour différentes machines, pour différents
privilèges, ...)
Précautions :
• Le mot-de-passe doit être individuel : 1 utilisateur, 1 compte, 1 mot-de-
passe :
" un compte commun à une équipe empêche de changer le mot-
de-passe, mais aussi de trouver le responsable d'une anomalie
(impunité) et les utilisateurs le savent...
• Il faut choisir un bon mot-de-passe : facile à retenir, difficile à deviner
ex: Moscou, Rome ! MOS$ROM
• Il faut savoir le changer assez souvent
• Cacher les mots-de-passe : shadows
Page 76
II.3. AUTHENTIFICATION A DISTANCE
Page 78
Needham-Schroeder :
SA
3
A 4 B
5
1. A envoie à SA un message M1 contenant (a,b,I1)
2. SA génère Kab et renvoie M2 = {I1,b,Kab,Tab}Ka où Tab ={Kab,a}Kb
3. A déchiffre M2, mémorise Kab, et renvoie à B M3 = Tab
4. B déchiffre M3, mémorise Kab, et renvoie à A M4 = {I2}Kab
5. A déchiffre M4 et renvoie à B M5 = {I2-1}Kab
Page 79
Exemple : Kerberos
Kerberos est le service d'authentification développé au M.I.T. pour le projet Athena
(plusieurs milliers de stations de travail et des serveurs sur un même réseau)
Page 80
Phase 2 : accès serveur
K ST
- distribution de clé K c,s
" # - partenaires : C, ST, S
Phase 1 : login
! $
- distribution de clé Kc,st`
- partenaires : C, K, ST C S
%
Page 81
C S
%
Page 82
Authentification par chiffre à clé publique
Objectif : Etablir une session entre A et B sans transférer d'information sur les
secrets (KSa et KSb) : authentification sans apport de connaissance
Page 83
Needham-Schroeder
SA
1 5
2 4
3
A 6 B
7
1. A envoie à SA le message M1 = (a,b)
2. SA renvoie à A M2 = {KPb,b}KSs (chiffrement pour certifier l'authenticité)
3. A déchiffre M2 à l'aide de KPs et mémorise KPb; A envoie à B M3 = {I1,a}KPb
4. B déchiffre M3 à l'aide de KSb et demande à SA la clé publique de A : M4=(b,a)
5. SA renvoie à B M2 = {KPa,a}KSs
6. B envoie à A M6 = {I1,I2}KPa
7. A renvoie à B M7 = {I2}KPb
Problème : le SA doit quand même être digne de confiance : déguisement possible
Page 84
Protocole d’authentification Fiat-Shamir
Basé sur un algorithme d'authentification développé par CMU (d’après Rabin).
Soit n un produit de deux grands nombres premiers, connu de tous les composants C
du système.
Chaque entité E génère aléatoirement une valeur re (1"re"n-1), qu'il garde secrète,
calcule xe = re2 mod n et publie xe (il est aussi difficile de calculer re connaissant xe
que de factoriser n).
Supposons que B veuille authentifier A (# vérifier avec une confiance > 1-2-t que A
connaît ra). A génère un tableau de t valeurs aléatoires vi (1"vi"n-1), en calcule les
carrés modulo n (vi2 mod n) qu'il envoie à B. B calcule une chaîne aléatoire de t bits
bi qu'il transmet à A.
Pour chaque i, A renvoie à B :
• zi = vi si bi = 0
• zi = ra.vi mod n si bi = 1
B calcule zi2 mod n et vérifie que :
• zi2 = vi2 mod n si bi = 0
• zi2 = xa.vi2 mod n si bi = 1
Un intrus n'a qu'une chance sur 2t de deviner à l'avance les bi pour choisir les vi2 qui
satisferont la demande de B.
Page 85
smartcard
device
Id
Kchild={id}Kmother Workstation
+ PIN
% {r}Kchild
! id
$r
smartcard
Kmother device " id, r
Remote
computer
# {r}Kchild
r=random number
Page 86
Authentification par carte à puce
Personnalisation de la carte utilisateur :
- génération de la Kchild = {id} Kmother
- chargement de la carte utilisateur avec identification (id) et Kchild
Protocole d’authentification
- Etape 1 : PIN de validation de la carte utilisateur et transmission du {id}
du lecteur->workstation->remote host
- Etape 2 : transmission du {id} + valeur aléatoire {r} du remote host au
lecteur contenant la carte mother.
- Etape 3 : génération de Kchild= {id}Kmother par la carte et transmission
de {r}Kchild au remote host
Page 87
La politique d'autorisation doit être basée sur un modèle formel, pour permettre de
vérifier :
" que la politique est complète et cohérente
" que la mise en œuvre est conforme
Page 88
Il existe de nombreux modèles formels : HRU, Take-Grant, Bell-LaPadula, Biba...
Modèle !HRU :
La configuration instantanée de protection du système informatique est définie par
(S,O,A) :
• S est l'ensemble des sujets courants
• O est l'ensemble des objets courants
• A est l'ensemble des droits courants des sujets sur les objets
Comme les sujets sont aussi des objets, on a S 1 O
A est représenté par une matrice : une ligne par sujet si et une colonne par objet oj
A(si,oj) = Aij = dij
où dij est un sous-ensemble de D (ensemble de tous les droits possibles).
On écrira :
(si,oj,dk) est vrai / le sujet si a le droit dk sur l'objet oj
D'où :
dij = {dk # D | (si,oj,dk)}
Page 89
Page 90
" Inconvénients d'une politique discrétionnaire (utilisée seule) : abus de pouvoir
(par maladresse ou malveillance)
• S'il est possible pour un utilisateur légitime d'accéder à certains objets ou d'en
modifier les droits d'accès, il est possible qu'un Cheval de Troie en fasse de
même.
• Si un utilisateur a le droit de lire une information, il a (en général) automa-
tiquement le droit de la divulguer à n'importe qui.
Page 91
Page 92
MODELE DE BELL-LAPADULA
Principes
• à chaque sujet si correspond une habilitation h(si)
• à chaque objet oj correspond une classification c(oj)
• propriété simple : (si,oj,lire) & c(oj) ! h(si) et
2j(cat.) 1 2i(cat.)
• propriété étoile : (si,oj,lire) 0 (si,ok,écrire) & c(oj) " c(ok) et
2j(cat.) 1 2k(cat.)
Ces règles empêchent la fuite d'information vers des niveaux inférieurs :
" si h(sn) < c(oi), il n'existe pas de suites {i,j,...,k} et {l,m,...n} telles que :
(sl,oi,lire) 0 (sl,oj,écrire) 0 (sm,oj,lire) 0 ... 0 (sx,ok,écrire) 0 (sn,ok,lire)
en effet, cela conduirait à :
c(oi) " c(oj) " h(sm) " ... " c(ok) " h(sn) & c(oi) " h(sn)
Inconvénient : dégradation de l’information -> niveaux de secret de + en + élevés
Les modèles multi-niveaux ne peuvent pas représenter toutes les politiques. Par
exemple, la “politique de la muraille de Chine” imposée aux agents de change
britanniques a conduit au développement du modèle de Brewer-Nash.
Page 93
Il existe d'autres types de politiques obligatoires qui visent plutôt à empêcher les
fraudes (attaques contre l'intégrité).
Modèle de Biba :
Analogue au modèle de Bell-LaPadula :
Niveaux d’intégrité : correspondent à des niveaux de vérification, crédibilité, ...
• à chaque sujet si -> niveau d’intégrité is(si)
• à chaque objet oj -> niveau d’intégrité is(oj)
Règles imposées pour les opérations :
• observation d’un objet par un sujet : (si, oj, observer) & is(si) " is(oj)
• modification d’un objet par un sujet : (si, oj, modifier) & is(oj) " is(si)
• invocation d’un sujet par un autre sujet : (si, sj, invoquer) & is(sj) " is(si)
Inconvénient : dégradation de l’information -> niveaux d’intégrité de + en + bas
Page 94
OBJECTIFS D'UNE POLITIQUE OBLIGATOIRE
" empêcher les fuites d'informations (ou les fraudes) à l'insu de leur proprié-
taire, par exemple au moyen d'un cheval de Troie, ou par accident,
" empêcher les fuites d'informations (ou les fraudes) par la volonté d'un utili-
sateur habilité mais malintentionné
Note : Pour que les mécanismes de protection obligatoire soient efficaces, il faut des
mécanismes d'authentification adaptés (ex.: non transmissibles : les mots-de-
passe, les badges, cartes à puces, ... ne suffisent pas !!!)
Page 95
Rappels :
• Un sujet a un droit d'accès sur un objet /il est autorisé à exécuter la fonction
d'accès correspondante sur cet objet.
Utilisateur = une personne physique ou un service (# personne morale)
Sujet = processus qui s'exécute pour le compte de l'utilisateur
Objet = toute entité, définie par un nom, un état et des fonctions d'accès
exemple : fichier, périphérique, programme, ...
Page 96
Notion de moniteur de référence et de TCB
MONITEUR DE REFERENCES :
incontournable, inviolable, prouvé correct
Sous-Système de Sécurité (S.S.S.)
ou TCB
Page 97
Sous-système
de sécurité
Utilitaires
Matrice des
droits d'accès
Moniteur de
Sujets références Objets
Fichier d'audit
Page 98
Matrice de droits d'accès
Représentation des droits d'accès sous forme d'une matrice complète :
2 une ligne pour chaque sujet si
2 une colonne pour chaque objet oi
2 la case Aij contient les droits du processus sur l'objet
3 la liste des opérations que le processus a le droit d'exécuter sur l'objet
2 la case ne contient que les droits vérifiables par le moniteur de référence
Exemple :
Page 99
Page 100
L'évolution de la matrice doit respecter la politique d'autorisation
=> La matrice de droits est un objet accessible seulement par le sous-système de
sécurité (moniteur de références + utilitaires) : si un sujet a le droit de modifier les
droits d'accès à certains objets (ex.: propriétaire de fichier Unix), il doit trans-
mettre une requête à un utilitaire du S.S.S.
Problème :
Page 101
Page 102
Notion de domaines d'objets
(ou domaines de protection):
De la même façon, lorsque plusieurs objets ont des droits d'accès identiques pour les
mêmes sujets, on peut les regrouper en domaines de protection :
Page 103
" par colonnes : ACL = listes [de contrôle] d'accès {Si, <di>}
à chaque objet Oj est associée la liste des sujets Si qui ont des droits d'accès à
l'objet, et pour chacun de ces Si, la liste des droits <di> correspondants
exemple : "permissions" associées aux fichiers d'Unix
" par lignes : c-listes = listes de droits ou capacités ("capabilities") {Oj, <dj>}
à chaque sujet Si est associée la liste des objets Oj appartenant au contexte de
Si, et pour chaque Oj, la liste des droits <dj> correspondants
exemple : machines à capacités
Ces deux organisations ne sont pas exclusives : les ACL sont souvent plus statiques
(modifiées en fonction d'opérations spécifiques) alors que les c-listes sont plus
dynamiques (modifiées à chaque opération) : exemple : Multics
Note : les capacités ne doivent être manipulées que par le S.S.S. : en particulier, un
sujet ne doit pas pouvoir transmettre de droit à un autre sujet en créant ou en
copiant une c-liste (exception : dans Amœba, les capacités sont utilisées
comme des tickets d'accès directement manipulés par les sujets)
Page 104
Notion de protection à base de capacités
Principe : gérer et vérifier par matériel les droits d'accès, en se rapprochant le plus
possible du moindre privilège
À chaque processus est associée une liste de capacités matérielle.
Chaque capacité contient un descripteur de segment (adresse et longueur) et les droits
du processus sur ce segment (r,w,x)
Il existe 2 types de base (gérés par matériel) :
" les segments (de données ou de code)
" les listes de capacités
Les types construits sont réalisés sur ces types de base :
" les opérations sont des segments de code contenant des gabarits de listes
de capacités
" les données sont structurées sous forme de segments de données
Page 105
Pile
Données
locales
Processus i
0 rw
1 rw Initialisation capacités
2 x
3 r Code du programme
principal
4 x
call Pi(Oj)
...
Donnnées
Mise à jour capacités d'Oj
Code de Pi
call op.(Op)
Page 106
CONCLUSIONS SUR L’APPROCHE BASEE SUR LES CAPACITES :
% Les capacités ne sont qu'un mécanisme de base au-dessus duquel il faut tout
construire ...
% La notion de capacités « cryptographique » est reprise actuellement pour
construire des protocoles d’autorisation distribués tolérants aux intrusions.
Page 107
L'accent a été mis sur la facilité d'utilisation ("friendly") plutôt que sur la sécurité.
Page 108
Notion d'utilisateur et de groupe
Un utilisateur est enregistré dans le système comme appartenant à un, voire plusieurs
groupes " G1 = {U1, U2, ...Un}
Les informations concernant les utilisateurs et les groupes sont accessibles en lecture
par un utilisateur quelconque ; la modification ne peut être effectuée que par un
utilisateur privilégié.
Page 110
Manipulation des droits
La représentation des permissions sur un fichier ou un catalogue est de la forme :
<type> rwx r_x __x <nom_du_propriétaire> <groupe> <nom_du_fichier>
Les permissions associées à un objet quelconque sont déterminées a priori par les
fonctions de création des objets (ou la fonction umask) :
Page 111
Il est parfois nécessaire de modifier les droits d'un processus en cours d'exécution
(analogue au changement d'anneau de Multics).
Par exemple : $ Un utilisateur U1 a le droit d'exécuter le programme P2 dont le
propriétaire est U2.
Pour s'exécuter, P2 doit accéder à un fichier F2 (propriétaire U2)
auquel U1 n'a pas accès.
Page 112
3 solutions possibles :
Page 113
6 exécuter un programme dont le propriétaire est "root" et dont le flag suid est
positionné.
La méthode 6 doit être réservée à des programmes "de confiance" et l'uid-gid du pro-
cessus est automatiquement restauré au retour du programme.
Page 114
Un exemple précis : /etc/passwd
Les utilisateurs sont enregistrés dans un fichier système bien identifié : /etc/passwd
- rw_ r__ r__ root sys /etc/passwd
Tout utilisateur a le droit de lire /etc/passwd et ne peut donc modifier directement
son mot de passe ; une fonction permet d'effectuer la modification : /bin/passwd
- rwx r_x r_x root sys /bin/passwd
Avec les permissions mentionnées ci-dessus, l'exécution de /bin/passwd s'effectue
dans le contexte d'un utilisateur et à son niveau de privilège $ échec
Seul le propriétaire de l'objet peut effectuer une opération d'écriture
utilisateur super-utilisateur
U1 U2
/bin/passwd write
(new_passwd) (new_passwd)
P2 /etc/passwd F2
- rws r_x r_x root sys /bin/passwd
Page 115
Unix n'a pas une bonne réputation pour ce qui concerne la sécurité.
Ceci est dû à :
" une utilisation trop laxiste des mécanismes de sécurité dans certaines
installations (parfois justifiée par la petite taille des systèmes, par exemple
pour les ordinateurs personnels)
" un grand nombre d'installations dans des zones où le piratage est considéré
comme un sport (universités)
Page 118
Principales failles possibles
% Sécurité des mots-de-passe :
Le cryptage des mots-de-passe est conçu pour résister efficacement aux attaques
systématiques (essais de toutes les combinaisons), même en utilisant un DES
câblé.
Mais le choix du mot de passe par l'utilisateur peut être malencontreux, rendant
très efficaces les attaques par dictionnaire.
2 rendre /etc/passwd inaccessible
(au moins le champ des mots-de-passe cryptés -> shadows)
2 supprimer les champs de commentaires dans /etc/passwd
2 refuser les mots-de-passe trop simples (comparaison à un dictionnaire)
2 éduquer les utilisateurs
2 [mots-de-passe générés aléatoirement, durée de validité, ...]
% Droits d'accès aux fichiers trop libéraux :
Exemple : le droit w sur un catalogue est pratiquement équivalent au droit w sur
tous les fichiers du catalogue, puisqu'on peut les détruire et les
remplacer par d'autres versions !
2 réduire les droits implicites ("umask")
2 éduquer les utilisateurs
Page 119
% Flag set-uid :
Exemple 1 : un pirate crée un programme, positionne le flag suid et change de
propriétaire (chown) :
ça ne marche pas :"chown" remet à zéro le flag suid
Exemple 2 : un pirate qui réussit un jour à devenir super-utilisateur crée un
cheval de Troie (login, crypt, telnet, ps, ...)
2 [restreindre "chown" au super-utilisateur]
2 "faire le ménage" parmi les fichiers appartenant à "root" avec le flag suid
positionné
2 les catalogues systèmes ne doivent pas avoir de droits r,w (sauf pour
"root")
2 si le flag suid est positionné, le fichier ne doit pas être accessible en
écriture
2 supprimer la commande "su" et le "login" sous root, bin, adm, ...
" attention aux droits de certains utilitaires : ex. mail (shell)
Page 120
% Déguisements et chevaux de Troie :
Exemples : login, ls, su, crypt, passwd, telnet, ftp, cu, ...
2 éduquer les utilisateurs (ex: PATH commençant par /bin et /usr/bin)
2 sécurisation du login : .secure, message d'information, fichier "logcheck"
2 interdire l’écriture et aussi la lecture de .profile, .exrc, ...
2 rendre obligatoire "/bin/su" au lieu de "su"
" attention à "IFS"
Exemple de déguisement
Le programme suivant simule l'exécution du login :
stty echo # écho sur le terminal
echo -n "login: "
read x # saisie du nom de login
stty -echo # pas d'écho sur le terminal
echo -n "Password: "
read y # saisie du mot de passe
echo " "
stty echo
echo $x $y >> fichier # sauvegarde du nom et du mdp
sleep 1
echo Sorry # affichage du "refus de connexion"
logout
Page 122
% Fichiers chiffrés :
Il existe des outils (cbw) pour décrypter les fichiers chiffrés par crypt !
2 prétraiter le texte en clair (ex: "pack")
2 chiffrer la clé (ex: "makekey")
% Fichiers temporaires :
Les catalogues /tmp et /usr/tmp sont en r,w pour tout utilisateur.
2 mettre umask à 077
2 utiliser les options de chiffrement sur les éditeurs (ex: vi -x)
% Terminaux "intelligents" :
Sur certains types de terminaux (ex: WYSE 75), il est possible d'envoyer des
messages (par mail ou write) qui verrouillent le terminal et transmettent à
l'ordinateur une commande pour le compte de l'utilisateur logué sur le terminal !
2 mettre un filtre sur la lecture du mail
2 remplacer write par d'autres utilitaires de messagerie
Page 123
% "Fausses" parades
% Vraies parades
Page 124
Minimum de précautions
• Mots-de-passe :
- un utilisateur, un compte, un mot-de-passe
- tous les comptes doivent avoir un mot-de-passe (exceptions : comptes
systèmes Unix : mots-de-passe verrouillés)
- pas de mot-de-passe évident (attention à l'initialisation)
- expliquer aux utilisateurs comment changer leur mot-de-passe
- ne pas utiliser le même mot-de-passe sur différentes machines (stables, pas la
même sécurité), ni pour différents privilèges
- protection des mots-de-passe
- test automatique et périodique de la validité des mots-de-passe
- changement périodique ?
• Installation du système, installation de nouveaux logiciels, maintenance :
attention aux comptes standard, aux droits exagérés, (télémaintenance), ...
• Sauvegardes périodiques
Page 125
Approche de Saturne-Delta4 :
• Service de sécurité
réparti, tolérant les
intrusions,
responsable de
l'authentification et
de l'autorisation
• Pas de confiance
dans les stations ni
dans les serveurs
(individuellement),
ni dans leurs
administrateurs (ou
officiers de sécurité)
Page 126
NOTION DE TOLERANCE AUX INTRUSIONS
Problématique
• Garantir l’intégrité et la confidentialité de l’information
• La redondance est une entrave à la garantie de ces propriétés
L’idée
• Fragmenter l’information de façon à produire des fragments non significatifs (non-
confidentiel)
• Disperser l’information de façon redondante sur un réseau de calculateurs
Application
• À la messagerie: fragmenter et router les fragments par des liens différents
(fragmentation des communications de Koga)
• Aux clés: fragmenter les clés de façon à ce qu’un sous-ensemble seulement soit
nécessaire pour reconstruire une clé secrète (notion de schémas à seuil de Shamir)
• Aux fichiers, à la gestion des autorisations, aux traitements (notion de
Fragmentation-Redondance-Dissémination)
Page 127
• Le problème :
— stockage de clés secrètes $ confidentialité, disponibilité
Page 128
SCHEMAS A SEUIL DE SHAMIR
y4
y3
y
2
y
1
y0
x0 x1 x2 x3 x4
" y = a x + b = P(x)
» y0 = a x0 + b
» y1 = a x1 + b
•••
» yn = a xn + b
Posons a, b secrets et x1, x2,… xn fixés
• Généralisation $ polynôme de degré S: Interpolation polynomiale de Lagrange
Page 129
FRAGMENTATION DE FICHIERS
Chiffrement
Nommage •
•
•
Fichier Fragments
Site utilisateur
Réseau à diffusion
Sites d'archivage
Page 130
AUTHENTIFICATION
Vote
Site de Site de Site de
sécurité sécurité sécurité
Page 131
AUTORISATION
Serveur de Sécurité
Serveur Sécurisé
(6) SESSION
Page 132
Direction centrale de la sécurité des systèmes d'information dans
l'organisation de la sécurité des systèmes d'information
Page 133