Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
RAPORT
Disciplina: Securitatea Informațională
Laboratorul nr. 1
Chişinǎu 2014
Scopul lucrării
Studierea algoritmilor de criptare al datelor folosind metode de substituție. Studierea algori
simetric DES.
Obiectivele lucrării
Crearea aplicațiilor care implementează următoarele metode de criptare și de decriptare al datelor:
a) Cifrul lui Caesar
b) Cifrul lui Polybius
c) Cifrul lui Trithemius
Implementarea unei aplicații în care este utilizat algoritmul DES.
Realizarea lucrării
Lucrarea de laborator a fost realizată în mediul Intellij IDEA utilizînd tehnologiile java.
Mesajul care va fi criptat va fi: The secret message.
2
Necătînd la faptul ca cifrul a fost creat pentru codare, cu ajutorul lui la fel se poate și codifica
mesaje. Pentru a codifica mesajul este necesar de a îndeplini următorii pași:
1. Formarea tabelului de criptare. Pentru fiecare limbă în parte, un tabel cu aceeași criptare
(opțional) Numărul de rânduri și coloane numerotate, parametrii de care depinde capacitatea sa
(numărul de litere din alfabet). Luate două numere întregi a căror produs este cel mai aproape de
numărul de scrisori în limba - obține numărul dorit de rânduri și coloane. Apoi am intra în tabel
toate literele alfabetului într-un rând - unul pentru fiecare celulă. Cu un deficit de celule pot fi
introduse într-una sau două litere (rar utilizate sau similare în uz).
2. Principiul codificării. Criptarea pe piața găsit scrisoarea textului și introdus în partea de jos a
acestuia codificate în aceeași coloană. În cazul în care scrisoarea a fost linia de jos, apoi a luat
partea de sus a aceeași coloană.
3
Fig. 4 – Tabula recta.
Această metodă elimină frecvențele scrisoare din textul cifrat, ceea ce face să apară ca un șir
aleator sau bloc de date. Cu toate acestea, în cazul în care o persoană este conștient de faptul că această
metodă este folosit, devine usor de spart. Cifrul este vulnerabil la atac, deoarece nu are o cheie, care se
spune că pentru a rupe principiu Kerckhoffs, o regulă de criptologie.
DES
Standardul de Criptare a Datelor (în engleză Data Encryption Standard, DES) este un cifru (o
metodă de criptare a informației), selectat ca standard federal de procesare a informațiilor în Statele Unite
în 1976, și care s-a bucurat ulterior de o largă utilizare pe plan internațional. Algoritmul a fost
controversat inițial, având elemente secrete, lungimea cheii scurtă și fiind bănuit că ascunde de fapt o
portiță pentru NSA. DES a fost analizat intens de către profesionaliști în domeniu și a motivat înțelegerea
cifrurilor bloc și criptanaliza lor.
DES este astăzi considerat nesigur pentru multe aplicații. Acest lucru se datorează în principiu
cheii de 56 de biți, considerată prea scurtă; cheile DES au fost sparte în mai puțin de 24 de ore. De
asemenea, există unele rezultate analitice care demonstrează slăbiciunile teoretice ale cifrului, deși nu este
fezabilă aplicarea lor. Se crede că algoritmul este practic sigur în forma Triplu DES, deși există atacuri
teoretice și asupra acestuia. În ultimii ani, cifrul a fost înlocuit de Advanced Encryption Standard (AES).
4
Concluzie
În urma efectuării lucrării de laborator am făcut cunoștință cu algoritmii clasici de criptare care stau
la baza algoritmilor de cifrare moderni. Cifruri simetrice au fost istoric sensibile la atacuri cunoscute
plaintext, atacuri plaintext alese, criptanaliza diferențială și criptanaliza liniară. Construcție atentă a
funcțiilor pentru fiecare rundă poate reduce foarte mult șansele de un atac de succes.
ANEXĂ
/** Caesar.java **/
package Ciphers.classic;
/**
* Created by vlc on 12/12/14.
*/
public class Caesar {
return encoded.toString();
}
}
import java.awt.*;
/**
* Created by maxim on 11/30/14.
*/
public class Polybius {
5
charTable = new char[5][5];
positions = new Point[26];
if (i == sb.length() - 1)
sb.append(sb.length() % 2 == 1 ? 'X' : "");
if (r1 == r2) {
c1 = (c1 + dir) % 5;
c2 = (c2 + dir) % 5;
} else {
int tmp = c1;
c1 = c2;
c2 = tmp;
}
txt.setCharAt(i, charTable[r1][c1]);
txt.setCharAt(i + 1, charTable[r2][c2]);
}
return txt.toString();
6
}
}
/**
* Created by vlc on 12/18/14.
*/
public class Trithemius {
static char[] lAlphabet = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k',
'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
static char[] uAlphabet = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',
'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
if (Character.isLetter(input.charAt(i))) {
output.append(shiftLetter(currentOffset, input.charAt(i)));
currentOffset = (currentOffset+1)%26;
} else
output.append(input.charAt(i));
}
return output.toString();
}
if (Character.isLetter(input.charAt(i))) {
output.append(shiftLetter(currentOffset, input.charAt(i)));
currentOffset = ((currentOffset-1)+26)%26;
} else
output.append(input.charAt(i));
}
return output.toString();
}
7
}
}
import javax.crypto.*;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
/**
* Created by vlc on 12/23/14.
*/
public class DES {
Cipher ecipher;
Cipher dcipher;