BAN CƠ YẾU CHÍNH PHỦ BÁO CÁO ĐỀ TÀI NHÁNH “ NGHIÊN CỨU, XÂY DỰNG GIẢI PHÁP BẢO MẬT THÔNG TIN TRONG THƯƠNG MẠI ĐIỆN TỬ” SẢN PHẨM SỐ 3: AN TỒN THƠNG TIN CHO CƠ SỞ DỮ LIỆU Thuộc đề tài : “Nghiên cứu số vấn đề kỹ thuật, công nghệ chủ yếu thương mại điện tử triển khai thử nghiệm – Mã số KC.01.05” Hà nội, tháng năm 2004 néi dung Tæng quan an toàn sở liệu .1 Giíi thiƯu Mét sè kh¸i niƯm CSDL 3.Vấn đề an toàn CSDL KiÓm soát an toàn 12 ThiÕt kÕ CSDL an toµn 30 ThiÕt kÕ CSDL an toµn .34 Giíi thiƯu 34 ThiÕt kÕ DBMS an toµn 35 Giải pháp bảo vệ liệu CSDL 88 Mô hình WinSock 89 Winsock Model .89 Xây dựng DLL Winsock 92 Sù liªn kết Client Server mô hình Winsock .93 Các trạng thái socket 94 X©y dùng Socket an toµn .99 Các yêu cầu thiết kế 99 KiÕn tróc 100 Thùc hiÖn 101 Tho¶ thuËn .104 Chơng trình thử nghiệm 107 Tỉng quan vỊ an toμn th«ng tin sở liệu Giới thiệu Sự phát triển lớn mạnh công nghệ thông tin năm qua đà dẫn đến sử dụng rộng rÃi hệ thống máy tính tổ chức cá nhân công cộng, chẳng hạn nh ngân hàng, trờng học, tổ chức dịch vụ sản xuất Độ tin cậy phần cứng, phần mềm ngày đợc nâng cao với việc liên tục giảm giá, tăng kỹ chuyên môn chuyên viên thông tin sẵn sàng công cụ trợ giúp đà góp phần khuyến khích việc sử dụng dịch vụ máy tính cách rộng rÃi Vì vậy, liệu đợc lu giữ quản lý hệ thống máy tính nhiều Cơ sở liệu sử dụng hệ quản trị sở liệu đà đáp ứng đợc yêu cầu lu giữ quản lý liệu Nhiều phơng pháp luận thiết kế sở liệu đà đợc phát triển nhằm hỗ trợ yêu cầu thông tin khác môi trờng làm việc ứng dụng Các mô hình liệu khái niệm lôgíc đà đợc nghiên cứu, với ngôn ngữ thích hợp, công cụ định nghĩa liệu, thao tác hỏi đáp liệu Mục tiêu đa DBMS có khả quản trị khai thác liệu tốt Một đặc điểm DBMS khả quản lý đồng thời nhiều giao diện ứng dụng Mỗi ứng dụng có nhìn sở liệu, có nghĩa có cảm giác khai thác sở liệu Đây yêu cầu quan trọng DBMS, ví dụ sở liệu ngân hàng với khách hàng trực tuyến nó; sở liệu hÃng hàng không với việc đặt vé trớc Xử lý phân tán đà góp phần phát triển tự động hoá hệ thống thông tin Ngày nay, đơn vị xử lý thông tin tổ chức chi nhánh xa giao tiếp với cách nhanh chóng thông qua mạng máy tính, cho phép truyền tải nhanh khối liệu lớn Việc sử dụng rộng rÃi sở liệu phân tán tập trung đà đặt nhiều yêu cầu nhằm đảm bảo chức thơng mại an toàn liệu Trong thực tế, cố môi trờng sở liệu không ảnh hởng đến ngời sử dụng ứng dụng, mà ảnh hởng tới toàn hệ thống thông tin Các tiến kỹ thuật xử lý thông tin (các công cụ ngôn ngữ) đà đơn giản hoá giao diện ngời máy phục vụ cho việc tạo sở liệu đáp ứng đợc cho nhiều dạng ngời dùng khác nhau; Vì đà nảy sinh thêm nhiều vấn đề an toàn Trong hệ thống thông tin, máy tính, kỹ thuật, công cụ thủ tục an toàn đóng vai trò thiết yếu, đảm bảo tính liên tục tin cậy hệ thống, bảo vệ liệu chơng trình không bị xâm nhập, sửa đổi, đánh cắp tiết lộ thông tin trái phép An toàn thông tin sở liệu An toàn thông tin sở d÷ liƯu bao gåm u tè chÝnh: tÝnh bÝ mật, toàn vẹn sẵn sàng Trong tài liệu này, thuật ngữ nh gán quyền, bảo vệ an toàn đợc sử dụng để diễn đạt nội dung ngữ cảnh khác Chính xác hơn, thuật ngữ gán quyền đợc sử dụng hệ thống sở liệu, thuật ngữ bảo vệ thờng sử dụng nói hệ điều hành, thuật ngữ an toàn đợc sử dụng chung Bảo mật ngăn chặn, phát xác định tiếp cận thông tin trái phép Nói chung, bảo mật bảo vệ liệu môi trờng cần bảo mật cao, ví dụ nh trung tâm quân hay kinh tế quan trọng Tính riêng t (privacy) thuật ngữ quyền cá nhân, nhóm ngời, tổ chức thông tin, tài nguyên Tính riêng t đợc luật pháp nhiều quốc gia bảo đảm Bí mật yếu tố quan trọng để đảm bảo an toàn môi trờng, quân lẫn thơng mại Đảm bảo tính toàn vẹn có nghĩa ngăn chặn, phát xác định sửa đổi thông tin trái phép Đảm bảo tính sẵn sàng có nghĩa ngăn chặn, phát xác định từ chối truy nhập đáng vào dịch vụ mà hệ thống cung cấp Một số khái niệm CSDL Cơ sở liệu tập hợp liệu không nhÊt thiÕt ®ång nhÊt, cã quan hƯ víi vỊ mặt lôgíc đợc phân bố mạng máy tính Hệ thống phần mềm cho phép quản lý, thao tác sở liệu, tạo suốt phân tán với ngời dùng gọi hệ quản trị sở liệu (DBMS) Trong thiết kế sở liệu, cần phân biệt pha quan niệm pha lôgíc Các mô hình quan niệm lôgíc tơng ứng thờng dùng để mô tả cấu trúc sở liệu Trong mô hình này, mô hình lôgíc phụ thuộc vào hệ quản trị sở liệu, mô hình quan niệm độc lập với hệ quản trị sở liệu Mô hình quan hệ thực thể mô hình quan niệm phổ biến nhất, đợc xây dựng dựa khái niệm thực thể Thực thể đợc xem nh lớp đối tợng giới thực đợc mô tả bên sở liệu quan hệ mô tả mối liên hệ hai hay nhiều thực thể Trong trình thiết kế lôgíc, lợc đồ khái niệm đợc chuyển sang lợc đồ lôgíc, mô tả liệu theo mô hình lôgíc DBMS cung cấp Các mô hình phân cấp, mạng quan hệ mô hình lôgíc công nghệ DBMS truyền thống quản lý Các ngôn ngữ sẵn có DBMS bao gồm ngôn ngữ định nghĩa liệu (DDL), ngôn ngữ thao tác liệu (DML) ngôn ngữ hỏi (QL) DDL hỗ trợ định nghĩa lợc đồ sở liệu lôgíc Các phép toán liệu đợc xác định sử dụng DDL, QL Các thao tác sở liệu bao gồm tìm kiếm, chèn, xoá cập nhật Để sử dụng DML, yêu cầu hiểu biết đầy đủ mô hình, lợc đồ logíc DML đợc ngời dùng đặc biệt sử dụng, chẳng hạn nh nhà phát triển ứng dụng QL ngợc lại, ngôn ngữ khai báo hỗ trợ cho ngời dùng cuối Ngôn ngữ DML nhúng ngôn ngữ lập trình thông thờng, gọi ngôn ngữ nhúng Vì vậy, ứng dụng sử dụng ngôn ngữ lập trình đa vào câu lệnh DML cho phép toán hớng liệu 2.1 Các thành phần DBMS Một DBMS thông thờng bao gồm nhiều môđun tơng ứng với chức sau: ã Định nghĩa liệu - DDL ã Thao tác liệu - DML ã Hỏi đáp sở liệu - QL ã Quản trị sở liệu - DBMS ã Quản lý file Tập hợp liệu hỗ trợ môđun là: ã Các bảng mô tả sở liệu ã Các bảng trao quyền ã Các bảng truy nhập đồng thời Ngời dùng cuối chơng trình ứng dụng sử dụng liệu sở liệu, thông qua câu lệnh DML QL Sau đó, DBMS biên dịch câu lệnh thông qua xử lý DML QL Kết đa câu hỏi tối u theo lợc đồ sở liệu (đà đợc trình bày bảng mô tả sở liệu) Những bảng đợc định nghĩa thông qua câu lệnh DDL đợc trình biên dịch DDL biên dịch Các câu hỏi tối u đợc quản trị sở liệu xử lý chuyển thành thao tác file liệu vật lý Bộ quản trị sở liệu kiểm tra lại quyền ngời dùng chơng trình truy nhập liệu, thông qua bảng trao quyền truy nhập Các thao tác đợc phép đợc gửi tới quản lý file Bộ quản trị sở liệu chịu trách nhiệm quản lý truy nhập liệu đồng thời Bộ quản trị file thực thao tác Vùng làm việc trình ứng dụng Các tr×nh øng dơng C¸c lƯnh DML Thñ tục DBMS Cơ sở liệu Vïng lµm việc DBMS Hình Tơng tác trình ứng dụng sở liệu Hình minh hoạ tơng tác chơng trình ứng dụng (có chứa câu lệnh DML) sở liệu Thực câu lệnh DML tơng ứng với thủ tục DBMS truy nhập sở liệu Thủ tục lấy liệu từ sở liệu đa tới vùng làm việc ứng dụng (tơng ứng với câu lệnh retrieval), chuyển liệu từ vùng làm việc vào sở liệu (tơng ứng với câu lệnh insert, update), hay xoá liệu khỏi sở liệu (câu lệnh delete) 2.2 Các mức mô tả liệu DBMS mô tả liệu theo nhiều mức khác Mỗi mức cung cấp mức trừu tợng sở liệu Trong DBMS có mức mô tả sau: Khung nhìn logíc (Logical view) Việc xây dựng khung nhìn tuỳ thuộc yêu cầu mô hình logíc mục đích ứng dụng Khung nhìn lôgíc mô tả phần lợc đồ sở liệu lôgíc Nói chung, ngời ta thờng sử dụng DDL để định nghĩa khung nhìn lôgíc, DML để thao tác khung nhìn Lợc đồ liệu lôgíc mức này, liệu sở liệu đợc mô tả mô hình lôgíc DBMS Các liệu quan hệ chúng đợc mô tả thông qua DDL DBMS Các thao tác khác lợc đồ lôgíc đợc xác định thông qua DML DBMS Lợc đồ liệu vật lý Mức mô tả cấu trúc lu trữ liệu file nhớ Dữ liệu đợc lu trữ dới dạng ghi (có độ dài cố định hay thay đổi) trỏ trỏ tới ghi Trong mô tả liệu, DBMS cho phép mức khác hỗ trợ độc lập lôgíc độc lập vật lý Độc lập lôgíc có nghĩa là: lợc đồ lôgíc đợc sửa đổi mà không cần sửa đổi chơng trình ứng dụng làm việc với lợc đồ Trong trờng hợp này, thay đổi lợc đồ lôgíc cần đợc thay đổi lại khung nhìn lôgíc có liên quan với lợc đồ Độc lập vật lý có nghĩa là: lợc đồ vật lý đợc thay đổi mà không cần phải thay đổi ứng dụng truy nhập liệu Đôi khi, có nghĩa là: cấu tróc l−u tr÷ d÷ liƯu vËt lý cã thĨ thay đổi mà không làm ảnh hởng đến việc mô tả lợc đồ liệu lôgíc Vấn đề an toàn sở liệu 3.1 Các hiểm hoạ an toàn sở liệu Một hiểm hoạ đợc xác định đối phơng (ngời, nhóm ngời) sử dụng kỹ thuật đặc biệt để tiếp cận nhằm khám phá, sửa đổi trái phép thông tin quan trọng hệ thống quản lý Các xâm phạm tính an toàn sở liệu bao gồm đọc, sửa, xoá liệu trái phép Thông qua xâm phạm này, đối phơng có thể: Khai thác liệu trái phép thông qua suy diễn thông tin đợc phép Sửa đổi liệu trái phép Từ chối dịch vụ hợp pháp Các hiểm hoạ an toàn đợc phân lớp, tuỳ theo cách thức xuất chúng, hiểm hoạ có chủ ý vô ý (ngẫu nhiên) Hiểm hoạ ngẫu nhiên hiểm hoạ thông thờng độc lập với điều khiển gây phá hỏng sở liệu, chúng thờng liên quan tới trờng hợp sau: Các thảm hoạ thiên nhiên, chẳng hạn nh động đất, hoả hoạn, lụt lội phá hỏng hệ thống phần cứng, hệ thống lu giữ số liệu, dẫn đến xâm phạm tính toàn vẹn sẵn sàng hệ thống Các lỗi phần cứng hay phần mềm dẫn đến việc áp dụng sách an toàn không đúng, từ cho phép truy nhập, đọc, sửa đổi liệu trái phép, từ chối dịch vụ ngời dùng hợp pháp Các sai phạm vô ý ngời gây ra, chẳng hạn nh nhập liệu đầu vào không xác, hay sử dụng ứng dụng không đúng, hậu tơng tự nh nguyên nhân lỗi phần mềm hay lỗi kỹ thuật gây Những xâm phạm liên quan đến hai lớp ngời dùng sau: Ngời dùng đợc phép ngời lạm dụng quyền, sử dụng vợt quyền hạn đợc phép họ Đối phơng ngời, hay nhóm ngời truy nhập thông tin trái phép, ngời nằm tổ chức hay bên tổ chức Họ tiến hành hành vi phá hoại phần mềm sở liệu hay phần cứng hệ thống, đọc ghi liệu trái phép Trong hai trờng hợp trên, họ thực với chủ ý rõ ràng 3.2 Các yêu cầu bảo vệ sở liệu Bảo vệ sở liệu khỏi hiểm hoạ, có nghĩa bảo vệ tài nguyên, đặc biệt liệu khỏi thảm hoạ, truy nhập trái phép Các yêu cầu bảo vệ sở liệu gồm: Bảo vệ chống truy nhập trái phép Đây vấn đề bản, bao gồm trao quyền truy nhập sở liệu cho ngời dùng hợp pháp Yêu cầu truy nhập ứng dụng, ngời dùng phải đợc DBMS kiểm tra Kiểm soát truy nhập sở liệu phức tạp kiểm soát truy nhập file Việc kiểm soát cần tiến hành đối tợng liệu mức thấp mức file (chẳng hạn nh ghi, thuộc tính giá trị) Dữ liệu së d÷ liƯu th−êng cã quan hƯ víi vỊ ngữ nghĩa, cho phép ngời sử dụng biết đợc giá trị liệu mà không cần truy nhập trực tiếp, cách suy diễn từ giá trị đà biết Bảo vệ chống suy diễn Suy diễn khả có đợc thông tin bí mật từ thông tin không bí mật Đặc biệt, suy diễn ảnh hởng tới sở liệu thống kê, ngời dùng không đợc phép dò xét thông tin cá thể khác từ liệu thống kê Bảo vệ toàn vẹn sở liệu Yêu cầu bảo vệ sở liệu khỏi truy nhập trái phép mà dẫn đến việc thay đổi nội dung liệu Các lỗi, virus, hỏng hóc hệ thống gây hỏng liệu DBMS đa dạng bảo vệ này, thông qua kiểm soát đắn hệ thống, thủ tục lu, phục hồi thủ tục an toàn đặc biệt Để trì tính tơng thích sở liệu, giao tác phải đơn vị tính toán tin cậy tơng thích Hệ thống khôi phục (recovery system) sử dụng nhật ký Với giao tác, nhật ký ghi lại phép toán đà đợc thực liệu (chẳng hạn nh read, write, delete, insert), nh phép toán điều khiển giao tác (chẳng hạn nh commit, abort), giá trị cũ ghi kéo theo Hệ thống phục hồi đọc file nhật ký để xác định giáo tác bị huỷ bỏ giao tác cần phải thực lại Huỷ giao tác có nghĩa phục hồi lại giá trị cũ phép toán ghi kéo theo Thực lại giao tác có nghĩa cập nhật giá trị phép toán vào ghi kéo theo Các thủ tục an toàn đặc biệt bảo vệ liệu không bị truy nhập trái phép Xây dựng mô hình, thiết kế thực thủ tục mục tiêu an toàn sở liệu Toàn vẹn liệu thao tác EK += i & 8; i &= 7; } } static void ideaInvertKey(word16 const *EK, word16 DK[IDEAKEYLEN]) { int i; uint16 t1, t2, t3; word16 temp[IDEAKEYLEN]; word16 *p = temp + IDEAKEYLEN; t1 = mulInv(*EK++); t2 = -*EK++; t3 = -*EK++; * p = mulInv(*EK++); * p = t3; * p = t2; * p = t1; for (i = 0; i < IDEAROUNDS - 1; i++) { t1 = *EK++; * p = *EK++; * p = t1; t1 = mulInv(*EK++); t2 = -*EK++; t3 = -*EK++; * p = mulInv(*EK++); * p = t2; * p = t3; * p = t1; } t1 = *EK++; * p = *EK++; * p = t1; t1 = mulInv(*EK++); t2 = -*EK++; t3 = -*EK++; * p = mulInv(*EK++); * p = t3; * p = t2; * p = t1; memcpy(DK, temp, sizeof(temp)); burn(temp); } #ifndef USE68ASM 125 #define MUL(x,y) (x = mul(low16(x),y)) static void ideaCipher(byte const inbuf[8], byte outbuf[8], word16 const *key) { register uint16 x1, x2, x3, x4, s2, s3; word16 *in, *out; int r = IDEAROUNDS; in = (word16 *) inbuf; x1 = *in++; x2 = *in++; x3 = *in++; x4 = *in; #ifndef HIGHFIRST x1 = (x1 >> 8) | (x1 > 8) | (x2 > 8) | (x3 > 8) | (x4 > 8) | (x1 > 8) | (x3 > 8) | (x2 > 8) | (x4 iv, iv, 8); else fill0(context->iv, 8); context->bufleft = 0; } void ideaCfbInit(struct IdeaCfbContext *context, byte const key[16]) { ideaExpandKey(key, context->key); ideaCfbReinit(context, 0); } void ideaCfbDestroy(struct IdeaCfbContext *context) { burn(*context); } void ideaCfbSync(struct IdeaCfbContext *context) { int bufleft = context->bufleft; if (bufleft) { memmove(context->iv + bufleft, context->iv, - bufleft); memcpy(context->iv, context->oldcipher + - bufleft, bufleft); context->bufleft = 0; } } void ideaCfbEncrypt(struct IdeaCfbContext *context, byte const *src, byte * dest, int count) { 127 int bufleft = context->bufleft; byte *bufptr = context->iv + - bufleft; if (count bufleft = bufleft - count; while (count ) { *dest++ = *bufptr++ ^= *src++; } return; } count -= bufleft; while (bufleft ) { *dest++ = (*bufptr++ ^= *src++); } while (count > 8) { bufptr = context->iv; memcpy(context->oldcipher, bufptr, 8); ideaCipher(bufptr, bufptr, context->key); bufleft = 8; count -= 8; { *dest++ = (*bufptr++ ^= *src++); } while ( bufleft); } bufptr = context->iv; memcpy(context->oldcipher, bufptr, 8); ideaCipher(bufptr, bufptr, context->key); context->bufleft = - count; { *dest++ = (*bufptr++ ^= *src++); } while ( count); } void ideaCfbDecrypt(struct IdeaCfbContext *context, byte const *src, byte * dest, int count) { int bufleft = context->bufleft; static byte *bufptr; byte t; bufptr = context->iv + (8 - bufleft); if (count bufleft = bufleft - count; while (count ) { t = *bufptr; *dest++ = t ^ (*bufptr++ = *src++); } return; } 128 count -= bufleft; while (bufleft ) { t = *bufptr; *dest++ = t ^ (*bufptr++ = *src++); } while (count > 8) { bufptr = context->iv; memcpy(context->oldcipher, bufptr, 8); ideaCipher(bufptr, bufptr, context->key); bufleft = 8; count -= 8; { t = *bufptr; *dest++ = t ^ (*bufptr++ = *src++); } while ( bufleft); } bufptr = context->iv; memcpy(context->oldcipher, bufptr, 8); ideaCipher(bufptr, bufptr, context->key); context->bufleft = - count; { t = *bufptr; *dest++ = t ^ (*bufptr++ = *src++); } while ( count); } int idea_en_file(unsigned char *pw,unsigned char *str,unsigned int lenstr) { int status = 0; byte textbuf[5000],ideakey[24]; struct IdeaCfbContext cfb; memcpy(textbuf,str,lenstr); mdstr(pw,ideakey); ideaCfbInit(&cfb, ideakey); ideaCfbSync(&cfb); ideaCfbEncrypt(&cfb, textbuf, textbuf, lenstr); ideaCfbDestroy(&cfb); memcpy(str,textbuf,lenstr); burn(textbuf); return status; } int idea_de_file(unsigned char *pw,unsigned char *str,unsigned int lenstr) { int status = 0; byte textbuf[5000],ideakey[16]; struct IdeaCfbContext cfb; memcpy(textbuf,str,lenstr); mdstr(pw,ideakey); ideaCfbInit(&cfb, ideakey); 129 ideaCfbDecrypt(&cfb, textbuf, textbuf, lenstr); ideaCfbDestroy(&cfb); memcpy(str,textbuf,lenstr); burn(textbuf); return status; } 130 Phụ lục: lợc đồ IDEA Phần trình bầy lợc đồ bảo vệ liệu IDEA đà đợc thiết kế thử nghiệm mô hình bảo vệ CSDL Phần chủ yếu để phục vụ cho việc theo dõi chơng trình đợc dễ dàng sở lý thuyết không đợc trình bầy 1.Những điểm IDEA phơng pháp mà khối sử dụng 128 bit khóa để mà khối liệu 64 bit IDEA đợc xây dựng nhằm mục đích kết hợp với nhiều yếu tố khác để tăng độ an toàn khả thực * Độ an toàn: - Độ dài khối: khối phải có độ dài đủ để chống lại phơng pháp phân tích thống kê ngăn việc số khối xuất nhiều khối khác Mặt khác phức tạp thuật toán tăng theo hàm mũ với độ dài khối Với khối có độ dài 64 bit đủ độ an toàn Bên cạnh việc sử dụng chế độ feedback làm tăng thêm độ an toàn thuật toán - Độ dài khóa : Khóa phải đủ dài để chống lại phơng pháp vét cạn khóa - Độ phức tạp : Bản mà phải phụ thuộc cách phức tạp vào rõ khóa Mục tiêu đặt phải làm phức tạp hóa phụ thuộc mặt thống kê mà vào rõ IDEA đạt đợc điều nhờ việc sử dụng phép toán trình bày sau - Sự phân bố : IDEA đà đạt đợc việc bit rõ phải có ảnh hởng đến nhiều bit mà bít khóa tác động đến nhiều bit mà Điều làm cho cấu trúc rõ bị phá vỡ mà 2.C¸c phÐp to¸n sư dơng IDEA - PhÐp XOR theo bit Ký hiƯu lµ ⊕ - PhÐp céng số nguyên lấy modulo 216 (65536) với đầu vào đầu số nguyên không dấu 16 bit Ký hiệu - Phép nhân số nguyên lấy modulo 216 + với đầu vào đầu số nguyên không dấu 16 bit Qui ớc khối toàn số biểu thị cho 216 Ký hiệu Ba phép toán thỏa mÃn : - Không có phép toán thỏa mÃn luật phân phèi: a ( b ⊗ c ) ≠ (a b) ⊗ (a c) - Kh«ng cã phép toán thỏa mÃn luật kết hợp: a ( b ⊗ c ) ≠ (a b) ⊗ c 131 Việc sử dụng kết hợp phép toán tạo biến đổi phức tạp liệu đầu vào làm cho việc mà thám trở nên khó khăn so với việc sử dụng phép toán đơn giản Trong IDEA phân bố đợc tạo dựa khối thuật toán có cấu trúc nh hình vẽ gọi cấu trúc MA (Multiplication/Addition) F2 F1 Z5 ⊗ ⊗ G1 Z6 G2 H×nh : CÊu tróc Multiplication/Addition (MA) Khèi nµy nhËn 16 bit từ rõ 16 bit đợc lấy từ khóa theo qui tắc (16 bit đợc gọi subkey qui tắc lấy subkey từ khóa đợc trình bày sau) để tạo 16 bit đầu Một chơng trình kiểm tra máy tính phơng pháp vét cạn xác định bit đầu phụ thuộc vào bit rõ bit subkey đầu vào Cấu trúc đợc sử dụng lặp lại lần thuật toán tạo nên phân bố có hiệu IDEA đợc xây dựng cho việc thực đợc dễ dàng phần cứng phần mềm Việc thực phần cứng, điển hình vi mạch VLSI, đợc thiết kế để đạt đợc tốc độ cao Việc xây dựng phần mềm thuận tiện giá thành thấp - Những điểm chủ yếu việc xây dựng phần mềm: + Sử dụng khối nhỏ: phép toán mà thực khối có độ dài 8, 16, 32 bit phù hợp với việc xử lý máy tính + Sử dụng thuật toán giản đơn: Phép toán mà dễ dàng lập trình nh phép cộng, phép dịch chuyển (shift), Cả phép toán IDEA thỏa mÃn yêu cầu Điểm khó khăn phép toán nhân modulo (216 + 1) cịng cã thĨ x©y dùng dƠ dàng từ phép toán sẵn có - Những điểm chủ yếu việc thực phần cứng: 132 + Sự tơng tự mà hóa giải mÃ: Mà hóa giải mà khác việc sử dụng khóa nhờ phơng tiện dùng cho mà hóa giải mà + Cấu trúc lặp lại: Phơng pháp mà nên có cấu trúc modul lặp lại để mạch VLSI thực đợc dễ dàng IDEA đợc xây dựng từ hai khối modulo đơn giản sử dụng lặp lại nhiều lần Mà hóa giải mà IDEA 64 bit râ 128 bit khãa Z X1 X2 X3 X4 Z1 Modul T¹o subkey tõ khã 16 Z52 Z1 Z6 W11 W12 W13 W14 Z7 Modul Z12 W21 W22 W23 W24 W71 W72 W73 W74 Z43 Modul Z48 W81 W82 W83 W84 Z49 Hàm biến đổi Y1 Y2 Y3 Y4 Z52 64 bit m· H×nh : CÊu tróc cđa IDEA a.Mà hóa: Giống nh sơ đồ mà hóa khác, hàm mà hóa có tham số đầu vào rõ cần mà khóa Trong trừơng hợp 64 bit rõ 128 bit khóa Từ đầu vào đến đầu ra, bit rõ lần lợt qua modul hàm biến đổi cuối Tám modul có cấu trúc giống thực thao tác nh liệu đầu vào Mỗi modul nhận khối 16 bit rõ đầu vào với subkey ®−a khèi 16 bit ®· ®−ỵc m· hãa Do 64 bit rõ đợc chia thành khối nhỏ gọi subblock, subblock 16 133 bit Cùng với subblock khối subkey đợc đa vào modul Nh thêm subkey cần thiết cho hàm biến đổi cuối cïng, ta cÇn tỉng céng 52 khèi subkey cho mét lÇn m· X1 Z1 X2 X3 ⊗ ⊗ Z2 X4 Z3 Z4 ⊕ ⊕ ⊗ Z5 ⊗ Z6 ⊕ ⊕ ⊕ W11 W12 ⊕ W13 W14 Hình : Cấu trúc modul Nh đà trình bầy trên, modul có cấu trúc giống khác liệu đầu vào Trừ modul nhận 64 bit rõ đa từ vào, modul đứng sau nhận khối subblock 16 bit đầu modul đứng trớc làm bit rõ đầu vào Trong trình modul kết hợp subblock với subkey phép toán Bốn khối đầu trình XOR với nh sơ đồ để tạo khối đầu vào cho cấu trúc MA cấu trúc MA kết hợp chúng với subkey lại để tạo khối 16 bit Cuối cùng, khối đợc tạo từ trình đợc XOR với khối đầu cấu trúc MA để tạo khối đầu modul Chú ý khối đầu vào X2 X3 đơc hoán đổi cho để 134 tạo khối W12 W13 đợc đa Điều làm tăng hòa trộn bit đợc xử lý tăng khả chống lại phơng pháp mà thám Hàm biến đổi ë ci cïng ta cịng cã thĨ coi nh− lµ mét modul thø Hµm nµy cã cÊu tróc gièng nh cấu trúc đà thực trình modul khác khối thứ thứ đầu vào đựơc đổi chỗ cho trớc đợc đa tới đơn vị phép toán Thực việc trả lại thứ tự đà bị đổi sau modul thứ Lý cđa viƯc nµy lµ sù gièng vỊ cÊu tróc trình giải mà trình mà hóa Z49 W81 W82 W83 W84 ⊗ ⊗ Z50 Y1 Y2 Y3 Z51 Z52 Y4 Hình : Hàm biến đổi IDEA *Qui tắc tạo subkey: Nh đà trình bày, cần thiết phải có 52 khối subkey 16 bit đợc tạo từ 128 bit khóa Qui tắc tạo nh sau: - subkey đầu tiên, Z1 Z8, đợc lấy trực tiếp từ khóa với Z1 16 bit đầu (bit có trọng số cao nhất), Z2 lµ 16 bit tiÕp theo vµ cø tiÕp tơc nh− - Sau khóa đợc quay trái 25 bit subkey đợc tạo theo qui tắc Thao tác đợc lặp lại có đủ 52 khối subkey Qui tắc phơng pháp hiệu cho việc đa dạng hóa c¸c bit khãa dïng cho c¸c modul Ta nhËn thÊy subkey dùng modul sử dụng tập hợp bit khác khóa Nếu nh khóa 128 bit đợc ký hiệu Z[1 128] subkey modul là: Z1 = Z[1 16] Z25 = Z[76 91] Z7 = Z[97 112] Z31 = Z[44 59] Z13 = Z[90 105] Z37 = Z[37 52] Z19 = Z[83 98] Z43 = Z[30 45] 135 Nh− vËy, 96 bit subkey sư dơng cho modul, trừ modul thứ modul thứ 8, không liên tục Do mối liên hệ dịch chuyển đơn giản subkey modul modul với Nguyên nhân có đợc kết việc có khối subkey đợc sử dụng có khối subkey đợc tạo lần dịch chuyển khóa b.Giải mà Quá trình giải mà giống trình mà hóa Giải mà nhận mà đầu vào qua cấu trúc nh trên, khác lựa chọn subkey Các subkey để giải mà U1, U2, U52 nhận đợc từ khóa mà theo qui tắc sau: - Đối với modul giải mà i ta lấy subkey đầu modul mà hóa thứ (10-i), hàm biến ®ỉi ®−ỵc coi nh− modul thø Sau ®ã lÊy nhân đảo modulo (216 + 1) subkey thứ thứ để dùng cho subkey giải mà thứ thứ tơng ứng Đối với modul từ thứ đến thứ 8, subkey giải mà thứ thứ cộng đảo modulo 216 subkey thứ thứ tơng ứng Đối với modul thứ thứ 9, subkey giải mà thứ thứ cộng đảo modulo 216 subkey thứ thứ tơng ứng - Đối với modul đầu tiên, subkey cuối modul i lµ subkey ci cđa modul m· hãa thứ (9 - i) nhân đảo Zj-1 Zj phần tử nghịch đảo Zj phép toán nhân tức: Zj Zj-1 = Vì 216 + số nguyên tố nên số nguyên Zj < 216 có số nhân đảo modulo (216 +1) Với cộng đảo modulo 216 th×: -Zj Zj = H×nh vÏ sau thĨ trình mà hóa (theo chiều xuống bên trái) trình giải mà (chiều lên bên phải) thuật toán IDEA X1 { X2 X3 Biến ®æi I11 I12 I13 X1 X4 Z1 Z4 I14 M· hãa W11 W12 W13 W14 Z5.Z6 X2 X3 X4 BiÕn ®ỉi ®Çu 136 V81 V82 { V83 V84 U47.U48 M· hãa I81 I82 U49 U52 I83 BiÕn ®ỉi I84 U U Mỗi modul đợc chia thành khối nhỏ : khối biến đổi khối mà hóa Khối biến đổi tơng ứng với trình modul, khối mà hóa tơng ứng với trình lại phía cuối sơ đồ, bên mà hóa ta nhận đợc mối quan hệ sau đầu đầu vào hàm biến đổi: Y1 = W81 ⊗ Z49 Y2 = W83 Z50 Y3 = W82 Z51 Y4 = W84 ⊗ Z52 Tại khối biến đổi modul thứ trình giải mÃ, đầu đầu vào có mối quan hÖ sau: J11 = Y1 ⊗ U1 J13 = Y3 U3 J12 = Y2 U2 J14 = Y4 ⊗ U4 Ta cã: J11 = Y1 ⊗ Z49-1 = W81 ⊗ Z49⊗ Z49-1 = W81 137 J12 = Y2 - Z50 = W83 Z50 -Z50 = W83 J13 = Y3 - Z51 = W82 Z51 -Z51 = W82 J14 = Y4 ⊗ Z50-1 = W84 ⊗ Z50⊗ Z50-1 = W84 Nh− vËy, kết thu đợc sau khối biến đổi thứ trình giải mà liệu rõ đa vào khối mà hóa cuối trình mà hóa khác khối liệu thứ khối liệu thứ đà đổi chỗ cho Bây ta xét đến mối quan hệ thu đợc theo sơ đồ 711: W81 = I81 MAR(I81 I83, I82 I84 ) W82 = I83 MAR(I81 I83, I82 I84 ) W83 = I82 MAR(I81 I83, I82 I84 ) W84 = I84 MAR(I81 I83, I82 I84 ) MAR(X,Y) đầu phía bên phải MAL(X,Y) đầu phía bên trái cấu trúc MA hình 79 đầu vào X Y Vµ: V11 = J11 MAR(J11 J13, J12 J14 ) =W81 MAR(W81 W82, W83 W84 ) =I81 MAR(I81 I83, I82 I84 ) MAR[I81MAR(I81I83,I82I84)I83MAR(I81I83,I82I84 ), I82MAL(I81I83,I82 I84) I84MAL(I81I83, I82 I84 )] = I81MAR(I81I83,I82 I84) MAR(I81I83, I82 I84 ) = I81 T−¬ng tù ta cã: V12 = I82 V13 = I83 V14 = I84 Nh vậy, kết thu đợc sau khối mà hóa thứ trình giải mà lại liệu đa vào khối biến đổi modul cuối trình mà hóa khác khối liệu thứ khối liệu thứ đà đổi chỗ cho Cứ nh vậy, ta thu đợc: V81 = I11 V82 = I13 138 V83 = I12 V84 = I14 Vì hàm biến đổi cuối trình giải mà giống nh khối biến đổi modul trình mà hóa khác có đổi chỗ khối liệu thứ khối liệu thứ nên ta có rõ thu đợc sau giải mà giống rõ đa vào mà hóa 139 ... liệu có mức an toàn ã Thời gian tồn liệu (Data life cycle): Dữ liệu sở liệu có thời gian tồn dài DBMS đảm bảo việc bảo vệ từ đầu đến cuối thời gian tồn liệu 2.1 Các chế an toàn DBMS An toàn liệu. .. 31 Thiết kế sở liệu an ton Giới thiệu An toàn sở liệu lôgíc giải vấn đề an toàn (tính bí mật toàn vẹn) thông qua quy tắc nhằm thiết lập truy nhập hợp pháp vào thông tin tài nguyên sở liệu Các quy... DBMS an toàn; Trình bày số mẫu nghiên cứu sản phẩm DBMS an toàn thơng mại; Tiếp theo trình bày giải pháp mang tính phơng pháp luận nhằm thiết kế quy tắc an toàn 32 Thiết kế DBMS an toàn Cơ sở liệu