1. Trang chủ >
  2. Luận Văn - Báo Cáo >
  3. Công nghệ thông tin >

III. Các cách Thám mã (Cryptanalyis)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (244.17 KB, 39 trang )


An ton v bo mt thụng tin



30



Cần tìm: hoặc P1, P 2,... Pi; k; hoặc một thuật toán để nhận đợc Pi+1 từ

Ci+1=Pk(Pi+1)

2.Biết bản rõ (Known-plaintext attack).

Ngời thám mã không chỉ biết bản mã của một vài thông điệp mà còn biết cả

bản rõ của những thông điệp này. Công việc của ngời thám mã là tìm ra khoá (hoặc

các khoá) đợc sử dụng để mã hoá các thông điệp hoặc thuật toán để giải mã bất kỳ

một thông điệp mới nào đợc mã hoá bằng khoá đó.

Đầu vào: P1, C1=Ek(P1), P2, C2=Ek(P2),... Pi, Ci=Ek(Pi)

Cần tìm: hoặc k, hoặc một thuật toán để nhận đợc Pi+1 từ Ek(Pi+1)

3. Lựa chọn bản rõ (Chosen-plaintext attack).

Ngời thám mã không chỉ phân tích bản mã mà còn đợc kết hợp với bản rõ

của một vài thông điệp, nhng các bản rõ không là tuỳ ý mà do ngời thám mã phải

lựa chọn. Trờng hợp này tốt hơn trờng hợp (2) đối với ngời thám mã, bởi vì ngời

thám mã có thể chọn khối bản rõ đặc trng để giải mã, nó có thể mang lại nhiều

thông tin về khoá. Công việc của ngời thám mã là tìm khoá (hoặc các khoá) đợc sử

dụng để mã hoá các thông điệp hoặc một thuật toán để giải mã bất cứ thông điệp đã

đợc mã hoá mới nào bằng các khoá đó.

Đầu vào: P1, C1=Ek(P1), P2, C2=Ek(P2),... Pi, Ci=Ek(Pi), ngời thám mã đợc chọn

P1, P2,... Pi

Cần tìm: hoặc k, hoặc một thuật toán để nhận đợc Pi+1 từ Ci+1=Ek(Pi+1)

4. Lựa chọn bản rõ thích hợp (Adaptive-chose-plaintext attack).

Đây là một trờng hợp đặc biệt của trờng hợp bản rõ đợc lựa chọn. Ngời thám mã

không chỉ có thể đợc lựa chọn bản rõ mà nó đã đợc mã hoá, mà họ còn có thể biến

đổi những điểm cần thiết dựa trên kết quả của những lần mã hoá trớc. Với trờng

hợp bản rõ đợc lựa chọn, ngời thám mã có thể lựa chọn một khối bản rõ lớn để giải

mã; trong trờng hợp bản rõ đợc lựa chọn thích hợp họ có thể lựa chọn một khối bản

rõ nhỏ hơn sau đó lựa chọn khối khác dựa vào kết quả của khối đầu tiên, v.v...

Nguyn Th Thu Hin - TK6LC1



An ton v bo mt thụng tin



31



5. Lựa chọn bản mã (Chosen-plaintext attack).

Ngời thám mã có thể chọn trong các bản mã khác nhau và biết đợc bản rõ.

Công việc của ngời thám mã là tìm khoá.

Đầu vào: C1, P1=Dk(C1), C2, P2=Dk(C2),... Ci, Pi=Dk(Ci)

Cần tìm: k

6. Lựa chọn khoá (Chosen-Key).

Ngời thám mã biết phơng pháp mã hoá Ek và cố tìm phơng pháp giải mã tơng

ứng Dk trớc khi nhận bất cứ mẫu bản mã nào. Trong trờng hợp này ngời thám mã

có rất nhiều thời gian để làm việc.

Trờng hợp (5), (6) thờng đợc ứng dụng chủ yếu đối với các hệ thống mã hoá sử

dụng khoá công khai.

Một điểm đáng chú ý khác là đa số các kỹ thuật thám mã đều dùng phơng pháp

thống kê tần suất xuất hiện của các từ, các ký tự trong bản mã. Sau đó thực hiện

việc thử thay thế với các chữ cái có tần suất xuất hiện tơng đồng trong ngôn ngữ tự

nhiên. Tại đây chúng ta chỉ xem xét đối với ngôn ngữ thông dụng nhất hiện nay đó

là tiếng Anh. Việc thống kê tần suất xuất hiện của các ký tự trong trờng hợp này đợc tiến hành dựa trên các bài báo, sách, tạp chí và các văn bản cùng với một số loại

khác ...

Sau đây là bảng thống kê tần suất xuất hiện của 26 chữ cái trong bảng chữ cái tiếng

Anh theo tài liệu của Beker và Piper.

Ký tự

A

B

C

D

E

F

G

H



Xác Suất

0.082

0.015

0.028

0.043

0.127

0.022

0.020

0.061



Ký tự

J

K

L

M

N

O

P

Q



Xác suất

0.002

0.008

0.040

0.024

0.067

0.075

0.019

0.001



Ký tự

S

T

U

V

W

X

Y

Z



Xác suất

0.063

0.091

0.028

0.010

0.023

0.001

0.020

0.001



Nguyn Th Thu Hin - TK6LC1



An ton v bo mt thụng tin

I



0.070



32



R



0.060



Cùng với việc thống kê các tần xuất của các ký tự trong tiếng Anh, việc thống kê

tần suất xuất hiện thờng xuyên của các dãy gồm 2 hoặc 3 ký tự liên tiếp nhau cũng

có một vai trò quan trọng trong công việc thám mã. Sysu Deck đa ra 30 bộ đôi xuất

hiện thờng xuyên của tiếng Anh đợc sắp theo thứ tự giảm dần nh sau :

Tính hữu dụng của các phép thống kê ký tự và các dãy ký tự đợc ngời phân tích mã

khai thác triệt để trong những lần thám mã. Khi thực hiện việc thám mã ngời phân

tích thống kê các ký tự trong bản mã, từ đó so sánh với bản thống kê mẫu và đa ra

các ký tự phỏng đoán tơng tự. Phơng pháp này đợc sử dụng thờng xuyên và đem lại

hiệu quả khá cao.

Cặp chữ

TH

HE

IN

ER

RE

ON

AN

EN

AT

ES



Tần suất

10.00

9.50

7.17

6.65

5.92

5.70

5.63

4.76

4.72

4.24



Cặp chữ

ED

TE

TI

OR

ST

AR

ND

TO

NT

IS



Tần suất

4.12

4.04

4.00

3.98

3.81

3.54

3.52

3.50

3.44

3.43



Cặp chữ

OF

IT

AL

AS

HA

NG

CO

SE

ME

DE



Tần suất

3.38

3.26

3.15

3.00

3.00

2.92

2.80

2.75

2.65

2.65



Phần iii: cài đặt một số thuật toán

import java.awt.FlowLayout;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

Nguyn Th Thu Hin - TK6LC1



An ton v bo mt thụng tin



33



import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JTextArea;

public class mahoa extends JFrame implements ActionListener

{

Public String[]a = new String[]{"a","b","c","d","e","f","g","h","i","j","k","l","m"

,"n","o","p","q","s","r","t","u","v","x","y","z","w"};

public String[]code=new String[62];

public String xauma=new String();

public String banma=new String();

JTextArea t1=new JTextArea(5,5);

JLabel l1=new JLabel("chua ma");

JButton[] b=new JButton[]{new JButton("ma vong"),new JButton("ma

hemiaffine"),new JButton("ma tt"),new JButton("ma vigenere"),new JButton("ma

ts")};

JButton[] g=new JButton[]{new JButton("gma vong"),new JButton("gma

hemiaffin"),new



JButton("gma



tt"),new



JButton("gma



vigenere"),new



JButton("gma ts")};

public mahoa()

{

setLayout(new FlowLayout());

add(t1);

add(l1);

for(int i=0;i
{

b[i].addActionListener(this);

add(b[i]);

g[i].addActionListener(this);

add(g[i]);

}

Nguyn Th Thu Hin - TK6LC1



An ton v bo mt thụng tin



34



}

public String mavong(int k)

{

String xauma=t1.getText();

System.out.println("xau ma la: "+xauma);

int l=xauma.length();

String t;

String kq = "";

System.out.println("5%2"+5%2);

for(int i=0;i
{

t=xauma.substring(i,i+1);

for(int j=0;j<26;j++)

{

if(t.compareTo(a[j])==0)

{

kq=kq+a[j+k];

}

}

}

System.out.println("xau ma la: "+kq);

l1.setText("Xau ma la: "+kq);

banma=kq;

return kq;

}

public String hemiaffin(int a1,int b1)

{

String xauma=t1.getText();

System.out.println("xau ma la: "+xauma);

int l=xauma.length();

Nguyn Th Thu Hin - TK6LC1



An ton v bo mt thụng tin



35



String t;

String kq ="";

for(int i=0;i
{

t=xauma.substring(i,i+1);

for(int j1=0;j1<26;j1++)

{

if(t.compareTo(a[j1])==0)

{

int j=(a1*j1+b1)%26;

kq=kq+a[j];

}

}

}

//System.out.println("xau ma la: "+kq);

l1.setText("Xau ma la: "+kq);

banma=kq;

return kq;

}

public String ghemiaffin(int a1,int b1)

{

String xauma=banma;

System.out.println("xau ma la: "+xauma);

int l=xauma.length();

String t;

String kq ="";

for(int i=0;i
{

t=xauma.substring(i,i+1);

for(int j1=0;j1<26;j1++)

Nguyn Th Thu Hin - TK6LC1



An ton v bo mt thụng tin



36



{

if(t.compareTo(a[j1])==0)

{

int j = 0;

System.out.println(j1);

int c=tinhx(a1,b1,j1);

if(c!=-1)

{

j=c;

}

System.out.println(j);

kq=kq+a[j];

}

}

}

System.out.println("xau ma la: "+kq);

l1.setText("Xau ma la: "+kq);

return kq;

}

public int tinhx(int a, int b,int j)

{

int x=-1;

int m=(25*a-j+b)/26;

for(x=0;x<26;x++)

for(int k=0;k<=25;k++)

{

if((a*x-26*k==(j-b)))

{

System.out.println("x tim duoc la:"+x);

Nguyn Th Thu Hin - TK6LC1



An ton v bo mt thụng tin



37

return x;



}

}

return x;

}

public String thaythe(int n,int[] r)

{

String xauma=t1.getText();

System.out.println("xau ma la: "+xauma);

int l=xauma.length();

String kq ="";

int d=0;

while(l>d)

{

int j=r[d%n]+((int) Math.floor((double) d/n))*n;

System.out.println(j);

kq=kq+xauma.substring(j,j+1);

d++;

}

l1.setText("Xau ma la: "+kq);

banma=kq;

return kq;

}

public String gthaythe(int n,int[] r)

{

String xauma=banma;

System.out.println("xau ma la: "+xauma);

int l=xauma.length();

Nguyn Th Thu Hin - TK6LC1



An ton v bo mt thụng tin



38



String[] tg=new String[l];

String kq ="";

int d=0;

while(l>d)

{

int j=r[d%n]+((int) Math.floor((double) d/n))*n;

System.out.println(j);

tg[j]=xauma.substring(d,d+1);

d++;

}

for(int j=0;j
{

kq=kq+tg[j];

}

l1.setText("Xau ma la: "+kq);

banma=kq;

return kq;

}

public String vigenere(String k)

{

String xauma=t1.getText();

int lx=xauma.length();

int l=k.length();

int r[]=new int[l];

int m = 0;

String kq ="";

for(int i=0;i
{

String t=k.substring(i,i+1);

Nguyn Th Thu Hin - TK6LC1



An ton v bo mt thụng tin



39



for(int j=0;j<26;j++)

if(t.compareTo(a[j])==0)

{

r[i]=j;

}

}

for(int i=0;i
{

String t=xauma.substring(i,i+1);

for(int j=0;j<26;j++)

if(t.compareTo(a[j])==0)

{

m=j;

}

int ma=(m+r[i%l])%26;

kq=kq+a[ma];

}

l1.setText("Xau ma la: "+kq);

banma=kq;

return kq;

}

public String gvigenere(String k)

{

String xauma=banma;

int lx=xauma.length();

int l=k.length();

int r[]=new int[l];

String kq ="";

for(int i=0;i
{

Nguyn Th Thu Hin - TK6LC1



An ton v bo mt thụng tin



40



String t=k.substring(i,i+1);

for(int j=0;j<26;j++)

if(t.compareTo(a[j])==0)

{

r[i]=j;

}

}

int m = 0;

for(int i=0;i
{

String t=xauma.substring(i,i+1);

for(int j=0;j<26;j++)

if(t.compareTo(a[j])==0)

{

m=j;

System.out.println("ma cua kt la:"+m);

}

int ma=(m-r[i%l])%26;

kq=kq+a[ma];

}

l1.setText("Xau ma la: "+kq);

return kq;

}

public String tusinh(int k)

{

String xauma=t1.getText();

int l=xauma.length();

String kq="";

int[] m = new int[l];

Nguyn Th Thu Hin - TK6LC1



Xem Thêm
Tải bản đầy đủ (.doc) (39 trang)

×