NGHIÊN CỨU MỘT SỐ PHƯƠNG THỨC PHÂN PHỐI VÀ THỎA THUẬN KHÓA Nội dung Luận văn gồm có 4 chương : Chương 1 : Tổng quan về phân phối và thỏa thuận khóa Chương 2 : Một số thủ tục phân phối khóa Chương 3 : Một số giao thức thỏa thuận khóa Chương 4 : Mô phỏng các sơ đồ
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
*******************
NGUYỄN THỊ KIM OANH
NGHIÊN CỨU MỘT SỐ PHƯƠNG THỨC PHÂN PHỐI VÀ
THỎA THUẬN KHÓA
Chuyên ngành: KỸ THUẬT VIỄN THÔNG
Mã số: 60.52.02.08
TÓM TẮT LUẬN VĂN THẠC SĨ
HÀ NỘI - 2014
Trang 2Luận văn được hoàn thành tại:
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Người hướng dẫn khoa học: GS.TS NGUYỄN BÌNH
Phản biện 1: … ……… Phản biện 2: ………
Luận văn sẽ được bảo vệ trước Hội đồng chấm luận văn thạc sĩ tại Học viện Công nghệ Bưu chính Viễn thông
Vào lúc: giờ ngày tháng năm
Có thể tìm hiểu luận văn tại:
- Thư viện của Học viện Công nghệ Bưu chính Viễn thông
Trang 31
LỜI NÓI ĐẦU
Hiện nay, ở các nước phát triển cũng như đang phát triển, mạng máy tính
và Internet đang ngày càng đóng vai trò thiết yếu trong mọi lĩnh vực hoạt động của xã hội, và một khi nó trở thành phương tiện làm việc trong các hệ thống thì nhu cầu bảo mật thông tin được đặt lên hàng đầu Nhu cầu này không chỉ có ở các bộ máy An ninh, Quốc phòng, Quản lý Nhà nước, mà đã trở thành cấp thiết trong nhiều hoạt động kinh tế xã hội: tài chính, ngân hàng, thương mại…thậm chí trong cả một số hoạt động thường ngày của người dân (thư điện tử, thanh toán tín dụng,…) Do ý nghĩa quan trọng này mà những năm gần đây công nghệ mật mã và an toàn thông tin đã có những bước tiến vượt bậc và thu hút sự quan tâm của các chuyên gia trong nhiều lĩnh vực khoa học, công nghệ
Chúng ta thấy, trong hệ mật mã cần phải sử dụng khóa mật (ngoại trừ hàm băm) Chiều dài khóa thì phải đủ lớn, và bản thân khóa cũng phải được chọn lựa ngẫu nhiên và phân bố đều từ không gian khóa Nếu đảm bảo được điều kiện này thì sẽ tránh được tấn công đơn giản nhất, như trên cơ sở dự đoán khóa mật hay trên cơ sở vét cạn khóa Khi mà chiều dài khóa không đủ lớn thì
hệ mật dù có phức tạp đến đâu cũng không thể đảm bảo được độ an toàn cao
Sử dụng thuật toán mật mã an toàn là điều cần thiết, nhưng chưa đủ để đảm bảo
độ an toàn cao của hệ mật
Thông thường thì thám mã thường tấn công lên hệ thống khóa hơn là tấn công trực tiếp lên thuật toán của hệ mật Do vậy, điều khiển hệ thống khóa là một thành phần quan trọng xác định được độ an toàn của hệ mật sử dụng Cũng
chính vì lý do đó mà tôi đã chọn đề tài : “Nghiên cứu một số phương thức
phân phối và thỏa thuận khóa” làm Luận văn tốt nghiệp
Trang 42
Nội dung Luận văn gồm có 4 chương :
Chương 1 : Tổng quan về phân phối và thỏa thuận khóa Chương 2 : Một số thủ tục phân phối khóa
Chương 3 : Một số giao thức thỏa thuận khóa
Chương 4 : Mô phỏng các sơ đồ
Trang 53
CHƯƠNG I TỔNG QUAN VỀ PHÂN PHỐI VÀ THỎA THUẬN KHÓA
Hình 1.1 : Quá trình mã hóa và giải mã [1]
Trang 64
Ƣu và nhƣợc điểm của hệ mật mã khóa đối xứng
Hệ mật mã DES
Ƣu nhƣợc điểm của hệ mật mã khóa công khai
Hệ mật RSA
1.2.Tổng quan về điều khiển khóa
Điều khiển khóa trong hệ mật gồm các chức năng sau:
1.2.1 Sơ đồ phân phối khóa
1.2.2 Trung tâm phân phối khóa
Trung tam phan phoi khoa
Trang 75
Trung tâm phân phối cung cấp cho tất cả các thành viên các khóa mật khác nhau Ki (i=1,2,…,N), các thành viên sử dụng khóa này chỉ liên lạc với trung tâm mà thôi Khóa mật chung giữa hai bên i và j được thực hiện như sau:
- Bên Ai muốn liên kết với bên Aj, thì Ai chuyển đến trung tâm khóa liên
hệ của mình là kij, khóa này được mã hóa bằng ki
- Trung tâm nhận được bản mã từ Ai sẽ giải mã bằng khóa ki, nhận thấy chỉ thị cần liên kết Ai với Aj, thì trung tâm thực hiện mã hóa kij bằng kj, sau
đó chuyển bản mã này đến Aj
- Aj giải mã bằng khóa kj của mình và nhận được khóa kij
- Sau bước liên kết mật này thì mọi việc sau đó có thể thực hiện theo kênh công cộng
1.2.3 Phân phối và thỏa thuận khóa trong hệ mật
Chúng ta phân biệt giữa sơ đồ phân phối khóa và giao thức thỏa thuận khóa:
- Phân phối khóa là một nhóm chọn khóa mật, sau đó truyền nó đến các nhóm khác
- Thỏa thuận khóa là giao thức gồm tổ hợp các thao tác (lệnh) giữa hai hay nhiều nhóm liên kết với nhau cùng thiết lập một khóa mật bằng cách liên lạc trên kênh công khai Trong sơ đồ thỏa thuận khóa, giá trị khóa được xác định như hàm của các đầu vào do cả hai nhóm cung cấp
1.3.Tổng kết chương I
Trang 8Hình 2.1: Sơ đồ phân phối khoá của Blom (k =1) [4]
1 Số nguyên tố p công khai, còn với mỗi người sử dụng U, phần tử rU ZP là công khai Phần tử rU phải khác biệt
2 TA chọn 3 phần tử ngẫu nhiên a, b, c ZP (không cần khác biệt) và thiết lập đa thức
f(x, y) = a + b(x + y) + cxy mod p
3 Với người sử dụng U, TA tính đa thức:
gU(x) = f(x, rU) mod p
và truyền gU(x) đến U trên kênh an toàn
U tính KU,V như sau : f(rU, rV) = gU(rV)
V tính KV,U như sau : f(rU,rV) = gV(rU)
Trang 9Trong đó: a i j, Z p(0 i k, 0 j k)và ai,j = aj,i với mọi i, j
Các phần còn lại của giao thức như sơ đồ phân phối với k =1
2.1.2 Sơ đồ phân phối khóa trước Diffie – Hellman
Hình 2.2: Sơ đồ phân phối khóa trước của Diffie-Hellman [4]
- Số nguyên tố p và phần tử nguyên thủy *
Trang 108
Mức độ an toàn :
Với loại tấn công chủ động, không cần lo lắng nhiều, vì:
Chữ kí của TA trên các dấu xác thực của người sử dụng ngăn chặn hiệu quả W khỏi biến đổi bất kỳ thông tin nào trên dấu xác thực của người sử dụng nào đó
Với loại tấn công thụ động, cũng không cần lo lắng nhiều, vì:
Người dùng W (khác U,V) “khó” có thể tính được khoá chung KU,V của U,V Kể cả khi biết a U mod
p
và a V mod
p
(song không phải aU cũng không phải
aV) thì cũng “khó” có thể tính được khoá chung của U và V là , a a U V mod
U V
Bài toán này được gọi là bài toán Diffie-Hellman
Hình 2.3: Bài toán Diffie-Hellman [4]
Trang 119
Hình 2.4: Truyền khoá session trong Kerboros [4]
2.3 Tổng kết chương II
1 U hỏi TA khóa session để liên lạc với V
2 TA chọn một khóa session ngẫu nhiên K, thời gian hệ thống T và thời gian tồn tại L
Trang 12Giao thức trao đổi khóa Diffie-Hellman này dễ bị tổn thương trước đối
phương tích cực – những người sử dụng cách tấn công “kẻ xâm nhập vào giữa cuộc” Đó là tình tiết của vở “The Lucy show”, trong đó nhân vật Vivian Vance
1 Người dùng U chọn aU ngẫu nhiên, 0 aU p 2
Trang 1311
đang dùng bữa tối với người bạn, còn Lucille Ball đang trốn dưới bàn Vivian
và người bạn của cô đang cầm tay nhau dưới bàn Lucy cố tránh bị phát hiện đã nắm lấy tay của cả hai người, còn hai người trên bàn vẫn nghĩ rằng họ đang cầm tay nhau
Cuộc tấn công kiểu “kẻ xâm nhập vào giữa cuộc” trên giao thức trao đổi khoá Diffie-Hellman hoạt động cũng như vậy W sẽ ngăn chặn các bức điện trao đổi giữa U và V và thay thế bằng các bức điện của anh ta theo như sơ đồ dưới đây :
Tại thời điểm cuối giao thức, U thiết lập thực sự khóa mật a a U 'V cùng với
W, còn V thiết lập khóa mật a'U a V với W Khi U cố giải mã bức điện để gửi cho
V, W cũng có khả năng giải mã nó song V thì không thể, (tương tự tình huống nắm tay nhau nếu V gửi bức điện cho U)
Cải tiến: Bổ sung xác thực danh tính U và V
Điều cơ bản đối với U và V là bảo đảm rằng, họ đang trao đổi khoá cho nhau mà không có W Trước khi trao đổi khoá, U và V có thể thực hiện những giao thức tách bạch để thiết lập danh tính cho nhau
Trang 15+ Tương tự, W không thể thay ( a U, a'V )
U
sig bằng ( a'U, a V)
U sig do W không biết thuật toán kí của U
Giao thức STS không đưa ra sự khẳng định khóa, tức là yV được gửi tới
U, yU được gửi tới V nhưng chưa bảo đảm thật an toàn
Tuy nhiên, có thể bảo đảm an toàn yV và yU bằng cách:
Trang 1614
Hình 3.3: Giao thức thỏa thuận khóa MTI [4]
Mức độ an toàn :
Đây là một mối nguy hiểm có thể xem xét: Khi không dùng chữ kí trong
suốt quá trình thực hiện giao thức, có thể xuất hiện tình huống không có sự bảo
vệ nào trước tấn công xâm nhập vào điểm giữa Quả thực, có khả năng W có thể chọn các giá trị mà U và V gửi cho nhau Dưới đây mô tả một tình huống quan trọng có thể xuất hiện:
Trang 1715 Trong trường hợp này, U và V sẽ tính các khoá khác nhau:
Tuy nhiên, W không thể tính toán ra khoá của U và V vì chúng đòi hỏi phải biết số
mũ mật a U và aV tương ứng Thậm chí ngay cả khi U và V tính ra các khoá khác nhau (mà dĩ nhiên là không dùng chúng) thì W cũng không thể tính được khoá nào trong số đó
3.4 Thoả thuận khoá dùng các khoá tự xác nhận
Hình 3.4: Nhận khoá tự xác nhận từ TA [4]
1.U chọn số mũ mật aU và tính:
mod
U a U
2.U đưa aU và bU cho TA
3.TA tính:
pU = (bU - ID(U))d mod n 4.TA đưa pU cho U
Trang 1816
Hình 3.5: Giao thức thoả thuận khoá của Girault [4]
Mức độ an toàn :
Xem xét cách các khoá tự xác thực bảo vệ chống lại một kiểu tấn công:
Vì các giá trị bU, pU và ID(U) không được TA kí nên không có cách nào
để ai đó xác minh trực tiếp tính xác thực của chúng Giả thiết thông tin này bị
W - người muốn giả danh U - giả mạo (tức là không hợp tác với TA để tạo ra nó) Nếu W bắt đầu bằng ID(U) và giá trị giả b’U Khi đó không có cách nào để
cô ta tính được số mũ a’U tương ứng với b’U nếu bài toán logarithm rời rạc khó giải Không có a’U, W không thể tính được khoá
Tình huống tương tự nếu W hoạt động như kẻ xâm nhập giữa cuộc W sẽ
có thể ngăn được U và V tính ra khoá chung, song W không thể đồng thời thực hiện các tính toán của U và V Như vậy, sơ đồ cho khả năng xác thực ngầm như giao thức MTI
1 U chọn rU ngẫu nhiên và tính
mod
U
r U
U ( ( )) mod
Trang 1917
3.5 Ứng dụng thỏa thuận khóa Diffie-Hellman vào PGPfone
PGPfone là một phần mềm cho phép ta chuyển một máy tính thành một máy mã thoại Nó sử dụng các thủ tục nén tiếng nói và các thủ tục mã hóa để cho ta khả năng thực hiện hội thoại mật trong thời gian thoại
PGPfone lấy tín hiệu tiếng nói từ microphone sau đó số hóa liên tục, nén,
mã hóa và gửi qua modem tới một người khác cũng dùng PGPfone Mọi thủ tục nén tiếng nói và mã hóa được thỏa thuận một cách linh động và trong suốt nhằm cung cấp một giao diện sử dụng tự nhiên tương tự như sử dụng điện thoại thông thường Các thủ tục mật mã khóa công khai được dùng để thỏa thuận khóa mà không cần một kênh mật
PGPfone không cần bất cứ một kênh mật nào để trao đổi khóa trước, trước khi tiến hành đàm thoại Hai người đàm thoại sẽ thỏa thuận khóa của họ bằng cách dùng thủ tục trao đổi khóa Diffie-Hellman nhằm không để lộ một chút thông tin nào để thám mã sử dụng và cho phép hai bên đàm thoại sử dụng khóa chung để mã hóa và giải mã dòng tín hiệu thoại PGPfone sử dụng chữ ký sinh trắc học (giọng nói) để xác thực việc trao đổi khóa
Kiểm tra chữ ký sinh trắc học trong PGPfone:
PGPfone sẽ chỉ thị một số từ đặc biệt để xác thực cuộc gọi và ta có thể dùng những từ này như một phương tiện đảm bảo rằng không một ai có thể nghe trộm cuộc gọi Ta phải đọc to những từ này cho bên nghe đàm thoại và họ phải đọc chúng trở lại cho ta để xác định rằng cả hai bên cùng có một dãy xác thực được chỉ thị trên màn hình Nếu các từ giống nhau ở cả hai đầu và ta xác nhận rằng đó là giọng của người quen đang đọc các từ xác thực thì ta đã có lý
do xác đáng để tin rằng cuộc gọi là an toàn
Nếu các từ không phù hợp hoặc âm thanh không giống với giọng của người quen đang đọc các từ này thì có thể có “người xâm nhập giữa cuộc” đã
Trang 20 Thỏa thuận số nguyên tố Diffie-Hellman trong PGPfone
Thủ tục thỏa thuận khóa Diffie-Hellman yêu cầu cả hai bên phải thỏa thuận cùng sử dụng một số nguyên tố p và một phần tử nguyên thủy α PGPfone dùng thống nhất α=2 để tăng tốc độ tính toán
Thủ tục Diffie-Hellman dựa trên sự khó khăn của việc tìm các logarit rời rạc theo modulo của một số nguyên tố Đây là khó khăn đối với hầu hết các số nguyên tố Nhưng bằng tìm kiếm có cân nhắc có thể tạo ra các số nguyên tố đã được xử lý để khiến bài toán trở nên dễ dàng hơn Hiển nhiên là ta sẽ phải tránh dùng các số nguyên tố như vậy Tuy nhiên, không có một yêu cầu riêng nào để giữ bí mật số nguyên tố hoặc thay đổi nó một cách thường xuyên Bởi vậy PGPfone coi rằng mỗi bên trước hết sẽ tạo ra tất cả các số nguyên tố mà sẽ được dùng bằng một thuật toán chung Như vậy thì mỗi bên có thể biết được các số nguyên tố tốt
Lý do chính để phải có nhiều số nguyên tố là cần phải có sự cân đối giữa bảo mật và tốc độ Tuy nhiên, có một số người thích dùng các số nguyên tố bí mật Các số này không bao giờ bị lộ trên kênh Điều này sẽ làm bài toán của thám mã khó hơn đôi chút PGPfone cho phép hai bên hình dung ra các số nguyên tố mà họ có chung bằng cách trao đổi các hàm băm của chúng
Tuy nhiên, sơ đồ này vẫn còn để lộ cho bất kỳ người nào trên kênh một loại mã định danh (hàm băm) của các số nguyên tố chưa biết Nếu ta có một số
Trang 2119
nguyên tố bí mật đó thì một ai đó nghe trộm có thể phán đoán rằng chúng ta có các mối liên hệ chặt chẽ cho dù chúng ta không gọi nhau thường xuyên
Để tránh khỏi kiểu phân tích đường truyền như vậy, PGPfone đưa thêm
“mầm” vào các hàm băm của số nguyên tố được gửi Mỗi bên sẽ chọn một giá trị ngẫu nhiên 8 bytes và băm nó vào mỗi số nguyên tố Mầm này được gửi rõ cùng với các hàm băm của các số nguyên tố
Ta có thể sử dụng mầm để băm các số nguyên tố mà ta có và so sánh hàm băm với danh sách mà ta đã nhận được Nếu ta thấy có sự phù hợp thì bên gửi cho ta cũng có số nguyên tố đó Cũng tương tự như vậy đối với bên liên lạc với
ta Thủ tục đơn giản như sau : Tôi gửi cho bạn mầm và các hàm băm và bạn gửi trả lời tôi mầm và các hàm băm của bạn Cả hai yêu cầu có thể gửi đồng thời và rồi lại gửi trả lời lặp lại (thừa), tuy nhiên điều này là vô hại
Công việc còn lại là chọn số nguyên tố trong các số mà hai bên đã có mà
cả hai bên đều có một số sẽ sử dụng Thuật toán đơn giản như sau:
Mỗi bên gửi các hàm băm của các số nguyên tố của mình theo thứ tự giảm dần của mức ưu tiên Như vậy, số nguyên tố mà hàm băm của nó được liệt
kê đầu tiên là số được ưu tiên nhất, số nguyên tố được liệt kê tiếp sau là số được
ưu tiên thứ hai, … Mỗi bên có thể tìm trong các số nguyên tố mà cả hai đều sử dụng số nào là số mà bên này ưu tiên nhất (được liệt kê đầu tiên trong danh sách) và số nào là số bên kia ưa thích nhất Sau đó hai bên chỉ cần chọn giữa hai
số này Để bắt tay bí mật, số được chọn là số có giá trị lớn hơn
Thỏa thuận khóa Diffie-Hellman trong PGPfone
Một khi hai bên liên lạc đã thỏa thuận một số nguyên tố sử dụng p thì bên gọi B sẽ chọn một số ngẫu nhiên bí mật XB và tính :
mod
B
X B
Trang 2220
B sẽ băm YB và gửi hàm băm này cho bên gọi A
Khi A thu được gói này, A sẽ chọn một số ngẫu nhiên bí mật XA rồi tính :
mod
A
X A
A sẽ băm YA và gửi hàm băm này cho bên B
B sẽ gửi trả lời bằng cách gửi YB và A sẽ kiểm tra xem hàm băm có phù hợp không Tương tự, A sẽ gửi YA của mình và B sẽ kiểm tra xem hàm băm có phù hợp không (α được chọn là phần tử nguyên thủy của trường GF(p))
Sau khi các thủ tục trên đã hoàn tất, cả hai bên sẽ tính khóa:
3.6.Tổng kết chương III
Trang 2321
CHƯƠNG IV CHƯƠNG TRÌNH C TÍNH TOÁN KHÓA CHUNG GIỮA CÁC
CẶP NGƯỜI DÙNG 4.1 Sử dụng sơ đồ phân phối khóa trước BLOM với k = 1
- Yêu cầu phần mềm: Turbo C++
- Các thành phần của chương trình:
+ Input: - Số nguyên tố p
- Các phần tử công khai
- Các phần tử ngẫu nhiên
+ Output: Khóa tương ứng giữa những cặp người dùng
4.2 Sử dụng sơ đồ phân phối khóa trước BLOM với k > 1
- Yêu cầu phần mềm: Tubo C++
- Các thành phần của chương trình:
+ Input: - Số lượng người dùng, hệ số k, số nguyên tố p
- Các phần tử công khai và hệ số a ngẫu nhiên bí mật
+ Output: Khóa tương ứng giữa những cặp người dùng
4.3 Sử dụng sơ đồ phân phối khóa trước Diffie-Hellman
- Yêu cầu phần mềm: Turbo C++
- Thành phần của chương trình gồm :
+ Input: - Số nguyên tố p
- α