Trao đổi khoá tự động trong TransCrypt

Một phần của tài liệu đề tài phần mềm bảo mật mạng dùng giao thức ip quyển 4a các phần mềm bảo mật gói ip trên hệ điều hành linux (Trang 170 - 171)

D. GIảI PHáP MậT Mã

8. Trao đổi khoá tự động trong TransCrypt

KEX là một ch−ơng trình trao đổi khố theo thuật toán Diffie-Hellman, kèm theo việc trao đổi chữ ký xác thực. Có thể coi thủ tục này an tồn nh− thủ tục STS bởi vì nó đảm bảo đầy đủ các điều kiện mà thủ tục STS nêu ra. Khố tạo ra có thể đ−ợc sử dụng cho các thuật tốn mã hố khác nhau. Các ch−ơng trình mã hóa sẽ đọc khố từ file đ−ợc tạo ra bởi `kex` để mã hoá dữ liệu.

Để thực hiện việc trao đổi khóa tự động trong TransCrypt, chúng tơi phải sửa đổi mã nguồn của ch−ơng trình KEX. ý t−ởng của chúng tơi là, sau khi chạy

ch−ơng trình `kex` để thoả thuận khoá, khoá sẽ đ−ợc l−u vào một file. Chẳng hạn, trên máy HOSTNAME2 file này có dạng nh− sau:

arg=HOSTNAME1 peer=128.3.0.3 me=128.3.0.5 key=<64 byte>

Sau đó ch−ơng trình daemon của TransCrypt sẽ đ−ợc gọi để đ−a các tham số trong đó có khố từ file này vào module của TransCrypt.

Việc gọi daemon đ−ợc thực hiện trong hàm ready() của file negotiate.c:

{

#define TRANS_DAEMON "/usr/sbin/transcryptd-cb"

char ba[16];

char *na[]={TRANS_DAEMON, "-o", buf, "-s", ba, NULL}; if (KEXsocket>=0) {

snprintf(ba, sizeof(ba), "%d", KEXsocket); } else {

/* should not happen */

Log(LOG_ERR, "internal KEXsocket<0"); na[3]=NULL;

}

execv(TRANS_DAEMON, na);

Giả sử chúng ta đang ở trên máy HOSTNAME1 thì dịng lệnh

execv(TRANS_DAEMON, na) thực chất là gọi lệnh:

"/usr/sbin/transcryptd-cb -o /etc/keyEx/run/HOSTNAME2 - s KEXsocket"

Lệnh này hoàn toàn t−ơng đ−ơng với việc chạy TransCrypt ở chế độ manual (khoá tĩnh).

Và nh− vậy, cứ mỗi lần`kex` đ−ợc gọi thì nó sẽ tạo ra khố mới và gọi daemon để nạp khoá mới cho module mã dịch TransCrypt

Một phần của tài liệu đề tài phần mềm bảo mật mạng dùng giao thức ip quyển 4a các phần mềm bảo mật gói ip trên hệ điều hành linux (Trang 170 - 171)