Tải bản đầy đủ (.doc) (53 trang)

Tìm hiểu về thuật toán bảo mật blowfish

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 (794.59 KB, 53 trang )

Tìm hiểu về thuật toán bảo mật Blowfish
Mục lục :
I. Tổng quan
1. Bảo mật – an ninh mạng
1.1. Nguy cơ an ninh mạng
1.2. Chúng ta cần bảo vệ gì ?
1.3. Các kiểu tấn công mạng
1.4. Xu hướng bảo mật
1.5. Các dịch vụ an ninh mạng
1.6. Các cơ chế an ninh mạng
2. Mã hóa
2.1.Khái niệm chung
2.2.Mã hóa đối xứng
2.3.Mã hóa bất đối xứng
3. Một số thuật toán mã hóa
3.1.Các thuật toán mã hóa bất đối xứng
3.2.Các thuật toán mã hóa đối xứng
3.3.Hàm Hash
3.4 Chữ ký số - Chứng thực
II. Thi hành Blowfish
1. Lịch sử - Xuất xứ thuật toán Blowfish
2. Ứng dụng của Blowfish
3. Nghiên cứu về mã hóa đối xứng
3.1 Mô hình mã hóa đối xứng
3.2 Mật mã khối
4. Thuật toán Blowfish
III. Kết luận
IV. Demo
I. Tổng quan
1. Vấn đề bảo mật , an ninh mạng
1.1. Nguy cơ chung


Mục tiêu của việc chúng ta nối mạng là để nhiều người có thể dùng chung
tài nguyên từ những vị trí địa lý khác nhau, chính vì thế mà các tài nguyên sẽ rất
phân tán, dẫn đến một điều tất yếu là dễ bị xâm phạm gây mất mát dữ liệu, thông
tin. Càng giao thiệp rộng thì nguy cơ bị tấn công càng lớn . Trên mạng , mọi nguy
cơ đều có thể nguy hiểm và các lỗi hệ thống , khe hở lớn nhỏ đều có nguy cơ gây
ra thiệt hại như nhau .
Mạng Internet đã làm thay đổi cuộc sống của con người, làm thay đổi
công việc kinh doanh làm cho nó trở nên dễ dàng hơn. Nhưng đồng thời với lợi
ích to lớn của nó, mạng Internet cùng với các công nghệ liên quan đã mở ra một
cánh cửa làm tăng số lượng các vụ tấn công vào những công ty , cơ quan và cả
những cá nhân, nơi lưu giữ những dữ liệu nhạy cảm như bí mật Quốc gia, số liệu
tài chính, số liệu cá nhân Hậu quả của các cuộc tấn công này có thể chỉ là phiền
phức nhỏ, nhưng cũng có thể làm suy yếu hoàn toàn, các dữ liệu quan trọng bị
xóa, sự riêng tư bị xâm phạm, và chỉ sau vài ngày, thậm chí vài giờ sau, toàn bộ
hệ thống có thể bị tê liệt hoàn toàn.
Các nhận định sai lầm :
+ Thông tin bị mất thường là do các kẻ tấn công bên ngoài đột nhập và
đánh cắp . Thực tế thì 80% dữ liệu bị mất là do những người bên trong hệ thống
gây ra .
+ Chỉ cần mã hóa dữ liệu là đủ khả năng bảo mật dữ liệu . Thực chất mã
hóa chỉ là một bước trong một cơ chế bảo mật mà thôi .
a. Tình hình thế giới :
Theo kết quả khảo sát do viện An ninh Mát tính CSI phối hợp cùng với
Cục điều tra Liên bang Mỹ FBI thì các vụ đánh cắp thông tin mật gây thiệt hại lớn
nhất là 2,7 tr USD mỗi vụ .
Theo báo Computer Economics thì chỉ tính riêng năm 2003 , các loại sâu
và virus máy tính đã gây thiệt hại 12,5 tỷ USD . Và chiều hướng các năm sau thì
thiệt hại ngày càng gia tăng .
Theo nhóm nghiên cứu thị trường Meta Group :
+ Chỉ có khoảng 8-10% ngân sách CNTT dành cho vấn đề bảo mật

và an toàn thông tin . Nhưng theo dự đoán thì tỷ lệ này ngày càng gia tăng .
+ Thị trường an ninh CNTT Châu Á đã tăng trưởng trên 20% từ
giai đoạn sau năm 2003 đến nay , con số này lớn gấp gần 2 lần tỷ lệ tăng trưởng
của thị trường dịch vụ CNTT nói chung.
b. Ở Việt Nam :
Chưa bao giờ vấn đề bảo mật và an toàn dữ liệu lại được coi trọng như
hiện nay, trong bối cảnh mạng máy tính phá bỏ mọi ngăn cách , mọi lúc , mọi
nơi , người ta đều có thể lấy được thông tin , dữ liệu cần thiết . Thông tin đã trở
thành một nguồn tài nguyên quan trọng đối với các tổ chức , doanh nghiệp , cá
nhân . Con người tập trung nhiều sức lực , trí tuệ để có thông tin nhanh , chính
xác . Ai có thông tin ,kẻ đó chiến thắng . Bởi vậy , thông tin đã trở thành mục tiêu
săn đuổi .
Với sự phát triển của CNTT , hầu như mọi thứ đều được số hóa , đặc biệt
là thông tin . Soạn thảo hợp đồng , văn bản bằng word . gửi thư qua các dịch vụ e-
mail , thanh toán qua thẻ tin dụng … nói chung , mọi người làm việc , giao dịch
đều qua máy tính và mạng . Ta không thể làm khác đi bởi sẽ bị cô lập , sẽ luôn
chậm hơn và mất khả năng cạnh tranh , dẫn tới thua cuộc . Do đó , các thông tin ,
dữ liệu người dùng luôn là mục tiêu bị tấn công . Người dùng phải có các phương
thức phòng chống , bảo mật .
Tại Việt Nam , vấn đề bảo mật hệ thống thông tin bắt đầu nóng dần lên và
đang sẵn sang cho nhu cầu bảo mật từ quy mô nhỏ đến lớn .
1.2. Chúng ta cần bảo vệ gì ?
a. Dữ liệu
+ Tính bảo mật : phân quyền sử dụng dữ liệu đúng , ngăn chặn
việc khám phá trái phép các dữ liệu và đảm bảo xác thực nguồn gốc dữ liệu .
+ Tính toàn vẹn : không bị sửa đổi trái phép , gây hỏng
+ Tính kịp thời ( tính sẵn sàng ) : ngăn chặn , không cho phép làm
trễ dữ liệu và chống chối bỏ .
b. Tài nguyên
Tài nguyên máy tính của các cá nhân có thể bị lợi dụng bởi những kẻ tấn

công để tạo ra các khe hở , các nguy cơ cho các cuộc tấn công khác . Do đó .
chúng ta cần phải bảo vệ tài nguyên .
c. Danh tiếng
1.3. Các kiểu tấn công :
Một cách phân loại các tấn công an ninh, sử dụng cả X.800 và RFC 2828,
là phân biệt chúng thành các tấn công thụ động và các tấn công chủ động. Tấn
công thụ động cố gắng tìm hiểu hoặc sử dụng thông tin trong hệ thống nhưng
không động chạm đến tài nguyên hệ thống. Tấn công chủ động sẽ cố gắng làm
xáo trộn, biến đổi tài nguyên hệ thống hoặc áp đặt các hành động của chúng vào
hệ thống.
a.Tấn công thụ động:
Các tấn công thụ động là các hành động nghe/xem trộm hay theo dõi các
hành động và thông tin chuyển phát. Mục đích của kẻ tấn công là lấy thông tin
được truyền phát. Hai kiểu tấn công thụ động là làm thất thoát nội dung thông
điệp và phân tích liên lạc (còn gọi là phân tích giao thông – traffic analysis).
Việc thất thoát nội dung thông điệp có thể hiểu đơn giản như sau : Một
cuộc đàm thoại, một thư điện tử và một tập tin được truyền đi có thể chứa các
thông tin nhạy cảm, bí mật. Chúng ta mong muốn chống lại những kẻ tọc mạch
muốn tìm hiểu các thông tin này.
Một loại khác của tấn công thụ động, phân tích liên lạc, do kẻ cực kỳ tinh
vi, xảo quyệt . Giả sử rằng chúng ta sẵn có một cách để ẩn giấu nội dung các
thông điệp hay các thông tin kỹ thuật vận chuyển, mà một kẻ rình mò, kể cả khi
có bắt được thông điệp cũng không khai thác được thông tin trong thông điệp đó.
Kỹ thuật chung để ẩn giấu nội dung là mã hóa. Nếu ta sẵn có bảo vệ mã hóa tại
chỗ, thì đối phương vẫn có khả năng quan sát khuôn mẫu của các thông điệp này.
Kẻ trộm xảo quyệt có thể xác định vị trí và nhận dạng của các bên truyền thông
liên quan và có thể theo dõi tần số và độ dài của thông điệp được truyền. Thông
tin này rất có thể hữu ích để phỏng đoán về nội dung mà cuộc liên lạc đã diễn ra.
Tấn công thụ động là vô cùng khó phát hiện, bởi nó chẳng đòi hỏi một sự
thay đổi thông tin nào. Thông thường, các thông điệp được gửi và nhận với dáng

vẻ bề ngoài không có gì bất thường, nguời nhận cũng như người gửi không nhận
biết được thông tin đã bị đọc lén bởi một kẻ thứ ba hay theo dõi quá trình truyền
nhận. Tuy nhiên, có khả năng chống lại một cách thành công các loại tấn công
này, thường là bằng biện pháp mã hóa. Vì thế, chúng ta nhấn mạnh rằng, để
đương đầu với các tấn công thụ động thì biện pháp chủ yếu là chống lại chứ
không phải là phát hiện.
b.Tấn công chủ động:
Các tấn công chủ động đòi hỏi sự sửa đổi trong luồng dữ liệu hay đòi hỏi
tạo ra một luồng dữ liệu sai khác, và có thể được chia nhỏ thành bốn loại: giả
dạng (masquerade), nhại lại (replay), sửa thông điệp (modification of message),
và từ chối dịch vụ (denial of service).
Sự giả dạng diễn ra khi một thực thể có ý định là một thực thể khác. Một
tấn công giả dạng thường kèm theo một trong các dạng còn lại của tấn công chủ
động. Ví dụ, các chứng thực tuần tự có thể bị đoạt mất và rồi nhại lại sau một
phiên chứng thực tuần tự diễn ra hợp lệ. Điều này trao cơ hội cho một thực thể giả
dạng được cấp phép một số quyền, để từ đó, khai thác thêm một số quyền khác
nữa bằng cách thủ vai, giả dạng, của một thực thể có quyền thực sự.
Tấn công nhại lại đòi hỏi việc bắt giữ một cách thụ động một đơn vị dữ
liệu và cả bản sao của đơn vị dữ liệu này được truyền lại sau thời gian trễ nhất
định để tạo ra một hiệu ứng trái phép .
Sửa thông điệp đơn giản là kiểu tấn công mà một phần nào đó của thông
điệp hợp lệ bị thay thế, hoặc thông điệp đó bị trì hoãn, hay bị sắp xếp lại để đưa ra
một hiệu ứng trái phép . Chẳng hạn, một thông điệp với ý nghĩa: “Cho phep Mr.A
doc tap tin bi mat accounts” bị sửa thành “Cho phep Mrs.B doc tap tin bi mat
accounts”.
Từ chối dịch vụ chống lại hoặc cấm đoán việc sử dụng bình thường hay là
quản lý sự thuận lợi trong liên lạc . Loại tấn công này thường có các mục tiêu chỉ
định; ví dụ, một thực thể có thể chặn lại tất cả các thông điệp trực tiếp đến một
đích, một địa chỉ cụ thể (chẳng hạn là dịch vụ kiểm tra an ninh). Một dạng khác
của từ chối dịch vụ là gây “sập” mạng bằng cách hoặc là vô hiệu hóa toàn mạng,

hoặc là làm cho mạng quá tải bởi các thông điệp và làm cho hoạt động mạng suy
biến tồi tệ.
Tấn công chủ động là các hình thức tấn công có các đặc trưng ngược lại
với tấn công thụ động. Trong khi tấn công thụ động rất khó để phát hiện, các biện
pháp và phương tiện đo lường có thể được đưa ra để chống lại. Ngược lại, hết sức
khó để chống lại hoàn toàn các tấn công chủ động, bởi vì có rất nhiều tính dễ tổn
thương về vật lý, phần mềm và mạng. Thay vì chống lại, mục tiêu là phát hiện các
tấn công chủ động và phục hồi lại các tổn thất chúng gây ra. Nếu phát hiện tốt các
tấn công chủ động, thì nó có thể đóng góp cho các biện pháp chống lại.
1.4. Các xu hướng bảo mật :
Năm 1994, Ủy ban Kiến trúc Internet (Internet Architecture Board - IAB)
phát hành một báo cáo nhan đề “An ninh trong kiến trúc Internet” (RFC 1636).
Báo cáo phát biểu về sự nhất trí chung rằng Internet cần có an ninh tốt hơn nữa,
và nó chỉ ra các lĩnh vực quan trọng cho các cơ chế an ninh. Các lĩnh vực này
gồm sự cần thiết bảo vệ cơ sở hạ tầng mạng khỏi sự xâm nhập hay theo dõi trái
phép, hay điều khiển bất hợp pháp hoạt động mạng, và sự cần thiết bảo mật toàn
bộ giao thông mạng từ người dùng đến người dùng có sử dụng cơ chế xác thực và
các cơ chế mã hóa.
Các vấn đề quan tâm trên đã được chứng minh là đúng đắn. Như một sự xác nhận,
ta nghiên cứu các xu hướng đã được báo cáo với Đơn vị phối hợp phản ứng nhanh
các vấn đề máy tính (Computer Emegency Response Team (CERT) Co-ordination
Center) (CERT). Hình (a) minh họa xu hướng tổn thương liên quan đến Internet
trong thời gian 10 năm từ 1995 đến 2004 mà CERT đã được báo cáo. Các báo cáo
này cho thấy tình trạng yếu kém của các hệ điều hành sử dụng trên các máy tính
bị tấn công (chẳng hạn Windows, Linux) cũng như tính dễ tổn thương ở các bộ
tìm đường Internet (Router) và các thiết bị mạng khác. Hình (b) cho thấy số vụ
việc liên quan đến an ninh đã xảy ra mà CERT biết tới. Các vụ việc này gồm các
kiểu từ chối dịch vụ; các địa chỉ IP lừa bịp do những kẻ xâm phạm tạo ra cho các
gói tin nhằm khai thác các ứng dụng có sử dụng dịch vụ chứng thực liên quan đến
IP; vô số hình thức nghe/xem trộm mà những kẻ tấn công đọc các thông tin được

truyền đi, bao gồm cả các thông tin đăng nhập và nội dung của các cơ sở dữ liệu.
Trong thời gian này, các tấn công trên mạng Internet và các hệ thống gắn
liền với Internet nổi lên ngày càng tinh vi, trong khi kỹ năng và trình độ yêu cầu
để trấn áp thì lại có xu hướng đi xuống . Các cuộc tấn công ngày càng trở nên tự
động hóa và gây ra những thiệt hại không lồ.
Sự gia tăng các cuộc tấn công tỷ lệ thuận với nhu cầu sử dụng Internet và
cũng tỷ lệ thuận với sự phức tạp của các giao thức và ứng dụng hay la sự phức tạp
của Internet nói chung. Tình trạng nguy kịch của cơ sở hạ tầng ngày càng trở nên
phụ thuộc vào hoạt động của Internet. Người dùng cũng phụ thuộc ngày càng
nhiều vào an ninh của Internet, của thư điện tử, Web và các ứng dụng dựa trên
Web, và sự phụ thuộc ấy cao hơn bao giờ hết. Do đó, một lĩnh vực rộng lớn của
công nghệ và công cụ được đòi hỏi để chống lại các nguy cơ an ninh bảo mật
ngày một tăng lên. Ở mức độ cơ bản nhất, các thuật toán của khoa học mật mã để
bảo đảm tính tin cậy (confidentiality) và chứng thực (authentication) là cực kỳ
quan trọng. Các nhà thiết kế cũng cần phải quan tâm đến các giao thức Internet và
tính dễ tổn thương của các hệ điều hành cũng các ứng dụng liên quan.
1.5. Các dịch vụ an ninh :
X.800 định nghĩa một dịch vụ an ninh như là một dịch vụ hỗ trợ bởi một
tầng giao thức trong truyền thông của các hệ thống mở, là tầng bảo đảm an ninh
thỏa đáng của các hệ thống hay các thực thể truyền dữ liệu. Có lẽ, một định nghĩa
an ninh rõ ràng hơn được tìm thấy trong RFC 2828, nó đưa ra định nghĩa sau: là
một dịch vụ xử lý hay dịch vụ liên lạc đưa ra bởi một hệ thống để cung cấp một
phương thức bảo vệ chỉ định đối với các tài nguyên hệ thống; các dịch vụ an ninh
thi hành chính sách bảo mật và được thi hành bằng các cơ chế an ninh.
X.800 chia các dịch vụ này thành năm loại và mười bốn dịch vụ cụ thể
như trong bảng sau :
AUTHENTICATION
(chứng thực)
Sự tin chắc về thực thể đang liên lạc
là đúng với sự thỉnh cầu.

Chứng thực ngang cấp
Được sử dụng kết hợp với một kết
nối logic nhằm hỗ trợ sự tin cậy cần
thiết trong việc nhận diện các thực
thể đang kết nối đến.
Chứng thực nguồn gốc dữ liệu
Trong một phiên truyền gửi sử dụng
kết nối không thường xuyên
(connectionless), loại chứng thực
này đưa ra sự tin chắc rằng nguồn
gốc của dữ liệu nhận được là đúng
như thỉnh cầu.
ACCESS CONTROL
(điều khiển truy xuất)
Việc chống lại sự sử dụng trái phép
tài nguyên (tức là, loại dịch vụ này
điều khiển người có thể truy xuất
đến tài nguyên, truy xuất xảy ra với
điều kiện nào, và truy xuất tài
nguyên nào được cho phép).
DATA CONFIDENTALITY
DATA INTEGRITY
(Tính toàn vẹn dữ liệu)
Sự chắc chắn rằng dữ liệu nhận
được là chính xác như nó được gửi
bởi một thực thể đã được cấp phép
(tức là, không chứa bất cứ sửa đổi,
chèn, xóa hay nhại lại)
Tính toàn vẹn của kết nối có phục
hồi

Hỗ trợ cho tính toàn vẹn cho tất cả
dữ liệu người dùng trong phiên kết
nối và phát hiện bất cứ một sự sửa
đổi, chèn, xóa, hay nhại lại của bất
cứ dữ liệu trong một tập tuần tự các
dữ liệu đến, bao gồm các cố gắng
phục hồi.
Tính toàn vẹn của kết nối không
phục hồi
Giống như trên nhưng chỉ hỗ trợ
phát hiện mà không phục hồi.
Tính toàn vẹn kết nối có sử dụng
các lựa chọn trường dữ liệu
Hỗ trợ cho tính toàn vẹn của các
trường dữ liệu lựa chọn chứa trong
khối dữ liệu người dùng truyền
(Tính tin cậy của dữ liệu)
Bảo vệ dữ liệu trước các khai thác
trái phép
Tính tin cậy của kết nối
Bảo vệ dữ liệu người dùng trong
một phiên kết nối.
Tính tin cậy của kết nối không
thường xuyên
Bảo vệ dữ liệu người dùng trong
một khối dữ liệu (data block)
Tính tin cậy của các trường lựa chọn
Tính tin cậy của các trường thông
tin đã được lựa chọn trong dữ liệu
người dùng của một phiên kết nối

hay trong một khối dữ liệu.
Tính tin cậy của luồng chuyển vận
Sự bảo vệ các thông tin mà rất có
thể bị theo dõi trên các đường vận
chuyển.
trong một phiên kết nối và xác định
khối dữ liệu có bị sửa đổi, chèn,
xóa hay nhại lại hay không dựa trên
các trường dữ liệu lựa chọn được
sử dụng trong khối dữ liệu.
Tính toàn vẹn của kết nối không
thường xuyên
Hỗ trợ cho tính toàn vẹn từng khối
dữ liệu của một phiên kết nối
không thường xuyên, và có thể
thực hiện một hình thức kiểm tra
nào đó về sự sửa đổi dữ liệu. Thêm
nữa, một dạng kiểm tra sự nhại lại
nào đó cũng có thể được áp dụng
để hỗ trợ.
Tính toàn vẹn của kết nối không
thường xuyên có sử dụng các
trường dữ liệu lựa chọn
Hỗ trợ cho tính toàn vẹn của các
trường dữ liệu lựa chọn chứa trong
khối dữ liệu người dùng. Xác định
khối dữ liệu có bị sửa đổi, chèn,
xóa hay nhại lại hay không
NONREPUDIATION
(Không từ chối)

Hỗ trợ việc chống lại các hình thức
từ chối dịch vụ mà một trong các
thực thể đòi hỏi trong một phiên
liên lạc
Không từ chối, nơi gửi
Chứng minh các thông điệp được
gửi đi bởi người gửi chỉ định.
Không từ chối, nơi nhận
Chứng minh rằng thông điệp được
nhận bởi người nhận chỉ định.
a. Chứng thực (Authentication)
Dịch vụ chứng thực liên quan đến sử bảo đảm rằng một phiên liên lạc là
xác thực, đáng tin. Trong trường hợp một thông điệp đơn, chẳng hạn như một
cảnh báo hay một tín hiệu báo động, chức năng của dịch vụ chứng thực là bảo
đảm với người nhận rằng đó là thông điệp đến từ một nguồn đích thực. Trong
trường hợp của một phiên giao tiếp liên tục, chẳng hạn như một kết nối giữa một
thiết bị đầu cuối với một máy chủ, thì hai vấn đề được đặt ra. Thứ nhất, tại thời
điểm mở kết nối, dịch vụ bảo đảm về sự đích thực của cả hai phía kết nối, tức là
mỗi thực thể đều mong muốn phía kia. Thứ hai, dịch vụ phải bảo đảm rằng kết nối
không bị can thiệp bằng một cách nào đó mà một bên thứ ba có thể giả dạng như
một trong hai thực thể hợp pháp với các chức năng truyền nhận trái phép.
Hai dịch vụ chúng thực được định nghĩa trong X.800 là:
Chứng thực ngang cấp: (peer entity authentication) : Cung cấp sự làm chứng
cho việc nhận dạng kết hợp trong một mối quan hệ ngang cấp. Dịch vụ này cung
cấp sự chứng thực tại thời điểm mở kết nối hay trong các pha của các lần truyền
dữ liệu của một kết nối. Nó cố gắng đảm bảo sự tin cậy mà một thực thể không
phải thực hiện giả mạo hoặc nhại lại trái phép từ một trong các phiên kết nối trước
Chứng thực dữ liệu nguyên bản (Data origin authentication): cung cấp sự làm
chứng về một đơn vị dữ liệu của một nguồn. Dịch vụ này không cung cấp sự bảo
vệ chống lại tái bản hay sửa đổi các đơn vị dữ liệu. Kiểu dịch vụ này cung cấp các

ứng dụng như thư điện tử, nơi mà không có các giao tiếp trước giữa các bên liên
lạc.
b.Điều khiển truy xuất
Trong ngữ cảnh về an ninh mạng, điều khiển truy xuất là khả năng để giói
hạn và điều khiển truy xuất đến các hệ thống chủ và các ứng dụng thông qua các
liên kết truyền thông. Để có được điều này, mỗi thực thể đang cố gắng kết nối
trước hết phải được nhận dạng, hay chứng thực, qua đó các quyền truy xuất có thể
được đáp ứng theo các cách riêng.
c.Tính tin cậy của dữ liệu
Tính tin cậy dữ liệu là việc bảo vệ các dữ liệu dưới sự tấn công thụ động.
Với sự quan tâm đến nội dung của dữ liệu cần truyền, một số cấp độ bảo vệ có thể
nhận biết được. Cấp dịch vụ bên ngoài nhất sẽ bảo vệ tất cả dữ liệu được truyền
giữa hai người dùng trong một quãng thời gian. Chẳng hạn, khi một kết nối TCP
được thiết lập giữa hai hệ thống, vòng bảo vệ mức rộng đầu tiên này chống lại bất
cứ việc làm thất thoát dữ liệu người dùng truyền trong kết nối TCP. Một dạng hẹp
hơn của dịch vụ này cũng được xác định, bao gồm sự bảo vệ một thông điệp hay
kể cả chỉ một trường thông tin bất kỳ trong thông điệp. Sự cải tiến này ít dùng hơn
phương pháp trước và nó cũng phức tạp hơn và tốn phí hơn trong việc thi hành.
Một khía cạnh khác của tính tin cậy là sự bảo vệ dòng chuyển vận dữ liệu dưới
dạng tấn công theo dõi phân tích đường truyền. Điều này đòi hỏi sự không cho kẻ
tấn công có đưựoc khả năng quan sát nguồn và đích, tần số, độ dài, hay các đặc
trưng khác của đường vận chuyển dữ liệu trong một phiên liên lạc.
d.Tính toàn vẹn dữ liệu
Giống như tính tin cậy, tính toàn vẹn có thể được áp dụng cho một luồng
các thông điệp, một thông điệp hay chỉ các trường thông tin lựa chọn trong một
thông điệp. Một lần nữa, lợi ích nhất và phương pháp trung thực nhất là bảo vệ
toàn bộ luồng.
Một dịch vụ bảo toàn kết kối có hướng (connection-oriented), là dịch vụ
xử lý một luồng các thông điệp, bảo đảm cho các thông điệp nhận được như đã
được gửi, không có sao chép nhân bản, không có việc chèn thêm, hay sửa đổi,

thay đổi trật tự hay nhại lại. Việc hủy hoại dữ liệu cũng được kiểm soát bởi dịch
vụ này. Do đó, dịch vụ bảo toàn kết nối có hướng quan tâm tới cả việc sửa đổi
luồng thông điệp và từ chối dịch vụ. Trong khi đó, một dịch vụ bảo toàn kết nối
không thường xuyên (connectionless), là dịch vụ giải quyết với từng thông điệp
riêng lẻ, mà không quan tâm tới vấn đề khác. Thông thường, dịch vụ này chỉ quan
tâm chống lại việc sửa đổi nội dung thông điệp mà thôi.
Chúng ta có thể chỉ ra sự phân biệt rõ ràng giữa các dịch vụ có và không
phục hồi. Bởi vì, dịch vụ bảo toàn có liên quan đến các tấn công chủ động, chúng
ta quan tâm đến sự phát hiện hơn là chống lại. Nếu có một sự vi phạm về tính toàn
vẹn được phát hiện, thì dịch vụ có thể đơn giản là báo cáo sự vi phạm này, và một
hay vài phần khác của phần mềm hoặc chính bản thân con người can thiệp vào để
phục hồi sự xâm phạm này. Một cách khác, có các cơ chế sẵn sàng để phục hồi
những tổn thất trong tính toàn vẹn dữ liệu như chúng ta sẽ xem xét trong các mục
kế tiếp. Sựu phối hợp của các cơ chế mang tính tự động, nói một cách tổng quát,
là một sự thay thế rất hứa hẹn và đáng xem xét.
e.Không từ chối
Dịch vụ “không từ chối” ngăn chặn, chống lại việc có thể xảy ra - hoặc là
người gửi, hoặc người nhận hoặc cả hai – sự từ chối một thông điệp đã được
truyền/nhận. Do thế, một thông điệp khi được gửi đi, người nhận có thể chứng
minh rằng thực sự đã có một người gửi hợp pháp đã gửi nó. Tương tự như vậy,
khi một thông điệp được nhận, người gửi cũng chứng minh được rằng, người
nhận hợp pháp đã thực sự nhận được thông điệp.
* Tính sẵn dùng của dịch vụ :
Cả X.800 và RFC2828 đều định nghĩa tính sẵn dùng là đặc tính của một hệ thống
hay một hệ thống tài nguyên truy xuất được và sử dụng được theo nhu cầu thực sự
của một thực thể hệ thống hợp pháp đã được cấp phép, tuân thủ theo sự thi hành
đã chỉ định đối với hệ thống (ví dụ, một hệ thống là sẵn dùng nếu nó đưa ra các
dịch vụ tuân theo thiết kế hệ thống vào bất cứ khi nào người dùng yêu cầu). Rất
nhiều loại tấn công có thể được liệt kê liên quan đến việc mất, hay suy giảm tính
sẵn dùng. Một số loại tấn công theo kiểu ngụy trang, chống lại hay trốn tránh các

biện pháp đối phó tự động, như chứng thực hay mã hóa, trong khi một số khác lại
đòi hỏi vài thao tác vật lý để ngăn chặn hay tự hồi phục khi bị “đánh trả” bởi các
dịch vụ bảo vệ trong các hệ thống phân phối.
X.800 coi tính sẵn dùng như một đặc tính để kết hợp với một số dịch vụ an ninh
khác, bằng cách, nó quan sát và gọi ra cụ thể một dịch vụ sẵn dùng vào lúc cần
thiết. Một dịch vụ sẵn dùng là dịch vụ bảo vệ một hệ thống để bảo đảm chắc chắc
tính sẵn dùng của hệ thống đó. Dịch vụ này quan tâm đến hàng rào an ninh được
dựng lên bởi các tấn công từ chối dịch vụ. Dịch vụ này phụ thuộc vào mức độ
quản lý thích đáng và điều khiển tài nguyên hệ thống và do dó, tùy thuộc vào dịch
vụ điều khiển truy xuất và các dịch vụ an ninh khác.
1.6 Các cơ chế an ninh
Trong X.800, các cơ chế được chia thành những loại mà chúng thực hiện
trong một lớp giao thức chỉ định và những loại mà chúng không chỉ định thực
hiện cụ thể trong bất cứ lớp giao thức hay dịch vụ an ninh nào. Các cơ chế này sẽ
được bàn đến ở những nơi tương ứng trong cuốn sách, và thế, chúng ta không bàn
kỹ đến lúc này, loại trừ việc giải thích về định nghĩa mã hóa. X800 phân biệt giữa
các cơ chế mã hóa thuận nghịch và mã hóa không thuận nghịch được. Một cơ chế
mã hóa thuận nghịch đơn giản là một thuật toán mã hóa cho phép dữ liệu được mã
hóa và giải mã sau đó. Còn các cơ chế mã hóa không thuận nghịch bao gồm các
thuật toán “băm” (hash) và các mã thông điệp chứng thực như được sử dụng trong
chữ ký số và các ứng dụng thông điệp chứng thực. Các cơ chế trong X800 được
liệt kê theo bảng sau :
CÁC CƠ CHẾ AN NINH CỤ
THỂ
Có thể được kết hợp với lớp
giao thức phù hợp để đưa ra
một số dịch vụ an ninh OSI
Sự mã hóa
Việc sử dụng các thuật toán
toán học để biến đổi dữ liệu

sang một dạng không dễ đọc.
Sự biến đổi và phục hồi dữ liệu
trở lại sau đó tùy thuộc vào
một thuật toán và có 0, 1 hoặc
nhiều khóa mã.
Chữ ký số
Dữ liệu được chèn vào, hoặc
CÁC CƠ CHẾ AN NINH PHỔ
BIẾN
Các cơ chế mà không chỉ định cụ
thể cho bất cứ dịch vụ an ninh
OSI hay lớp giao thức nào.
Chức năng tín nhiệm
Là chức năng nhận biết được sự
đúng đắn chính xác dựa vào một
số điều kiện (như là nó được
thiết lập bởi chính sách bảo mật).
Nhãn hiệu an ninh
Đánh dấu giới hạn cho một tài
nguyên (đó có thể là một đơn vị
dữ liệu) được định nghĩa hay chỉ
định tượng trưng cho an ninh của
mật mã biến đổi, của một đơn
vị dữ liệu mà cho phép người
nhận chứng minh được nguồn
và tính nguyên vẹn của đơn vị
dữ liệu và chống lại sự giả mạo
(có thể là sự giả mạo của chính
người nhận).
Điều khiển truy xuất

Sự đa dạng các cơ chế để bắt
buộc tồn tại các quyền truy
xuất đến các tài nguyên.
Toàn vẹn dữ liệu
Sự đa dạng các cơ chế được
sử dụng để chắc chắn tính toàn
vẹn của một đơn vị dữ liệu hay
một luồng của các đơn vị dữ
liệu.
Trao đổi chứng thực
Một cơ chế mà mục đích để
chắc chắn nhận biết một thực
thể bằng các cách thức trao đổi
thông tin.
Đệm vận chuyển
Việc chèn thêm các bit vào các
khoảng trống của một luồng dữ
liệu để làm thất bại các cố
gắng phân tích đường vận
chuyển thông tin của các thực
thể.
Điều khiển tìm đường
Cho phép chọn lựa các đường
đi vật lý cụ thể, an toàn cho dữ
liệu và cho phép thay đổi
đường đi, nhất là khi nghi ngờ
có lỗ hổng bảo mật nào đó.
Công chứng
Việc sử dụng một bên tin cậy
thứ ba để chắc chắn các tính

chất nào đó của một phiên trao
đổi dữ liệu.
dữ liệu.
Phát hiện sự kiện
Phát hiện các sự kiện an ninh
liên quan.
Lần tìm dấu vết an ninh
Các dữ liệu đã thu thập và dữ
liệu tiềm tàng được sử dụng làm
cho quá trình phân tích an ninh
thêm thuận lợi, đó là một biện
pháp kiểm tra, đánh giá độc lập
đối với các bản ghi và hoạt động
của hệ thống.
Phục hồi an ninh
Đối phó với các đòi hỏi từ các cơ
chế, chẳng hạn như các chức
năng quản lý và nắm bắt sự kiện,
và thực hiện các hành động phục
hồi.
2. Khoa học Mật mã :
2.1 Khái niệm chung :
Trong mật mã học, một ngành toán học ứng dụng cho công nghệ thông
tin, mã hóa là phương pháp để biến thông tin (phim ảnh, văn bản,hình ảnh ) từ
định dạng bình thường sang dạng thông tin không thể hiểu được nếu không có
phương tiện giải mã.
Giải mã là phương pháp để đưa từ dạng thông tin đã được mã hóa về dạng thông
tin ban đầu, quá trình ngược của mã hóa.
Một hệ thống mã hóa bao gồm các thành phần:
thông tin trước khi mã hóa, kí hiệu là P

thông tin sau khi mã hóa, kí hiệu là C
chìa khóa, kí hiệu là K
phương pháp mã hóa/giải mã, kí hiệu là E/D.
Quá trình mã hóa được tiến hành bằng cách áp dụng hàm toán học E lên thông
tin P, vốn được biểu diễn dưới dạng số, để trở thành thông tin đã mã hóa C.
Quá trình giải mã được tiến hành ngược lại: áp dụng hàm D lên thông tin C để
được thông tin đã giải mã P.
2.2. Mã hóa đối xứng :
Mã hóa đối xứng ( hay còn gọi mã hóa chia sẻ khóa ) là mô hình mã hóa 2
chiều , tức tiến trình mã hóa và giải mã đều dùng chung một khóa . Khóa này phải
được chuyển giao bí mật giữa các bên tham gia giao tiếp .
Thuật toán đối xứng có thể được chia ra làm hai thể loại, mật mã luồng (stream
ciphers) và mật mã khối (block ciphers). Mật mã luồng mã hóa từng bit của thông
điệp trong khi mật mã khối gộp một số bit lại và mật mã hóa chúng như một đơn
vị. Cỡ khối được dùng thường là các khối 64 bit. Thuật toán tiêu chuẩn mã hóa
cải tiến (Advanced Encryption Standard), được NIST công nhận tháng 12
năm 2001, sử dụng các khối gồm 128 bit.
Trong thiết kế của các hệ thống mật mã hiện đại, cả hai thuật toán bất đối xứng
(asymmetric) (dùng khóa công khai) và thuật toán đối xứng được sử dụng phối
hợp để tận dụng các ưu điểm của cả hai. Những hệ thống sử dụng cả hai thuật
toán bao gồm : SSL (Secure Sockets Layer), PGP (Pretty Good Privacy)
và GPG (GNU Privacy Guard) v.v. Các thuật toán khóa bất đối xứng được sử
dụng để phân phối khóa mật cho thuật toán đối xứng có tốc độ cao hơn.
Các thuật toán đối xứng nói chung đòi hỏi công suất tính toán ít hơn các thuật
toán khóa bất đối xứng (asymmetric key algorithms). Trên thực tế, một thuật toán
khóa bất đối xứng có khối lượng tính toán nhiều hơn gấp hằng trăm, hằng ngàn
lần một thuật toán khóa đối xứng (symmetric key algorithm) có chất lượng tương
đương.
Hạn chế của các thuật toán khóa đối xứng bắt nguồn từ yêu cầu về sự phân
hưởng khóa bí mật, mỗi bên phải có một bản sao của chìa. Do khả năng các chìa

khóa có thể bị phát hiện bởi đối thủ mật mã, chúng thường phải được bảo an trong
khi phân phối và trong khi dùng. Dẫn đến yêu cầu về việc lựa chọn, phân phối và
lưu trữ các khóa một cách không có lỗi, không bị mất mát là một việc làm khó
khăn, khó có thể đạt được một cách đáng tin cậy.
Để đảm bảo phương thức liên lạc an toàn cho tất cả mọi người trong một nhóm
gồm n người, tổng số lượng khóa cần phải có là .
Hiện nay người ta phổ biến dùng các thuật toán bất đối xứng có tốc độ
chậm hơn để phân phối chìa khóa đối xứng khi một phiên giao dịch bắt đầu, sau
đó các thuật toán khóa đối xứng tiếp quản phần còn . Vấn đề về bảo đảm sự phân
phối khóa một cách đáng tin cậy cũng tồn tại ở tầng đối xứng, song ở một điểm
nào đấy, người ta có thể kiểm soát chúng dễ dàng hơn. Tuy thế, các khóa đối
xứng hầu như đều được sinh tạo tại chỗ.
Các thuật toán khóa đối xứng không thể dùng cho mục đích xác
thực (authentication) hay mục đích chống thoái thác (non-repudiation) được.
Trong lịch sử, các mã đối xứng thường rất dễ bị ảnh hưởng bởi các loại tấn công
gọi là tấn công với văn bản thuần túy biết trước (known-plaintext attacks), tấn
công với văn bản thuần túy chọn trước (chosen plaintext attacks), thám mã vi
phân (differential cryptanalysis) và thám mã tuyến tính (linear cryptanalysis). Nếu
mỗi hàm số sử dụng trong các vòng toán được thiết kế một cách cẩn thận, thì nó
sẽ giảm khả năng khóa của mã bị tấn công một cách thành công rất nhiều.
Khi được sử dụng với mật mã đối xứng để truyền tin khóa mật mã, các trình sinh
tạo khóa giả ngẫu nhiên (pseudorandom key generators) thường được sử dụng để
sinh tạo các khóa dùng trong phiên giao dịch sử dụng mật mã đối xứng. Song
trong lịch sử, sự thiếu hụt trong tính ngẫu nhiên của các trình sinh tạo ngẫu số hay
trong các vectơ khởi tạo (initialization vectors) của chúng thường gây ra những
thảm họa và thường dẫn đến các vụ mật mã bị bẻ gãy. Việc thực hiện và triển khai
thận trọng, với khởi tạo (initialization) dựa trên những nguồn entrôpi có chất
lượng cao là một yếu tố cần thiết để thuyên giảm sự mất mát trong an ninh.
2.3. Mã hóa bất đối xứng
Mã hóa bất đối xứng ( hay còn gọi là mã hóa khóa công khai ) là mô hình

mã hóa 2 chiều sử dụng một cặp khóa ( khóa riêng và khóa công khóa ) , Thông
thường , một thông điệp được mã hóa với khóa riêng và chắc chắn rằng khóa này
là của người gửi . Nó sẽ được giải mã với khóa công khai , bất cứ người nhận nào
cũng có thể truy cập nếu có khóa này . Chỉ có khóa công khai trong cùng một cặp
khóa mới có thể giải mã dữ liệu đã mã hóa với khóa riêng tương ứng .
Hệ thống mật mã hóa khóa công khai có thể sử dụng với các mục đích:
Mã hóa: giữ bí mật thông tin và chỉ có người có khóa bí mật mới giải mã được.
Tạo chữ ký số: cho phép kiểm tra một văn bản có phải đã được tạo với một khóa
bí mật nào đó hay không.
Thỏa thuận khóa: cho phép thiết lập khóa dùng để trao đổi thông tin mật giữa 2
bên.
Thông thường, các kỹ thuật mật mã hóa khóa công khai đòi hỏi khối lượng tính
toán nhiều hơn các kỹ thuật mã hóa khóa đối xứng nhưng những lợi điểm mà
chúng mang lại khiến cho chúng được áp dụng trong nhiều ứng dụng.
Về khía cạnh an toàn, các thuật toán mã hóa khóa bất đối xứng cũng
không khác nhiều với các thuật toán mã hóa khóa đối xứng. Có những thuật toán
được dùng rộng rãi, có thuật toán chủ yếu trên lý thuyết; có thuật toán vẫn được
xem là an toàn, có thuật toán đã bị phá vỡ Cũng cần lưu ý là những thuật toán
được dùng rộng rãi không phải lúc nào cũng đảm bảo an toàn. Một số thuật toán
có những chứng minh về độ an toàn với những tiêu chuẩn khác nhau. Nhiều
chứng minh gắn việc phá vỡ thuật toán với những bài toán nổi tiếng vẫn được cho
là không có lời giải trong thời gian đa thức. Nhìn chung, chưa có thuật toán nào
được chứng minh là an toàn tuyệt đối (như hệ thống mật mã sử dụng một lần). Vì
vậy, cũng giống như tất cả các thuật toán mật mã nói chung, các thuật toán mã
hóa khóa công khai cần phải được sử dụng một cách thận trọng.
Khả năng một mối quan hệ nào đó giữa 2 khóa hay điểm yếu của thuật toán dẫn
tới cho phép giải mã không cần tới khóa hay chỉ cần khóa mã hóa vẫn chưa được
loại trừ. An toàn của các thuật toán này đều dựa trên các ước lượng về khối lượng
tính toán để giải các bài toán gắn với chúng. Các ước lượng này lại luôn thay đổi
tùy thuộc khả năng của máy tính và các phát hiện toán học mới.

Mặc dù vậy, độ an toàn của các thuật toán mật mã hóa khóa công khai cũng tương
đối đảm bảo. Nếu thời gian để phá một mã (bằng phương pháp duyệt toàn bộ)
được ước lượng là 1000 năm thì thuật toán này hoàn toàn có thể dùng để mã
hóa các thông tin về thẻ tín dụng- Rõ ràng là thời gian phá mã lớn hơn nhiều lần
thời gian tồn tại của thẻ (vài năm).
Nhiều điểm yếu của một số thuật toán mật mã hóa khóa bất đối xứng đã
được tìm ra trong quá khứ. Nó chỉ được xem là không an toàn khi một dạng tấn
công không lường trước bị phát hiện. Gần đây, một số dạng tấn công đã đơn giản
hóa việc tìm khóa giải mã dựa trên việc đo đạc chính xác thời gian mà một hệ
thống phần cứng thực hiện mã hóa. Vì vậy, việc sử dụng mã hóa khóa bất đối
xứng không thể đảm bảo an toàn tuyệt đối. Đây là một lĩnh vực đang được tích
cực nghiên cứu để tìm ra những dạng tấn công mới.
Một điểm yếu tiềm tàng trong việc sử dụng khóa bất đối xứng là khả năng
bị tấn công dạng kẻ tấn công đứng giữa (man in the middle attack): kẻ tấn công
lợi dụng việc phân phối khóa công khai để thay đổi khóa công khai. Sau khi đã
giả mạo được khóa công khai, kẻ tấn công đứng ở giữa 2 bên để nhận các gói
tin, giải mã rồi lại mã hóa với khóa đúng và gửi đến nơi nhận để tránh bị phát hiện.
Dạng tấn công kiểu này có thể phòng ngừa bằng các phương pháp trao đổi khóa an
toàn nhằm đảm bảo xác thực người gửi và toàn vẹn thông tin. Một điều cần lưu ý
là khi các chính phủ quan tâm đến dạng tấn công này: họ có thể thuyết phục (hay
bắt buộc) nhà cung cấp chứng thực số xác nhận một khóa giả mạo và có thể đọc
các thông tin mã hóa.
Ứng dụng rõ ràng nhất của mật mã hóa khóa công khai là bảo mật: một
văn bản được mã hóa bằng khóa công khai của một người sử dụng thì chỉ có
thể giải mã với khóa bí mật của người đó.
Các thuật toán tạo chữ ký số khóa công khai có thể dùng để xác thực. Một người
sử dụng có thể mã hóa văn bản với khóa bí mật của mình. Nếu một người khác có
thể giải mã với khóa công khai của người gửi thì có thể tin rằng văn bản thực sự
xuất phát từ người gắn với khóa công khai đó.
Các đặc điểm trên còn có ích cho nhiều ứng dụng khác như: tiền điện tử, thỏa

thuận khóa
3. Một số thuật toán mã hóa
3.1 Thuật toán khóa công khai
a. Rivest-Shamir-Adleman (RSA)
Thuật toán khóa public RSA là kiểu tính toán không đối xứng được sử
dụng rộng rãi nhất. Nó bắt nguồn từ sự phân tích thành thừa số của nhiều số
nguyên là tích của 2 số nguyên tố gần bằng nhau.
Sự phân tích thành thừa số được tin dùng rộng rãi vì sự phức tạp, mặc dù
chưa được chứng minh. RSA có thể được dùng cả cho việc mã hóa và chữ ký.
Đến tháng 9 năm 2000, RSA được yêu cầu cấp bằng sáng chế tại Mỹ bởi
Public Key Partners Inc (PKP) , 1 công ty mà RSA Security Inc là 1 đối tác. Khi
bằng sáng chế có hiệu lực, PKP muốn kiểm soát việc sử dụng thuật toán RAS ở
Mỹ, và việc sử dụng trái phép là phạm luật. Đến giữa những năm 1990, RSA
Security cung cấp miễn phí RSAref, với bản quyền cho phép ngành giáo dục và
thương mại sử dụng (cũng như phần mềm được bán ra phi lợi nhuận). Từ đó RSA
trở nên phổ biến, RSAref không còn tồn tại.
Giao thức SSH-1 chỉ sử dụng RSA. SSH-2 có thể sử dụng nhiều thuật
toán public-key, nhưng mặc định chỉ là thuật toán DSA . Nhóm SECSH đã thêm
thuật toán RAS vào SSH-2 không lâu sau khi sáng chế hết hiệu lực.
b. Thuật toán thỏa thuận khóa Diffie-Hellman
Thuật toán Diffie-Hellman được giới thiệu lần đầu tiên trong thư viện mở,
được sáng tạo bởi Whitfield Diffie, Martin Hellman va Ralph Merkle vào năm
1976, được cấp bằng sáng chế năm 1977 (phát hành vào năm 1980, số
#4,200,770) giờ thì bằng sáng chế đã hết hạn. Cũng giống như DSA, nó dựa vào
sự rời rạc của bài toán logarit, nó cho phép 2 bên lấy được 1 khóa chia sẻ an toàn
trên 1 kênh mở. Các phần trao đổi các thông điệp với nhau, sau cùng chúng chia
sẻ 1 khóa bí mật. 1 kẻ rình mò không thể lấy được thông tin từ quá trình này.
Giao thức SSH-2 cần phải dùng thuật toán Diffie-Hellman trong phương thức trao
đổi khóa.
c. Thuật toán Elgamal :

Elgamal là thuật toán dựa trên nền tảng của Diffie-Hellman , được phát triển bởi
Taher Elgamal .
d. Thuật toán Paillier Cryptosystem
Paillier cryptosystem là một thuật toán được phát triển bởi Pascal Paillier .
3.2. Thuật toán mã đối xứng :
a. Thuật toán mã hóa dữ liệu bí mật quốc tế ( IDEA )
IDEA được thiết kế năm 1990 bởi Xuejis Lai và James Massey và trải qua
nhiều lần sửa chữa, cải tiến và đổi tên trước khi có dạng như hiện nay. Mặc dù
tương đối mới nhưng nó là thuật toán bảo mật khá tốt.
IDEA là hệ mã thao tác trên từng khối 64bit, mã hóa cụm rõ 64bit thành cụm mã
64bit, sử dụng 128bit làm khóa bao gồm 1 chuỗi 8 lần biến đổi liên tiếp và tiếp
theo là 1 lần biến đổi đầu ra. Lần biến đổi thứ r sử dụng 6 khối khóa con 16 bit
Ki(r), 1<=i<=6, để biến đổi 64bit đầu vào X thành 1 đầu ra với 4 khối 16bit và
đầu ra này lại là đầu vào cho lần biến đổi tiếp theo. Đầu ra của lần biến đổi thứ 8
là đầu vào cho lần biến đổi cuối cùng là đầu ra của phương pháp này. Trong lần
biến đổi này nó dùng 4 khóa con Ki(9), 1<=i<=4, để tính toán cụm mã cuối cùng
Y= (Y1,Y2, Y3, Y4). Tất cả các khóa con nhận được từ K.
Một khái niệm trong thiết kế mang tính đột phá của phương pháp IDEA là cách sử
dụng hỗn độn các phép toán từ tập 3 phép toán đại số khác nhau của nhóm 2**n
phần tử. Các phép toán nhóm thực hiện trên các phần tử biểu diễn bằng 16 bit a và
b là: XOR theo từng bit: a ^ b; cộng modulo 2**n: (a+b) mod 2**n, kí hiệu: a [+]
b, và nhân modulo 2**n+1, ký hiệu a (*) b.
b. Chuẩn mã hóa dữ liệu ( DES )
Chuẩn mã hoá dữ liệu là bản cũ của thuật toán mã hoá bí mật và bây giờ
nó được thay thế bằng AES. DES được thiết kế bởi các nhà nghiên cứu của IBM
vào đầu những năm 1970 với cái tên la Lucifer .
Hiện nay DES được xem là không đủ an toàn cho nhiều ứng dụng. Nguyên nhân
chủ yếu là độ dài 56 bit của khóa là quá nhỏ. Khóa DES đã từng bị phá trong
vòng chưa đầy 24 giờ. Đã có rất nhiều kết quả phân tích cho thấy những điểm yếu
về mặt lý thuyết của mã hóa có thể dẫn đến phá khóa, tuy chúng không khả thi

trong thực tiễn.
c. Triple DES ( 3DES )
Trible DES hoặc 3DES là một dạng khác của DES gồm quá trình mã hóa
– giải mã – mã hóa bằng việc tăng chiều dài khoá. Làm tăng tính bảo mật của
thuật toán DES bằng việc mã hoá nhiều 3 lần những khoá độc lập. Là thuật toán
mã hoá dạng plantext với sự lặp lại thuật toán DES 3 lần. Chiều dài khoá của
3DES là 112 bit lớn hơn nhều so với 56 bit của DES.
d. Chuẩn mã hóa tiên tiến ( AES )
Năm 1992, NIST bắt đầu một chương trình thay thế thuật toán mã hoá đối
xứng chuẩn đang có là DES. Thuật toán này được thiết kế bởi Joan Daemen và
Vincent Rijmen và ban đầu nó được gọi là Rijndael và sau trở thành Advanced
Encryption Standard (AES). AES là một thuật toán mã hoá khối bí mật với chiều
dài khoá có thể là 128, 192, hoăc 256 bits.
Mặc dù 2 tên AES và Rijndael vẫn thường được gọi thay thế cho nhau nhưng trên
thực tế thì 2 thuật toán không hoàn toàn giống nhau. AES chỉ làm việc với khối
dữ liệu 128 bít và khóa có độ dài 128, 192 hoặc 256 bít trong khi Rijndael có thể
làm việc với dữ liệu và khóa có độ dài bất kỳ là bội số của 32 bít nằm trong
khoảng từ 128 tới 256 bít.
Các khóa con sử dụng trong các chu trình được tạo ra bởi quá trình tạo khóa con
Rijndael.
Hầu hết các phép toán trong thuật toán AES đều thực hiện trong một trường hữu
hạn.
AES làm việc với từng khối dữ liệu 4×4 byte (tiếng Anh: state, khối trong
Rijndael có thể có thêm cột). Quá trình mã hóa bao gồm 4 bước:
AddRoundKey — mỗi byte của khối được kết hợp với khóa con, các khóa con
này được tạo ra từ quá trình tạo khóa con Rijndael.
SubBytes — đây là phép thế (phi tuyến) trong đó mỗi byte sẽ được thế bằng một
byte khác theo bảng tra (Rijndael S-box).
ShiftRows — đổi chỗ, các hàng trong khối được dịch vòng.
MixColumns — quá trình trộn làm việc theo các cột trong khối theo một phép

biến đổi tuyến tính.
Tại chu trình cuối thì bước MixColumns được thay thế bằng bướcAddRoundKey
e. AcrfFour ( RC4 )
Ron Rivest thiết kế thuật mã hoá RC4 năm 1987 cho bảo mật dữ liệu
RSA. Lúc đó nó có tên là RSADSI. Năm 1994, nó được biết đến với tên RC4 hay
ARCFOUR. RC4 thì mã hoá rất nhanh nhưng không bảo mật bằng những thuật
toán khác. Nó sử dụng kích thước khoá biến đổi. SSH-1 áp dụng RC4 với chiều
dài khoá 128 bit.
f. Blowfish
Blowfish được thiết kế bởi Bruce Schneier năm 1993, nó từng bước thay
thế thuật toán DES. Nó nhanh hơn DES và IDEA nhiều nhưng không bằng RC4,
Blowfish là một thuật toán mã hoá miễn phí không đăng kí bản quyền. Chiều dài
khoá của Blowfish thay đổi từ 32 đến 448 bit. SSH-2 sử dụng Blowfish với chiều
dài khoá là 128 bit.
Ưu điểm của Blowfish là :
+ Độ bền : Blowfish có chiều dài khóa 256 bit . Hiện nay chưa có ai bẻ gãy được
chúng do kết cấu của thuật toán khá phức tạp .
+ Tốc độ : do blowfish hướng tới cài đặt bằng phần mềm nên tốc độ khá nhanh ,
khai thác CPU 32 bit .
Blowfish sử dụng mã hóa khối nên có thể mã hóa được những tải dữ liệu lớn với
tốc độ thực hiện cao và thường được dùng để mã hóa dữ liệu văn bản , âm thanh ,
hình ảnh …
g. Towfish
Twofish là một thuật toán mã hoá được Bruce Schneier thiết kế cùng với
J.Kelsey, D.Wagner, C.Hall và N. Ferguson. Nó được đón nhận năm 1998 và thay
thế DES ở Mỹ. Đây cũng là một thuật toán mã hoá miễn phí cho mọi người.
Twofish mã hoá với chiều dài khoá 128, 192, hoặc 256 bít. SSH-2 sử dụng 256
bit. Nó rất nhanh và cũng có tính bảo mật khá cao
h. CAST ( CAST-128 và CAST 256 )
CAST được thiết kế vào đầu những năm 1990 bởi Carlisle Adams và

Stafforf Tavares. CAST sử dụng chiều dài khoá 128 hoặc 256 bit. Trong SSH-2,
CAST được sử dụng với chiều dài khoá là 128 bit
i. Skipjack
Skipjack là thuật toán được thiết kế bởi Cơ quan bảo mật quốc gia Mỹ -
US National Security Agency NSA và được dùng trong chip Clipper Fortezza PC
card .
3.3. Những hàm Hash :
a. CRC-32
Thuật toán 32-bit Redundancy Check (CRC-32) được định nghĩa trong ISO
3309, là một hàm băm không mã hoá đối với việc dò tìm lỗi thay đổi dữ liệu.
Giao thức SSH-1 sử dụng CRC-32 cho việc kiểm tra toàn vẹn dữ liệu và đề
phòng hình thức tấn công “insertion attack” (tấn công bằng cách chèn mã độc
vào dữ liệu).
b.MD5
MD5 (Message Digest algorithm number 5) là một thuật mã hoá mạnh, là thuật
toán băm 128 bit được thiết kế bởi Ron Rivest năm 1991, MD5 cũng là một
thuật toán công cộng không đăng kí bản quyền.
c.SHA-1
SHA-1 (Secure Hash Algorithm 1) được thiết kết bởi NSA và NIST . Cũng
giống như MD5, nó được cải tiến từ MD4 nhưng cải tiếp theo một cách khác.
Nó cung cấp hàm băm 160 bit. Xét về bảo mật thì nó mạnh hơn MD5 vì giá trị
băm dài hơn. SSH-2 sử dụng SHA-1 để băm MAC còn SSH-1 thì sử dụng MD5.
d.RIPEMD-160
RIPEMD-160 là một bản khác của MD4, đựợc phát triển bởi Hans Dobbertin,
Antôn Boselaers và Bart Preneel trong một phần của dự án RIPE truyền thông
Châu Âu từ tháng 6 năm 1987 đến tháng 12 năm 1995. RIPEMD-160 không
được định nghĩa trong giao thức SSH nhưng nó được dùng trong bản bổ sung
OpenSSH, RIPEMD-160 cũng là một thuật toán phiễn phí cho mọi người .
3.4. Chứ ký số ( DSA )
Thuật toán chữ ký số được phát triển bởi cơ quan an ninh quốc gia Mỹ

(NSA) và được công bố bởi viện tiêu chuẩn và công nghệ quốc gia Hoa Kỳ và trở
thành chuẩn chữ ký số (DSS). DSS được đưa ra như là một chuẩn xử lý thông tin
liên bang, FIPS-186 vào tháng 5 năm 1994. Nó là một thuật toán public-key phụ
thuộc vào phương pháp Schnorr và ElGamal, dựa vào độ khó của việc tính toán
riêng rẽ các logarit trong một trường có giới hạn. Nó được thiết kế là một chữ ký
không dùng cho mã hóa, mặc dù bản bổ xung đầy đủ có thể thực thi dễ dàng với
cả 2 loại mã hóa RSA và ElGarmal.
DSA cũng bị cuốn vào 1 cuộc tranh cãi kể từ khi nó ra đời. Ban đầu, NIST cho
rằng họ đã thiết kế ra DSA, nhưng sau đó họ tiết lộ là NSA đã tạo ra nó. Rất nhiều
câu hỏi xoay quanh NSA. Researcher Gus Simmons phát hiện ra 1 phần trong
DSA cho phép tạo lỗ hổng rò rỉ thông tin, ví dụ các bit khóa bí mật kèm theo mỗi
chữ ký. Khi thuật toán được dùng trong trong các thẻ thông minh trong chương
trình Capstone của chính phủ, nhiều người vẫn còn nghi ngờ. Cuối cùng NIST
dành DSA miễn phí cho mọi người dùng. Đến sau cùng, nó được sáng chế bởi
David Kravitz (sáng chế #5,231,668), sau đó một nhân viên của NSA đã chuyển
sáng chế này cho chính phủ Mỹ. Tuy nhiên, cũng có những yêu cầu, rằng DSA
xâm phạm bằng sáng chế, bao gồm cả sáng chế Shnorr. Cho đến giờ vẫn chưa có
sự thay đổi nào từ tòa án.
Giao thức SSH-2 cần phải sử dụng DSA để xác nhận host.
II. Thi hành Blowfish
1 Lịch sử - xuất xứ của thuật toán blowfish
Blowfish là một thuật toán mã hóa đối xứng khối được Bruce Schneier thiết kế
vào năm 1993 và được sử dụng rất nhiều trong các bộ mã và sản phẩm bảo mật
hiện nay . Blowfish cung cấp một phương thức mã hóa tốt cho phần mềm và cho
đến hiện nay vẫn chưa bị “ bẻ gãy “ .
Schneier thiết kế thuật toán Blowfish theo nền tảng là thuật toán twofish với mục
đích để thay thế thuật toán cũ DES ( chuẩn mã hóa dữ liệu ) và giải quyết các khó
khăn của các thuật toán khác . Ông tuyên bố rằng blowfish sẽ được sử dụng tự do
trên toàn thế giới , tức blowfish không đòi hỏi bản quyền khi sử dụng như một số
thuật toán khác . Chính vì thế , blowfish ngày càng được ứng dụng rộng rãi .

2 Ứng dụng của blowfish
Phần sau đây được trích dẫn từ trang web của tác giá thuật toán blowfish – Bruce
Schneier . ( )
+ Mã hóa tập tin và đĩa
+ Quản lý mật khẩu
+ Công cụ lưu trữ
+ Backup
+ Bảo mật cơ sở dữ liệu
+ Phần mềm thương mại điện tử
+ Mã hóa thư điện tử
+ Mã hóa thư viện và các toolkit
+ Chuyển tin
+ Tán gẫu trực tuyến
+ Hệ điều hành
+ Chương trình cơ sở dữ liệu cá nhân
+ Secure Shell SSH
+ Bảo mật điện thoại
+ Dữ liệu ẩn ( Steganography )
+ Xử lý văn bản
+ Một số ứng dụng khác và các sản phẩm cũ
3. Nghiên cứu về mã hóa đối xứng
3.1 Mô hình mã hóa đối xứng
Một mô hình mã hóa đối xứng có năm bộ phận hợp thành
Plaintext: là thông điệp đọc được hoặc dữ liệu để nạp cho thuật toán như đầu vào.
Thuật toán mã hóa: thi hành các thay thế và dịch chuyển cần thiết đối với
plaintext.
Mật khóa: khóa bí mật, cũng là đầu vào của thuật toán mã hóa. Khóa là một giá
trị độc lập với plaintext và thuật toán. Thuật toán sẽ đưa ra kết quả khác tùy thuộc
vào nội dung khóa đã sử dụng. Sự thay thế và chuyển dịch đúng đắn của thuật
toán tùy thuộc vào mật khóa.

Ciphertext: là thông điệp đã được đổi tại đầu ra của thuật toán. Nó phụ thuộc vào
plaintext và mật khóa. Cho trước một thông điệp, hai mật khóa khác nhau sẽ đưa
ra hai ciphertext khác nhau. Ciphertext là một dáng vẻ ngẫu nhiên nhìn thấy được
của thông điệp hay dữ liệu, nhưng không thể hiểu được nội dung.
Thuật toán giải mã: là thuật toán mà về bản chất là ngược lại với quá trình thi
hành của thuật toán mã hóa. Nó nhận ciphertext và mật khóa, và đưa ra văn bản
gốc.
Có hai yêu cầu bảo mật khi sử dụng mã hóa qui ước:
1 . Chúng ta cần một thuật toán mã hóa mạnh. Ít nhất, chúng ta mong muốn thuật
toán phải bảo đảm được rằng một kẻ tò mò nào đó biết được thuật toán và truy
xuất vào một hay nhiều đoạn ciphertext cũng không thể giải mã hay tìm được mật
khóa. Yêu cầu này thường được phát biểu trong một dạng đanh thép hơn: Địch
thủ không thể giải mã được ciphertext hay không thể khám phá ra mật khóa kể cả
khi hắn có chiếm được một số ciphertext cùng với một số plaintext mà đã tạo ra
ciphertext.
2. Người gửi và người nhận phải nhận được các bản sao mật khóa một cách an
toàn và phải giữ chúng bí mật. Nếu kẻ nào đó khám phá được mật khóa và biết
thuật toán, tất cả giao dịch sử dụng khóa này sẽ bị phơi bày.
Chúng ta giả thiết rằng không thể giải mã một thông điệp dựa trên cơ sở
của ciphertext cộng với các kiến thức về thuật toán mã hóa và giải mã. Nói cách
khác, chúng ta không cần giữ bí mật thuật toán, mà chỉ cần giữ bí mật đối với mật
khóa. Đặc điểm này của mã hóa đối xứng là cái mà làm cho nó được sử dụng rộng
rãi. Sự thực rằng không cần thiết phải giữ kín thuật toán, có nghĩa rằng, các nhà
sản xuất có thể được phép phát triển các chip thi hành các thuật toán mã hóa và
giải mã với giá thành thấp. Các chip này cung cấp rộng rãi và phối hợp với các
sản phẩm khác. Với việc sử dụng mã hóa đối xứng, nguyên tắc bảo mật là duy trì
tính bí mật của mật khóa. Chúng ta hãy tiếp cận gần hơn với các bản chất thành
phần của một hệ thống mã hóa đối xứng. Một nguồn đưa ra một thông điệp dạng
plaintext, X = [X1, X2, , XM]. M phần tử của X là các ký tự trong một bảng
chữ cái hữu hạn nào đó. Nói chung, bảng chữ cái tiếng Anh chứa 26 chữ hoa.

Ngày nay, bảng chữ cái nhị phân {0, 1} thường được sử dụng. Để mã hóa, một
mật khóa có dạng K = [K1, K2, , KJ] được sinh ra. Nếu khóa này được phát
sinh bởi nguồn phát thông điệp, thì nó cũng phải được, bằng một kênh bảo mật
nào đó, giao tới đích. Một sự lựa chọn khác là, một bên tin cậy thứ ba sẽ sinh mật
khóa và bí mật giao nó cho cả hai bên giao dịch là nguồn và đích.
Với thông điệp X và mật khóa K đóng vai trò đầu vào, thuật toán mã hóa thiết lập
ciphertext dưới dạng Y = [Y1, Y2, , YN]. Chúng ta có thể viết quá trình mã hóa
này theo dạng
Y = E(K, X)
Ký hiệu này biểu thị rằng Y được tạo ra bằng cách sử dụng thuật toán mã hóa E là
hàm sử dụng các đối số gồm plaintext X và mật khóa K.
Về phía đối tác, người nhận mong muốn, với việc sở hữu mật khóa họ, sẽ đủ khả
năng nghịch đảo quá trình mã hóa để nhận lại được thông điệp gốc X =D(K , X).
Một kẻ tọc mạch nếu có khả năng quan sát được Y – nhưng không biết K hay X –
có thể sẽ cố mọi cách để thu được K hay X, hay cả hai. Giả sử là hắn biết cả các
thuật toán mã hóa (E) và giải mã (D); và, nếu hắn chỉ quan tâm đến mỗi thông
điệp này, thì mọi cố gắng sẽ giành cho việc khôi phục X bằng cách tạo ra một
plaintext dự đoán

X
. Nhưng thường thì đối phương không chỉ dừng lại ở đó, hắn
cũng rất quan tâm đến khả năng đọc được các thông điệp sau này nữa, khi đó, hắn
sẽ cố gắng phục hồi cho được mật khóa, và có thể y sẽ tạo ra được một khóa dự
đoán

K
.
Mã hóa (Cryptography)
Các hệ thống mã hóa bao giờ cũng đặc trưng bởi ba thứ nguyên độc lập:
1. Phương pháp biến đổi plaintext sang ciphertext. Tất cả các thuật toán mã

hóa đều dựa trên hai nguyên tắc cơ bản: thay thế, mỗi phần tử của plaintext (bit,
ký tự, hay nhóm các bit hoặc nhóm các ký tự) được ánh xạ đến phần tử khác; và,
hoán vị, các phần tử trong plaintext được sắp xếp lại. Yêu cầu cơ bản là không
mất thông tin (tức là, tất cả các hành động đều phục hồi được). Hầu hết các hệ
thống, thường gọi là các hệ thống sản phẩm, bao gồm nhiều giai đoạn thay thế và
hoán vị.
2. Số mật khóa sử dụng: Nếu cả người gửi và người nhận sử dụng cùng một mật
khóa, thì hệ thống gọi là mã hóa đối xứng, khóa đơn, mật khóa, hay mã hóa qui
ước. Nếu người gửi và người nhận dùng các khóa khác nhau, thì hệ thống được
gọi là bất đối xứng, hai khóa, hay mã hóa khóa-chung.
3. Cách thức gia công plaintext: Một tiến trình mã hóa khối (block cipher) thì
đầu vào cho mỗi lần thực hiện gồm một khối các phần tử, và cũng đưa ra một
khối mật mã tương ứng. Một tiến trình mã hóa luồng (stream cipher) có đầu vào
liên tục, xử lý mỗi lần một phần tử và cũng kết xuất một phần tử tương ứng.
Phân tích Giải mã (Cryptanalysis)
Rất đặc trưng, mục tiêu của một cuộc tấn công vào hệ thống mã hóa là cố
giành cho được mật khóa, để rồi sau đó dễ dàng phục hồi plaintext của một
ciphertext đơn. Có hai phương pháp chung để tấn công một hệ thống mã hóa quy
ước:
Phân tích mã: các tấn công giải mã dựa trên cấu trúc tự nhiên của thuật toán,
cộng với vài kiến thức nào đó về các tính chất chung của plaintext hay dựa trên
các cặp plaintext-ciphertext mẫu. Kiểu tấn công này khai thác đặc trưng của thuật
toán để cố suy luận plaintext cụ thể hay suy luận ra mật khóa đang dùng.
Tấn công thô bạo brute-force: Kẻ tấn công thử tất cả các khả năng có thể của
mật khóa trên một phần của plaintext cho đến khi hắn đạt được điều gì đó mà hắn
có thể nhận thức được. Trung bình, để thành công, một nửa khả năng có thể của
mật khóa phải được thử.
Nếu một trong hai cách tấn công trên thành công trong việc suy luận mật
khóa, thì hậu quả tất yếu là: Tất cả các phần còn lại của thông điệp và những
thông điệp tương lai vẫn dùng mật khóa đó sẽ lộ diện.

Trước hết, chúng ta xem xét vấn đề giải mã, rồi sẽ thảo luận các tấn công thô bạo.
Bảng 1 tóm tắt các kiểu tấn công giải mã dựa trên một lượng thông tin thu
được bởi kẻ giải mã. Vấn đề phức tạp nhất trong giải mã là chỉ có được
ciphertext. Trong một số trường hợp, kể cả thuật toán cũng không biết, nhưng
chúng ta vẫn cứ giả thiết rằng đối phương biết thuật toán mã hóa đã dùng. Một
khả năng tấn công trong các tình huống này là phương pháp brute-force, thử tất cả
khả năng của mật khóa. Nếu kích thước khóa rất lớn, kiểu tấn công này sẽ không
thực tế. Do đó, đối phương phải dựa vào phân tích ciphertext, thông thường là áp
dụng các hình thức kiểm tra thống kê cho nó. Để sử dụng phương pháp này, đối
phương phải có một vài ý niệm chung chung về plaintext mà nó đáng che giấu,
chẳng hạn như thông điệp dưới dạng tiếng Anh, hay Pháp, một tập tin EXE, một
tập tin nguồn Java, một tập tin tài chính v.v…
Bảng 1. Các kiểu tấn công vào các thông điệp mã hóa
Kiẻu tấn công Thông tin cần giải mã
Chỉ có ciphertext Thuật toán mã hóa
Ciphertext
Đã biết plaintext Thuật toán mã hóa
Ciphertext
Một hay nhiều cặp plaintext-ciphertext
cùng với mật khóa
Plaintext lựa
chọn
Thuật toán mã hóa
Ciphertext
Thông điệp dưới dạng plaintext được chọn
bởi người giải mã, cùng với ciphertext
tương ứng sinh ra với mật khóa
Ciphertext lựa
chọn
Thuật toán mã hóa

Ciphertext
Ciphertext thường gặp chọn bởi kẻ giải
mã, cùng với plaintext đã được giải mã
tương ứng sinh ra cùng với mật khóa
Văn bản lựa chọn Thuật toán mã hóa
Ciphertext
Thông điệp dạng plaintext được chọn bởi
kẻ giải mã, cùng với ciphertext tương ứng
sinh ra cùng với mật khóa
Các ciphertext thường gặp lựa chọn bởi kẻ
giải mã, cùng với plaintext đã được giải
mã sinh cùng với mật khóa

×