====== CCM - Module Sécurité ======
==== Q.1 Chiffrement de Cesar ====
Le texte suivant a été obtenu en appliquant le chiffrement de césar (Vu en cours). Ce chiffre résulte d'un texte écrit en langue française dont on a supprimé les espaces.
prdhryvatravbfvgrqrfubzzrfabhfnbssregqnafprfpragfqreavrerfnaarrfnhenvgchsnpvyvgrehar
ivryvoerrgurherhfrfvyrcebterfrageryrfuhznvaffrssrpghnvgrazrzrgrzcfdhryrfcebterffheyr
fpubfrfbeyrerfhygngynobevrhkerffrzoyrcbheprhkqrabgertrarengvbanprdhrfrenvghaenfbvecb
heharasnagqrgebvfnafynpbadhrgrqrsnohyrhkzblrafqrcebqhpgvbaancnfnccbegrynyvoregrznvfy
rfnatbvffrfrgynsnvzcverrapberyrfcebterfgrpuavdhrfsbheavffragyrfzblrafqnarnagveynivru
hznvarrggbhgprdhvnrgrqherzragperrcneyubzzrcebgrfgrenhwbhequhvpbageryrfnezrzragfarfvt
avsvrevrargarpunatrevrafrhyrynfhccerffvbaqrsvavgvirqhevfdhrhavirefryqrynthreerqbaarh
afrafrghapunaprnynfheivrqhzbaqribvynqrfbeznvfabgerynorhedhbgvqvrargabgervaroenaynoyr
qrpvfvbayhggrepbagerynenpvarqhznyrgabapbageryrfrssrgfwrqrgrezvarynhguragvdhrinyrheqh
aubzzrqncerfharfrhyrertyrndhryqrterrgqnafdhryohgyubzzrfrfgyvorerqrfbazbvgbhgrfyrfevp
urffrfqhzbaqrshffragryyrfrageryrfznvafqhaubzzrgbgnyrzragnpdhvfnyvqrrqrcebterfarcrezr
ggebagwnznvfyrzbvaqerqrirybccrzragzbenyqryuhznavgryrqrfgvaqryuhznavgrercbfrfheyrfsbe
prfzbenyrfqryubzzrfvabhfibhybafharivryvoerrgurherhfrvylsnhqenarprffnverzragerabaprzr
agrgerfgevpgvbaynpbzcerurafvbaqnhgehvarcebterffrendhnirpyrcnegntrqrfwbvrfrgqrffbhsse
naprfwrarcrhkpbzcnereyntrarebfvgrqhazbvfrqhawrfhfbhqhatnaquvrgyntrarebfvgrqhardhrypb
adhrsbaqngvbapneartvrnyoregrvafgrva
Implantez, dans le langage de votre choix (préférence donnée au C), une cryptanalyse de ce texte
----
==== Q.2 Transposition de message ====
On considère que la clef de transposition de notre chiffrement suit les mêmes règles que celles vues en cours. Le nombre de colonnes est égal à la longueur de la clef. La transposition se fait suivant l’ordre alphabétique des lettres de la clef. En cas d'égalité, le sens de lecture de la gauche vers la droite est la seconde règle de priorité ́e. On considère la clef de chiffrement par transposition suivante :
CCMMODULESECURITE
Implantez, dans le langage de votre choix, la détransposition du chiffre suivant :
ltd scs eoh oee eus etn ape ier cvc ete eoe dno nln prt
pet iot tae eok stt fue sem epz dcf epi ohi ldi dec phb
cll lae nrg oaa ieu etn ist vnf fns oer uno rse ede uen
que uqr sis erd euo vte ree nta nce ntr ibi tus erd cct
ile ele afu nat tee eqe iie uiu des uao rar afs nva qis
irs ens nud usi orl era rui qio aes ets mte nss lll dca
eir uem uvs tlm nae mos eeo eeu eay nle sno qoo rea tct
eip zdl scs nps tnc sei uui eyc mdn rra qev uon iil upu
neu nzr tea adt utq cen ios due rue uun duo une edi see
ers tne nts oos eiu ghh aei oea err eor tbg esi rhs vvc
iae iii tml mul vit apo tea loe eir
----
==== Q.3 Ordre de grandeur ====
Sachant que la puissance totale de l'énergie solaire reçue chaque année sur Terre est d'environ 173.10^15 Watts et que la machine actuellement en tête du Green-500 (Novembre 2014) développe une puissance d'environ 5272.10^6 FLOPS/Watt. En considérant qu'une seule opération à virgule flottante est nécessaire pour tester une clé de 128 bits pour un algorithme de chiffrement donné, combien de temps faudrait-il pour tester toutes les clés en utilisant l'intégralité du rayonnement solaire reçu sur Terre pour réaliser cette opération ?
----
==== Q.4 Cryptanalyse statistique ====
Le texte ci-dessous a été chiffré à l'aide d'une substitution mono-alphabétique. En basant sur les informations contenues à cette [[https://fr.wikipedia.org/wiki/Fréquence_d%27apparition_des_lettres_en_français|URL]], procédez à une [[https://fr.wikipedia.org/wiki/Analyse_fréquentielle|analyse fréquentielle]] en vue de retrouver le texte français original.
b'qljbg go bq wlg
b'qljbg, uglcg fgi qlui, qtgd vqujxo bq wlg,
flhhgugcogi f'kpvgpu, fg bqcjqjg go f'giwulo, go f'kqslo,
ouqtguiqlgco pc sxpo fg wuqlulg.
bg kqiquf bgi qiigvsbg gc pc dxlc fgoxpucg.
b'qjqiig gpo wgpu; vqli b'qljbg, qzqco hxuo slgc flcg,
bq uqiipug, go bpl flo: "qbbxci fg dxvwqjclg ;
il bg vqloug fgi flgpe qiiga ixptgco i'gccplg,
bpl ypl jxptgucg b'pcltgui,
m'gc wpli slgc hqlug qpoqco, vxl yp'xc iqlo ypl bg igui.
gcougogcgavxl fxcd, go iqci dgugvxclg."
dqypgosxcsgd qbxui fg mqigu qp wbpi fup,
ipu dgdl, ipu dgbq, ipu oxpo. b'kxvvg f'kxuqdg,
fliqco bg slgc, bg vqb q ouqtgui dkqvwi, c'gpo ip
dg yp'gc hqlo fg sqslb z iqtqlo cxoug qjqiig.
gbbg xhhug f'qtguolu fg oxpo dg ypl ig wqiig,
iqpoqco, qbbqco fg wbqdg gc wbqdg,
sxc giwlxc, flgp iqlo. ixc xhhug qzqco fgwbp,
b'qljbg bpl flo oxpo gc dxbgug :
"cg yplooga wxlco txoug igmxpu,
dqypgosxcsgd, vqvlg ; qflgp ; mg c'ql ypg hqlug
f'pcg sqslbbqufg q vq dxpu :
d'gio pc hxuo vgdkqco dquqdogug.?
vqujxo cg fgvqcfqlo wqi vlgpe.
dg c'gio wqi dg yp'xc duxlo ypg f'gcougu dkga bgi flgpe :
dgo kxccgpu q ixptgco fg vxuogbbgi qcjxliigi.
ugfligpui, giwlxci, jgci q b'qlu juqdlgpe,
qp dxgpu oxpo flhhgugco, i'z ugcfgco xflgpe,
ypxlypg qlcil ypg bq wlg lb hqlbbg fqci dgi blgpe
wxuogu kqslo fg fgpe wquxliigi.
mgqc fg bq hxcoqlcg, bg hqsbgi
Pour ce faire, vous pouvez utiliser l'éditeur de votre choix pourvu qu'il soit pourvu d'une fonction de remplacement d'un caractère par un autre.
==== Q.5 Importance du caractère aléatoire des clés ====
L'algorithme One Time Pad ("Masque jetable") est prouvé "incassable", cependant, il faut respecter plusieurs conditions drastiques pour qu'il le soit réellement. Dans ce TP, vous exploiterez les faiblesses d'une mauvaise utilisation d'OTP. Afin de chiffrer le fichier [[https://mis.u-picardie.fr/~lemahec/FdC/chiffre.txt|chiffre]], nous avons utilisé le programme suivant :
#include
#include
#include
/* Le programme prend en paramètres :
- Un fichier d'entrée à chiffrer
- Un fichier de destination (dont le contenu est perdu s'il existe)
- Un fichier d'enregistrement de la clé
*/
int main(int argc, char* argv[]) {
size_t size, buffsize, i;
int buffer[1024/sizeof(int)];
FILE* input, *output, *key;
int rv;
if (argc<4) {
fprintf(stderr, "Usage: %s