REPUBLIQUE DEMOCRATIQUE DU CONGO
Année académique 2007-2008
Dirigé par Assistant Martin NYONGOLO Luwawa
Travail présenté et défendu pour
l'obtention du diplôme de gradué en Informatique de
Gestion
Présenté par Richard ISHARA Kibasomba
ENSEIGNEMENT SUPERIEUR, UNIVERSITAIRE ET RECHERCHE
SCIENTIFIQUUE
INSTITUT SUPERIEUR PEDAGOGIQUE DE BUKAVU
ISP/BUKAVU
B.P: 854 BUKAVU
LA STEGANOGRAPHIE PAR LES IMAGES POUR LA SECURISATION DU
TRANSFERT DES MESSAGES
DEPARTEMENT D'INFORMATIQUE DE GESTION
SECTION DES SCIENCES COMMERCIALES ADMINISTRATIVES ET
INFORMATIQUE
PRELUDE
« Lance ton pain sur la sur LA
SURFace des eaux, car au cours de nombreux jours tu le retrouveras.»
ECCLESIASTES 11 :1
EPIGRAPHE
« Notre peur vient, non pas de ne pas
être à la hauteur; notre peur vient, du fait que notre pouvoir est
presque sans bornes.
On se dit souvent ` qui suis-je moi pour
être brillant, talentueux, fantastique ? '
A vrai dire qui est-on pour ne pas
l'être ?
Nous sommes sur terre pour témoigner de la
gloire de Jéhovah Dieu qui se trouve en nous, en nous autorisant
à rayonner permettant aux autres de faire autant »
DEDICACE
A notre père François MASUMBUKO Samba
Lutete pour nous avoir donné naissance et a
aimé ;
A notre mère Julienne MAWAZO Chakupewa
pour nous avoir tendrement aimé depuis son sein, a notre naissance, de
nous avoir éduqué et acheminé à l'école.
A notre grand frère Hector MUKAMBA
Byemba pour nous avoir suffisamment soutenu.
A la future Mère de nos
enfants si pas dans ce système des choses, dans le
monde nouveau, qu'elle se réjouisse de nos efforts.
Richard ISHARA Kibasomba
REMERCIEMENTS
Au Dieu tout puissant Jéhovah pour nous
avoir donné cette opportunité de réaliser ce
travail ;
A notre père François MASUMBUKO Samba
lutete et notre mère Julienne MAWAZO
Chakupewa pour nous avoir éduqué qu'ils
reçoivent par cet oeuvre le talent de leur fils cadet ;
Nous remercions notre Directeur L'assistant Martin
NYONGOLO Luwawa Kimbwe pour avoir été le premier
à nous former en des recherches aussi significatives ; son savoir
peut construire une muraille contre toute une armée ;
A tous les assistants et chefs des travaux qui nous ont
aidés à assimiler les notions essentielles de la
programmation : Diedonné KYENDA Sulika,
Tasho KASONGO, Manix LUNANGA, Anicet
ITONGWA KABIONA, Samamba TONY, Freddy
MUKUPI, Demas BULUBULA Kizungu;
C'est un énorme crime si nous pouvons passer sans nous
souvenir de notre cher Papa Ernest MAHAMBA Ndegey pour ses
soutiens et ses conseils pleins de sagesse ; que Jéhovah lui donne
une longue vie ;
A notre grand frère Hector MUKAMBA Byemba
pour nous avoir financièrement aidé dans notre parcours
académique. Puisse Jéhovah être avec lui dans tous ses
projets.
A nos soeurs Isabel BASUBI, Furaha
TAKUBUSOKA BITONDO, Zawadi BASUBI et SANGANYI ;
A Kennedy, Ndambi et Jean-Jacques MWENE MAHAMBA, Riziki
KABILONGO, Ange LUNANGA, notre oncle Barthélemy LUNANGA, Janvier
LUNANGA, Jessica ZAWADI et Son Bébé.
A nos frères dans le seigneur Christ jésus:
Prosper CHIRUZA, Saidi BUSSOLE Amani, Jean-Marie ZIHALIRWA, Prince KALALIZI,
Alain NGOY, Isaac MAKUVUNINA, Ahadi, Sikilizeni, Mamy et Neema BYAMUNGU, Edith,
Biringanine BULAKALI, Benjamin MUSIKIMI, Etienne MUKUMO, Alimasi AKSANTI,
Léon MASHAURI, et Chiza ;
A nos camarades : jean-mari MUNGUAKONKWA, Mutumay KABAMBA,
Didier MUTIKI, Kossi DJAKE, Matongo KAWAYA, Léon BYAMUNGU, Bulongo
TUKILINABO, Alain NAMUJIMBO Olivier MULONGESHA, Oswald MATTHIEU, Negro SIERRA,
à vous,
Nous disons Merci beaucoup !
SIGLES ET ABREVIATIONS
IBM: International Business Machine
Pixel: Picture Element
Bmp: Bitmap
ppp: Points Par Pouce
DPI: Dots Per Inches.
RVB: Rouge Vert
Bleu
RGB: Red Green Blue
RLE: Run Leigh Encoding
LAN: Local Area Network
MAN: Metropolitan Area Network
ASCII: American Standard Code for Instruction Interchange.
RESUME
La stéganographie, c'est l'art de dissimuler des
données dans d'autres données. En effet, l'envoie d'un message
secret avec sécurité pose des énormes difficultés
tant dans les domaines sociaux-économique qu'informatique.
Le présent travail examine une image bitmap en vue d'y
coucher un message et envoyer l'image à la place du message. A
l'arrivé, le message peut être tiré de l'image pour de sa
lecture.
Le programme procédera par la dissimulation d'un
fichier d'extension « .txt » c'est-à-dire un fichier
texte dans une image bitmap 24 bits.
Il utilise les 3 bits de poids faible de deux premières
couleurs et 2 bits du poids faible de la dernière couleur pour en
totaliser 8, cela dit le changement entre l'image d'origine et l'image
contenant le fichier caché est très léger.
Le résultat que nous avions eu en cachant un texte
derrière une image a prouvé que nous avions réalisé
les objectifs, ceux de cacher et lire le message dans une et de l'image.
O. INTRODUCTION
Lorsqu'on veut envoyer une lettre commerciale ou un document
quelconque, on a tendance à l'envelopper ; non pas pour
éviter les saletés liées au transfert de la lettre ou du
document, mais aussi et surtout, pour éviter que le message ne soit lu
sans effort par une tierce personne.
Aujourd'hui avec l'évolution et la rapidité des
réseaux informatiques, des millions des messages sont envoyés
par jour.
Ainsi, les messages électroniques (e-mail), les
fichiers et autres documents qu'on peut s'envoyer à travers le
réseau internet ou local, ont commencé à être
protégés soit par mot de passe ou soit par cryptage du
contenu.
Mais à présent, l'expéditeur d'un message
devrait faire très attention parce que d'une part, au niveau du serveur
l'on peut parvenir à déchiffrer le mot de passe et /ou
décrypter le message codé afin de lire son contenu. Ce qui est
périlleux est que Les messages véhiculés sur Internet ont
une structure bien déterminée : tout message commence par un
en-tête indiquant l'adresse du destinataire, l'adresse de
l'émetteur, la date et l'objet du message ; viennent ensuite le corps du
message et la signature. De cette façon si votre message contient un
secret, un plan quelconque important ou des écritures comptables que
vous ne voulez révéler qu'à celui à qui vous vous
adressez, ceux-ci seraient plus vite à la merci de vos adversaires qui
n'hésiteront pas de dévoiler votre fort intérieur, voler
votre plan et le publier ou même vous agresser et vous tuer. D'autres
parts les gouvernements interdisent cette pratique visible de la
cryptographie.
Face à ces situations, les questions suivantes peuvent
être posées :
· Il y a - t - il moyen de cacher une information et la
transférer sans craindre toutes représailles ?
· La stéganographie par les images permettra - t -
elle de cacher une information au sein d'un fichier image ?
· L'image contenant le message caché peut - elle
être visualisée, gardée ou transférée sans
faire voire ni perdre les informations ou le message lui contenu?
· Les informations cachées et envoyées,
peuvent-elles être tirées de l'image et comprises par leur
destinataire ?
Celles-là sont les questions principales auxquelles
nous nous forcerons de répondre et donner satisfaction tout au long de
notre travail.
Dans une certaine mesure, une question
d'intégralité et de confidentialité s'impose dans les
affaires commerciales et pourquoi pas pour la bonne gestion.
En vue du transfert sécuritaire des informations et
leur intégralité à la lecture ; un logiciel
stéganographique que nous aurons à construire pourra permettre
que ces informations Soient dissimilées au sein du codage d'un fichier
image de format Bitmap.
Une image contenant le message secret peut être alors
visualisée et transférée dans un réseau local ou
par internet sans que la curiosité ou l'attention des tierces personnes
y soit attirée. Cela sera possible d'autant plus que l'image contenant
le message en son sein gardera ses qualités et sa taille primitives.
Le nombre de fois d'ouverture ou d'accès à ce
fichier n'altérera pas le message ni les opérations d'impression
pourront être assurées à l'image sans imprimer le message
ou affecter les bits du message le comportant.
Ce logiciel que nous construirons sera capable de
déduire le message caché dans le codage de l'image sans modifier
l'état de celle-ci.
Le message caché et extrait sera lu avec toute
intégralité comme au départ.
La stegenographie par les images dont nous allons parler tout
au long de ce travail est d'une grande importance pour des messages secrets que
l'on peut s'envoyer via un réseau ; qu'on peut garder avec le
maximum de précision et sureté, cela pendant longtemps dans un
emplacement bien connu du PC et généralement
fréquenté par d'autres personnes.
Actuellement les images sont utilisées dans plusieurs
branches de l'informatique : leurs utilisations dans des pages Web devient
de plus en plus exagérées et leur envoie sur le réseau
internet n'est pas aussi à négliger. Ces images partent souvent
avec elles des nombreux virus informatiques et s'affichent quand il ya
exécution du virus en question. Nous avons comme exemple le virus
communément appelé « Raila Odinga ». D'autres
images sont utilisées en vue de tromper la vigilance des jeunes gens et
autres personnes qui aiment s'amuser, pourtant comporte beaucoup d'autres
fichiers s'exécutant automatiquement à consultation de l'image,
etc.
C'est pour cette raison d'une part que nous avions voulu
traiter les images en vue de savoir comment elles se comportent avec des objets
étrangers comme un message texte.
D'autres parts, nous savons que nous ne sommes pas le premier
à élaborer un travail de fin d'étude sur les images, mais
dans le domaine de la stéganographie, nous voulons que les
étudiants qui viennent après nous trouvent un champ vide et non
exploité.
De toute évidence nous devons signaler que nous allons
recourir à la technique documentaire afin d'aborder les
différents ouvrages et articles traités par nos
prédécesseurs et ayant un marquage au problème auquel nous
voulons porter solution. En vue de bien comprendre des notions aussi
globalisantes, nous allons utiliser la méthode déductive qui nous
aidera à partir du particulier au général en vue de partir
d'un élément de l'image à son ensemble.
La bibliothèque universelle présentement riche
en documentation et renseignement : l'internet nous a permis de renforcer
la théorie sur les images et sur et a enrichi nos connaissances en vue
d'élaborer ce travail.
La stéganographie faite dans le temps s'est agit de
cacher les messages dans des objets dans but de le faire arriver ce message en
destination en passant par des barrières de fouilles des ennemies.
La stéganographie que nous allons faire dans notre
travail va se limiter par les images. Nous allons cacher du texte
derrière une image et allons nous limiter à tirer en destination
ce message du code de l'image (fichier image).
Notre travaille va s'étendre sur quatre chapitres
respectivement intitulés et détaillés comme suit :
Au chapitre premier nous allons parler des l'étude des
images bitmap ;
Dans cette première partie nous allons épingler
la spécialité des images Bitmap ; leur format, leur et en
fin leur taille format.
Au chapitre deuxième nous aborderons les notions de
la steganographie par les images. C'est un chapitre dans lequel nous allons
parlerons d'abords de comment la transmission des messages secrets s'est fait
dans le temps, nous verrons aussi les différents problèmes de la
transmission des messages secrets a travers un réseau informatique. Nous
parlerons aussi de la cryptographie et ensuite de la stéganographie.
Le dernier point de ce chapitre montrera comment convertir un
message en une suite des bits.
Au chapitre trois nous donnerons un algorithme capable de
stéganographier un message texte derrière une image du type
bitmap et après nous montrerons un autre algorithme susceptible de
récupérer le message caché au départ et de
l'afficher.
Au dernier et quatrième chapitre nous allons smiller
notre algorithme donné au chapitre trois par un logiciel
informatique.
CHAPITRE I : ETUDE DES IMAGES BITMAP
I.1
DEFINITION
Une image
matricielle
(image en mode point, ou en anglais une « bitmap » ou
«
raster ») est une
image
numérique dans un
format de
données qui se compose d'un tableau de
pixels ou de points de
couleur,
généralement
rectangulaire, qui peut se
visualiser sur un
moniteur
d'ordinateur, tout autre dispositif d'affichage, ou simplement sur une
feuille de papier1(*).
Elle est composée d'une
matrice
ou un
tableau
de points à plusieurs dimensions de tailles fixes; l'intersection
des lignes et colonnes de ce tableau donne une cellule qu'on appelle pixel, qui
veut dire « Picture element » en Anglais, et
« élément d'image » en français. Ces
éléments ou points doivent être disposés de
manière à ce que leur union donne l'image globale dont la
qualité dépend d'une part du nombre de pixels, et d'autre part du
nombre de valeurs possibles pour l'intensité par pixel.
Une ligne est constituée par des pixels qui se suivent
horizontalement et une colonne par des pixels qui se suivent verticalement.
Pixel
Figure 1 Figure 2
Figure 3
(Image
Pour que les appareils photos numériques ou les
capteurs prennent une image réelle (Figure 1) et la rendent
compréhensible par l'ordinateur ils la partitionnent :
(discrétisation : Figure 2), puis en fin la numérisent
(Figure 3).
L'image passe ainsi du monde réel vers le monde
discret, le monde des entiers.
Ainsi, l'image réelle dévient-elle
numérisée et compréhensible par l'ordinateur.
Une image numérique peut être traitée
sous divers formats comme nous allons le voir après; mais dans le cadre
de notre travail nous allons utiliser le format qu'on appelle BITMAP qui est un
des produits du Microsoft et IBM.
Une image appelée bitmap est donc un fichier image
d'extension «. Bmp » et une image numérique.
L'ordinateur ne traitant que des nombres entiers binaires, il fallait
découper l'image réelle en une matrice des pixels dont chacun est
codé en base deux (par une suite des 1 et des 0 qui sont un à un
des bits). Cette opération s'appelle la numérisation de
l'image.
Il faut signaler que le pixel n'est pas uniquement
utilisé pour les images graphiques, il l'est aussi pour dans le cadre
des matériels et les logiciels d'impression et/ou d'affichage des
textes.
Images 2D2(*)2
Dans le cas des images à deux dimensions (le plus
courant), les points sont appelés
pixels. D'un
point de vue
mathématique,
on considère l'image comme une fonction de dans , où le couplet d'entrée est considéré comme
une position spatiale, le singleton de sortie comme un codage
Images 2D + t (vidéo),
images 3D, images multi-résolution
· Lorsqu' une image possède une composante
temporelle, on parle d'animation
· Dans le cas des images à trois dimensions les
points sont appelés des
voxels. Ils
représentent un
volume.
· Ces cas sont une généralisation du cas
2D, la dimension supplémentaire représentant respectivement le
temps, une dimension spatiale ou une échelle de résolution.
D'un point de vue mathématique, il s'agit d'une
fonction de dans.
Nous verrons plus tard qu'un pixel peut donc contenir un
nombre quelconque qui déterminera sa coloration, mais à
présent nous devons savoir que les images bitmap ne sont pas seules
images numériques ; il existe en plus des images
pixélisées des images non pixellisées : les images
vectorielles.
Nous venons de décrire ce qu'on appelle image
matricielle, est en fait une matrice (tableau des pixels).
Il existe un autre type d'images numériques que nous
avions appelé les images vectorielles, dont le principe est de
représenter les données de l'image par des formes
géométriques, qui vont pouvoir être décrite d'un
point de vue mathématique :
A partir de deux points (x1, x2) et (y1, y2) l'on puisse
tracer une droite ;
A partir d'un rayon et d'un centre, l'on puisse tracer un
cercle.
En informatique graphique, on parle aussi de bitmap ou de
pixmap, un type d'organisation de mémoire ou un format du fichier image
qui est utilisé pour stocker les images numériques.
Le terme BITMAP vient de la terminologie «
sciences de programmation »en anglais
computer
programming, qui désigne une carte des bits, spécialement
appelé « tableau des bits ».A propos de Pixmap, il
vient se référer au similaire concept spécialement
appelé tableau des pixels. Les images se réfèrent peut
être généralement aux bitmap ou aux pixmap soit
synthétique ou photographiques pour être stocker dans les fichiers
ou en mémoire.
I.2
DEFINITION ET RESOLUTION D'UNE IMAGE
1)
la définition
Les images numériques peuvent être aussi
distinguées par leurs définitions et leur
résolution ; la définition étant le nombre de pixels
en hauteur (axe vertical) et en largeur (axe horizontal), 360 pixels par
600pixels par exemple représenteraient une image qui a 360 pixels en
hauteur et 600 pixels en largeur.
Cela donne la même chose que quand on représente
de la sorte : (360 X600).
2)
la résolution
La résolution quand à elle est le nombre des
pixels par unité de longueur.
L'unité de la résolution est
le « ppp » c'est-à-dire Points Par Pouce en
anglais « dpi », dots per inches.
La résolution est définie lors du passage de
l'image réelle sous la forme binaire, c'est-à-dire lors de la
transformation de l'image en une suite des bits et leurs spécifications
par pixel, c'est l'étape de la numérisation dont on a
parlé précédemment que dépend principalement la
résolution.
La résolution dépend aussi des
caractéristiques du matériel utilisé lors de cette
numérisation.
Plus le nombre de pixels est élevé par
unité de longueur, plus la quantité d'information est importante
et plus la résolution est élevée.
Etant donné que l'image bitmap est constituée
des lignes et des colonnes, on trouve un certain nombre de pixels non seulement
en auteur mais aussi en largueur :
Pour une même dimension d'image, plus la
résolution s'élevé, plus le nombre de pixels composant
l'image est grand. Le nombre de pixels est proportionnel au carré de la
résolution, étant donné le caractère bidimensionnel
de l'image : si la résolution est multipliée par deux, le
nombre de pixels est multiplié par quatre. Augmenter la
résolution peut entraîner des temps de visualisation et
d'impression plus longs, et conduire à une taille trop importante du
fichier contenant l'image et à de la place excessive occupée en
mémoire.
L'on doit savoir que si l'on zoome sur l'image, l'on perdra
bien entendu sa qualité.
(La résolution utilisées pour les Web est le
plus souvent de 72 dpi et est la même pour les écrans
informatiques, les imprimantes, elles atteignent 300 dpi
aujourd'hui).
I.3
TAILLE ET FORMAT D'UNE IMAGES BITMAP
I.3.1 la taille d'une image en octet
La taille en octet d'une ligne doit être un multiple de
quatre, si non, un complément d'octets s'impose pour qu'elle puisse
l'être.
Ce complément dont il est question, peut
contenir n'importe quoi, à condition bien entendu de
respecter le principe.2(*)3
Il contient par défaut des 0(zéros).
Pour savoir la taille de l'image, il faut alors compter le la
taille de la ligne (complément inclus s'il existe), multiplié
par le nombre total des colonnes.
De ce nombre doit être augmenté la taille de
l'en-tête de l'image qui est généralement de 54 octets.
Signalons seulement que dans cet entête sont
prédéfinies la talle de l'image, sa hauteur et sa largueur,
etcetera.
I.3.2 Taille de l'image en pixels
Le poids d'une image est tout d'abord lié à sa
taille en pixels, et par conséquent (ou par extension) à la
résolution qui a été utilisée lors de la
numérisation (et ceci par les équations (X*résolution) = x
pixels et (Y*résolution) =y pixels). Le poids d'une image peut
être connu de façon théorique à partir du nombre de
pixels qui compose l'image.
I.3.3 Représentation des couleurs
En informatique existe plusieurs mode de codage de couleur
pour les images, le plus courant et le plus utilisé est l'espace
calorimétrique Rouge, Vert, Bleu (
RVB ou en
anglais RGB - Red green Blue). Cet espace est basé sur une
synthèse
de l'adition des couleurs, c'est-à-dire que le mélange des
trois composantes primaires R, V, et B à leur valeur maximum donne du
blanc, alors que leurs valeurs minimales donnent la couleur noire.
Toutes les autres couleurs que peut prendre ce mélange
sont à l'intermédiaire de ces deux couleurs de la présence
de trois couleurs de base ou de leur absence.
Cette couleur que donne le mélange de trois
composantes R.V.B. n'est pas celle que contient toute l'image, mais
plutôt celle que contient un seul pixel.
C'est l'ensemble de tous les pixels peints de
différentes couleurs qui donne une image.
Les images bitmap en couleurs peuvent donc être
représentées soit par une image dans laquelle la valeur du pixel
est une combinaison linéaire des valeurs des trois composantes couleurs,
soit par trois images représentant chacune une composante couleur. Dans
le premier cas, selon le nombre de
bits
alloués pour le stockage d'une couleur de pixel, on distingue
généralement les différents types d'images
suivants :
1.
Images 24 bits
Surnommées (true color), Ces images ont une appellation
trompeuse : (images à couleurs vraies). Le monde numérique
fini ne peut pas rendre compte intégralement de la
réalité, toutes les couleurs que comportent réellement les
images. Le codage de la couleur étant réalisé sur trois
octets, chaque octet
représentant la valeur d'une composante couleur par un entier de 0
à 255. Ces trois valeurs codent généralement la couleur
dans l'espace RVB. Le nombre de couleurs différentes pouvant être
ainsi représenté est de 256 x 256 x 256 possibilités, soit
à peu près de 16,7 millions de couleurs. L'oeil humain
étant capable de discerner que près de 2 millions des couleurs,
la différence de nuance entre deux couleurs très proches pour les
16,7 millions ne sera pas perceptible facilement. Considérant que les
couleurs restituées par ce mode de codage sont visiblement parlant
exactes, on en parle alors de « couleurs vraies ».
Le codage se faisant en binaire les trois octets R.V.B. sont
codés à leurs valeurs maximales.
Les images bitmap basées sur cette
représentation peuvent rapidement occuper un espace de stockage
considérable, chaque pixel nécessitant trois octets pour coder sa
couleur.
A présent penchons-nous aux images qui utilisent
d'autres couleurs qu'on n'appelle pas des couleurs vraies, mais cette
fois -ci indexées
2.
Images à palettes, images en 256 couleurs (8 bits)
Pour les images vues précédemment,
l'information couleur de chaque pixel est codée par 3 octets, ce qui
fait des images en vraies couleurs des images très "lourdes".
L'utilisant d'une palette de couleur appelé look-up
table ou
LUT en anglais "attachée"
à l'image fera que l'information couleur soit codée sur 1 octet
(pour gagner de la place), au lieu de trois. Chaque pixel va non plus
véhiculer le code couleur RVB qui lui est affecté, mais
simplement un chiffre compris entre 0 et 255. A chacun de ces
chiffres va correspondre une couleur, définie par son code RVB et
stockée dans une palette avec les données de l'image (on parle de
couleurs indexées). Lors de la visualisation de l'image, la
correspondance se fait entre le numéro de la couleur affecté
à chaque pixel (compris entre 0 et 255) et le code couleur RVB
correspondant.
Une autre méthode existante consiste à se
passer de palette, et de coder directement les trois couleurs en utilisant un
octet : chaque composante couleur est codée sur deux bits, le bit
restant peut servir soit à gérer plus de couleurs sur une des
composantes, soit à gérer la transparence du pixel. Avec cette
méthode, on obtient des images bitmap avec un codage couleur
effectivement limité à 8 bits, bien que la plage des couleurs
possibles soit très réduite par rapport à celle qu'offre
la méthode utilisant une palette.
Dans le cas des images en couleurs indexées, il est
possible de spécifier que les pixels utilisant une des couleurs de la
palette ne soient pas affichés lors de la lecture des données de
l'image. Cette propriété de transparence est très
utilisée (et utile) pour les images des
pages web, afin que la
couleur de fond de l'image n'empêche pas la visualisation de
l'arrière-plan de la page.
La palette est optionnelle. Lorsqu'une palette est
définie, elle contient successivement 4 octets pour chacune de ses
entrées représentant :
· La composante bleue (sur un octet)
· La composante verte (sur un octet)
· La composante rouge (sur un octet)
· Un champ réservé (sur un octet).
Ces octets réservés peuvent contenir n'importe
quoi, a condition bien entendu de respecter certaines conditions, ces notions
seront largement traitées au chapitre troisième. Mais à
présent traitons d'abord les autres types d'images.
Le mode indexé permet de coder les images avec 2, 4, 6
ou 8 bits par pixel, soit 4, 16, 64 ou 256 couleurs.
3.
Images 32 bits
Si on
se contente de 32 niveaux d'intensité par couleur, il ne faut plus que
3*5=15 bits pour stocker chaque pixel. On obtient alors 32768 couleurs
différentes, ce qui est généralement suffisant. Ce mode
est appelé le mode High Color.
Remarquons qu'une variante codée sur 16 bits est plus
souvent utilisée. Elle permet d'obtenir 65536 couleurs en assignant 64
niveaux d'intensité à une des couleurs -
généralement vert ou bleu -, et 32 aux deux autres en partant du
principe que l'oeil humain est plus sensible au vert et au bleu qu'au rouge.
Cette variante est utilisée car les architectures des ordinateurs sont
généralement prévues pour manipuler des nombres de bits
multiples de 8, les octets.
4.
Images en teintes (ou niveaux) de gris
On ne code ici plus que le niveau de l'intensité
lumineuse, généralement sur un octet (256 valeurs). Par
convention, la valeur zéro représente le noir (intensité
lumineuse nulle) et la valeur 255 le blanc (intensité lumineuse
maximale) :
000
|
008
|
016
|
024
|
032
|
040
|
048
|
056
|
064
|
072
|
080
|
088
|
096
|
104
|
112
|
120
|
128
|
|
255
|
248
|
240
|
232
|
224
|
216
|
208
|
200
|
192
|
184
|
176
|
168
|
160
|
152
|
144
|
136
|
(Tableau
2)
Ce procédé est fréquemment utilisé
pour reproduire des photos en noir et blanc ou du texte dans certaines
conditions (avec utilisation d'un filtre pour adoucir les contours afin
d'obtenir des caractères plus lisses).
Ce codage de la simple intensité lumineuse est
également utilisé pour le codage d'images couleurs : l'image
est représentée par trois images d'intensité lumineuses,
chacune se situant dans une composante distincte de l'espace
colorimétrique (par exemple, intensité de rouge, de vert et de
bleu).
5.
Images avec gestion de la translucidité
On peut attribuer à une image un canal
supplémentaire, appelé canal alpha, qui définit
le degré de transparence de l'image. Il s'agit d'un canal similaire aux
canaux traditionnels définissant les composantes de couleur, codé
sur un nombre fixe de bits par pixel (en général 8 ou 16). On
échelonne ainsi linéairement la translucidité d'un pixel,
de l'opacité complète à la transparence.
I.4 FORMAT D'IMAGES BITMAP
Un format d'image est une représentation
informatique de
l'image, associée à des
informations sur la
façon dont l'image est codée et fournissant éventuellement
des indications sur la manière de la décoder et de la
manipuler.
Le format bitmap est un des formats non compressé, il
est composé d'un en-tête contenant des attributs (dimensions de
l'image, type de codage, palette de couleurs, etc.), etc., suivi des
données
proprement dites de l'image. La structuration des attributs et des
données
diffère pour chaque format d'image. La plupart des
formats
sont composés d'un en-tête contenant des
attributs De plus, les
formats actuels intègrent souvent une zone de
métadonnées
(metadata en anglais) servant à préciser les
informations concernant
l'image comme :
· la
date,
l'heure et le lieu de la prise de vue,
· les caractéristiques physiques de la
photographie (
sensibilité
ISO,
vitesse
d'obturation, usage du flash...)
Ces
métadonnées
sont par exemple largement utilisées dans le format
Exif (extension du format
JPEG), qui est le format le
plus utilisé dans les
appareils
photo numériques.
I.5 L'EN-TETE
D'UN FICHIER BITMAP (en anglais file header)
Elle fournit des informations sur le type de fichier
(bitmap), sa taille et indique le commencement où commencent les
informations concernant l'image à proprement parlé.
L'entête est ainsi structuré :2(*)6
· la signature (sur 2 octets), indiquant qu'il
s' agit d'un fichier BMP à l'aide de deux
caractères :
o BM, 424D en hexadécimal, indique qu'il s'agit d'un
Bitmap Windows.
o BA, indique qu'il s'agit d'un bitmap OS/2.
o CI, indique q'il s'agit d'une icône couleur OS/2.
o CP, indique qu'il s'agit d'un pointeur de couleur OS/2.
o IC, indique qu'il s'agit d'une icône OS/2.
o PT, indique qu'il s'agit d'un pointeur OS/2.
· La largueur de l'image (sur 4 octets),
c'est-à-dire le nombre de pixels horizontalement (an anglais width).
· La hauteur de l'image (sue 4 octets),
c'est-à-dire le nombre de pixels verticalement (en anglais height).
· Le nombre de plan (sur 2 octets). Cette valeur vaut
toujours 1.
· La profondeur de codage de la couleur (sur 2 octets),
c'est-à-dire le nombre de bit utilisé pour coder la couleur.
Cette valeur peut être égale à 1, 4, 8, 16, 24 ou 32.
La méthode de compression (sur 4 octets). Cette valeur
vaut 0 lorsque l'image n'est pas compressée, ou bien 1, 2 ou 3 suivant
le type de compression utilisé :
o 1 pour le codage RLE de 8 bits par pixel
o 2 pour un codage RLE de 4 bits par pixel
o 3 pour un codage bitfield, signifiant que la couleur est
codée par un triple masque représenté par la palette.
· La taille totale de l'image en octet (sur 4 octets).
· La résolution horizontale (sur 4 octets),
c'est-à-dire le nombre de pixels par mètre horizontalement.
· La résolution verticale (sur 4 octets)
c'est-à-dire le nombre de pixels par mètre verticalement.
· Le nombre des couleurs de la palette (sur 4 octets).
· Le nombre des couleurs importantes de la palette (sur 4
octets). Ce champ peut être égal à 0 lorsque chaque couleur
a son importance.
Signalons qu'après les six premiers octets qui
continent la signature appelé identifiant et la taille du fichier,
viennent immédiatement octets non utilisés, mais
réservés pour l'usage future. Ces octets peuvent contenir sans
problème n'importe quoi, suffisant qu'on respecte certaines normes.
Cette place vide nous intéressera dans notre travail et sera encore
traitée dans le deuxième chapitre.
Voila que les images bitmap étant plus
utilisées actuellement dans le monde digital, posent moins de
problèmes par leur simplicité et leur portabilité. Le
codage du format bitmap permet d'autres astuces importantes qui suffisent
d'être raisonnable : ainsi au chapitre deux, nous allons traiter
l'une des grandes sorcelleries informatiques que peuvent permettre les images
bitmap.
CHAPITRE II : LA STEGANOGRAPHIE PAR LES IMAGES
II.1 TRANSMISSION DES MESSAGES SECRETS DANS LE TEMPS
Dans les temps anciens, les ancêtres voulant se
communiquer leurs secrets, ils ont cherché tous les moyens possibles
pour cacher ces messages avant de les envoyer dans la clandestinité aux
autres. Mais cela a eu des temps à autres des problèmes sur les
expéditeurs même des messages, car leurs secrets étaient
découverts et mis au porté de tous et surtout celle de leurs
ennemis.
Ils ont cherché à cacher les messages dans des
objets a fin de les faire passe pour authentiques bien que comportant un
secret.
Beaucoup d'astuces ont été utilisés pour
cacher la messagerie contre une classe bien définie de personnes :
prenons un exemple d'un certain Histiée qui se trouvait à la
cours de Perse et voulait prendre contact avec son gendre (le tyran Aristagoras
de Milet). Il choisit un serviteur dévoué, lui rasa la
tête, y tatoua le message et attendit la repousse des cheveux.
Histiée envoya alors CE serviteur à Aristogoras avec instruction
de lui raser le crâne. L'ayant fait, celui-ci put lire le message.
En dehors de cet exemple, les messages ont continué
à être camouflés en vue d'être envoyés. Avec
l'évolution de l'informatique, on a essayé de le faire mais
souvent sans succès.
II.2 PROBLEME DE LA TRANSMISSION DES MESSAGES SECRETS A
TRAVERS UN RESEAU
Aujourd'hui à travers l'internet (réseau
appelé wide area network), des millions des messages sont envoyés
par jour dans le monde ; les personnes s'expédient les e-mails, pas
seulement parce que c'est rapide, mais surtout parce que ceux-ci constituent un
secret dont personne ne peut se rendra compte que, son destinateur. Il est
à signaler que, certaines sociétés surveillent activement
tous les envois de fichiers joints transitant leurs réseaux
informatiques internes (LAN, MAN,...), avec comme objectif d'empêcher
qu'un secret ne sorte. Pour cela, au niveau du serveur ils lisent des messages
avant de les envoyer aux destinateurs, si bien entendu l'on suspecte l'un des
correspondants ou le message lui même.
II.3 DE LA CRYPTOGRAPHIE
Les informaticiens pensèrent directement à la
méthode cryptographique. Cette méthode consiste à
remplacer un ensemble de signe d'un texte par un autre : il faut par
exemple remplacer tous les `a' contenu dans le message par `f', tous les `b'
par 'g'(substitution mono-alphabétique: procédé de
remplacement d'une lettre en clair en une seule cryptée).soit encore
remplacer une seule lettre par une suite d'autres lettres(substitution
polyalphabétique: procédé de remplacement d'une lettre en
clair en plusieurs cryptées).L'utilisation de la transposition: les
lettres sont mélangées, leur ordre normal est bouleversé.
Il deviendra alors difficile de lire le
message cryptographié (par clé unique ou par clé
publique); la lisibilité a été compliquée, il faut
décrypter pour lire le contenu, chose qui n'est pas facile.
Nous connaissons dire un secret de notre
histoire
Nous connaissons que la suite est difficile
Stay htssfnyytry inwj as
Yjhwjz ij stzwj mnyztnwj
Stay htssfnyytry vaj qf
Yanzj jyz inkknhnqj
Figure 4. Figure 5.
Nul ne peut voire un tel message (figure 1.), lui être
remis pour transmission à quelqu'un sans pour autant chercher à
découvrir ce que cela signifie.
Si alors l'homme ne peut pas réussir à
décrypter le message, il faudra savoir que les ordinateurs puissants le
peuvent dans moins d'une seconde en testant des milliards de
possibilités et combinaisons pour arriver à trouver la
clé du décryptage et lire le contenu du message. Voici le message
décrypté à la figure 2.
Les fichiers protégés par mot de passe peuvent
aujourd'hui être ouverts par des ordinateurs puissants, ce qui prouve
qu'il Apparait alors vain de crypter ou de protéger un message par mot
de passe.
Il importe de savoir que certains gouvernements traitent de
coupables les personnes qui s'envoient des messages cryptés. Nous
pouvons alors dire sans tors que les messages cryptés et envoyés
à travers un réseau sont visibles à l'oeil nu au niveau du
serveur mais c'est leur lecture directe qui est impossible. Est-il alors
impossible de faire passer un message inaperçu même au niveau du
serveur ? Les phrases qui suivent donneront satisfaction à cette
question.
II.4 LA STEGANOGRAPHIE
II.4.1 NOTION
La stéganographie (un mot qui vint du grec steganos,
couvert et graphein, écriture)3(*) 7c'est l'art de cacher un message au sein
d'un autre message de caractère anodin, de sorte que l'existence
même du secret en soit dissimulée. Alors qu'avec la cryptographie
habituelle, la sécurité repose sur le fait que le message ne sera
sans doute pas compris, avec la stéganographie, la
sécurité repose sur le fait que le message ne sera pas sans doute
pas détecté.
Parmi les astuces historiques, on note les encres invisibles,
les messages cachés dans des oeufs durs (en écrivant sur la
coquille à l'aide d'une solution de vinaigre et d'alun), les minuscules
trous d'épingle dans des caractères sélectionnés,
les infimes changements dans l'écriture manuelle des caractères
ou dans leur espacement, les marques au crayon sur un texte tapé
à la machine, les micropoints (une page de texte photographiée et
réduite à un point de moins d'un millimètre de
diamètre, lequel sera ensuite posé sur une lettre apparemment
anodine) etcaetera.
En effet, La majeure partie des fichiers informatiques
(images, sons, texte, disquettes) contiennent des zones de données non
utilisées ou insignifiantes. La stéganographie informatique
consistera à les remplace par des informations.
La visualisation de l'image, l'audition du son, la lecture du
texte ou l'ouverture de la disquette ne laissera pas voire ni entendre les
informations cachées. Il faudra envisager d'examiner le codage de cette
image, de ce son, etc. pour se rendre compte de ces informations
dissimulées, codées en binaire comme le fichier lui- même,
Ce qui est aussi complexe et pourquoi pas incroyable.
Une image étant aussi une information, on peut donc
arriver à cacher une image dans une autre.
Dans la suite de notre travail nous appellerons au terme de
« message » toute information ou texte à cacher.
II.4.2 TECHNIQUE DE LA STEGANOGRAPHIE
Nous allons nous limiter sur la stéganographie par les
images et nous faisons spécialement attention aux images BITMAP.
Il importe de transformer le message en une longue suite de
bits qui seront camouflés parmi les bits d'un autre fichier image. La
méthode que nous allons utiliser consistera à camoufler les huit
bits du message dans les trois derniers bits significatifs de chaque point
d'une image. On cachera donc selon les octets : les trois premiers bits de
huit du message seront couchés à la place de trois bits du poids
le plus faible de premier octet d'un point de l'image.les trois
deuxièmes octets du message dans les trois bits du poids le plus faibles
et en fin les deux derniers bits du message seront insérés dans
les deux bits du poids le plus faible du dernier octet de l'image. Voici
l'exemple où nous cachons la lettre « a » dans un
pixel de couleur blanche :
Pour coder la couleur blanche nous avons par octet les
valeurs 255, 255, 255
« a » est représenté par son
code ASCII : 97 ce qui donnera en binaire 01100001 étant
donné que notre programme interprétera les nombres binaires en
sens inverse, ce nombre sera comme suit : 10000110. Les octets codant le
point seront aussi convertis en binaire :
On aura donc : 11111111, 11111111, 11111111 correspondant
aux octets rouge vert et bleu : 255, 255, 255. Ces nombres binaires seront
aussi interprétés en sens inverse c'est-à-dire de droite
vers la gauche, ce qui signifie que le poids le plus faible sera alors au
côté le plus à droite possible :
· a =97 en décimal =10000110 en binaire (suivant
l'interprétation de notre logiciel stéganographique).
· Les octets codant le pixel=255, 255, 255=11111111,
11111111, 11111111 en binaire.
· Après traitement par ce logiciel on aura :
10011111, 00111111, 10111111 des nombres binaires qui
contiennent les bits du message. Leurs correspondants décimaux sont
249, 252, 253
Ce sont ces trois valeurs 249, 252, 253 qui feront le codage du
pixel de l'image qui compostera le message. Ces nombres donneront toujours la
couleur blanche comme à l'image précédente, pourtant les
valeurs ont été changées.
Et détiennent les bits du message. Le fichier peut
être consulté de toute manière sans qu'une tierce personne
ne sache son codage interprété par la seconde partie du logiciel
de la lecture peut tirer les bits du message et les transformer en message
caché au départ.
Pour la lecture du message « a » en
destination, il nous suffira de tirer ces bits que nous venons d'insérer
en les copiant et les transformer en décimal avant de les convertir en
leur symbole caractères, en vue de le lire à la sortie comme
primitivement entré : «a ».
L'exemple que nous venons de montrer n'est que d'un seul
caractère pour un pixel. Une image de grande taille nécessitera
tout de même un le nombre des caractères identique que celui des
pixels. Si le message est de petite taille que le nombre des point constituant
le corps de l'image, il y aura manque des valeurs à écrire pour
le reste des pixels ; une erreur sera alors constaté car la boucle
qui parcourra toute l'image manquera des valeurs à insérer dans
des pixels d'excédents ; et si au contraire, e nombre des
caractères du message est supérieur à celui des pixels
disponibles, alors le reste des caractères ne sera pas
considérés, et par conséquent, il ne sera pas écrit
dans l'image.
Soulignons que l'image graphique ne changera pas de
manière appréciable - la plupart des standards graphiques
étant spécifiés pour plus de variations de couleurs que
l'oeil humain ne peut en en saisir - et le destinataire peut
récupérer le message. On peut stocker de cette façon un
message de 64 Ko dans une image 1024 par 1024 à niveaux de gris.
Il suffira après transfert du message que
l'utilisateur puisse ne fit ce qu'entrer le nom d'un fichier du type bitmap
vide. si ce dernier n'existe pas il sera directement crée et s'il
existe, alors il faudra que le codage des pixels contenu dans le message
caché remplacent ceux de l'image ouvert en dernier lieu.
De ce fait, nous aurons notre image cachée au
départ dont Les qualités, l'intensité restent les
mêmes. On aura ainsi caché une image derrière une autre.
CHAPITRE III : L'ELABORATION D'UN ALGORITHME DE
MARQUAGE DE TEXTE AU SEIN D'UNE IMAGE
BITMAP
III.1 LE MESSAGE A CODER
Dans le chapitre premier nous avons expliqué que les
octets de l'image bitmap peuvent être codés en binaire, et dans le
chapitre précédent nous venons de montrer comment le message en
vue d'être camouflé derrière une image doit être
converti en binaire, étant donné que l'image est constitué
des pixels codés sur des octets et octets composés des bits.
De ce fait, le message ne laissera plus voir une distinction
de ses caractères qu'une suite des bits car, même les espaces
seront eux aussi convertis en binaire. Il suffit de découper le message
caractère par caractères et mettre ceux-ci dans un tableau des
entiers dont la taille doit être supérieur ou égale au
nombre des pixels de l'image.
La méthode suivante nous aidera à faire
cela :
static int[] messageAcoder(){
char[] t=new char[multiplicateur];
int[] Tableaumess=new int[multiplicateur];
for(int p=0;p<multiplicateur;p++){
t[p]=phrase.charAt(p);
Tableaumess[p]=(int)t[p];
}
return Tableaumess;
}
Le tableau qui est retourné ici, renvoi le code ASCII
de chaque caractère les espaces inclus.
Pour bien illustrer cette méthode, Prenons l'exemple
d'un petit message comme « Est tu là? Non» le tableau qui
sera retourné quand l'utilisateur entre un tel message contiendra les
nombres correspondants au code ASCII des caractères suivants:
32
|
69
|
115
|
116
|
32
|
116
|
117
|
32
|
108
|
224
|
63
|
32
|
78
|
111
|
110
|
(Tableau 4)
III. 2 LECTURE DE L'IMAGE
Tenons à signaler que l'image contenant
déjà le message sera généralement envoyé en
destination, il sera important pour nous de prévoir deux fichiers du
format BMP : l'un, « Image de départ »
contenant une image dont le contenu sera utilisé, et lu uniquement puis
sera transporté dans trois tableaux de notre logiciel ; c'est
à partir de ce logiciel que nous insérerons le message dans ces
tableaux avant de les copier dans une autre image appelée
« Image de destination » qui peut avoir des données
primitives.
NB : a défaut de la deuxième image,
celle-ci sera crée dès que l'on entrera un nom quelconque.
L'image appelée de destination contiendra
immédiatement le contenu de la première additionnée du
message.
La méthode suivante nous a servie de lire le fichier
« Image de départ »:
public static void lireImage(String adresseImage){
entete=new int[16];
tabEntete=new int[28];
int[] matrisse=new int[multiplicateur*3];
int compteur=0;
try{
FileInputStream con=new FileInputStream(adresseImage);
BufferedInputStream fid=new BufferedInputStream(con);
DataInputStream dan=new DataInputStream(fid);
int a=dan.read();int b=dan.read();
if(a!=66||b!=77)
System.out.println("le fichier "+adresseImage+" ne
contient pas une image bitmap");
for(int i=0;i<16;i++)entete[i]=dan.read();
a1=dan.read();b1=dan.read();c1=dan.read();d1=dan.read();
a2=dan.read();b2=dan.read();c2=dan.read();d2=dan.read();
largeur=a1+256*(b1+256*(c1+256*d1));
hauteur=a2+256*(b2+256*(c2+256*d2));
System.out.println("la largeur est"+largeur);
System.out.println("la hauteur est"+hauteur);
prOctet=new int[hauteur][largeur];
dxOctet=new int[hauteur][largeur];
trsOctet=new int[hauteur][largeur];
complement=largeur%4;
System.out.println("le complement par ligne est de
"+largeur+" octets");
multiplicateur=hauteur*largeur;
System.out.println("Cette image permet le
marquage de "+multiplicateur+" caracteres, les espaces
inclus");
javax.swing.JOptionPane.showMessageDialog(null,"VOUS DEVEZ ENTRER UN MESSAGE
D'AU
MOINS "+multiplicateur+" CARACTERES
INCLUS LES ESPACES VIDES");
for(int i=0;i<28;i++)tabEntete[i]=dan.read();
matrix=new int [multiplicateur*3];
for (int i=hauteur-1; i>=0; i--){
for(int j=0; j<largeur; j++){
prOctet[i][j]=dan.read(); dxOctet[i][j]=dan.read();
trsOctet[i][j]=dan.read();
matrix[compteur]=prOctet[i][j];compteur++;
matrix[compteur]=dxOctet[i][j];compteur++;
matrix[compteur]=trsOctet[i][j];compteur++;
}
for(int j=0; j<complement; j++) dan.read();
}
dan.close();
}catch(IOException e) {
System.out.println("Erreur dansla lecture de l'image");
}
}
Ce sont les tableaux prOctet[i][j],dxOctet[i][j] et
trsOctet[i][j] qui contiennent les données relatives a l'image Initiale.
Ceux-ci doivent contenir des entiers car les octets lus de l'image ont des
valeurs entières.
Etant donné que le message à été
traduit en une suite des valeurs entières et que les données lues
de l'image sont entières, pourtant le camouflage doit se passer bit par
bit, nous nous trouvons n'est-ce pas devant un problème ? Il nous
faut donc travailler avec des nombres binaires. Le point suivant traitera
comment résoudre ce problème.
III.3 CONVERSION DES NOMBRES DECIMAUX EN BINAIRES
Dans le calcul de la conversion d'un nombre décimal en
binaire par une suite de division euclidienne par deux, il est connu que le
premier reste sera le nombre binaire du poids le plus faible, car il se placera
le plus à droite possible du correspondant binaire.
Le tableau des binaires qui sera retourné par la
méthode ici-bas quant à lui sera lue de droite à gauche
car il est rempli peu à peu par les premiers restes de la divisions
euclidienne par 2.
La méthode suivante nous a aidé à
convertir un nombre entré en argument de décimal un tableau de
huit bits :
static int[] converDecimalBinaire(int nombre){
int[] Tconversion=new int[8];
int a=nombre;
for(int i=0;i<8;i++){
int h=a%2;
Tconversion[i]=h;
a/=2;
if(a==0)Tconversion[i]=0;
if(h==1)Tconversion[i]=1;
}
return Tconversion;
}
Le tableau retourné par cette méthode est
toujours constitué par huit bits d'autant plus que le chiffre maximal
255 correspondant à ÿ est représenté au moins et
suffisamment par huit bits. Quant aux chiffres qui ne totalisent pas 8 bits en
leurs correspondants binaires, celui-ci sera complété par des 0
à son côté droit.
Cette méthode sera appelée tant pour convertir
le message en binaire que les octets lus du message et insérés
dans des tableaux.
Cette méthode sera encore appelée lorsqu'il
faudra copier les bits du message de l'image. Des que les bits du message
seront insérés dans ceux de trois tableaux, il restera alors de
transformer chaque suite des bits en des nombres décimaux en vue
d'être écrits dans l'Image de destination. La suite de montrera
comment il faudra-t-il remettre les listes des binaires en des nombres
entiers.
III.4 CONVERSION DES TABLEAUX
BINAIRES (UN BIT) EN DES NOMBRES
ENTIERS
Le terme bit (b avec une minuscule dans les notations)
signifie « binary digit », c'est-à-dire 0 ou 1 en
numérotation binaire. Il s'agit de la plus petite unité
d'information manipulable par une machine numérique. Il est possible de
représenter physiquement cette information binaire.4(*)8
Quand on convertie un nombre de la base 2 en base 10, il est
connu qu'il faut y aller en multipliant le chiffre significatifs par deux,
exposant le nombre des chiffres significatifs se trouvant directement à
droite. Tout en sachant que 2 exposant zéro donne un. Voici la
méthode qui nous a servi de correspondre un tableau de huit chiffres
binaires en un chiffre décimal :
static int coBinaireDdec(int[] tab){
int k=0;
int decimal=0;
CacherTexte od=new CacherTexte();
for(int j=0;j<8;j++){
k=tab[j]*od.deuxExposantN(2,j);
decimal+=k;
}
return decimal;
}
Remarquez qu'à la cinquième ligne,
l'instruction : k=tab[j]*deuxExposantN(2,j)
Comporte l'identifiant `deuxExposantN' qui ne figure pas entre
les mots clés du langage java. Celui-ci est un nom d'une autre
méthode que nous avions conçu, méthode qui calcule pour
toute tournure de la boucle : 2 exposant le nombre des chiffres
significatifs se trouvant à droite du multiplicateur en cours.
C'est pourquoi cette méthode reçoit dans la
liste de ses arguments 2 et j, le compteur des nombres se trouvant après
le chiffre multiplicateur, significatif en cours. Voici le corps de la
méthode deuxExposantN :
static int deuxExposantN(int coeff,int exposant){
int m,n;
m=1;
n=0;
do{
if(exposant==0)m=1;
else
m=m*coeff;
n+=1;
}while(n<exposant);
return m;
}
Cette méthode recevra en argument deux nombres: un
coefficient qui est généralement 2 et un exposant qui doit
être entre 7 et 0 tout en sachant que 20=1. Toutes les
méthodes que nous venons de montrer n'ont pas explicité comment
les bits du message seront insérés dans ceux de l'image.
L'intertitre suivant expliquera comment nous pouvons à partir d'une
méthode qui sera appelée pour chaque pixel, cacher les bits du
message dans ceux des octets de l'image.
III.5 INSERTION DES BITS DU MESSAGE EN VUE DU MARQUAGE
Au chapitre deux, nous avions donné un exemple
englobant les opérations d'insertion du message dans une image (II.4 LA
STEGANOGRAPHIE).
Ici-bas se trouve la méthode qui nous a servi de faire
cette tache aussi importante de notre logiciel
stéganographique :
public static int[] ecriturebin(int temp1,int temp2,int
temp3,int tmess){
int[] Ttemp1=converDecimalBinaire(temp1);
int[] Ttemp2=converDecimalBinaire(temp2);
int[] Ttemp3=converDecimalBinaire(temp3);
int[] mess=converDecimalBinaire(tmess);
int z=0;
for(int t=0;t<3;t++){
Ttemp1[t]=mess[z];
z++;
}
for(int q=0;q<3;q++){
Ttemp2[q]=mess[z];
z++;
}
for(int n=0;n<2;n++){
Ttemp3[n]=mess[z];
z++;
}
tableauret=new int[3];
tableauret[0]=coBinaireDdec(Ttemp1);
tableauret[1]=coBinaireDdec(Ttemp2);
tableauret[2]=coBinaireDdec(Ttemp3);
return tableauret;
}
Cette méthode recevra en arguments une liste des trois
valeurs représentant les trois octets codant un pixel et un, donnant le
caractère du message à insérer auprès de trois
octets. Le nombre des valeurs retournées par cette méthode seront
égaux que le nombre des valeurs à insérer dans le fichier
à envoyer. Aussi longtemps que la boucle prévue pour parcourir
les trois tableaux comportant les valeurs d'octets lues n'aura pas atteint la
fin, les valeurs retournées par la méthode
précédente qui comportent déjà le message seront
entrain d'être récupérées et insérées
dans un autre tableau en vue de l'écriture dans le fichier appelé
« Image destination ».
III.6 ECRITURE SUR L'IMAGE
Les valeurs qui sont traitées dans la méthode
précédente sont récupérées
immédiatement et mises dans un tableau afin d'être
insérés simplement au sein de l'Image de destination. Voici une
méthode qui nous a servi de le faire :
static void ecrireImage(String adresse){
try{
FileOutputStream stg=new FileOutputStream(adresse);
BufferedOutputStream nogra=new
BufferedOutputStream(stg);
DataOutputStream phie=new DataOutputStream(nogra);
phie.write(66);
phie.write(77);
for(int i=0;i<16;i++) phie.write(entete[i]);
phie.write(a1);phie.write(b1);phie.write(c1);phie.write(d1);
phie.write(a2);phie.write(b2);phie.write(c2);phie.write(d2);
complement=largeur%4;
for(int i=0;i<28;i++)phie.write(tabEntete[i]);
CacherTexte cd=new CacherTexte();
int kiba=0;
int []rasta=cd.ecritureBinaire();
CacherTexte pm=new CacherTexte();
System.out.println("");
System.out.println("complement"+complement);
for (int i=hauteur-1; i>=0; i--){
for(int j=0; j<largeur*3; j++){
phie.write(rasta[kiba]);
System.out.println(rasta[kiba]);
kiba++;
}
System.out.println(" ");
for(int j=0; j<complement; j++){
phie.write(0);
System.out.println(0);
}
}
System.err.println("L'ECRITURE EST TERMINEE AVEC
SUCCES");
phie.close();
}catch(IOException e) {
System.err.println("Erreur du camouflage dans l'image");
}
}
Le fichier « Image de destination »
détenant déjà le message caché aura visiblement par
l'oeil humain, les mêmes qualités que celles du fichier
appelé « Image Initiale », alors qu'en
réalité il y en a une différence.
III.7 EXTRACTION DU MESSAGE CACHE
Sachant que l'image que nous détenons, qui vient de
nous être envoyé dans un périphérique de stockage
extérieur quelconque, ou à travers un réseau contient un
message caché, nous devons chercher à lire son contenu. C'est ici
que nous entrons dans la deuxième partie de notre logiciel car, celui-ci
ne se limite pas seulement à cacher le message dans une image, mais
aussi et surtout à le retirer du fichier Bitmap.
Notons que bon nombre de méthodes qui ont
été utilisées dans la partie du passage du message
à l'image seront encore utilisées dans celle de retrait du
message de l'image. La seule méthode spéciale qui s'augmente
à la liste est celle permettant après lecture de l'image de
récupérer les octets du message et de les transformer directement
en des chaînes des caractères.
public static char[] lireBinaireMessage(){
LireMessage de=new LireMessage();
for(int i=0;i<(multiplicateur*3);i++){
// System.out.println(matrix[i]);
}
int comp=0;
int compt=0;
int compte=0;
int[] Ttemp1;
int[] Ttemp2;
int[] Ttemp3;
int[] mess;
leLecture=new char [multiplicateur*3];
Ttemp1=new int[8];
Ttemp2=new int[8];
Ttemp3=new int[8];
int []message=new int[8];
for(int ish=0;ish<multiplicateur;ish++){
int z=0;
Ttemp1=de.converDecimalBinaire(matrix[comp]);comp++;
Ttemp2=de.converDecimalBinaire(matrix[comp]);comp++;
Ttemp3=de.converDecimalBinaire(matrix[comp]);comp++;
for(int j=0;j<3;j++){
message[z]=Ttemp1[j];
z++;
}
for(int m=0;m<3;m++){
message[z]=Ttemp2[m];
z++;
}
for(int n=0;n<2;n++){
message[z]=Ttemp3[n];
z++;
}
int messageInt=de.coBinaireDdec(message);
char sageChar=(char)messageInt;
leLecture[ish]=sageChar;
}
return leLecture;
}
Cette méthode recevra en ses arguments les valeurs des
trois octets composant un pixel, octets qui contiennent le message et retourne
le caractère extrait. Parce que cette méthode sera appelée
dans une boucle dépendant du nombre des pixels, elle retournera autant
des fois les caractères extraits qui sera traduit en son correspondant
alphanumérique : le message.
Nous venons de décrire un l'algorithme qui nous
permettra de lire et de copier l'entête et le corps d'une image bitmap,
de lire un message de transformer le corps de l'image et le message en binaire,
d'insérer les bits du message dans ceux de l'image en en
remplaçant les trois derniers. Nous avons traduit les nombres binaires
tirés en décimal et en fin écrire ces nombres
décimaux dans une image bitmap qui sera créée.
Nous avions en fin montré l'algorithme qui nous aidera
à lire l'image contenant le message, de traduire ce message de binaire
en décimal et de décimal vers l'alpha numérique.
CHAPITRE IV: SIMILATION DE LA STEGANOGRAPHIE
PAR UN LOGICIEL INFORMATIQUE
Au chapitre précédent nous avions donné
un algorithme qui nous a permis de stéganographier dans une image en vue
de sécuriser la transmission d'un message texte, mais remarquez que les
quelques instructions contenus dans ces méthodes sont en langage
Java.
Nous avions choisi le langage de programmation Java vue sa
facilité dans le traitement des images et sa portabilité. Mais ce
programme peut aussi être fait en langage C et en Visuel Basic.
IV.1 PROPRIETE DU MESSAGE
Nous devons savoir que la lecture de l'image se fait du
début jusqu'à la fin c'es-à-dire de son pixel situé
la ligne la plus basse et à la colonne la plus à gauche. Cela
signifie l'écriture de l'image de destination se fera aussi du
débit jusqu'à la fin.
Cela étant et sachant qu'un caractère du message
sera caché dans un seul pixel, il faudra prévoir un message dont
le nombre des caractères est supérieur ou égal à
celui de pixels composant l'image. Mais ce qui est idéal est
l'égalité de ces nombres pourtant aussi rare et
probabiliste : car personne ne se mettre à compter le nombre des
caractères du message qu'il est entrain de saisir.
Parce que l'erreur est de mettre un message
contenant un nombre restreint des caractères, notre programme sera
capable de compter le nombre des caractères et informer à
l'utilisateur s'il a mis un petit message et le programme sera fermé en
vue de permettre à l'utilisateur de redémarrer le programme et de
saisir cette fois un message remplissant cette condition de taille
c'est-à-dire plus long.
En vue de lutter contre les petits messages pour les grandes
images il vous sera important de choisir une petite image pour des petits
messages et des images de grande taille pour des grands messages parce que
c'est l'utilisateur qui propose le fichier du type BITMAP dans lequel vous
cacherez le message par cette boite de dialogue suivante :
Figure 6
Après que vous ayez entré le nom et
l'emplacement du fichier de l'extension «.bmp» la lecture de votre
fichier sera fait et le nombre des pixels qui correspond au nombre du message
que vous devez entrer vous sera fournie dans la boite de dialogue
suivante :
Figure 7
Dans l'exemple de la boite de dialogue ci-haut, on demande
d'entrer un message d'au moins 8742 caractères. Le respect de cette
instruction fera que le message qui serait entré par la suite soit
dissimilé aisément dans les 8742 pixels de l'image. Le non
respect de cette instruction.
Un utilisateur intelligent ayant une image de grande taille
peut taper un petit texte et à la fin appuyer continuellement sur la
touche d'espacement du clavier jusqu'à un certain niveau car comme nous
l'avions précisé précédemment les espaces seront
inclus si seulement ils se trouvent avant le curseur dans la zone de texte
permettant la saisie de texte.
IV.2 INFLUENCE DU MESSAGE SUR L'IMAGE
Au commencement de ce livre vous vous aurez posé des
questions de savoir si l'image qui contiendra le message en son sein ne
laissera pas voir celui-ci. Comment alors visualiser une image où il y
a des textes sans s'en apercevoir ?
Comment même quelqu'un d'instruit en informatique ne
peut pas se estimer si dans une image traité par notre programme il y a
un texte quelconque ? les phrases qui suivent répondront à
ces questions :
En réalité la représentation des
couleurs d'une image en informatique se fait par des nombres comme nous l'avons
expliqué au chapitre premier (voir le point I.1.3. Représentation
des couleurs). Les nombres qui se suivent ou qui sont proches peuvent se
remplacer sans changer la coloration visuelle de limage :
c'est-à-dire lorsque nous avons des nombres comme 255, 255, 255 ce qui
donne la couleur blanche, nous pouvons les remplacer par 253, 254, 253 ce qui
donnera toujours une couleur nuancée de blanche qui ne diffère
pas visiblement à l'oeil nu de la première alors
qu'informatiquement ca change.
Voici un exemple des images qu'un utilisateur a entré
en vue d'y cacher un message important :
(Figure 8)
Cette image peut être confondue par celle qui suit,
alors quelle cette dernière contient une un message important.
(Figure 9)
Cette image peut être envoyée à quelqu'un
dans un réseau sans que le message lui contenu ne soit d'une
manière ou d'une autre lu que par la partie suivante de notre
programme.
Dans un réseau local ou à travers l'internet, le
distributeur des messages au serveur a le pouvoir de consulter tous les
fichiers à transférer. Même si notre image contenant le
message est aperçue par une personne de mauvaise foi, cette
dernière ne cessera qu'à jeter un coup d'oeil sur elle, la
trouvant moins intéressante, passera immédiatement à
autres choses ne sachant pas que des secrets aussi importants passent à
son insu.
IV.3 APPLICATION DU PROGRAMME STEGANOGRAPHIQUE
Apres vous avoir longtemps parlé des astuces et
procédures que nous avions utilisées pour vous faire arriver
à cacher un texte derrière une image informatique et comment
parvenir à tirer ce message en destination et le lire, nous voici vous
présenter une recette qui concrétiser toutes ces longues
théories : un simple clic pour exécuter le programme vous
fera ceci devant vos yeux :
(Figure 10)
Ici vous avez le choix de continuer ou de quitter le programme
en cliquant respectivement sur DEMARRER LE PROGRAMME et sur QUITTER LE
PROGRAMME deux boutons que nous avons.
Nous avions dans la mesure d'efficacité prévu
que les opérations de cacher et de lire un texte d'une image soient
faites par un seul et notre programme. C'est pourquoi si vous choisirez de
continuer vous allez vous situer à au niveau que vous devez
spécifier si vous allez cacher ou lire dans une image le texte ou le
message. Il s'agit d'un menu dans lequel vous avez aussi la possibilité
de quitter le programme.
(figure 11)
Si vous voulez cacher le message vous devez choir la
commande « CACHER TEXTE AU SEIN DE L'IMAGE » si au
contraire vous voulez lire un message dans une image contenant un message vous
aller choisir « LIRE MESSAGE CACHE DANS UNE IMAGE » et
aussi vous avez l'amabilité de quitter le programme.
Si vous voulez cacher le message vous vous trouverez dans la
situation où vous devez vous informer sur l'état de l'image et
sur la taille du message que vous serez appelé à insérer
dans l'image. L'interface suivant vous permettra de saisir le message, et quand
vous finirez il ne vous restera que de faire un petit clic sur le bouton
« CACHER LE MESSAGE » en vue de permettre au programme de
cacher ces mots que vous venez de saisir.
(Figure 12)
Vous devez savoir respecter les ordres que vous donnera le
programme car l'oublie de ceux-ci serait une erreur et obstacle qui vous sera
soumis.
Prenons un exemple, si par mégarde vous venez d'entrer un
message inferieur à celui que vous demande le programme en ne respectant
pas la taille du message
Un message vous sera fait avant que le programme ne se ferme.
(Figure 13)
Une fois que vous venez de saisir le message remplissant les
conditions requises vous devez fournir l'emplacement et/ou le nom du fichier
qui contiendra le l'image qui portera en son sein et le message et l'image
précédente. C'est plutôt cette image qui sera
envoyée en destination et qui est stéganographiée.
(Figure 14)
Les procédures que vous aurez suivies sont celles de
cacher un message au sein d'une image. Si vous voulez lire un message que
contient une image quelconque vous devez au menu choisir la lecture en cliquant
sur « LIRE MESSAGE CACHE DANS UNE IMAGE ».
(Figure
15)
(Figure
16)
Comme précédemment vous devez fournir le nom du
fichier image contenant le message et cliquer sur Ok pour que le message que
contient cette image vous soit fourni. Voici un exemple du message caché
et lu par notre programme :
(figure 17)
IV.4 LA REGLES A METTRE EN PRATIQUE
Avant de vous parler des règles suivantes à
suivre, il importe de signaler que ces normes sont relatives au logiciel de
visualisation de l'image et non ceux de notre programme
stéganogramhique.
Apres que le message soit inséré dans l'image
contenant le message celle-ci peut être zoomée sans une
affectation du message mais les règles suivantes doivent être
suivies et respectées en vue de ne pas biaiser le message lui contenu.
L'image ne doit pas être pivotée afin que les pixels
lus en lignes ne soient en colonne lors de la prochaine lecture du message. le
message risque d'etre perturbé. Les couleurs de l'image ne doivent pas
être modifiées afin que les colorations des pixels ne soient
modifiées et par conséquent leurs codages et le fichier ne doit
pas être compressé.
Un redimensionnement de l'image contenant le message en son sein
doit ne pas être fait (ses attributs ne doivent pas être
modifiés) car une partie du message peut être perdue.
Le respect de ces quelques normes et l'utilisation de ce
programme stéganographique fera que vous envoyé des
correspondances aussi protégées que possibles.
Il n'est pas nécessaire d'utiliser une image contenant un
message pour y cacher un autre car, plusieurs utilisations de l'image contenant
le message en vue d'y cacher un autre peuvent modifier essentiellement
celle-ci. Et si quelqu'un ayant une accoutumance de voir cette image
l'aperçoit saura directement qu'il y a des sures modifications. Ce qui
peut entrainer une doute ; mais ces doutes ne sont pas aussi importantes
pour ceux qui ne sont pas informé sur cette technique de cacher un
message dernière une image. Il sera donc difficile de s'accoutumer sur
l'aspect de l'image n'importe laquelle utilisée par quelqu'un et de
penser directement sur les insertions des messages dedans.
Ce qui rend incertaine un quelconque doute.
IV.5 LA CONCATENATION DU MESSAGE
Nous savons que suite à la concaténation le
l'engage Java, le C et autres programmes qui peuvent s'exécuter en mode
console ne savent pas faire un affichage des voyelles accentuées ni de
certains signes génériques. il suffit tout simplement d'afficher
une chaine de caractère en C ou en java en mode console, vous
constaterez que les voyelles accentuées ou des lettres spéciales
et signes génériques seront transformées. Cela se fait
aussi dans notre programme vue que nous avions affiché le
résultat en mode console. Il est donc facultatif d'omettre des accents
sur le texte que vous saisirez, si non une liste des voyelles
accentuées, des lettres spéciales et quelques signes
génériques et leurs correspondants à la lecture du message
vous sont fournis dans le tableau suivant :
Numéro
|
Voyelle accentuée, caractères
génériques ou lettres spéciales
|
Correspondant concaténé dans le message à la
sortie
|
1
|
é
|
ú
|
2
|
à
|
ó
|
3
|
è
|
p
|
4
|
ê
|
û
|
5
|
â
|
ô
|
6
|
ä
|
õ
|
7
|
ï
|
'
|
8
|
ô
|
|
9
|
ÿ
|
` ` (Espace vide)
|
10
|
ç
|
Þ
|
11
|
`(apostrophe)
|
!
|
12
|
?
|
Ne varie pas
|
13
|
!
|
Ne varie pas
|
14
|
_
|
Ne varie pas
|
15
|
-
|
!!
|
16
|
"
|
Ne varie pas
|
17
|
#
|
Ne varie pas
|
18
|
$
|
Ne varie pas
|
19
|
@
|
Ne varie pas
|
20
|
·
|
x
|
(Tableau
5)
CONCLUSION
Nous voici à la fin de notre travail qui portait sur la
stéganographie par les images pour la sécurisation de la
transmission des messages.
Tout au long de ce travail nous avions montré comment une
image peut porter en son sein un message.
Il nous a suffit de transformer le message en binaire en passant
par le décimal de son correspondant ASCII. La lecture et
l'interprétation des nombres binaires par le programme a
été faite en sens inverse ; c'est-à-dire de droite
à gauche car en convertissant un nombre décimal en binaire le
premier reste de la division euclidienne est le bit du poids le plus faible du
correspondant binaire.
Apres que les caractères du message soient en binaire, il
nous a fallu lire les octets de l'image bitmap et de les transformer aussi en
binaire. L'interprétation de ces nombres binaires se fait aussi en sens
inverse.
Prenons le cas concret du premier caractère du message et
du premier pixel de l'image: Étant donné que les trois
octets composant le pixel et le correspondant ASCII du message sont
déjà traduits en une suite de huit bits chacun, il nous suffira
de remplacer les trois premiers bits de poids le plus faible du premier octet
de l'image par les trois premiers bits du caractère ; les trois
premiers bits de poids le plus faibles du deuxième octet par les trois
deuxièmes bits du message et en fin les deux premiers bits du poids le
plus faibles du dernier octet de l'image par les deux derniers bits du
caractère. Ce faisant, nous aurions inséré les huit bits
d'un caractère du message dans les trois octets codant un pixel.il
faudra reconvertir ces nouveaux octets qui sont en binaire en décimal.
Parce que le message est composé de plusieurs caractères et
l'image plusieurs pixels cette règle sera appliquée pour toute
l'image et le résultat sera copié dans un autre fichier qu'on
pourra créer qui contiendra l'image envoyer en destination parce qu'il
détient le message.
Certes que les trois octets que nous aurons à la sortie
ne seront plus ceux que nous avions à l'entré parce que certains
de leurs bits ont été changés. C'est pourquoi ces octets
auront des valeurs approximatives que les premiers. Raison pour laquelle l'oeil
humain ne sera pas à même de distinguer la différence
inattendue des couleurs de la deuxième image.
Si au contraire nous avons une image qui contient un message que
nous voulons lire il suffira de lire l'image et de copier pour chaque pixel les
trois premiers bits de ses deux premiers octets et les deux derniers bits de
son dernier octet. Ces bits qui seront copiés seront convertis en
décimal avant d'être rétabli en alphanumérique pour
donner des caractères tirés de l'image.
Nous sommes sure que notre travail répond aux attentes et
au problématique que nous nous sommes fixé des le
départ ; néanmoins chaque oeuvre humaine est susceptible de
contenir des imperfections et des déficiences, nous disons bienvenus
à vos remarques et suggestions.
Sachant que nous ne mettons pas un point final à la
stéganographie, nous portons cette oeuvre à tous nos successeurs,
chercheurs et étudiants qui pourront soit améliorer soit
continuer à cacher les images dans les images ou le son dans le son.
BIBLIOGRAPHIE
I.OUVRAGES
1. KYENDA SULIKA Dieudonné, cours de LOGIQUE ET
CONCEPTION DES PROGRAMMES G1 I.G. /ISP BUKAVU 2006, inédit.
2. Laura LEMAY et Rogers CADERNHEAD, Java 1.2 , la source
d'or, 1998.
III. MEMOIRES ET TFC
1. NYONGOLO LUWAWA Martin, Extraction d'objets dans un milieu
hétérogène, 2006.
IV. WEBOGRAPHIQUE
3. 1.
http://www.fr.wikipedia.org, valide
le 16 novembre 2008.
4. 2.
http://www.en.wikipedia.org/wiki/Bitmap,
valide le 16 novembre 2008.
5. 3.
http://www.commentCamarche.net,
valide le 16 novembre 2008.
TABLE DE MATIERES
PRELUDE
0
EPIGRAPHE
II
DEDICACE
III
REMERCIEMENTS
IV
SIGLES ET ABREVIATIONS
VI
RESUME
VII
O. INTRODUCTION 1
CHAPITRE I : ETUDE DES IMAGES BITMAP
3
I.1 DEFINITION 1
I.2 DEFINITION ET RESOLUTION D'UNE IMAGE
4
1) la définition
4
2) la résolution
4
I.3 TAILLE ET FORMAT D'UNE IMAGES BITMAP
5
I.3.1 la taille d'une image en octet
5
I.3.2 Taille de l'image en pixels
6
I.3.3 Représentation des couleurs
6
1. Images 24 bits
7
2. Images à palettes, images en 256 couleurs
(8 bits)
8
3. Images 32 bits
9
4. Images en teintes (ou niveaux) de gris
10
5. Images avec gestion de la
translucidité
10
I.4 FORMAT D'IMAGES BITMAP
11
CHAPITRE II : LA STEGANOGRAPHIE PAR LES
IMAGES
14
II.1 TRANSMISSION DES MESSAGES SECRETS DANS LE
TEMPS
14
II.2 PROBLEME DE LA TRANSMISSION DES MESSAGES
SECRETS A
15
TRAVERS UN RESEAU
15
II.3 DE LA CRYPTOGRAPHIE
15
II.4 LA STEGANOGRAPHIE
17
II.4.1 NOTION
17
II.4.2 TECHNIQUE DE LA STEGANOGRAPHIE
18
Chapitre III : L'ELABORATION D'UN ALGORITHME
DE
21
MARQUAGE DE TEXTE AU SEIN D'UNE IMAGE
21
BITMAP
21
III.1 LE MESSAGE A CODER
21
III. 2 LECTURE DE L'IMAGE
22
III.3 CONVERSION DES NOMBRES DECIMAUX EN
BINAIRES
24
III.5 INSERTION DES BITS DU MESSAGE EN VUE DU
MARQUAGE
27
III.6 ECRITURE SUR L'IMAGE
28
III.7 EXTRACTION DU MESSAGE CACHE
29
CHAPITRE IV: SIMILATION DE LA STEGANOGRAPHIE
32
PAR UN LOGICIEL INFORMATIQUE
32
IV.1 PROPRIETE DU MESSAGE
32
IV.2 INFLUENCE DU MESSAGE SUR L'IMAGE
34
IV.3 APPLICATION DU PROGRAMME STEGANOGRAPHIQUE
36
IV.4 LA REGLES A METTRE EN PRATIQUE
40
IV.5 LA CONCATENATION DU MESSAGE
40
CONCLUSION
42
BIBLIOGRAPHIE
44
TABLE DE MATIERES
45
BIOGRAPHIE..........................................................................................47
BIOGRAPHIE
Richard ISHARA Kibasomba, né le 27 Juillet 1985
à Bukavu, est un Gestionnaire, Informaticien, concepteur programmeur,
Electricien Congolais, il fit ses études maternelles, primaires et
secondaire a l'institut d'Ibanda de Bukavu, ses études humanitaires
techniques a l'Institut technique avenir et reçu son diplôme
d'Etat en Electricité Industrielle en RD Congo.
Il fut ses études supérieurs a l'ISP/Bukavu et
obtenu son diplôme de licencie en informatique de Gestion dans
l'année académique 2009-2010.
* 1 http://www.
fr.wikipedia.org valide, le 16 Novembre 2008.
* 2
http://www. fr.wikipedia.org
valide, le 16 Novembre 2008
* 3 KYENDA SULIKA
Dieudonné, cours de LOGIQUE ET CONCEPTION DES PROGRAMMES G1 I.G.
/ISP BUKAVU 2006, inédit.
* 2 6 NYONGOLO LUWAWA
Martin, Extraction d'objets dans un milieu
hétérogène, 2006.
* 37 http://www.
fr.wikipedia.org, valide le 16 Novembre 2008
* 8
http://www.commentCamarche.net,
valide le 16 novembre 2008.88856323
22
6323288888
|