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

  • Số trang: 53 |
  • Loại file: PDF |
  • Lượt xem: 1043 |
  • Lượt tải: 11
minhminh

Đã đăng 411 tài liệu

Mô tả:

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ụ email , 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 mật mã biến đổi, của một đơn vị dữ liệu mà cho phép ngƣời 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 dữ liệu. Phát hiện sự kiện 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. 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.
- Xem thêm -