You are on page 1of 44

Chương 3

Bảo mật thanh toán


điện tử và chữ ký số

1-1
Mục tiêu chương này
Hệ thống thanh toán sẽ trở nên vô ích nếu không được giao tiếp an toàn, bảo
mật và riêng tư. Một tổ chức tài chính phải đảm bảo rằng nó nhận được lệnh
chính xác, hợp pháp và từ bên có thẩm quyền.

Mục tiêu quan trọng của chương này là giải thích chính xác về các công nghệ
mật mã khoá công khai vì nó là một nền tảng công nghệ quan trọng của ngân
hàng trực tuyến và thương mại điện tử nói chung

Cryptographic methods, hàm băm (hash functions), hàm trapdoor (trapdoor


functions), Tiêu chuẩn Mã hóa Dữ liệu (Data Encryption Standard) hay DES và
Tiêu chuẩn mã hóa tiên tiến (Advanced Encryption Standard) hay AES
(Rijndael).
Phương pháp mã khóa công khai (Public-key methods):
 RSA, Diffie-Hellman key exchange, El Gamal encryption.
Chữ ký số (Digital signatures).

1-2
Sơ đồ chương

Better to reign Better to reign


Ehrer gfdg Giải mã
in hell, than Mã hóa in hell, than
fdgrtye fghfhd
serve in the Encrypt Decrypt serve in the
fg43534 4324
heaven heaven
Message Ciphertext

Đặt tính Hàm băm Hash Giải mã


Thuật ngữ Hàm trapdoor
DES
AES
RSA
Diffie-Hellman key exchange
El Gamal encryption.
Chữ ký số

1-3
Bảo mật thanh toán điện tử
 Bảo mật các tài liệu từ các bên truy cập trái phép
 Mật mã học
 Xác minh rằng thông điệp không bị thay đổi khi chuyển tiếp ( tính
toàn vẹn của dữ liệu)
 Hàm Hash
 Chứng minh rằng một bên tham gia vào một giao dịch (Chống
thoái thác)
 Chữ ký số
 Xác minh danh tính của người dùng (xác thực)
 Mật khẩu, chứng nhận số

1-4
Đặc tính bảo mật mật mã
 Tính bí mật (confidentiality): Thông tin chỉ được tiết lộ cho những ai
được phép.
 Tính toàn vẹn (integrity): Thông tin không thể bị thay đổi.
 Tính xác thực (authentication): Người gửi (hoặc người nhận) có thể
chứng minh họ được xác thực là đúng người.
 Tính không chối bỏ (non-repudiation): Người gửi hoặc nhận sau này
không thể chối bỏ việc đã gửi hoặc nhận thông tin.
Cryptography vs Steganography: Crytography là việc giấu nội dung của
thông tin và Steganography là việc giấu sự tồn tại của thông tin đó.
Ứng dụng trong thực tế như bảo vệ giao dịch tài chính (rút tiền ngân hàng,
mua bán qua mạng), bảo vệ bí mật cá nhân... Nếu kẻ tấn công đã vượt
qua tường lửa và các hệ thống bảo vệ khác thì mật mã chính là hàng
phòng thủ cuối cùng cho dữ liệu của công ty/doanh nghiệp.

1-5
Thuật ngữ thường dùng
 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... hay đơn giản là một thuật toán như DES.
 Encrypt (encipher): mã hóa – 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): giải mã – 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.
 Plaintext (cleartext): dữ liệu gốc (chưa được mã hóa).
 Ciphertext: dữ liệu đã được mã hóa.
 Cipher (hay cypher): 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.

1-6
Thuật ngữ thường dùng
 Message: Được hiểu là tất cả những dữ liệu được mã hóa (hay
giải mã) chứ không chỉ là văn bản chữ như nghĩa thông thường.
Khi dịch ra tiếng Việt, từ "văn bản" và từ "thông điệp" cũng tuân
theo quy ước tương tự.
 Key: Chìa khóa – thông tin dùng cho qui trình mã hóa và giải mã.
 Code (mã) có ý nghĩa gần như là cipher (thuật toán). Code biến
đổi thông tin ở tầng nghĩa (từ, cụm từ) còn cipher biến đổi thông
tin ở tầng thấp hơn, ví dụ chữ cái (hoặc cụm chữ cái) đối với các
thuật toán cổ điển hay từng bit (hoặc nhóm bit) đối với các thuật
toán hiện đại.
 Cryptanalysis: Nếu coi mật mã học là việc cất dữ liệu của mìnhvào
một cái hộp sau đó dùng chìa khóa khóa lại, thì cryptanalysis là
ngành nghiên cứu những phương pháp mở hộp để xem dữ liệu khi
không có chìa khóa.

1-7
Khái niệm về chìa khóa
Password: mật khẩu, là một hay nhiều từ mà người dùng phải biết để được cấp quyền truy cập.
Key Derivation Function: là một hàm hash đượ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.

1-8
Thuật toán mã hóa tổng quan
 Phương pháp cổ điển
 Thay thế (Substitution): 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.
(Battar to raign in hall, than sarva in the haavan)
 Hoán vị (Transposition): 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.
Nevaeh ni evres naht ,lleh ni ngier ot retteB)

1-9
Thuật toán mã hóa tổng quan
 Phương pháp hiện đại
 Mã hóa đối xứng: 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.
Battar to raign in hall, than sarva in the haavan
Bị xem
Keyword: Thay A bằng E và chuyển thông điệp trộm để
giải

1-10
Thuật toán mã hóa tổng quan
 Mã hóa đối xứng có thể phân thành hai nhóm phụ:

- Block ciphers: thuật toán khối – trong đó từng khối dữ liệu trong
văn bản ban đầu được thay thế bằng một khối dữ liệu khác có
cùng độ dài. Độ dài mỗi khối gọi là block size, thường được tính
bằng đơn vị bit. Ví dụ thuật toán 3-Way có kích thước khối bằng
96 bit.

- Stream ciphers: thuật toán dòng – trong đó dữ liệu đầu vào


được mã hóa từng bit một. Các thuật toán dòng có tốc độ nhanh
hơn các thuật toán khối, được dùng khi khối lượng dữ liệu cần mã
hóa chưa được biết trước, ví dụ trong kết nối không dây. Có thể
coi thuật toán dòng là thuật toán khối với kích thước mỗi khối là 1
bit.

1-11
Thuật toán mã hóa tổng quan
 Phương pháp hiện đại
 Mã hóa bất đối xứng (Asymmetric cryptography), sử dụng
một cặp chìa khóa có liên quan với nhau về mặt toán học, một
chìa công khai dùng để mã hoá (public key) và một chìa bí mật
dùng để giải mã (private key). Một thông điệp sau khi được mã
hóa bởi chìa công khai sẽ chỉ có thể được giải mã với chìa bí
mật tương ứng. Do các thuật toán loại này sử dụng một chìa
khóa công khai (không bí mật) nên còn có tên gọi khác là
public-key cryptography (thuật toán mã hóa dùng chìa khóa
công khai).
 A và B muốn thực hiện giao dịch, A kiếm Public key của B
(chứng chỉ số). A dùng Public key này gửi thông điệp B. Chỉ có
B mới dùng chìa khóa của mình đọc thông điệp của A
 Hạn chế: Tốc độ chậm, Hướng giải quyết: Lai tạo nhiều
phương pháp

1-12
Thông tin thêm: Vậy giải mã ra sao?

 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 hàng triệu, thậm chí hàng tỉ năm. 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.
 Ví dụ: Thuật toán DES có độ dài chìa khóa là 56 bit tức là có
tổng cộng tất cả 256 chìa để dùng. Nếu ai đó muốn "bẻ khoá”
DES bằng cách thử hàng loạt chìa (brute-force attack) thì sẽ
phải thử đến 256 lần (khoảng hơn 70 triệu tỉ lần).

1-13
Thông tin thêm: Vậy giải mã ra sao?

 Frequency analysis: Thống kê tần suất, chỉ có thể áp dụng


được đối với các thuật toán cổ điển dùng phương pháp thay thế,
 Ví dụ phương pháp Caesar. Để thực hiện phương pháp này ta cần
một lượng văn bản đã mã hóa đủ lớn để phép thống kê được
chính xác. Ngoài ra còn phải biết ngôn ngữ sử dụng trong văn bản
ban đầu, nếu văn bản ban đầu là tiếng Anh thì nhiều khả năng kí
tự xuất hiện nhiều nhất trong văn bản đã mã hóa là do chữ e mã
hóa thành, kí tự nhiều thứ nhì bắt nguồn từ chữ a...
 Sau khi thống kê tần suất thì dùng phép thử để đoán thông điệp
 Trong tiếng việt ký tự nào xuất hiện nhiều nhất?

1-14
Thông tin thêm: Vậy giải mã ra sao?

 Differential cryptanalysis: Eli Biham và Adi Shamir tìm ra


phương pháp này vào khoảng cuối những năm 1980; nó thường
được sử dụng để tấn công các thuật toán khối (block cipher).
Phương pháp này dựa trên việc phân tích những biến đổi của hai
văn bản gốc có liên quan khi được mã hóa bởi cùng một chìa.
 Còn rất nhiều phương pháp khác như Mod-n cryptanalysis, Linear
cryptanalysis, Birthday attack, Algebraic attack... mà bất cứ ai
thiết kế hệ thống mã hóa cũng phải chú ý tới.

1-15
Thuật toán: OTP
 One-time Pad (OTP): Xuất hiện từ đầu thế kỉ 20 và còn có tên gọi
khác là Vernam Cipher. OTP là thuật toán duy nhất chứng minh
được về lý thuyết là không thể phá được ngay cả với tài nguyên
vô tận (tức là có thể chống lại kiểu tấn công brute-force). Để có
thể đạt được mức độ bảo mật của OTP, tất cả những điều kiện
sau phải được thỏa mãn:
 Độ dài của chìa khóa phải đúng bằng độ dài văn bản cần mã
hóa.
 Chìa khóa chỉ được dùng một lần.
 Chìa khóa phải là một số ngẫu nhiên thực.

1-16
Thuật toán Des –
Data Encryption Standard
 Data Encryption Standard (DES) à 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).

1-17
Thuật toán Data Encryption Standard
 Tới tháng 7 năm 1998, EFF (Electronic Frontier Foundation) đã "brute-
force" thành công DES trong 56 giờ. Ít lâu sau đó cùng với mạng tính
toán ngang hàng Distribute.net, tổ chức này đã lập nên kỉ lục mới là 22
giờ 15 phút. Sự kiện này chứng tỏ cỡ chìa 56 bit của DES đã lỗi thời và
cần được thay thế.
 AES: viết tắt của 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.

1-18
Thuật toán Data Encryption Standard
 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.

Ngoài ra còn nhiều thuật toán khác nhưng do khuôn khổ bài viết có hạn
nên không thể đi sâu, mà chỉ liệt kê một số thuật toán thông dụng:

Các thuật toán đối xứng:

• Thuật toán dòng: RC4, A5/1, A5/2, Chameleon...

• Thuật toán khối: 3DES, RC5, RC6, 3-Way, CAST, Camelia, Blowfish,
MARS, Serpent, Twofish, GOST...

Các thuật toán bất đối xứng: Elliptic Curve, ElGamal, Diffie Hellman...

1-19
Hàm bă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ỏ.

1-20
Hàm bă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. Và 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). Do đó, 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.

1-21
Điều kiện hàm hash
 Đối số của hàm hash là bản tin có chiều dài bất kỳ;
 Giá trị của hàm hash có chiều dài không đổi;
 Hàm H(x) cần phải có tính toán hiệu quả, tức là thuật toán Hash khi thực hiện
trên phần cứng và phần mềm cần phải có công suất lớn. Phải đảm bảo được
rằng quá trình ký và kiểm tra lên giá trị của hàm hash nhanh hơn so với quá
trình ký và kiểm tra trên bản thân bản tin;
 Cho y là giá trị của hàm hash, thì khó về mặt tính toán để tìm được x thỏa
h(x)=y, tức là hàm hash phải là hàm một chiều;
 Hàm hash là hàm không va chạm, tức là khi cho trước bản tin x, không thể
thực hiện được về mặt tính toán để tìm được bản x’ x sao cho h(x)=h(x’).
 Hàm hash là hàm không va chạm mạnh, khi không thể thực hiện được về mặt
tính toán để tìm được hai bản tin x và x’, với x’ x mà h(x)=h(x’).

1-22
Cấu trúc chung của hàm băm Hash
1. Cho trước một thông điệp M có độ dài bất kỳ. Tùy theo thuật toán được sử
dụng, chúng ta có thể cần thêm thông điệp các bit để nhận được thông điệp
có độ dài là bội số của chiều dài cố định cho trước để phục vụ cho việc tính
toán. Chia thông điệp thành từng khối có kích thước bằng nhau tức là M=(M1,
M2, …Ms).
2. Gọi Hi là trạng thái có kích thước n bit, n là chiều dài của giá trị hàm băm, F
là hàm nén thực hiện thao tác trộn khối dữ liệu với trạng thái hiện hành:
Khởi tạo H0, bằng véc tơ khởi tạo nào đó.
Thực hiện trộn: Hi=F(Hi-1,Mi), i [1,s].
3. Giá trị của Hs là giá trị của hàm băm.
Nếu hàm hash được cho là bền vững, khi có một sự thay đổi bất kỳ đối số của
nó ( tức là bản tin đầu vào) thì giá trị của nó cũng thay đổi ngẫu nhiên, tức là
mỗi bít trong n bít có xác suất bị thay đổi là ½.

1-23
Cấu trúc chung của hàm băm Hash
Một phương pháp tấn công đơn giản trên hàm một chiều hash là lựa chọn bản
tin sao cho giá trị hàm hash của nó bằng với giá trị hàm hash đã cho hay nói
cách khác đây là phương pháp véc cạn, chúng ta gọi số lượng bản tin cần
chọn là N mà thỏa mãn được điều trên. Chúng ta thấy xác suất để giá trị hàm
hash của một bản tin bất kỳ không trùng với giá trị H đã cho bằng , n là chiều
dài của giá trị hàm hash. Như thế xác suất để không một bản tin nào từ N bản
tin khác nhau mà giá trị của bản tin đó không trùng với H bằng . Xác suất để
tồn tại một bản tin mà giá trị hàm hash của nó bằng H cho trước là:

Sử dụng công thức Niutơn, chúng ta nhận được giá trị gần đúng sau:

1-24
Cấu trúc chung của hàm băm Hash
Khi p=1/2, chúng ta có N  2n 1
Với kỹ thuật tính toán hiện nay thì n=64 thì tấn công có thể thực hiện
được nếu có tài nguyên đủ lớn cho tính toán. Nếu như n > 96 thi được
xem là an toàn đối với cách tấn công này, thế nhưng còn nhiều cách
tân công khác, nên khuyến cáo chọn giá trị n > 128.

1-25
Hàm băm 1 chiều
 Đối với bất kỳ chuỗi s, H (s) - hàm băm của s, có độ dài cố định
(ngắn hơn s), đôi khi được gọi là giá trị băm (message digest)
 Dễ tính toán
 "Một chiều": tính toán đảo ngược tìm giá trị ban đầu khó: không
thể tìm thấy bất kỳ thông điệp tương ứng với một hash nhất định
 Tính chất khuếch tán: Thay đổi bất kỳ giá trị bit nào của thông
báo sẽ thay đổi nhiều bit trong hàm hash
 Điều này ngăn cản việc thử các thông điệp tương tự để xem
nếu chúng băm cùng một điều
 Các hàm băm là một chiều và không thể đảo ngược
 Ứng dụng: Xác minh mật khẩu; Xác thực; Phòng chống tấn công
lặp lại liên tục và Chữ ký số

1-26
Hàm băm
Hàm băm MD4 và MD5
Hàm hash MD4 được Rivest đề xuất năm 1990. Thuật toán MD5 ra đời
năm 1992. Nó có cấu trúc thuật toán giống với MD4. Chỉ có khác là MD5
sử dụng 4 vòng, trong khi MD4 sử dụng 3 vòng, và có một số thay đổi
nữa
Hàm băm SHS
Thuật toán SHS (Secure Hash Standard) do NIST và NSA xây dựng và
công bố trên Federal Register ngày 31/01/1992 và trở thành chuẩn từ
ngày 13/05/1993.
Hàm băm SHA
Thuật toán hàm băm an toàn SHA (Secure Hash Algorithm) được chấm
nhận trong số các chuẩn của Mỹ năm 1992 và nó được ứng dụng cùng
với thuật toán chuẩn chữ ký số DSS. Khi đầu vào là một bản tin M có
chiều dài bất kỳ, đầu ra là là 160 bít rút gọn.
1-27
Luồng thuật toán của hàm băm

Đoạn thông điệp cần băm

16 từ trong thông điệp (512 BITS) Lập lại liên tục cho
Khối 512-BIT

Bắt đầu băm


Mở rộng ra 80 từ
Cho mỗi 32 bit từ (2560 BITS)
(160 BITS) FINAL
Lặp lại thêm 79 lần nữa …
HASH
(160 BITS)
011001 111011
100101 010111
110010 100010
111011 000110
010111 110110
011110
100010
011101 111011
110101 010111
101011 100010
001111 001111
101100 101100
100011 100011
000110 011101
110110
011110
1-28
110101
101011
SHA
 SHA (Secure Hash Algorithm hay thuật giải băm an toàn) là
năm thuật giải được chấp nhận bởi FIPS dùng để chuyển một
đoạn dữ liệu nhất định thành một đoạn dữ liệu có chiều dài không
đổi với xác suất khác biệt cao. Những thuật giải này được gọi là
"an toàn" bởi vì, theo nguyên văn của chuẩn FIPS 180-2 phát
hành ngày 1 tháng 8 năm 2002:
 Năm thuật giải SHA là SHA-1 (trả lại kết quả dài 160 bit), SHA-224
(trả lại kết quả dài 224 bit), SHA-256 (trả lại kết quả dài 256 bit),
SHA-384 (trả lại kết quả dài 384 bit), và SHA-512 (trả lại kết quả
dài 512 bit). Thuật giải SHA là thuật giải băm mật được phát triển
bởi cục an ninh quốc gia Mĩ (National Security Agency hay NSA) và
được xuất bản thành chuẩn của chính phủ Mĩ bởi viện công nghệ
và chuẩn quốc gia Mĩ (National Institute of Standards and
Technology hay NIST). Bốn thuật giải sau thường được gọi chung
là SHA-2.

1-29
Các bước của SHA-1
80 từ đặt ở đây, cho mỗi bước
Hằng số
Hoạt động trong khối gồm 16 từ (512 bits)
Mở rộng 16 từ thành 80 từ Wt + + + +

Thực hiện tầm 80 lần với t tăng từ 0..79


a, b, c, d, e là những hằng số đặc biệt
Kt là tập hợp hằng số đặc biệt
SỬA LẠI
HẰNG SỐ
CHO CÁC
BƯỚC TIẾP
THEO
INITIALLY CONSTANTS

“<<< 5” means
“dùng 5 bits bên trái”

SOURCE: SCHNEIER, APPLIED CRYPTOGRAPHY


1-30
Thuật toán giải hàm băm an toàn SHA-1
Secure Hash Algorithm SHA-1
 x  y = 1 thì x hoặc y có giá trị là 1; không phải cả x và y đồng giá trị
1  If x  y = 1 ta không bít x là 1 hay y là 1
y

xy 0 1
0 0 1
x
1 1 0

 Không thể dò tìm ngược lại để xác định các giá trị
 If x  y = 1 then BOTH x and y are 1
1-31
Thuật toán giải hàm băm an toàn SHA-1
Secure Hash Algorithm SHA-1
 Chuẩn: Federal Information Processing Standard 180-1 (NIST)
 Đối với bất kỳ dữ liệu nào ngắn hơn 264 ~ 1019 bit, tạo ra một giá
trị băm (message digest) dài 160-bit
 Sử dụng exclusive-OR; ký hiệu 
 A =0011011110001
 B =1101001101011
 AB =1110010011010
 Exclusive-OR: biết giá trị A  B không tiết lộ cả một chút A hoặc B
 Regular-OR: Nếu một bit A  B bằng 0, thì cả hai bit tương ứng
của cả A và B đều bằng 0

1-32
SHA-1
 SHA-1 được sử dụng rộng rãi trong nhiều ứng dụng và giao thức
an ninh khác nhau, bao gồm TLS và SSL, PGP, SSH, S/MIME, và
IPSec. SHA-1 được coi là thuật giải thay thế MD5, một thuật giải
băm 128 bit phổ biến khác.
 Hiện nay, SHA-1 không còn được coi là an toàn bởi đầu năm 2005,
ba nhà mật mã học người Trung Quốc đã phát triển thành công
một thuật giải dùng để tìm được hai đoạn dữ liệu nhất định có
cùng kết quả băm tạo ra bởi SHA-1 [1]. Mặc dù chưa có ai làm
được điều tương tự với SHA-2, nhưng vì về thuật giải, SHA-2
không khác biệt mấy so với SHA-1 nên nhiều nhà khoa học đã bắt
đầu phát triển một thuật giải khác tốt hơn SHA [2][3]. NIST cũng
đã khởi đầu một cuộc thi phát triển thuật giải băm mới an toàn
hơn SHA, giống như quy trình phát triển chuẩn mã hóa tiên tiến
(Advanced Encryption Standard hay AES)[4].

1-33
SHA-2
 SHA-2 bao gồm bốn giải thuật SHA-224, SHA-256, SHA-384 và
SHA-512. Ba thuật giải SHA-256, SHA-384 và SHA-512 được xuất
bản lần đầu năm 2001 trong bản phác thảo FIPS PUB 180-2. Năm
2002, FIPS PUB 180-2, bao gồm cả SHA-1 được chấp nhận thành
chuẩn chính thức. Năm 2004, FIPS PUB 180-2 được bổ sung thêm
một biến thể - SHA-224, với mục đích tạo ra một biến thể SHA-2
có độ dài khóa trùng với DES ba lần với 2 khóa (2TDES) - 112 bit.
 Về giải thuật, các biến thể của SHA-2 không khác nhau. Mặc dù
chúng sử dụng giá trị biến và hằng số cũng như độ dài từ, v.v.
khác nhau.
 Mặc dù Gilbert và Handschuh (2003) đã nghiên cứu và không tìm
ra điểm yếu của những biến thể này, chúng vẫn chưa được kiểm
chứng kĩ như SHA-1.
 Mã giả của thuật giải SHA-256:

1-34
Thuật toán SHA-1
Thuật toán Hash SHA-1 được miêu tả bởi các bước sau:
Đầu vào: bản tin có chiều dài <264 bít.
Đầu ra: bản băm rút gọn có chiều dài 160 bít là liên kết của các từ
32 bít H0 | H1 | H2 | H3 | H4.

1-35
Thuật toán SHA-1

Internal Block Max Word


Output
Algorithm state size size message size Rounds Operations Collision
size (bits)
(bits) (bits) size (bits) (bits)

SHA-0 160 160 512 264 − 1 32 80 +,and,or,xor,rotfl Yes

263
SHA-1 160 160 512 264 − 1 32 80 +,and,or,xor,rotfl
attack

SHA-
256/224 256 512 264 − 1 32 64 +,and,or,xor,shr,rotfr None
256/224

SHA-
512/384 512 1024 2128 − 1 64 80 +,and,or,xor,shr,rotfr None
512/384

1-36
Nghịch lý ngày sinh
Trong lớp có ít nhất bao nhiêu sinh viên, để xác suất có ít nhất 2 sinh viên
trùng ngày sinh nhật là lớn hớn 0.5?
Theo lý thuyết xác suất thống kê gọi số sinh viên ít nhất trong lớp là k, khi đó
xác suất q để không có 2 người nào trùng ngày sinh là tỷ số giữa cách chọn k
ngày khác nhau trong 365 ngày trên số cách chọn k ngày bất kỳ trong 365
ngày. Vậy: q = Ck365/ 365k
Do đó, xác suất p để có ít nhất 2 người trùng ngày sinh là:
p = 1 – q = 1 – Ck365/ 365k
 Để p > 0.5 thì k > 22 hay k =23, cụ thể khi đó p = 0.5073
 Khi chưa tính toán chi tiết chúng ta nghĩ là trong lớp phải có ít nhất
khoảng 365/2 tức là 184 sinh viên. Nhưng trên thực tế con số đó ít hơn
rất nhiều chỉ cần 23 sinh viên, chính vì vậy ta gọi đây là nghịch lý ngày
sinh nhật.
 Điều đó muốn nói lên rằng, trong nhiều trường hợp xác suất để hai mẩu
tin có cùng bản Hash là không nhỏ như chúng ta nghĩ.
1-37
Hàm băm mật mã đối xứng
Giả sử E là hàm mã khối an toàn (có thể sử dụng hàm mật mã là hàm
biến đổi một chiều) với kích thước khối là m bít, cho bản tin đầu vào
được chia ra n khối m bít: . Hàm tính giá trị băm có thể viết dưới
dạng sau: ,i=1,2,…,n.
ở đây H0 là giá trị ban đầu đặc biệt. Giá trị băm của hàm H=Hn.
M1 M2 Mi Mn

H0 H1 H2 H i-1 Hi H n-1 Hn
E E E E

Sơ đồ hàm Hash Rabin có thể viết dưới dạng công thức:

H i  EM i ( H, i 1 ), i  1,2..., n

1-38
Hàm băm mật mã đối xứng
Giả sử E là hàm mã khối an toàn (có thể sử dụng hàm mật mã là hàm
biến đổi một chiều) với kích thước khối là m bít, cho bản tin đầu vào
được chia ra n khối m bít: . Hàm tính giá trị băm có thể viết dưới
dạng sau: ,i=1,2,…,n.
ở đây H0 là giá trị ban đầu đặc biệt. Giá trị băm của hàm H=Hn.
M1 M2 Mi Mn

H0 H1 H2 H i-1 Hi H n-1 Hn
E E E E

Sơ đồ hàm Hash Rabin có thể viết dưới dạng công thức:

H i  EM i ( H, i 1 ), i  1,2..., n

1-39
Hoạt động tấn công ngày sinh nhật
 Nếu kích thước của hàm Hash nhỏ, thì có thể tìm được 2 văn bản
có cùng giá trị hàm băm, tức là có va chạm mà không phụ thuộc
vào số lượng biến đổi của hàm, cách tấn công này có tên ngày
sinh nhật. Ý tưởng của phương pháp tấn dựa trên bài toán ngày
sinh nhật sau.
 Cần phải chọn một nhóm bao nhiêu người để xác suất hai người
có cùng ngày sinh nhật là 0.5? Vấn đề ở chổ là xác suất trùng
ngày sinh nhật đối với một cặp ngẫu nhiên là p’=1/365, còn trong
nhóm gồm n người có n(n  1) / 2  n cặp khác nhau.
2

 Từ đây dể dàng nhận được đánh giá gần đúng. Xác suất để tồn
tại ít nhất một cặp có cùng ngày sinh là , từ đây p=1/2 thì chúng
ta thu được n . 1 / p'

1-40
Trao đổi và thoả thuận khoá Diffie -Hellman
 Giả sử A và B muốn liên lạc sử dụng hệ mật khoá bí mật. Để thoả
thuận mật khoá K chung cho cả hai bên qua một kênh không an
toàn mà không ai khác có thể biết được, A và B có thể dùng thủ
tục thoả thuận khoá Diffie -Hellman sau:
 (1) Chọn trước một số nguyên tố p thích hợp và một phần tử sinh
 của Zp* (2   p – 2) . Các giá trị p và  được công khai.
 (2) Thực hiện các bước sau mỗi khi cần có khóa chung:
 (a) A chọn một số nguyên bí mật x: 1  x  p – 2 và gửi cho B
thông báo x mod p
 (b) B chọn một số nguyên bí mật y: 1  y  p – 2 và gửi cho A
thông báo y mod p
 (c) B thu được x và tính khoá chung k: k = (x)y mod p
 (d) A thu được y và tính khoá chung k: k = (y)x mod p

1-41
Tầm quan trọng mã hóa dữ liệu
 Thuật toán Cryptography đề cập tới nghành khoa học nghiên cứu
về mã hoá và giải mã thông tin.
 Cụ thể hơn là nghiên cứu các cách thức chuyển đổi thông tin từ
dạng rõ (clear text) sang dạng mờ (cipher text) và ngược lại.
 Đây là một phương pháp hỗ trợ rất tốt cho trong việc chống lại
những truy cập bất hợp pháp tới dữ liệu được truyền đi trên
mạng, áp dụng mã hoá sẽ khiến cho nội dung thông tin được
truyền đi dưới dạng mờ và không thể đọc được đối với bất kỳ ai
cố tình muốn lấy thông tin đó.
 Mã hoá được áp dụng như một biện pháp nhằm giúp chúng ta tự
bảo vệ chính mình cũng như những thông tin mà chúng ta gửi đi.
 Bên cạnh đó, mã hoá còn có những ứng dụng khác như là bảo
đảm tính toàn vẹn của dữ liệu, tính bí mật, tính xác thực và tính
không thể chối bỏ.

1-42
Các ứng dụng của mã hóa dữ liệu
 Securing Email (bảo mật email)
 Authentication System (việc xác thực hệ thống)
 Secure E-commerce (an toàn trong thương mại điện tử)
 Virtual Private Network (bảo mật mạng riêng ảo)
 Wireless Encryption (mã hóa mạng không dây)
 Là nền tảng của lã thuật chữ kí điện tử, hệ thống PKI (hạ tầng
khóa công khai)...
 Tạo chìa khóa từ mật khẩu

1-43
Chương 3
Bảo mật thanh toán
điện tử và chữ ký số

1-44

You might also like