Bảo mật dùng khoá đối xứng
Mã đối xứng truyền thống được dùng để giữ bí mật bản tin - Xét kịch bản tiêu biểu o Các máy trạm ở một mạng LAN truy cập vào các máy trạm và máy chủ ở một mạng LAN khác o Các mạng được kết nối sử dụng chuyển mạch và ...
Mã đối xứng truyền thống được dùng để giữ bí mật bản tin
- Xét kịch bản tiêu biểu
o Các máy trạm ở một mạng LAN truy cập vào các máy trạm và máy chủ ở một mạng LAN khác
o Các mạng được kết nối sử dụng chuyển mạch và đường truyền (switches/routers)
o Với các đường truyền vật lý hoặc liên kết vô tuyến/vệ tinh
- Xét việc tấn công và cách đặt mã trong kịch bản trên
o Điều tra từ một máy trạm khác
o Sử dụng kết nối đến mạng hoặc máy chủ đề tìm kiếm
o Sử dụng kết nối ngoài để xâm nhập và điều tra
o Theo dõi và/hoặc làm thay đổi việc truyền kết nối ngoài. Có hai phương pháp chính xác định chỗ đặt mã
- Mã kết nối (Link Encription)
o Mã xảy ra độc lập trên mỗi kết nối.
o Suy ra cần phải giải mã truyền tin giữa các kết nối
o Đòi hỏi nhiều thiết bị và các cặp khoá
- Mã đầu cuối (End to end Encription) AES là mã mới thay thế
o Mã xảy ra giữa điểm gốc và điểm đích
o Cần thiết bị tại mỗi đầu cuối và khoá chia sẻ
Khi dùng mã đầu cuối cần phải để thông tin đầu của nó rõ ràng, vì như vậy mạng mới định hướng đúng đắn thông tin. Vì vậy tuy nội dung tin được bảo vệ, nhưng khuôn dòng tin truyền thì không. Tốt nhất là muốn bí mật cả hai. Mã đầu cuối bảo vệ thông tin nội dung trên cả đường truyền và cung cấp danh tính. Còn mã kết nối bảo vệ luồng truyền khỏi việc theo dõi.
- Vị trí mã
Có thể đặt mã ở nhiều tầng khác nhau trong mô hình Hệ thống truyền thông mở OSI
o Mã kết nối thực hiện ở tầng 1 hoặc 2.
o Mã đầu cuối có thể thực hiện ở tầng 3, 4, 6, 7
o Dịch chuyển đến tầng càng cao, càng ít thông tin được mã hoá, nhưng càng an toàn hơn do người sử dụng giữ bí mật đuợc khoá, tuy nhiên phức tạp hơn với nhiều đối tượng và khoá hơn.
- Thám mã thông tin truyền
Thám mã là theo dõi dòng thông tin truyền giữa hai đối tác:
o Được dùng cả trong quân sự và thương mại
o Có thể được dùng để tạo kênh giám sát
o Mã kết nối che lấp chi tiết đầu tin, nhưng xét trên toàn mạng và ở các đầu cuối nó vẫn nhìn thấy được.
Bộ đệm truyền có thể che được dòng tin, nhưng với phải truyền liên tục với tần suất truyền hầu như không đổi theo thời gian.
Sơ đồ đối xứng đòi hỏi cả hai đối tác chia sẻ khoá bí mật chung. Vấn đề đặt ra là làm sao phân phối khoá mật này như thế nào. Thông thường các hệ mật thường bị sập vì bị bẻ khoá trong sơ đồ phân phối khoá.
Đối với hai đối tác A và B cho trước có một số cách phân phối khoá khác nhau:
2. A lựa chọn khoá và truyền tay cho B
3. Đối tác thứ ba có thể chọn khoá và phân phối cho A và B
4. A và B trao đổi trước có thể dùng khoá trước để mã khoá mới
5. A và B trao đổi mật với đối tác thứ 3 là C, C chuyển tiếp giữa A và B
Kịch bản phân phối khoáPhân loại khoá
Thông thường khoá phân loại như sau:
- Khoá phiên (section key):
o Khoá tạm thời.
o Dùng để mã hoá dữ liệu giữa nhóm người sử dụng.
o Cho một phiên logic và sau đó bỏ đi.
- Khoá chính (master key):
o Dùng để mã các khoá phiên.
o Chia sẻ giữa người sử dụng và trung tâm phân phối khoá.
Vấn đề phân phối khoá
Đối với mạng lớn đòi hỏi phân cấp Trung tâm phân phối khoá KDC, nhưng cần phải tạo
tin cậy cho nhau, giữa người sử dụng với Trung tâm và các Trung tâm với nhau. Thời gian sống của khoá bộ phận cần được hạn chế để cho an toàn hơn. Sử dụng phân phối khoá tự động thay mặt người dùng, nhưng phải có hệ thống tin cậy, các khoá cấp phát được sinh ra càng ngẫu nhiên càng tốt. Cần phải có hệ thống phân phối khoá phân tán và phân cấp. Đồng thời cần hỗ trợ kiểm soát mục đích sử dụng khoá.
Có nhiều ứng dụng của số ngẫu nhiên trong lý thuyết mã. Chẳng hạn, khoá xác thực dùng trong các thủ tục xác thực chống trì hoãn hoặc khoá phiên, khoá dòng cho bộ đệm một lần. Do đó cần có cơ chế sinh khoá công khai
Trong nhiều trường hợp đặc biệt các giá trị này cần phải
o Ngẫu nhiên về mặt thống kê, có phân phối đều, độc lập.
o Không đoán trước được các giá trị tiếp theo nếu dựa vào các giá trị trước đó. Sinh số ngẫu nhiên tự nhiên:
Nguồn cung cấp tốt nhất là ngẫu nhiên tự nhiên trong thế giới thực. Thường người ta tìm một sự kiện gì đó thường gặp nhưng ngẫu nhiên. Nói chung cần phải bằng cách nào đó thực hiện được, chẳng hạn: sóng radio, âm radio, nhiệt trong diot,…Bắt đầu quan sát cái gì xảy ra trong CPU mới. Ta gặp vấn đề thiên lệch và phân bố không đều của các tín hiệu, do đó phải điều chỉnh:
o Cần phải bù đắp lại khi tạo mẫu và sử dụng.
o Tốt nhất chỉ sử dụng một số bit ồn nhất trong mỗi mẫu.
Nguồn số ngẫu nhiên đã đăng
Có một số ít sưu tầm về số ngẫu nhiên đã đăng. Rand Co trong năm 1955 đã in hơn 1 triệu số ngẫu nhiên. Được sinh bằng cách sử dụng bánh quay số điện tử. Đã được sử dụng trong thiết kế một số mã như Khafre. Trước đó 1927, Tippet đã in một bộ sưu tập các số ngẫu nhiên. Vấn đề là ở chỗ:
o Số lượng hạn chế các số ngẫu nhiên
o Đã được biết và sử dụng trong nhiều ứng dụng
Bộ sinh số giả ngẫu nhiên (PRNG)
Dùng kỹ thuật thuật toán xác định để tạo số ngẫu nhiên. Mặc dù không ngẫu nhiên thật, nhưng phải nhiều phép thử để kiểm tra đảm bảo “tính ngẫu nhiên”. Các số như vật được biết đến như những số giả ngẫu nhiên. Có các bộ sinh số giả ngẫu nhiên PRNG.
Bộ sinh đồng dạng tuyến tính
Mong muốn sinh một dãy số ngẫu nhiên. Lấy ba số a, c, m và một số đầu tiên của dãy. Kỹ thuật lặp chung được sử dụng là tạo số tiếp theo dựa vào số trước đó:
Xn+1 = (aXn + c) mod m
Cho trước các số và tham số phù hợp có thể sinh ra dãy số tựa ngẫu nhiên khá dài. Tiêu chuẩn phù hợp cần có là
o Hàm sinh ra giá trị lấp đầy chu kỳ
o Dãy sinh ra phải ngẫu nhiên
o Cài đặt hiệu quả với số học 32 bit
o Lưu ý rằng kẻ thám mã phải khôi phục lại dãy nếu cho trước một số ít các giá trị
Sử dụng mã khối như bộ sinh số giả ngẫu nhiên
Có thể sử dụng mã khối để sinh số giả ngẫu nhiên. Sử dụng chế độ đếm
Xi = EKm[i]
Sử dụng chế độ đầu ra phản hồi
Xi = EKm[Xi-1]
Trong ANSI X9.17 PRNG: sử dụng thời gian, ngày tháng và một số thông tin mồi và mã 3 DES để sinh mồi mới và số ngẫu nhiên.
Bộ sinh Blum Blum Shub
Dựa vào thuật toán mã khoá công khai. Sử dụng bit ít quan trọng nhất từ đẳng thức sau:
x i + 1 size 12{x rSub { size 8{i+1} } } {} = x i 2 size 12{x rSub { size 8{i rSup { size 6{2} } } } } {} mod n
trong đó n=p.q, và các số nguyên tố p, q=3 mod 4. Ở đây đảm bảo tính chất: không đoán trước được bit tiếp theo. Tính an toàn dựa trên độ khó của bài toán phân tích N ra thừa số. Không đoán trước được nếu cho chạy truớc một số lần các bít. Tuy nhiên chậm, vì phải dùng các số rất lớn. Đặc biệt rất chậm cho việc mã hoá, nên chỉ dùng cho việc sinh khoá.
Bài tập
Viết hai dãy số sinh bởi các phương trình sau:
Xn+1 = (6Xn ) mod 13
Xn+1 = (7Xn ) mod 13
Chứng tỏ cả hai dãy trên đều có chu kỳ đầy đủ. Dãy nào tỏ ra có vẻ ngẫu nhiên hơn.
Hãy viết các dãy số theo phương trình sau :
xi+1 = xi2 size 12{x rSub { size 8{i rSup { size 6{2} } } } } {} mod 21
và
xi+1 size 12{x rSub { size 8{i+1} } } {}= xi2 size 12{x rSub { size 8{i rSup { size 6{2} } } } } {}mod 33
Có nhận xét gì về tính ngẫu nhiên của chúng.
Lập sơ đồ khối mã hoá DES. Nêu các đặc trưng của DES.
Lập sơ đồ khối mã hoá AES. Nêu các đặc trưng của AES.
Mô tả sơ đồ dùng bên thứ ba phân phối khoá mật giữa hai người sử dụng. Nêu các ưu nhược điểm của sơ đồ đó.
Có thể dùng khoá mật để tạo nên chữ ký điện tử được không, nghĩa là có một dấu hiệu gì đó mà chỉ có người gửi thực hiện được gắn với nội dung của bản tin. Người nhận đọc được bản tin và có thể kiểm tra để tin tưởng rằng người gửi đã viết nội dung bản tin đó.
Mô tả các đặc trưng mã khối, chuẩn mã DES, chuẩn mã nâng cao AES.