Tải bản đầy đủ (.pdf) (10 trang)

Tài liệu Nhập môn mật mã học  pptx

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 (383.99 KB, 10 trang )

Nhậpmônmậtmãhọc

1. Khái niệm mã hóa và giải mã

Mật mã và bảo mật trong hệ thống viễn thông là một lĩnh vực có nhiều thuật ngữ có thể làm cho
nhiều người "ngơ ngác": như "hash function", "one-time pad" hay Rijndael Thread này nhằm
giải thích các khái niệm thường dùng trong ngành mật mã học (cryptography) với hy vọng có thể
giúp ích cho những ai mong muốn tìm hiểu về lĩnh vực này.

Trước tiên mật mã học (crypto) là một nghệ thuật nhằm giấu thông tin, bằng cách chuyển đổi
(encrypt) thông tin thành dạng thông tin không đọc được (cipher text). Chỉ có những người giữ
chìa khóa (key) bí mật mới có thể giải mã (decrypt) thông tin thành dạng thông tin có thể hiểu
được (plain text). Thông tin đôi khi bị giải mã mà không cần biết khóa bí mật. Ngành học nghiên
cứu về việc bẻ khóa (attack/crack/hack) này còn gọi là cryptanalysis. (Xem hình 1)

Hình 1: Sơ đồ mã hóa và giải mã

Cryptosystem (viết tắt của cryptographic system): hệ thống mã hóa thông tin, có thể là phần
mềm như PGP, Ax-Crypt, Truecrypt giao thức như SSL, IPsec dùng trong Internet hay đơn
giả
n là một thuật toán như DES.

Encrypt (encipher, encryption): mã hóa – đó là quá trình biến đổi thông tin từ dạng ban đầu - có
thể hiểu được thành dạng không thể hiểu được, với mục đích giữ bí mật thông tin đó.

Decrypt (decipher, decryption): giải mã – đó là quá trình ngược lại với mã hóa, khôi phục lại
thông tin ban đầu từ thông tin đã được mã hóa.

Plain text/message: là dữ liệu gốc (chưa được mã hóa).

Cipher text/message: là dữ liệu đã được mã hóa.



Cipher (hay cypher): là thuật toán dùng để thực hiện quá trình mã hóa hay giải mã. Trong
khuôn khổ bài viết này gọi tắt là thuật toán.

Key: là
c

2. Các
n

• Tính b
í
những ai

• Tính t
o
phát hiệ
n
lén hoặc
thay đổi.
bảo tính
t

• Tính x
á
Người t
a
mật chia
hoặc hai


• Tính k
h
đã gửi h
o
(electro
n

• Tính n
h
chứng m
những c
h
liên qua
n
võng mạ
c

Trong b

mật cho
m
chúng ta
một mối
- Tính đ

- Tính b

có ngh
ĩ
a

- Tính p
h
)

3. Khái

Passwo
r

Trong th

tiếp tron
g
bước ch
u
này thư

c
hìa khóa –
đ
n
guyên lý
c
í
mật (conf
i
biết chìa k
h
o
àn vẹn (int

n
. Tính chất
n
thay đổi thì
Các hàm
m
t
oàn vẹn ch
o
á
c thực (au
t
a
có thể dụn
g
sẻ giữa hai
n
chiều (mult
u
h
ôn
g
chối
b
o
ặc nhận th
ô
n
ic signature
)

h
ận dạn
g
(i
inh thư (ide
n
h
ức năng củ
a
n
(thường g

c
mắt, âm t
h

o mật có m

m
ột người,
t
tin tưởng h
o
quan hệ kh
ô

i xứng: Tôi

t cầu: Tôi ti
là tôi tin tư


h
ản xạ: Tôi
c
niệm về c
r
d: mật khẩ
u

c tế, mật k
h
g
thuật toán.
u
yển đổi mậ
t

ng được gọ
i
đ
ó chính là t
c
ơ bản củ
a
i
dentialit
y
/
p
h

óa bí
m
ật.
e
g
rit
y
): tín
h
n
ày không
đ
người nhận
m
ột chiều (o
n
o
thông tin.
t
henticatio
n
g
một passw
o
n
gười để xá
c
u
al authenti
c

b
ỏ (non-rep
u
ô
ng tin. Thô
n
)
.
dentificati
o
n
tity) như l
à
a
người dùn
g

i chung là c
r
h
anh

t điều quan
t
hì phải tin t
ư
o
àn toàn và
o
ô

ng có tính
c
tin tưởng v
à
n tưởng vào

ng vào chị
B
c
ó tin tưởng
hìa khoá

u
, là một ha
y
h
ẩu do ngư

Vì vậy, tro
n
t
khẩu ban đ
i
là key deri
v
hông tin dù
n
a
quá tr
ì

n
h
p
rivacy): tí
n
h
chất này đ

đ
ảm bảo thô
n
được thông
n
e-way func
t
n
): người g

o
rd, một ch
a
c
thực. Sự x
á
c
ation).
u
diation):
n
n

g thường đ
i
o
n): người d
ù
à

m
ột chìa k
h
g
, giới hạn
c
r
edential). I
d
trọng cần l
ư
ư
ởng vào k
h
o
đối tượng
m
c
hất đặc t
r
ư
n
à

o ông bác s
anh A, anh
B
.
vào chính
m
y
nhiều từ
m
à

i
d
ùng tạo r
a
n
g bất cứ hệ
ầu thành ch
ì
v
ation, key s
t
n
g cho qui t
r
h
bảo mật
n
h chất này
đ


m bảo thôn
n
g tin khôn
g
tin có thể b
i
t
ion) như M
D

i (hoặc ngư

a
llenge dựa
t
á
c thực này
n
gười gửi ho

i
ều này đượ
c
ù
ng của mộ
t
h
óa ban đầu
c

ho phép củ
a
d
entity có t
h
ư
u ý đó là s

h
ả năng duy
m
à tạo ra kh
ó
n
g:
ĩ, nhưng liệ
u
A tin tưởng
m
ình không?
à
người dùn
g
a
thường kh
thống
m
ã h
ó
ì

a khóa có đ

t
retching ha
y
r
ình mã hóa
và mã hó
a
đ
ảm bảo thô
n
g tin không
g
bị thay đổi
,
i
ết được là t
h
D
5, SHA-1,

i nhận) có
t
tr
ên một thu

có thể thực
h


c nhận sau
c
thực hiện t
h
t
hệ thống,
m
(primary ke
y
a
người dùn
g
h
ể là login,
d

tin tưởng l

t
r
ì bí mật c

ó
a riêng (pr
i
u
ông bác sĩ
vào vợ anh
(không phả
i

g
phải biết
đ
ông đủ độ a
n
ó
a
d
ữ liệu n
g

an toàn th
í
y
key initial
i
và giải mã.
a
:

n
g tin chỉ đ
ư
thể bị thay
đ
,
nhưng một
h
ông tin đã
b

MAC đượ
c
t
hể chứng
m

t toán
m
ã
h
h
iện một ch
i
này không
t
h
ông qua m

m
ột tài nguy
ê
y
). identity
n
g
cũng như
c
d
ấu vân tay,
A


n nhau. Để

a người đó.
i
vate key).
S
có tin tưởn
g
ấy (chị B).
Đ
i
trong tất c

đ
ể được cấp
q
n
toàn để đ
ư
g
hiêm túc n
à
í
ch hợp. Bư

i
zation.
ư
ợc hiểu bởi

đ
ổi
m
à khôn
g
khi nó bị n
g
b
ị nghe lén
h
c

d
ùng để đ

m
inh đúng họ
h
óa hoặc mộ
t
i
ều (one-wa
y
t
hể chối bỏ
v

t chữ ký đi

ê

n sở hữu m

n
ày sẽ xác đ
c
ác thuộc tí
n
A
DN, giản
đ
chia sẻ bí
m
Chẳng hạn,
S
ư tin tưởng
g
tôi không?
Đ
iều đó kh
ô

các lĩnh v

q
uyền truy
c
ư
ợc dùng trự
c
à

o cũng phả
i

c tạo chìa
k
g
bị
g
he
h
oặc

m
.
t

y
)
v
iệc

n tử

t
ịnh
n
h
đ

m

ột bí


ô
ng

c
c
ập.
c

i

k
hóa

Key Derivation Function: là một hàm hash (sẽ giải thích rõ hơn ở phần sau) được thiết kế sao
cho chìa an toàn hơn đối với tấn công kiểu brute-force hay cổ điển. Hàm này được thực hiện lại
nhiều lần trên mật khẩu ban đầu cùng với một số ngẫu nhiên để tạo ra một chìa khóa có độ an
toàn cao hơn. Số ngẫu nhiên này gọi là salt, còn số lần lặp lại là iteration.

Ví dụ một mật khẩu là "pandoras B0x", cùng với salt là "230391827", đi qua hàm hash SHA-1
1000 lần cho kết quả là một chìa khóa có độ dài 160 bit như sau:
3BD454A72E0E7CD6959DE0580E3C19F51601C359 (thể hiện dưới dạng số thập lục phân).

Keylength (Keysize): Độ dài (hay độ lớn) của chìa khóa. Nói một chìa khóa có độ dài 128 bit có
nghĩa chìa đó là một số nhị phân có độ dài 128 chữ số. Một thuật toán có chìa khóa càng dài thì
càng có nhiều khả năng chống lại tấn công kiểu brute-force.

Brute-force attack (exhaustive key search): phương pháp tấn công bằng cách thử tất cả những

chìa khóa có thể có. Đây là phương pháp tấn công thô sơ nhất và cũng khó khăn nhất. Theo lý
thuyết, tất cả các thuật toán hiện đại đều có thể bị đánh bại bởi brute-force nhưng trong thực tiễn
việc này chỉ có thể thực hiện được trong thời gian dài. Vì thế có thể coi một thuật toán là an toàn
nếu như không còn cách nào khác để tấn công nó dễ hơn là brute-force. Ngoài ra để chống lại tấn
công này, chìa khóa bị mật được thay đổi một cách thường xuyên hơn.

4. Thuật toán mã hóa

a. Cổ điển(cái này ngày nay vẫn hay dùng trong trò chơi tìm mật thư).


• Substitution: thay thế – phương pháp mã hóa trong đó từng kí tự (hoặc từng nhóm kí tự) của
văn bản ban đầu được thay thế bằng một (hay một nhóm) kí tự khác. Tuy không còn được sử
dụng nhưng ý tưởng của phương pháp này vẫn được tiếp tục trong những thuật toán hiện đại

• Transposition: hoán vị – phương pháp mã hóa trong đó các kí tự trong văn b
ản ban đầu chỉ
thay đổi vị trí cho nhau còn bản thân các kí tự không hề bị biến đổi.

b.Hiện đại

b.1. Symmetric cryptography: mã hóa đối xứng, tức là cả hai quá trình mã hóa và giải mã đều
dùng một chìa khóa. Để đảm bảo tính an toàn, chìa khóa này phải được giữ bí mật. Vì thế các
thuật toán loại này còn có tên gọi khác là secret key cryptography (hay private key
cryptography), tức là thuật toán mã hóa dùng chìa khóa riêng (hay bí mật). Các thuật toán loại
này lý tưởng cho mục đích mã hóa dữ liệu của cá nhân hay tổ ch
ức đơn lẻ nhưng bộc lộ hạn chế
khi thông tin đó phải được chia sẻ với một bên thứ hai.

Giả sử nếu Alice chỉ gửi thông điệp đã mã hóa cho Bob mà không hề báo trước về thuật toán sử

dụng, Bob sẽ chẳng hiểu Alice muốn nói gì. Vì thế bắt buộc Alice phải thông báo cho Bob về
chìa khóa và thuật toán sử dụng tại một thời điểm nào đó trước đấy. Alice có thể làm điều này
một cách trực tiếp (mặt đối mặt) hay gián tiếp (gửi qua email, tin nhắn ). Điều này dẫn tới khả
năng bị
n
cho Bob
.

Bob và
A

Mã hóa
đ

- Block
c
thế bằng
tính bằn
g
khối thô
n
Twofish
,

- Strea
m
thuật toá
n
mã hóa
c

toán khố
i
Chamele

b.2. As
ym
với nhau
dùng để
g
thể được
công kh
a
dùng chì
a
ElGama
l

Quay lại
công kh
a
khác (th
ô
mình và
g
của mìn
h
Alice và
vậy cho
p
mật nào

c
n
gười thứ b
a
.

A
lice có cùn
g
đ
ối xứng có
c
iphers: thu

một khối d

g
đơn vị bit.
n
g dụng là:
D
,
GOST
m
ciphers: t
h
n

d
òng có t


c
hưa được b
i
i
với kích t
h
on
m
metric cr
y
về mặt toá
n
g
iải
m
ã (pri
v
giải
m
ã với
a
i (không bí
m
a
khóa côn
g
l
, Diffie Hel
l

với Alice v
à
a
i của Bob.
S
ô
ng qua chứ
n
g
ửi tới Bob.
h
để giải mã
Bob trong t
r
p
hép hai ng
ư
c
ả.
a
xem trộm
c
H
ì
g
một khóa
.
thể phân th
à


t toán khối

liệu khác
c
Ví dụ thuật
D
ES, 3DES,
h
uật toán dò
n

c độ nhanh
i
ết t
r
ước, ví
d
h
ước mỗi kh

y
pto
g
raph
y
n
học, một c
h
v
ate key).

M
chìa bí mật
m
ật) nên cò
n
g
khai). Một
l
man
à
Bob, nếu
A
S
au khi kiể
m
n
g chỉ điện
t
Khi Bob n
h
nó. Nếu giả
i
r
ường hợp
n
ư
ời thực hiệ
n
c
hìa khóa và

ì
nh 2: Thuậ
t
. Kh
ó
à
nh hai nhó
m
– trong đó
t
c
ó cùng độ d
toán 3-Way
RC5, RC6,
n
g – trong đ
ó
hơn các thu

d
ụ trong kế
t

i là 1 bit.
M
y
: mã hóa b

h
ìa công kh

a
M
ột thông đi

tương ứng.
n
có tên gọi
số thuật toá
n
A
lice muốn
g
m
tra chắc ch
t
ử – digital
c
h
ận được bứ
c
i

m
ã thành
c
n
ày có thể là
n
được giao
có thể giải

m

t
toán
m
ã hó
a
ó
a này được
m
phụ:
t
ừng khối d

ài. Độ dài
m
có kích thư

3-Way, C
A
ó

d
ữ liệu đầ
u

t toán khối
,
t
nối không

d
M
ột số thuật
t

t đối xứn
g
,
a
i dùng để
m

p sau khi đ
ư
Do các thu

khác là
p
ub
n
bất đối xứ
n
g
ửi một thô
n
ắn chìa khó
a
c
ertificate),
A

c
thông điệ
p
c
ông thì bức
hai người c
h
dịch trong
k
m
ã được th
ô
a
đối xứng
xây dựng s
a

liệu trong
v
m
ỗi khối gọi

c khối bằn
g
A
ST, Cameli
a
u
vào được
m

,
được dùng
d
ây. Có thể
c
t
oán
d
òng t
h
,
sử dụng m

m
ã hoá (publ
i
ư
ợc mã hóa
b

t toán loại
n
lic-key cryp
t
n
g thông dụ
n
n
g điệp bí m


a
đó chính l
à
A
lice dùng
n
p
đã mã hóa
a
thông điệp
đ
h
ưa từng qu
e
k
hi không c
h
ô
ng điệp Ali
c
a
o cho
v
ăn bản ban
là block siz
e
g
96 bit. M

a

, Blowfish,
m
ã hóa từn
g
khi khối lư

c
oi thuật to
á
h
ông
d
ụng:
R

t cặp chìa
k
i
c key) và
m
b
ởi chìa cô
n
n
ày sử dụng
m
t
ography (t
h
n

g là : RSA
,

t tới Bob,
c
à
của Bob c
h
n
ó để mã hó
a
a
nh ta sẽ dù
n
đ
ó đúng là
d
e
n biết. Một
h
ia sẻ t
r
ước
m
c
e
m
ã hóa g



đầu được t
h
e
, thường đ
ư

t số thuật to
MARS, Se
r
g
bit một. Cá

ng dữ liệu
c
á
n dòng là t
h
R
C4, A5/1,
A
k
hóa có liên
m
ột chìa bí
m
n
g khai sẽ c
h
m
ột chìa kh

ó
h
uật toán m
ã
,
Elliptic Cu
r
c
ô ta sẽ tìm
c
h
ứ không củ
a
a
thông điệp
n
g chìa bí
m
d
ành cho Bo
b
hệ thống n
h
m
ột thông ti
n

i
h
ay

ư
ợc
án
r
pent,
c
c
ần
h
uật
A
5/2,
quan
m
ật
h
ỉ có
ó
a
ã
hóa
r
ve,
c
hìa
a
ai
của
m
ật

b
.
h
ư
n


Trong ví
public

Một tro
n
thực tế n
g
toán đối
x
bất đối x

khóa bí
m

5. Một
s

a. One-t
i

OTP xu

là cái ch

é
thuyết là
brute-fo
r
thỏa mã
n

- Độ dài

- Chìa k
h

- Chìa k
h

Mới ngh
e
được. Gi
độ dài 1
0
(TRNG
-
như sự p
h
chìa khó
a

d
ụ trên ta t
h

người ta
k
n
g những hạ
n
g
ười ta thư

x
ứng, chỉ c
ó

ng. Hay n
ó
m
ật rồi sau
đ
s
ố thuật t
o
i
me Pad (O

t hiện từ đầ
u
é
n thánh củ
a
không thể
p

r
ce). Để có t
h
n
:
của chìa kh
ó
h
óa chỉ đượ
c
h
óa phải là
m
e
qua có vẻ
đ
ả sử Alice
m
0
MB. Để tạ
o
-
True Rand
o
h
ân
r
ã hạt n
h
a

như vậy c
ũ
Hìn
h
h
ấy khóa pu
b
k
hông thể tì
m
n
chế của cá
c

ng sử dụng
ó
chìa dùng
đ
ó
i một cách
k
đ
ó
d
ùng thu

o
án nổi tiế
n
TP):

u
thế kỉ 20
v
a
ngành mã
h
p
há được ng
a
h
ể đạt được
ó
a phải đún
g
c

d
ùng một l

m
ột số ngẫu
n
đ
ơn giản nh
ư
m
uốn
m
ã hó
a

o
ra một số
n
o
m Number
h
ân hay bức
ũ
ng hết sức
k
h
3: Thuật t
o
b
lic và khóa
m
ra được k
h
c
thuật toán
một hệ thố
n
đ
ể thực hiện
k
hác là ngư


t toán đối x


n
g

v
à còn có tê
n
h
óa
d
ữ liệu.
a
y cả với tài
mức độ bảo
g
bằng độ
d
à

n.
n
hiên thực.
ư
ng trong t
h
a
chỉ 10MB
d
n
gẫu nhiên l


Generator).
xạ nền vũ t
r
k
hó khăn.

o
án
m
ã hóa
b
private phả
i
h
óa private.
m
ã hóa bất
đ
n
g lai tạp tro
n
việc
m
ã hó
a

i ta
d
ùng th
u


ng với chì
a
n
gọi khác là
OTP là thu

nguyên vô
t
mật của O
T
à
i văn bản c

h
ực tế nhữn
g
d
ữ liệu bằn
g

n như vậy
A
Các thiết b

r
ụ. Hơn nữa
b
ất đối xứn
g

i
đáp ứng

đ
ối xứng là
t
n
g đó dữ liệ
u
a
này
m
ới đ
ư
u
ật toán bất
a
khóa bí
m

Vernam Ci
p

t toán duy
n
t
ận (tức là c
ó
T
P, tất cả nh



n mã hóa.
g
điều kiện n
g
OTP, cô ta
A
lice cần m


này sử dụn
g
việc lưu tr

g

t
ốc độ chậ
m
u
được mã
h
ư
ợc mã hóa
b
đối xứng đ


t t

r
ên để tru
y
p
her, OTP đ
n
hất chứng
m
ó
thể chống

ng điều ki

ày khó có t
h
phải cần m


t bộ tạo số
n
g
nguồn ng


, chuyển gi
a

và từ
m
, do đó tron

g
h
óa bởi một
t
b
ằng thuật t
o

chia sẻ chì
a
y
ền thông ti
n
ược mệnh d
m
inh được v

lại kiểu tấn
c

n sau phải
đ
h
ể thỏa mãn

t chìa khóa
n
gẫu nhiên
t


u nhiên vật
a
o và bảo vệ
khóa
g

t
huật
o
án
a

n
.
anh


c
ông
đ
ược

t
hực

một
Dễ dàng hơn, Alice cũng có thể dùng một bộ tạo số ngẫu nhiên ảo (PRNG - Pseudo Random
Number Generator) nhưng khi đó mức độ bảo mật giảm xuống gần bằng zero hay cùng lắm chỉ
tương đương với một thuật toán dòng như RC4 mà thôi.


Do có những khó khăn như vậy nên việc sử dụng OTP trong thực tế là không khả thi.

b. DES (Data Encryption Standard).

DES là một thuật toán khối với kích thước khối 64 bit và kích thước chìa 56 bit. Tiền thân c
ủa nó
là Lucifer, một thuật toán do IBM phát triển. Cuối năm 1976, DES được chọn làm chuẩn mã hóa
dữ liệu của nước Mỹ, sau đó được sử dụng rộng rãi trên toàn thế giới. DES cùng với mã hóa bất
đối xứng đã mở ra một thời kì mới cho ngành mã hóa thông tin. Trước DES, việc nghiên cứu và
sử dụng mã hóa dữ liệu chỉ giới hạn trong chính phủ và quân đội. Từ khi có DES, các sản phẩm
sử dụng nó tràn ngập thị trường. Đồng thời, việc nghiên cứu mã hóa thông tin cũng không còn là
bí mật nữa mà đã trở thành một ngành khoa học máy tính bình thường.

Trong khoảng 20 năm sau đó, DES đã trải qua nhiều khảo sát, phân tích kỹ lưỡng và được công
nhận là an toàn đối với các dạng tấn công (tất nhiên, ngoại trừ brute-force). Dưới đây là hình
minh họa 16 bước thực hiện mã hóa DES.

Hình 4: 16 bước trong quá trình mã hóa bằng DES

c. AES (Advance Encryption Standard)

Tháng 12 năm 1997, viện tiêu chuẩn và công nghệ Mỹ (NIST – National Institute of Standard
and Technology) kêu gọi phát triển một thuật toán mới thay thế cho 3DES (một biến thể an toàn
hơn của DES với chìa khóa dài 112 bit). Thuật toán được chọn phải là thuật toán khối có kích
thước khối là 128 bit, hỗ trợ chìa khóa có kích thước 128 bit, 192 bit và 256 bit.

15 thuật toán được gửi đến từ nhiều nơi trên thế giới, 5 thuật toán lọt vào vòng hai: Rijndael,
Twofish, Serpent, RC6 và MARS. Tháng 11 năm 2001, Rijndael đuợc chọn làm AES (một phần
nhờ có tốc độ nhanh hơn so với các đối thủ), chính thức thay thế DES trong vai trò chuẩn mã hóa
dữ liệu. AES ngay nay được sử dụng rộng rải ví dụ trong 802.11i (xem thêm thông tin ở luồng

này)

d. RSA: là một thuật toán mã hóa bất đối xứng được sử dụng rất rộng rãi trong giao dịch điện tử.
Cái tên RSA có nguồn gốc từ ba chữ cái đầu của tên ba người đồng thiết kế ra nó: Ronald Rivest,
Adi Shamir và Leonard Adleman.

6. Hàm hash

Hàm hash (hash function) là hàm một chiều mà nếu đưa một lượng dữ liệu bất kì qua hàm này sẽ
cho ra một chuỗi có độ dài cố định ở đầu ra.
Ví dụ, từ "Illuminatus" đi qua hàm SHA-1 cho kết quả
E783A3AE2ACDD7DBA5E1FA0269CBC58D. Ta chỉ cần đổi "Illuminatus" thành "Illuminati"
(chuyển "us" thành "i") kết quả sẽ trở nên hoàn toàn khác (nhưng vẫn có độ dài cố định là 160
bit) A766F44DDEA5CACC3323CE3E7D73AE82.

Hai tính chất quan trọng của hàm này là:

• Tính một chiều: không thể suy ra dữ liệu ban đầu từ kết quả, điều này tương tự như việc bạn
không thể chỉ dựa vào một dấu vân tay lạ mà suy ra ai là chủ của nó được.

• Tính duy nhất: xác suất để có một vụ va chạm (hash collision), tức là hai thông điệp khác nhau
có cùng một kết quả hash, là cực kì nhỏ.

Một số ứng dụng của hàm hash:

• Chống và phát hiện xâm nhập: chương trình chống xâm nhập so sánh giá trị hash của một file
với giá trị trước đó để kiểm tra xem file đó có bị ai đó thay đổi hay không.

• Bảo vệ tính toàn vẹn của thông điệp được gửi qua mạng bằng cách kiểm tra giá trị hash của
thông điệp trước và sau khi gửi nhằm phát hiện những thay đổi cho dù là nhỏ nhất.


• Tạo chìa khóa từ mật khẩu.

• Tạo chữ kí điện tử.

SHA-1 và MD5 là hai hàm hash thông dụng nhất và đượ
c sử dụng trong rất nhiều hệ thống bảo
mật. Vào tháng 8 năm 2004, tại hội nghị Crypto 2004, người ta đã tìm thấy va chạm đối với
MD5 và SHA-0, một phiên bản yếu hơn của hàm hash SHA-1. Không bao lâu sau đó, vào
khoảng giữa tháng 2 năm 2005, một nhóm ba nhà mật mã học người Trung Quốc đã phát hiện ra
một phương pháp có thể tìm thấy va chạm đối với SHA-1 chỉ trong vòng 269 bước tính toán (tức
là có thể nhanh hơn brute-force vài nghìn lần).

Người dùng bình thường cũng không cần phải hoảng sợ trước những phát hiện này bởi vì ít nhất
phải một vài năm nữa người ta mới có khả năng mang những kết quả đó vào trong thực tế. Tuy
vậy, các chuyên gia vẫn khuyên nên bắt đầu chuyển sang các hàm hash an toàn hơn như SHA-
256, SHA-384 hay SHA-512.

7. Cách tạo ra khóa public và private trong RSA

Phần này sẽ trình bày sơ qua nguyên lý tạo khóa công khai và bí mật trong cách mã hóa RSA
dựa trên lý thuyết các số nguyên tố.

Trước tiên xin nhắc lại các đặc tính của mã hóa công khai là (public key crypto):

- Có 2 loại khóa là khóa công khai (public) và khóa bí mật (private). Khóa công khai thì có thể
công khai cho mọi người, còn khóa bí mật thì chỉ có người tạo ra nó được biết.

- Thông tin được mã hoá bằng khóa công khai thì chỉ có thể giải mã bằng khoá bí mật.


- Thông tin được mã hóa bằng khóa bí mật thì chỉ có thể giải mã bằng khóa công khai.

Các bước tạo khóa công khai và bí mật

1. Dùng 2 số nguyên tố khác nhau (số nguyên tố lớn), ta gọi là p và q. đặt N là tích của chúng
N=p*q

2. Tìm bội số chung nhỏ nhất L của (p-1) và (q-1)

3. Tìm số nguyên dương bất kỳ e sao cho e và L là 2 số nguyên tố cùng nhau. (ước chung của e
và L = 1)

4. Tìm số nguyên dương d sao cho e*d chia cho L có số dư là 1
Tóm lại là e và L, d và L đều là nguyên tố cùng nhau.

Như vậy, ta sẽ được:
Khóa công khai: e, n
Khóa bí mật: d
Đặc điểm: từ e, n để tìm ra d thì cực kỳ khó khăn.

ta gọi
Thông tin ch
ưa mã hóa: M
Thông ti
n

Mã hóa:

Giải mã:


mod là
p
Ta có th

từ 0 -> n
-
n
đã mã hóa


p
hép chia lấ
y

mã hóa cá
c
-
1

: C
y
số
d
ư.
c
thông tin
m
m
ang mã nh



hơn n (0~
n
n
-1) vì khi c
h
h
ia cho n, sẽ nhận được
s
s

d
ư

×