SlideShare a Scribd company logo
1 of 10
Tổng hợp các tài liệu Cryptography – thuật toán mã hóa
Cryptography (hay crypto) – mật mã học – ngành khoa học nghiên cứu về việc
giấu thông tin. Cụ thể hơn, mật mã học là ngành học nghiên cứu về những cách
chuyển đổi thông tin từ dạng “có thể hiểu được” thành dạng “không thể hiểu
được” và ngược lại. Cryptography giúp đảm bảo những tính chất sau cho thông
tin:
• 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 mà không bị phát hiện.
• Tính xác thực (authentication): người gửi (hoặc người nhận) có thể chứng minh
đúng họ.
• 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.
Mật mã có rất nhiều ứ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 bạn.
Cần phân biệt khái niệm cryptography với khái niệm steganography (tạm dịch là
giấu thông tin). Điểm khác nhau căn bản nhất giữa hai khái niệm này là:
cryptography là việc giấu nội dung của thông tin, trong khi steganography là việc
giấu sự tồn tại của thông tin đó.
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.
Lưu ý: từ text (hay message) ở đây được dùng theo quy ước, đượ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ự.
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.
Key: chìa khóa – thông tin dùng cho qui trình mã hóa và giải mã.
Code: cần phân biệt code trong mật mã học với code trong lập trình hay code
trong Zip code… Trong cryptography, code (mã) có ý nghĩa gần như là cipher
(thuật toán). Chúng chỉ khác nhau ở chỗ: 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 bạn và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.
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.
Trong thực tế, mật khẩu do người dùng tạo ra thường không đủ độ an toàn để
được dùng trực tiếp trong thuật toán. Vì vậy, trong bất cứ hệ thống mã hóa dữ
liệu nghiêm túc nào cũng phải có bước chuyển đổi mật khẩu ban đầu thành chìa
khóa có độ an toàn thích hợp. Bước tạo chìa khóa này thường được gọi là key
derivation, key stretching hay key initialization.
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.
THUẬT TOÁN MÃ HÓA
Cổ điển
• 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.
Hiện đại
• 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ị người thứ ba xem
trộm chìa khóa và có thể giải mã được thông điệp Alice mã hóa gửi cho Bob.
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.
• Asymmetric cryptography: mã hóa bất đối xứng, 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).
Quay lại với Alice và Bob, nếu Alice muốn gửi một thông điệp bí mật tới Bob,
cô ta sẽ tìm chìa công khai của Bob. Sau khi kiểm tra chắc chắn chìa khóa đó
chính là của Bob chứ không của ai khác (thông qua chứng chỉ điện tử – digital
certificate), Alice dùng nó để mã hóa thông điệp của mình và gửi tới Bob. Khi
Bob nhận được bức thông điệp đã mã hóa anh ta sẽ dùng chìa bí mật của mình để
giải mã nó. Nếu giải mã thành công thì bức thông điệp đó đúng là dành cho Bob.
Alice và Bob trong trường hợp này có thể là hai người chưa từng quen biết. Một
hệ thống như vậy cho phép hai người thực hiện được giao dịch trong khi không
chia sẻ trước một thông tin bí mật nào cả.
Một trong những hạn chế của các thuật toán mã hóa bất đối xứng là tốc độ chậm,
do đó trong thực tế người ta thường sử dụng một hệ thống lai tạp trong đó dữ liệu
được mã hóa bởi một thuật toán đối xứng, chỉ có chìa dùng để thực hiện việc mã
hóa này mới được mã hóa bằng thuật toán bất đối xứng.
MỘT SỐ PHƯƠNG PHÁP TẤN CÔNG HỆ THỐNG THÔNG TIN MÃ HÓA
Bất cứ ai cũng có thể tạo ra một hệ thống thông tin mã hóa cho riêng mình. Nhưng
để có một hệ thống an toàn và hiệu quả đòi hỏi người thiết kế phải có kiến thức
toán học sâu sắc, có kinh nghiệm về bảo mật và am hiểu các phương pháp tấn
công. • 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).
• 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…
• 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 – sẽ nói rõ hơn ở phần sau). 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.
Một số thuật toán nổi tiếng
• 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 được mệnh danh là cái chén thánh của ngành mã hóa dữ liệu. 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.
Mới nghe qua có vẻ đơn giản nhưng trong thực tế những điều kiện này khó có thể
thỏa mãn được. Giả sử Alice muốn mã hóa chỉ 10MB dữ liệu bằng OTP, cô ta
phải cần một chìa khóa có độ dài 10MB. Để tạo ra một số ngẫu nhiên lớn như vậy
Alice cần một bộ tạo số ngẫu nhiên thực (TRNG – True Random Number
Generator). Các thiết bị này sử dụng nguồn ngẫu nhiên vật lý như sự phân rã hạt
nhân hay bức xạ nền vũ trụ. Hơn nữa việc lưu trữ, chuyển giao và bảo vệ một
chìa khóa như vậy cũng hết sức khó khăn.
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.
• DES: viết tắt của 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).
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.
• 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…
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.

More Related Content

What's hot

ppt-bao-luc-ngon-tu.pptx
ppt-bao-luc-ngon-tu.pptxppt-bao-luc-ngon-tu.pptx
ppt-bao-luc-ngon-tu.pptxLhongTrn
 
TIM HIEU SSL VA UNG DUNG TREN WEB SERVER
TIM HIEU SSL VA UNG DUNG TREN WEB SERVERTIM HIEU SSL VA UNG DUNG TREN WEB SERVER
TIM HIEU SSL VA UNG DUNG TREN WEB SERVERconglongit90
 
Giáo trình phân tích thiết kế hệ thống thông tin
Giáo trình phân tích thiết kế hệ thống thông tinGiáo trình phân tích thiết kế hệ thống thông tin
Giáo trình phân tích thiết kế hệ thống thông tinVõ Phúc
 
Lý thuyết tính toán - BKHN - 3
Lý thuyết tính toán - BKHN - 3Lý thuyết tính toán - BKHN - 3
Lý thuyết tính toán - BKHN - 3Minh Lê
 
Tổng quan về TMĐT, xây dựng website ứng dụng thương mại điện tử dogolocviet.com
Tổng quan về TMĐT, xây dựng website ứng dụng thương mại điện tử dogolocviet.comTổng quan về TMĐT, xây dựng website ứng dụng thương mại điện tử dogolocviet.com
Tổng quan về TMĐT, xây dựng website ứng dụng thương mại điện tử dogolocviet.comTú Cao
 
nghiên cứu và triển khai các dịch vụ mạng windows server 2008
nghiên cứu và triển khai các dịch vụ mạng windows server 2008nghiên cứu và triển khai các dịch vụ mạng windows server 2008
nghiên cứu và triển khai các dịch vụ mạng windows server 2008Khanh Dinh
 
IDS Snort/SnortSam
IDS Snort/SnortSamIDS Snort/SnortSam
IDS Snort/SnortSamTiki.vn
 
An toan thong tin
An toan thong tinAn toan thong tin
An toan thong tinTrung Quan
 
Báo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng Hồ
Báo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng HồBáo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng Hồ
Báo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng HồzDollz Lovez
 
An Toàn và bảo mật HTTT-Cơ bản về mã hoá (cryptography)
An Toàn và bảo mật HTTT-Cơ bản về mã hoá (cryptography)An Toàn và bảo mật HTTT-Cơ bản về mã hoá (cryptography)
An Toàn và bảo mật HTTT-Cơ bản về mã hoá (cryptography)dlmonline24h
 
Các giao thức sử dụng trong các lớp của mô hình osi
Các giao thức sử dụng trong các lớp của mô hình osiCác giao thức sử dụng trong các lớp của mô hình osi
Các giao thức sử dụng trong các lớp của mô hình osiUDCNTT
 
Hướng dẫn sử dụng phần mềm packet tracer
Hướng dẫn sử dụng phần mềm packet tracerHướng dẫn sử dụng phần mềm packet tracer
Hướng dẫn sử dụng phần mềm packet tracerBình Tân Phú
 
Giáo trình Phân tích và thiết kế giải thuật - CHAP 1
Giáo trình Phân tích và thiết kế giải thuật - CHAP 1Giáo trình Phân tích và thiết kế giải thuật - CHAP 1
Giáo trình Phân tích và thiết kế giải thuật - CHAP 1Nguyễn Công Hoàng
 
Giáo trình an toàn thông tin ths.nguyễn công nhật[bookbooming.com]
Giáo trình an toàn thông tin   ths.nguyễn công nhật[bookbooming.com]Giáo trình an toàn thông tin   ths.nguyễn công nhật[bookbooming.com]
Giáo trình an toàn thông tin ths.nguyễn công nhật[bookbooming.com]bookbooming1
 

What's hot (20)

Đề tài: Phần mềm quản lý thông tin sinh viên, HOT, 9đ
Đề tài: Phần mềm quản lý thông tin sinh viên, HOT, 9đĐề tài: Phần mềm quản lý thông tin sinh viên, HOT, 9đ
Đề tài: Phần mềm quản lý thông tin sinh viên, HOT, 9đ
 
ppt-bao-luc-ngon-tu.pptx
ppt-bao-luc-ngon-tu.pptxppt-bao-luc-ngon-tu.pptx
ppt-bao-luc-ngon-tu.pptx
 
TIM HIEU SSL VA UNG DUNG TREN WEB SERVER
TIM HIEU SSL VA UNG DUNG TREN WEB SERVERTIM HIEU SSL VA UNG DUNG TREN WEB SERVER
TIM HIEU SSL VA UNG DUNG TREN WEB SERVER
 
Giáo trình phân tích thiết kế hệ thống thông tin
Giáo trình phân tích thiết kế hệ thống thông tinGiáo trình phân tích thiết kế hệ thống thông tin
Giáo trình phân tích thiết kế hệ thống thông tin
 
Lý thuyết tính toán - BKHN - 3
Lý thuyết tính toán - BKHN - 3Lý thuyết tính toán - BKHN - 3
Lý thuyết tính toán - BKHN - 3
 
Tổng quan về TMĐT, xây dựng website ứng dụng thương mại điện tử dogolocviet.com
Tổng quan về TMĐT, xây dựng website ứng dụng thương mại điện tử dogolocviet.comTổng quan về TMĐT, xây dựng website ứng dụng thương mại điện tử dogolocviet.com
Tổng quan về TMĐT, xây dựng website ứng dụng thương mại điện tử dogolocviet.com
 
nghiên cứu và triển khai các dịch vụ mạng windows server 2008
nghiên cứu và triển khai các dịch vụ mạng windows server 2008nghiên cứu và triển khai các dịch vụ mạng windows server 2008
nghiên cứu và triển khai các dịch vụ mạng windows server 2008
 
Luận văn: Quản lý điểm sinh viên theo học chế tín chỉ, HAY
Luận văn: Quản lý điểm sinh viên theo học chế tín chỉ, HAYLuận văn: Quản lý điểm sinh viên theo học chế tín chỉ, HAY
Luận văn: Quản lý điểm sinh viên theo học chế tín chỉ, HAY
 
IDS Snort/SnortSam
IDS Snort/SnortSamIDS Snort/SnortSam
IDS Snort/SnortSam
 
Ktmt chuong 4
Ktmt chuong 4Ktmt chuong 4
Ktmt chuong 4
 
An toan thong tin
An toan thong tinAn toan thong tin
An toan thong tin
 
Báo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng Hồ
Báo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng HồBáo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng Hồ
Báo Cáo Đồ Án 2 : Thiết Kế Web Bán Đồng Hồ
 
Đề tài: Tìm hiểu hệ thống phát hiện xâm nhập IDS-SNORT, 9đ
Đề tài: Tìm hiểu hệ thống phát hiện xâm nhập IDS-SNORT, 9đĐề tài: Tìm hiểu hệ thống phát hiện xâm nhập IDS-SNORT, 9đ
Đề tài: Tìm hiểu hệ thống phát hiện xâm nhập IDS-SNORT, 9đ
 
An Toàn và bảo mật HTTT-Cơ bản về mã hoá (cryptography)
An Toàn và bảo mật HTTT-Cơ bản về mã hoá (cryptography)An Toàn và bảo mật HTTT-Cơ bản về mã hoá (cryptography)
An Toàn và bảo mật HTTT-Cơ bản về mã hoá (cryptography)
 
Các giao thức sử dụng trong các lớp của mô hình osi
Các giao thức sử dụng trong các lớp của mô hình osiCác giao thức sử dụng trong các lớp của mô hình osi
Các giao thức sử dụng trong các lớp của mô hình osi
 
Httt bai tap
Httt bai tapHttt bai tap
Httt bai tap
 
Luận văn: Hệ thống phát hiện xâm nhập mạng, HAY
Luận văn: Hệ thống phát hiện xâm nhập mạng, HAYLuận văn: Hệ thống phát hiện xâm nhập mạng, HAY
Luận văn: Hệ thống phát hiện xâm nhập mạng, HAY
 
Hướng dẫn sử dụng phần mềm packet tracer
Hướng dẫn sử dụng phần mềm packet tracerHướng dẫn sử dụng phần mềm packet tracer
Hướng dẫn sử dụng phần mềm packet tracer
 
Giáo trình Phân tích và thiết kế giải thuật - CHAP 1
Giáo trình Phân tích và thiết kế giải thuật - CHAP 1Giáo trình Phân tích và thiết kế giải thuật - CHAP 1
Giáo trình Phân tích và thiết kế giải thuật - CHAP 1
 
Giáo trình an toàn thông tin ths.nguyễn công nhật[bookbooming.com]
Giáo trình an toàn thông tin   ths.nguyễn công nhật[bookbooming.com]Giáo trình an toàn thông tin   ths.nguyễn công nhật[bookbooming.com]
Giáo trình an toàn thông tin ths.nguyễn công nhật[bookbooming.com]
 

Viewers also liked

Các thuật toán mã hóa
Các thuật toán mã hóaCác thuật toán mã hóa
Các thuật toán mã hóadlmonline24h
 
Bai giang atbmtt
Bai giang atbmtt Bai giang atbmtt
Bai giang atbmtt Hà Vũ
 
Slide bai giang_an_toan_va_bao_mat_thong_tin
Slide bai giang_an_toan_va_bao_mat_thong_tinSlide bai giang_an_toan_va_bao_mat_thong_tin
Slide bai giang_an_toan_va_bao_mat_thong_tinLang Codon
 
Chuong 8 lựa chọn và đánh giá phần mềm kế toán
Chuong 8 lựa chọn và đánh giá phần mềm kế toánChuong 8 lựa chọn và đánh giá phần mềm kế toán
Chuong 8 lựa chọn và đánh giá phần mềm kế toándlmonline24h
 
Thuật toán mã hóa rsa
Thuật toán mã hóa rsaThuật toán mã hóa rsa
Thuật toán mã hóa rsaBảo Điệp
 

Viewers also liked (6)

Các thuật toán mã hóa
Các thuật toán mã hóaCác thuật toán mã hóa
Các thuật toán mã hóa
 
Bai giang atbmtt
Bai giang atbmtt Bai giang atbmtt
Bai giang atbmtt
 
Slide bai giang_an_toan_va_bao_mat_thong_tin
Slide bai giang_an_toan_va_bao_mat_thong_tinSlide bai giang_an_toan_va_bao_mat_thong_tin
Slide bai giang_an_toan_va_bao_mat_thong_tin
 
Chuong 8 lựa chọn và đánh giá phần mềm kế toán
Chuong 8 lựa chọn và đánh giá phần mềm kế toánChuong 8 lựa chọn và đánh giá phần mềm kế toán
Chuong 8 lựa chọn và đánh giá phần mềm kế toán
 
Thuật toán mã hóa rsa
Thuật toán mã hóa rsaThuật toán mã hóa rsa
Thuật toán mã hóa rsa
 
Giáo trình mật mã học công nghệ thông tin
Giáo trình mật mã học công nghệ thông tinGiáo trình mật mã học công nghệ thông tin
Giáo trình mật mã học công nghệ thông tin
 

Similar to Tổng hợp các tài liệu cryptography thuat toan ma hoa

HẠ TẦNG KHÓA CÔNG KHAI(PKI)
HẠ TẦNG KHÓA CÔNG KHAI(PKI)HẠ TẦNG KHÓA CÔNG KHAI(PKI)
HẠ TẦNG KHÓA CÔNG KHAI(PKI)ducmanhkthd
 
Tiểu+luận+antoan
Tiểu+luận+antoanTiểu+luận+antoan
Tiểu+luận+antoanBùi Quân
 
Anninhmang K13 Mtt
Anninhmang K13 MttAnninhmang K13 Mtt
Anninhmang K13 MttQuynh Khuong
 
Anninhmangk13mtt
Anninhmangk13mttAnninhmangk13mtt
Anninhmangk13mtttuants
 
Baigiang atbmttl
Baigiang atbmttlBaigiang atbmttl
Baigiang atbmttlHuynh MVT
 
Copy (2) of khái niệm về thương mại điện tử
Copy (2) of khái niệm về thương mại điện tửCopy (2) of khái niệm về thương mại điện tử
Copy (2) of khái niệm về thương mại điện tửLợn Tex
 
Khái niệm về thương mại điện tử
Khái niệm về thương mại điện tửKhái niệm về thương mại điện tử
Khái niệm về thương mại điện tửLợn Tex
 
Tìm hiểu hệ mã hoá RSA và cách triển khai vào hệ thống
Tìm hiểu hệ mã hoá RSA và cách triển khai vào hệ thốngTìm hiểu hệ mã hoá RSA và cách triển khai vào hệ thống
Tìm hiểu hệ mã hoá RSA và cách triển khai vào hệ thốngtNguynMinh11
 
BÀI GIẢNG QTHT WEB-MAIL SERVER.ppt
BÀI GIẢNG QTHT WEB-MAIL SERVER.pptBÀI GIẢNG QTHT WEB-MAIL SERVER.ppt
BÀI GIẢNG QTHT WEB-MAIL SERVER.pptssuser95e69d
 
Bao cao antoanbaomat-hung
Bao cao antoanbaomat-hungBao cao antoanbaomat-hung
Bao cao antoanbaomat-hungLuu Tuong
 
Mahoavaandulieu fix 190422162727
Mahoavaandulieu fix 190422162727Mahoavaandulieu fix 190422162727
Mahoavaandulieu fix 190422162727Tien Nguyen
 
Mahoavaandulieu fix-190422162727
Mahoavaandulieu fix-190422162727Mahoavaandulieu fix-190422162727
Mahoavaandulieu fix-190422162727Tien Nguyen
 
TRUNG_CHU_KY_SO.docx
TRUNG_CHU_KY_SO.docxTRUNG_CHU_KY_SO.docx
TRUNG_CHU_KY_SO.docxleanh121
 

Similar to Tổng hợp các tài liệu cryptography thuat toan ma hoa (20)

HẠ TẦNG KHÓA CÔNG KHAI(PKI)
HẠ TẦNG KHÓA CÔNG KHAI(PKI)HẠ TẦNG KHÓA CÔNG KHAI(PKI)
HẠ TẦNG KHÓA CÔNG KHAI(PKI)
 
Mahoavaandulieu
MahoavaandulieuMahoavaandulieu
Mahoavaandulieu
 
Tiểu+luận+antoan
Tiểu+luận+antoanTiểu+luận+antoan
Tiểu+luận+antoan
 
Anninhmang K13 Mtt
Anninhmang K13 MttAnninhmang K13 Mtt
Anninhmang K13 Mtt
 
Anninhmangk13mtt
Anninhmangk13mttAnninhmangk13mtt
Anninhmangk13mtt
 
Slide c1
Slide c1Slide c1
Slide c1
 
Encryptions
EncryptionsEncryptions
Encryptions
 
Ch09
Ch09Ch09
Ch09
 
Baigiang atbmttl
Baigiang atbmttlBaigiang atbmttl
Baigiang atbmttl
 
Do a nfinal (1)
Do a nfinal (1)Do a nfinal (1)
Do a nfinal (1)
 
Do a nfinal
Do a nfinalDo a nfinal
Do a nfinal
 
Copy (2) of khái niệm về thương mại điện tử
Copy (2) of khái niệm về thương mại điện tửCopy (2) of khái niệm về thương mại điện tử
Copy (2) of khái niệm về thương mại điện tử
 
Khái niệm về thương mại điện tử
Khái niệm về thương mại điện tửKhái niệm về thương mại điện tử
Khái niệm về thương mại điện tử
 
Tìm hiểu hệ mã hoá RSA và cách triển khai vào hệ thống
Tìm hiểu hệ mã hoá RSA và cách triển khai vào hệ thốngTìm hiểu hệ mã hoá RSA và cách triển khai vào hệ thống
Tìm hiểu hệ mã hoá RSA và cách triển khai vào hệ thống
 
BÀI GIẢNG QTHT WEB-MAIL SERVER.ppt
BÀI GIẢNG QTHT WEB-MAIL SERVER.pptBÀI GIẢNG QTHT WEB-MAIL SERVER.ppt
BÀI GIẢNG QTHT WEB-MAIL SERVER.ppt
 
Bao cao antoanbaomat-hung
Bao cao antoanbaomat-hungBao cao antoanbaomat-hung
Bao cao antoanbaomat-hung
 
Mahoavaandulieu fix 190422162727
Mahoavaandulieu fix 190422162727Mahoavaandulieu fix 190422162727
Mahoavaandulieu fix 190422162727
 
Mahoavaandulieu fix-190422162727
Mahoavaandulieu fix-190422162727Mahoavaandulieu fix-190422162727
Mahoavaandulieu fix-190422162727
 
TRUNG_CHU_KY_SO.docx
TRUNG_CHU_KY_SO.docxTRUNG_CHU_KY_SO.docx
TRUNG_CHU_KY_SO.docx
 
Luận văn: Đề xuất thuật toán mã hóa văn bản có độ bảo mật cao
Luận văn: Đề xuất thuật toán mã hóa văn bản có độ bảo mật caoLuận văn: Đề xuất thuật toán mã hóa văn bản có độ bảo mật cao
Luận văn: Đề xuất thuật toán mã hóa văn bản có độ bảo mật cao
 

Tổng hợp các tài liệu cryptography thuat toan ma hoa

  • 1. Tổng hợp các tài liệu Cryptography – thuật toán mã hóa Cryptography (hay crypto) – mật mã học – ngành khoa học nghiên cứu về việc giấu thông tin. Cụ thể hơn, mật mã học là ngành học nghiên cứu về những cách chuyển đổi thông tin từ dạng “có thể hiểu được” thành dạng “không thể hiểu được” và ngược lại. Cryptography giúp đảm bảo những tính chất sau cho thông tin: • 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 mà không bị phát hiện. • Tính xác thực (authentication): người gửi (hoặc người nhận) có thể chứng minh đúng họ. • 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. Mật mã có rất nhiều ứ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 bạn. Cần phân biệt khái niệm cryptography với khái niệm steganography (tạm dịch là giấu thông tin). Điểm khác nhau căn bản nhất giữa hai khái niệm này là: cryptography là việc giấu nội dung của thông tin, trong khi steganography là việc giấu sự tồn tại của thông tin đó. 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.
  • 2. 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. Lưu ý: từ text (hay message) ở đây được dùng theo quy ước, đượ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ự. 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. Key: chìa khóa – thông tin dùng cho qui trình mã hóa và giải mã. Code: cần phân biệt code trong mật mã học với code trong lập trình hay code trong Zip code… Trong cryptography, code (mã) có ý nghĩa gần như là cipher (thuật toán). Chúng chỉ khác nhau ở chỗ: 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 bạn và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.
  • 3. 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. Trong thực tế, mật khẩu do người dùng tạo ra thường không đủ độ an toàn để được dùng trực tiếp trong thuật toán. Vì vậy, trong bất cứ hệ thống mã hóa dữ liệu nghiêm túc nào cũng phải có bước chuyển đổi mật khẩu ban đầu thành chìa khóa có độ an toàn thích hợp. Bước tạo chìa khóa này thường được gọi là key derivation, key stretching hay key initialization. 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. THUẬT TOÁN MÃ HÓA Cổ điển • 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ự
  • 4. 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. Hiện đại • 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ị người thứ ba xem trộm chìa khóa và có thể giải mã được thông điệp Alice mã hóa gửi cho Bob. 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.
  • 5. - 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. • Asymmetric cryptography: mã hóa bất đối xứng, 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). Quay lại với Alice và Bob, nếu Alice muốn gửi một thông điệp bí mật tới Bob, cô ta sẽ tìm chìa công khai của Bob. Sau khi kiểm tra chắc chắn chìa khóa đó chính là của Bob chứ không của ai khác (thông qua chứng chỉ điện tử – digital certificate), Alice dùng nó để mã hóa thông điệp của mình và gửi tới Bob. Khi Bob nhận được bức thông điệp đã mã hóa anh ta sẽ dùng chìa bí mật của mình để giải mã nó. Nếu giải mã thành công thì bức thông điệp đó đúng là dành cho Bob. Alice và Bob trong trường hợp này có thể là hai người chưa từng quen biết. Một hệ thống như vậy cho phép hai người thực hiện được giao dịch trong khi không chia sẻ trước một thông tin bí mật nào cả. Một trong những hạn chế của các thuật toán mã hóa bất đối xứng là tốc độ chậm, do đó trong thực tế người ta thường sử dụng một hệ thống lai tạp trong đó dữ liệu được mã hóa bởi một thuật toán đối xứng, chỉ có chìa dùng để thực hiện việc mã hóa này mới được mã hóa bằng thuật toán bất đối xứng.
  • 6. MỘT SỐ PHƯƠNG PHÁP TẤN CÔNG HỆ THỐNG THÔNG TIN MÃ HÓA Bất cứ ai cũng có thể tạo ra một hệ thống thông tin mã hóa cho riêng mình. Nhưng để có một hệ thống an toàn và hiệu quả đòi hỏi người thiết kế phải có kiến thức toán học sâu sắc, có kinh nghiệm về bảo mật và am hiểu các phương pháp tấn công. • 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). • 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… • 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 – sẽ nói rõ hơn ở phần sau). 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,
  • 7. 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. Một số thuật toán nổi tiếng • 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 được mệnh danh là cái chén thánh của ngành mã hóa dữ liệu. 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. Mới nghe qua có vẻ đơn giản nhưng trong thực tế những điều kiện này khó có thể thỏa mãn được. Giả sử Alice muốn mã hóa chỉ 10MB dữ liệu bằng OTP, cô ta phải cần một chìa khóa có độ dài 10MB. Để tạo ra một số ngẫu nhiên lớn như vậy Alice cần một bộ tạo số ngẫu nhiên thực (TRNG – True Random Number Generator). Các thiết bị này sử dụng nguồn ngẫu nhiên vật lý như sự phân rã hạt nhân hay bức xạ nền vũ trụ. Hơn nữa việc lưu trữ, chuyển giao và bảo vệ một chìa khóa như vậy cũng hết sức khó khăn. 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.
  • 8. 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. • DES: viết tắt của 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). 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
  • 9. đ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. • 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… 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à:
  • 10. • 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.