Mục tiêu nghiên cứu đềtài này của em là : “ Nghiên cứu, ứng dụng của hệ mật IEDA vào bảo mật thôngtin”.Đây là thuật toán mới và đang được áp dụng phổ biến trên thế giới trongviệc mã hoá
Trang 1LỜI NÓI ĐẦU
Vấn đề bảo mật thông tin trong các hệ thống thông tin , tin học hoá, đã trởnên hết sức quan trọng , nó quyết định đến sự thành công và tính hữu hiệu của các
hệ thống thông tin Để thực hiện vấn đề này người ta áp dụng rất nhiều các biệnpháp khác nhau từ những phương pháp thủ công với các quy tắc , quy ước đếnnhững phương pháp hiện đại có sự trợ giúp của các phương tiện tính toán tiên tiếnnhất
Trong mấy năm gần đây, trước sự phát triển của khoa học kỹ thuật đãcho ra đời nhiều thiết bị lưu trữ, thiết bị truyền thông có chất lượng cao, đặc biệt
là sự phát triển nhanh như vũ bão của mạng lưới tin học đã và đang mang tínhtoàn cầu hoá Với lượng thông tin lớn, dữ liệu tập trung, tốc độ truyền tin cao vìvậy việc bảo mật thông tin đã trở nên khó khăn hơn nhiều
Trước tình hình đó nhiều tổ chức, cá nhân trong và ngoài nước nói chung
và ngành cơ yếu Việt Nam nói riêng đã rất quan tâm tới vấn đề này Nhiều cácbiện pháp kỹ thuật được áp dụng như chống tiếp cận, sao chép trái phép, bảo vệthông tin trên đường truyền vv
Để góp phần vào việc bảo đảm an toàn thông tin Mục tiêu nghiên cứu đềtài này của em là : “ Nghiên cứu, ứng dụng của hệ mật IEDA vào bảo mật thôngtin”.Đây là thuật toán mới và đang được áp dụng phổ biến trên thế giới trongviệc mã hoá dữ liệu, theo đánh giá của các nhà phân tích chuyên môn thì IDEA
có khả năng sẽ là một nhân tố tốt trong tương lai về việc mã hoá dữ liệu
Do thời gian làm đồ án có hạn và trình độ chuyên môn chưa nhiều nên khôngthể tránh được một số thiếu sót Vì vậy em rất mong nhận được sự góp ý của các thầy
và các bạn để đề tài này có thể phát triển và được đưa vào ứng dụng trong thực tế Cuối cùng em xin chân thành cảm ơn thầy giáo TS : Lều Đức Tân đã tận tình giúp đỡ em hoàn thành đề tài này
Trang 2Hà Nội ngày / /2000.
Trang 3MỤC LỤCCHƯƠNG I NÓI VỀ HỆ MẬT IDEA
I.1 Những điểm chính
I.1.2 Các phép toán sử dụng trong IDEA
I.1.3 Mã hoá và giải mã trong IDEA
a Mã hoá
b Giải mã
I.1.4 Quá trình làm việc của một modul
CHƯƠNG II MỘT SỐ ĐOẠN CHƯƠNG TRÌNH VÍ DỤII.1 Nhân 2 số modulo(216+1)
II.2 Tính số nhân đảo của số x modulo 65537
II.3 Tạo 52 khối subkey từ khoá 128 bit
II.4 Tính khoá cho quá trình giải mã
II.5 Chương trình mã
CHƯƠNG III THIẾT KẾ CHƯƠNG TRÌNH MÃ DỊCH
BẰNG HỆ MẬT IDEA
III Mục đích và thiết kế
III.1 Mục đích
III.2 Cách thực hiện mã hoá và giải mã theo IDEA
III.3 Các chức năng của phần mềm
III.4 Chương trình mô tả của thuật toán IDEA
Trang 4CHƯƠNG I NÓI VỀ HỆ MẬT IDEA
I Thuật toán IDEA
Thuật toán IDEA ( International Encryption Algorihm) được mô tả như sau:
I.1 Những điểm chính:
IDEA là phương pháp mã khối sử dụng 128 bit khoá để mã khối dữ 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 và khả năng thực hiện Từ khi mới được công bố thì thuật toànnày đều là đối tượng quan tâm của các nhà phân tích mật mã(mã thám), vàkhông ai có thể đảm bảo được mức độ chắc chắn, sự an toàn của thuật toán nàycung cấp và cũng không ai có thể bảo đảm rằng việc tấn công hay đột phá vàothuật toán này là không thể thành công Một ngày nào đó, cho dù có đột pháđược thì người ta cũng không hề công bố Tuy nhiên, với điều kiện kỹ thuật nhưhiện nay thì điếu đó vẫn khó có thể xảy ra
Độ an toàn:
-Độ an toàn của khối: khối phải có độ dài đủ để chống lại các phương pháp
phân tích thống kê và ngăn việc một số khối nào đó xuất hiện nhiều hơn cáckhối khác Mặt khác sự phức tạp của thuật toán tăng theo hàm mũ với độ dàikhối Với khối có độ dài 64 bit là đủ độ an toàn
-Độ dài khoá: Khoá phải có độ dài đủ để chống lại các phương pháp vét cạn
khoá ( Chống khả năng thử các khoá được sinh ra từ (N)bit khoá cho trước )
- Độ phức tạp: Bản mã phải phụ thuộc một cách phức tạp vào bản rõ và khoá.
Mục tiêu đặt ra ở đây là phải phức tạp hoá sự phụ thuộc của bộ mặt thống kê của bản
mã vào bản rõ IDEA đạt được diều này nhờ sử dụng 3 phép toán sẽ trình bày sau đây:
Trang 5- Sự phân bố: IDEA đã đạt được việc mỗi bít của bản rõ phải có ảnh hưởng tới
nhiều bit của bản mã và mỗi bit khoá cũng tác động đến nhiều bit của bản mã.Điều này làm cho cấu trúc của bản rõ sẽ bị phá vỡ trong bản mã
I.2 Các phép toán sử dụng trong IDEA
Trong thuật toán IDEA gồm có 3 thuật toán sau:
- Phép XOR theo bit Kí hiệu là ⊕
- Phép cộng 2 số nguyên lấy modulo 216 (65536)với đầu vào và các đầu ra là các
số nguyên không dấu 16 bit Kí hiệu là
- Phép nhân hai số nguyên lấy modulo 216 +1 với đầu vào và đầu ra là các sốnguyên không dấu 16 bit Quy ước là khối toàn số 0 biểu thị cho 216
Kí hiệu ⊗
Cả ba phép toán này đều phải thoả mãn các tính chất sau:
- Không có 2 phép toán nào thoả mãn luật phân phối :
Trong IDEA sự phân bố được tạo ra dựa trên khối thuật toán có cấu trúc nhưhình vẽ gọi là cấu trúc MA( Multiplication/Additio) trong hình sau:
Trang 6
Hình 1: Cấu trúc Multiplication/Additio (MA)
Khối này nhận 16 bit từ bản rõ và 16 bit được lấy từ khoá ra theo một quytắc nào đó ( 16 bit này được gọi là subkey và quy tắc lấy subkey từ khoá sẽđược trình bày ở sau)để tạo ra 16 bit đầu ra Một chương trình kiểm tra trênmáy tính bằng phương pháp vét cạn xác định rằng mỗi bit ở đầu ra phụ thuộcvào các bít rõ và bit subkey đầu vào Cấu trúc này được sử dụng lặp lại 8 lầntrong thuật toán và tạo nên một sự phân bố có hiệu qủa
IDEA được xây dựng sao cho việc thực hiện nó được dễ dàng cả trênphần cứng và phần mềm Việc thực hiện trên phần cứng, điển hình là trên vimạch VLSI (VLSI: mạch tích hợp cao) , được thiết kế để đạt được tốc độ cao.Việc xây dựng trên phần mềm thì thuận tiện và giá thành thấp
⊗
⊗
Trang 7Những điểm chủ yếu trong việc xây dựng phần mềm:
+ Sử dụng những khối nhỏ : những phép mã thực hiện trên những khối có độdài 8,16,32 bit phù hợp với việc xử lý trên máy tính
+ Sử dụng thuật toán giản đơn :Phép toán mã dễ dàng trong lập ttình nhưphép cộng , phép dịch chuyển (shift), , Cả 3 phép toán của IDEA đều thoả mãnnhững yêu cầu này Điểm khó khăn nhất là phép toán nhân modulo(216 +1)cũng có thể dễ dàng xây dựng từ những phép toán sẵn có
- Những điểm chủ yếu trong việc thực hiện trên phần cứng:
+ Sự tương tự trong mã hoá và giải mã : Mã hoá và giải mã chỉ nên khácnhau trong việc sử dụng khoá và nhờ đó một phương tiện có thể dùng cho cả
mã hoá và 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 để cácmạch VLSI có thể thực hiện được dễ dàng IDEA được xây dựng từ 2 khốimodulo đơn giản và sử dụng lặp lại nhiều lần
I.1.3 Mã hoá và giải mã trong IDEA:
a Mã hoá:
Giống như các sơ đồ mã hoá khác, hàm mã hoá có 2 tham số ở đầu vào là
Bản rõ cần mã và khoá Trong trường hợp này là 64 bit rõ là 128 bit khoá
Từ đầu vào đến đầu ra, các bit rõ lần lượt đi qua 8 modul và một hàmbiến đổi cuối cùng Tám modul này có cấu trúc giống nhau và thực hiện cácthao tác như nhau với dữ liệu đầu vào Mỗi modul nhận 4 khối 16 bit rõ ở đầuvào cùng với các subkey và đưa ra 4 khối 16 bit đã được mã hoá Do đó 64 bit rõ
sẽ được chia thành 4 khối nhỏ gọi là các subblock, mỗi subblock là 16 bit Cùngvới các subblock này là 6 khối subkey cũng sẽ được đưa vào từng modul Như
Trang 8vậy thêm 4 subkey cần thiết cho hàm biến đổi cuối cùng, ta cần tổng cộng 52khối subkey cho một lần
64 bit rõ
Hình 2: Cấu trúc IDEA
Như đã nói ở trên, các modul có cấu trúc giống nhau và chỉ khác nhau ở
dữ liệu đầu vào Trừ modul đầu tiên nhận 64 bit rõ đưa từ ngoài vào, các modulđứng sau sẽ nhận 4 khối subblock 16 bit đầu ra của modul đứng trước nó làmcác bit rõ đầu vào Trong quá trình đầu tiên các modul kết hợp 4 subblock với 4subkey bằng các phép toán và ⊗ Bốn khối đầu ra của quá trình này XOR vớinhau như trong sơ đồ để tạo ra 2 khối đầu vào cho cấu trúc MA sẽ kết hợpchúng với 2 subkey còn lại để tạo ra 2 khối 16 bit mới
X1 X2 X3 X4
W11 Modul 2W12 W13 W14
128 bit khoá Z
16 16
64 bit mã
Trang 9Cuối cùng, 4 khối được tạo ra từ quá trình đầu tiên sẽ được XOR với 2khối đầu ra của cấu trúc MA để tạo ra 4 khối đầu ra của modul Ta cũng cần chú
ý một điều là 2 khối đầu vào X2 và X3 được hoán đổi cho nhau để tạo ra 2 khối
W12 và W13 được đưa ra ngoài Điều này làm tăng sự hoà trộn của các bit được
xử lý và tăng khả năng chống lại các phương pháp mã thám
X1 X2 X3 X4
Hàm biến ở cuối cùng ta cũng có thể coi như một modul thứ 9 Hàm này
có cấu trúc giống như cấu trúc đã thực hiện trong quá trình đầu tiên của mộtmodul chỉ khác một điều là khối thứ 2 và thứ 3 ở đầu vào được đổi chỗ chonhau trước khi được đưa tới đơn vị phép toán Thực ra đây chỉ là việc trả lại thứ
tự đã bị đổi sau modul thứ 8 Lý do của việc này là sự giống nhau về cấu trúccủa quá trình giải mã và quá trình mã hoá
Hình 3: Cấu trúc một modul (Modul 1)
Z6Z5
Z3Z4Z1
Z2
Trang 10
Y1 Y2 Y3 Y4
Hình 4: Hàm biến đổi của IDEA
* Quy tắc tạo ra subkey:
Như trên đã trình bày, cần thiết phải có 52 khối subkey 16 bit được tạo ra
từ 128 bit khoá Quy tắc tạo subkey như sau:
- 8 subkey đầu tiên , Z1 Z8, được lấy trực tiếp từ khoá với X1 là 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ư vậy
- Sau đó khoá được quay trái 25 bit và 8 subkey tiếp theo được tạo ra theoquy tắc trên Thao tác này được lặp lại cho đến khi có đủ 52 khối subkey
Quy tắc này là một phương pháp hiệu quả cho việc đa dạng hoá các bitkhoá dùng cho các modul Ta nhận thấy rằng những subkey đầu tiên dùng trongmỗi modul sử dụng những tập hợp bit khác nhau của khoá Nếu như khoá 128bit được ký hiệu là Z[ 1 128] thì subkey đầu tiên của modul sẽ là :
Z50
Trang 11đơn giản nào giữa các subkey của của một modul và giữa các modul với nhau.Nguyên nhân có được kết quả này là việc chỉ có 6 khối subkey được sử dụngtrong khi có 8 khối subkeyđược tạo ra trong mỗi lần dịch chuyển khoá.
b Giải mã : Quá trình giải mã về cơ bản giống quá trình mã hoá, giải mã nhận
bản mã ở đầu vào và cùng đi qua những cấu trúc như ở trên, chỉ khác ở sự lựachọn các subkey Các subkey để giải mã U1, U2, U52 nhận được từ khoá mãtheo quy tắc sau:
Đối với modul giải mã i ta lấy 4 subkey đầu của modul mã hóa thứ (10 - i
), ở đây hàm biến đổi được coi như modul thứ 9 Sau đó lấy nhân đảo modulo(216+1) của subkey thứ 1 và thứ 4 để dùng cho subkey giải mã thứ 1 và thứ 4tương ứng Đối với các modul từ thứ 2 đến thứ 8, subkey giải mã thứ 2 và thứ 3
là cộng đảo modulo216 của subkey thứ 3 và thứ 2 tương ứng Đối với các modulthứ 1 và thứ 9 , cho subkey giải mã thứ 2 và thứ 3 là cộng đảo modul216 củasubkey thứ 3 và thứ 2 tương ứng
-Đối với 8 modul đầu tiên , 2 subkey cuối cùng của modul i là 2 subkey cuối cùng của modul mã hoá thứ ( 9 - i ).
ở đây nhân đảo Zj-1 của Zj là:
Trang 12
Hình 5: Mã hoá và giải mã trong IDEA
Mỗi modul được chia thành 2 khối nhỏ: khối biến đổi và khối mã hoá.Khối biến đổi tương ứng với quá trình đầu tiên trong mỗi modul, còn khối mãhoá tương ứng với các quá trình còn lại Ở phía cuối của sơ đồ, bên mã hoá tanhận được các mối quan hệ giữa các đầu ra và đầu vào của hàm biến đổi:
Trang 13J13 = Y3 -Z51 = W82 Z51 -Z51 = W82
J11 = Y4 ⊗ Z50–1 = W84 ⊗ Z50 ⊗ Z50-1 =W84
Như vậy, kết quả thu được sau khối biến đổi thứ nhất của quá trình giải
mã chính là dữ liệu rõ đưa vào khối mã hoá cuối cùng của quá trình mã hoá chỉkhác là khối dữ liệu thứ 2 và khối dữ liệu thứ 3 đã đổi chỗ cho nhau Bây giờ ta
sẽ xét đến mối quan hệ thu được theo Hình 3
Trang 14Như vậy kết quả thu được sau khối mã hoá thứ nhất của quá trình giải mãlại là dữ liệu đưa vào khối biến đổi của modul cuối cùng của quá trình mã hoáchỉ khác là khối dữ liệu thứ 2 và khối dữ liệu thứ 3 đã đổi chỗ cho nhau Cứnhư vậy ta sẽ thu được:
I.1.4 Quá trình làm việc của một Modul
Để dễ dàng nhìn thấy hơn về quá trình làm việc của 1 modul Theo như hình 3( Cấu trúc của 1 modul) Ta thấy 4 khối được đưa vào là X1, X2, X3, X4 cùng với các khoá Z1, Z2, Z3, Z4, Z5, Z6 thì sau các quá trình biến đổi sẽ đưa ra các khối là W1, W2, W3, W4
Giả sử ta quy ước các kết quả của mỗi phép toán là : K1, K2, K3, K4, K5, K6, K7, K8, K9, K10, K11, K12 thì ta có:
Trang 15K12
Trang 18CHƯƠNG II.
MỘT SỐ ĐOẠN CHƯƠNG TRÌNH VÍ DỤ
II.1 /* Nhân 2 số modulo(2 16 +1) */
Đây là đoạn chương trình ví dụ về một trong ba phép toán sử dụng trongthuật toán IDEA với đầu vào và đầu ra là các số nguyên không dấu 16 bit Quyước là khối toàn số 0 biểu thị cho 216
CONST static uint16
mol(register uint16 a, register uint16 b)
Trang 19II.2 Đoạn chương trình ví dụ về tính số nhân đảo của số x modulo 65537 CONST static unit16
return x; /* 0 and 1 area self-inverse*/
t1 = 0x10001L/x; /*Since x>=2, this fist into 16 bits*/
Trang 20II.3 /*Tạo 52 khối subkey từ khoá 128 bit */
Static void ideaExpandKey(byte const *userkey word16 * EK)
II.4 /* Tính khoá cho quá trình giải mã*/
Static void ideaInvaerKey(word16 const *EK, word16DK[ IDEAKEYLEN] )
Trang 25CHƯƠNG III THIẾT KẾ CHƯƠNG TRÌNH MÃ DỊCH
BẰNG HỆ MẬT IDEA
* Giới thiệu về phần mềm mã dịch file bằng IDEA
III.1 Mục đích:
Phần mềm nhằm mục đích mã hoá một file cần được bảo vệ, file sau khi được
mã hoá có thể để công khai trên máy(miễn là tài liệu riêng) hoặc được đưa lênđường truyền để gửi cho người khác (nếu là thông tin gửi cho họ) Nếu cần đọc tàiliệu gốc ta có thể giải mã file trên mã pháp được sử dụng là IDEA
Để có thể làm được việc trên chung ta cần một số việc làm như sau:
a Thoả thuận khoá:
Cũng như mọi hệ mật khoá đối xứng khác thì hệ mật IDEA cần có mộtthao tác thoả thuận về khoá được dùng để mã hoá một văn bản Công việc này
là cần thiết vì nếu không dùng chung nhau một khoá thì ta không thể khôi phụclại bản gốc bằng mã pháp đã nêu, Trong trường hợp bảo vệ tài liệu riêng tư thìcần phải có sự lưu trữ và “đánh dấu” khoá nào được dùng để mã hoá tệp nào.Ngược lại để gửi cho người khác thì hai người phải có trùng nhau một khoá , dokhoá này không thể truyền bằng đường công khai nên hai người có thể thoảthuận nhau trước bằng cánh trao tay nhau khoá đã dùng Bài toán thoả thuậnkhoá từ khi ra đời các hệ mật khoá công khai như RSA hay ELGAMA đã cómột lối thoát kì diệu đó là hai người chỉ cần công khai khóa mã dùng để mã hoákhoá đã dùng, thông tin về khoá sau khi mã có thể gửi trên kênh công khai đểđến chủ của khoá đã công khai đó do đặc tính của loại hệ mật này thì chỉ có chủcủa khoá đã công khai có thể dịch được bản mã ở đây tôi không đi sâu vào việcnghiên cứu phương pháp thoả thuận khoá bằng hệ mật công khai vì không đủ điều
Trang 26kiện về thời gian và kiến thức mà chỉ muốn đưa ra một giải pháp có tính cổ điểntrong việc làm này.
Trong mạng liên lạc mật mà chúng tôi thiết kế, mỗi cá nhân đều có một tệp
về các khoá sẽ được sử dụng, các tệp này được một nơi sản xuất và được phân phốiđến từng người theo phương thức trao tay, tệp khoá trong mô hình của tôi là mộtfile chứa trong một đĩa mềm Việc thoả thuận khoá sẽ được tiến hành như sau: Trong file mã hoá chúng tôi tiến hành ghi địa chỉ của khoá đã dùng để mãhoá lên đầu một file mã (Header) Địa chỉ này gồm hai byte và như vậy trongmỗi tệp khoá sẽ chỉ chứa tối đa 216 = 65536 khoá khác nhau Chú ý rằng mỗikhoá dùng trong hệ IDEA gồm 16 bytes (128 bit) do đó nếu tệp khoá chứa đủ 216
khoá thì kích thước của file khoá là 220 bytes> 1.4 MB không chứa đủ trong mộtdĩa thông dụng Do chỉ để mô phỏng nên thực tế chúng tôi chỉ tạo tệp khoá cókích thước là 524 byte (chứa 33 khoá )
Ta có thể mô tả cấu tạo file mã qua hình sau: