Một dẫn chứng khác gần đây là phát hiện một lỗ hổng logic trong các tính năng của giao thức TLS khi nó đã được sử dụng rộng rãi kể từ sau 13 năm phiên bản đầu tiên của giao thức được côn
Trang 1LỜI CẢM ƠN
Sau một thời gian tìm hiểu đề tài “Nghiên cứu các phương pháp hình thức ứng dụng kiểm chứng giao thức an toàn”, em đã hoàn thành tiến độ dự kiến Để đạt được kết quả này, em đã nỗ lực thực hiện và đồng thời em đã nhận được rất nhiều sự quan tâm, giúp đỡ của quý thầy cô, gia đình và bạn bè
Em xin chân thành cảm ơn giáo viên hướng dẫn: ThS Nguyễn Hồng Tân
– Bộ Môn Công nghệ phần mềm – Trường Đại Học Công Nghệ Thông Tin Và Truyền Thông Thái Nguyên đã tận tình giúp đỡ em hoàn thành đề tài một cách tốt nhất
Em xin chân thành cảm ơn quý thầy cô và ban lãnh đạo trường Đại Học Công Nghệ Thông Tin Và Truyền Thông Thái Nguyên đã nhiệt tình giảng dạy và truyền đạt kiến thức quý báu và bổ ích trong suốt quá trình em học tập tại trường
Em xin chân thành cảm ơn quý thầy cô thuộc Bộ Môn Công nghệ phần mềm – Trường Đại Học Công Nghệ Thông Tin Và Truyền Thông Thái Nguyên
đã trang bị cho em những kiến thức chuyên ngành rất hữu ích để em hoàn thành
đề tài và phục vụ cho công việc của em sau này
Trong quá trình thực hiện đề tài chắc chắn còn những thiếu sót, em rất mong nhận được sự đóng góp ý kiến từ thầy cô và các bạn
Em xin chân thành cảm ơn!
Sinh viên Thiệu Thị Thắm
Trang 2LỜI CAM ĐOAN
Đề tài của em được thực hiện trên cơ sở những kiến thức đã tích lũy được trong quá trình học tập và làm việc, sự giúp đỡ tận tình của quý thầy cô, gia đình, bạn bè, cùng với một số tài liệu quý báu mà em sưu tầm được cũng như kho tàng Internet vô tận
Em xin cam đoan không sao chép từ bất cứ một đồ án tốt nghiệp nào Nếu sai em xin hoàn toàn chịu trách nhiệm trước mọi kỷ luật của nhà trường đề ra
Sinh viên Thiệu Thị Thắm
Trang 3MỤC LỤC
LỜI CẢM ƠN 1
LỜI CAM ĐOAN 2
MỤC LỤC 3
LỜI NÓI ĐẦU 5
TÓM TẮT NỘI DUNG 6
CHƯƠNG I CƠ SỞ LÝ THUYẾT 7
1.1 Giới thiệu chung 7
1.2 Giao thức bảo mật an toàn 8
1.2.1 Định nghĩa giao thức bảo mật an toàn 8
1.2.2 Các lỗ hổng trong bảo mật và phương thức tấn công mạng .9
1.2.3 Một số giao thức bảo mật phổ biến 11
1.3 Tổng quan về phương pháp hình thức 18
1.3.1 Phân loại 19
1.3.2 Sử dụng 20
1.3.3 Các phương pháp hình thức và hệ thống kí hiệu 22
1.3.4 π-Calculus 23
1.3.5 Ưu điểm và nhược điểm 29
1.4 Công cụ Proverif 30
1.4.1 Đặc điểm của Proverif 31
1.4.2 Cài đặt công cụ: 32
1.4.3 Mô hình tổng quát 33
1.4.4 Thực thi 33
1.4.5 Ví dụ Hello World 41
CHƯƠNG II TIẾP CẬN VÀ PHÂN TÍCH BÀI TOÁN EXAM 44
2.1 Lí do chọn bài toán và phát biểu về bài toán 44
2.1.1 Giới thiệu bài toán 44
2.1.2 Đặc tả bài toán bằng ngôn ngữ tự nhiên 46
2.2 Xác thực và bảo mật trong Exams 48
2.2.1 Mô hình hóa Exam protocol trong việc áp dụng π-Calculus 48
Trang 42.2.2 Thuộc tính xác thực và bảo mật 51
2.3 Kiểm chứng trong Exams 55
2.3.1 Kiểm chứng thuộc tính cá nhân .55
2.3.2 Kiểm chứng thuộc tính phổ dụng (Universal Verifiability Properties)57 CHƯƠNG III THỰC NGHIỆM KIỂM CHỨNG TRÊN 58
CÔNG CỤ PROVERIF 58
3.1 Thực hiện mô hình hóa các quy trình 58
3.2 Thực thi trên proverif 60
3.2.1 Kiểm chứng thuộc tính cá nhân 60
3.2.2 Kiểm chứng thuộc tính phổ dụng 64
KẾT LUẬN 68
TÀI LIỆU THAM KHẢO 69
Trang 5LỜI NÓI ĐẦU
Vấn đề bảo đảm thông tin trong quá trình trao đổi thông tin luôn là vấn đề được quân tâm Trong thực tế, khi hai người bất kỳ muốn trao đổi dữ liệu với nhau, họ phải xác định người kia là ai, sau đó thống nhất với nhau là phải dùng phương pháp mã hóa nào, khóa là gì,… Để làm được điều đó họ phải tiến hành thông qua giao thức bảo mật Giao thức bảo mật là những chương trình nhằm đảm bảo thông tin liên lạc qua mạng lưới truyền tin dựa vào các kỹ thuật mã hóa Tuy nhiên việc thiết kế và phát triển các giao thức bảo mật này rất dễ bị mắc lỗi Điều này được chứng minh qua giao thức rất nổi tiếng Needham-Schroeder public-key đã được Lowe tìm thấy một lỗ hổng sau khi giao thức đã được công
bố 17 năm Một dẫn chứng khác gần đây là phát hiện một lỗ hổng logic trong các tính năng của giao thức TLS khi nó đã được sử dụng rộng rãi kể từ sau 13 năm phiên bản đầu tiên của giao thức được công bố dưới phiên bản SSL 3.0 Lỗi bảo mật có thể có hậu quả nghiêm trọng, dẫn đến việc mất thông tin hoặc mất lòng tin của người dùng trong hệ thống Hơn nữa, các lỗi bảo mật không thể phát hiện bằng cách kiểm tra các phần mềm chức năng bởi vì chúng chỉ xuất hiện khi có mặt kẻ tấn công Do đó việc sử dụng các phương pháp hình thức để mô hình hóa
và thực hiện kiểm chứng chúng trên các công cụ tự động là rất hữu ích để có được sự bảo đảm thực tế rằng các giao thức bảo mật là chính xác
Điều này là lí do khiến lĩnh vực kiểm chứng giao thức bảo mật được nghiên cứu và phát triển mạnh ở trên thế giới tuy nhiên ở Việt Nam thì còn hạn chế và điều đó là lí do khiến em chọn đề tài “Nghiên cứu các phương pháp hình thức ứng dụng kiểm chứng giao thức an toàn” làm đề tài đồ án tốt nghiệp
Trang 6TÓM TẮT NỘI DUNG
Bản báo cáo được chia thành 3 chương với nội dung như sau:
Chương 1 Cơ sở lý thuyết
Trình bày tổng quan về phương pháp hình thức, giao thức bảo mật an toàn
và giới thiệu về công cụ kiểm chứng giao thức Proverif
Chương 2 Tiếp cận và phân tích bài toán Exam
Phát biểu, phân tích yêu cầu bài toán và các thuộc tính của Exam, mô hình hóa hình thức cho các thuộc tính xác thực và thuộc tính bảo mật của Exam
Chương 3 Thực nghiệm kiểm chứng trên công cụ Proverif
Thực thi, phân tích và đánh giá kết quả sau khi thực hiện kiểm chứng thuộc tính của bài toán Exam trên công cụ Proverif
Trang 7CHƯƠNG I CƠ SỞ LÝ THUYẾT
1.1 Giới thiệu chung
Nguy cơ mất an toàn thông tin do nhiều nguyên nhân, đối tượng tấn công
đa dạng… Thiệt hại từ những vụ tấn công mạng là rất lớn, đặc biệt là những thông tin thuộc lĩnh vực kinh tế, an ninh, quốc phòng… Theo số liệu thống kê về hiện trạng bảo mật mới nhất công bố của Symantec, Việt Nam đứng thứ 11 trên toàn cầu về các hoạt động đe dọa tấn công mạng Những xu hướng đe dọa bảo mật ngày càng gia tăng nổi bật hiện nay mà các tổ chức tại Việt Nam cần quan tâm là: tấn công có chủ đích cao cấp, các mối đe dọa trên thiết bị di động, những
vụ tấn công độc hại và mất cắp dữ liệu Thực tế, nguy cơ mất an ninh anh toàn mạng máy tính còn có thể phát sinh ngay từ bên trong Hệ thống máy tính luôn bị
đe dọa bởi các nguy cơ mất an toàn Một trong những công việc để bảo vệ hệ thống là làm sao giúp hệ thống tránh khỏi các nguy cơ đó
Các nguy cơ và hiểm họa bao gồm:
- Hiểm họa vô tình: Khi người dùng khởi động lại hệ thống ở chế độ đặc quyền, họ có thể tùy ý chỉnh sửa hệ thống Nhưng sau khi hoàn thành công việc
họ không chuyển hệ thống sang chế độ thông thường, vô tình để kẻ xấu lợi dụng
- Hiểm họa cố ý: Cố tình truy nhập hệ thống trái phép
- Hiểm họa thụ động: Là hiểm họa nhưng chưa hoặc không tác động trực tiếp lên hệ thống, như nghe trộm các gói tin trên đường truyền
- Hiểm họa chủ động: Là việc sửa đổi thông tin, thay đổi tình trạng hoặc hoạt động của hệ thống
Nguyên nhân xuất phát
- Từ phía người sử dụng: Xâm nhập bất hợp pháp, ăn cắp tài sản có giá trị Trong đó quan trọng nhất là những người dùng nội bộ
- Kiến trúc hệ thống thông tin: Tổ chức hệ thống kỹ thuật không có cấu trúc hoặc không đủ mạnh để bảo vệ thông tin
- Chính sách bảo mật an toàn thông tin: Không chấp hành các chuẩn an toàn, không xác định rõ các quyền trong vận hành hệ thống
Trang 81.2 Giao thức bảo mật an toàn
1.2.1 Định nghĩa giao thức bảo mật an toàn
Giao thức là tập hợp những quy tắc, quy ước truyền thông để thiết lập giao tiếp đúng ngữ nghĩa giữa các chủ thể tham gia
Giao thức bảo mật là những chương trình ngắn nhằm thực hiện các chức năng liên quan đến đảm bảo thông tin liên lạc qua một mạng lưới truyền tin như Internet được an toàn dựa trên các kỹ thuật mã hóa Những cơ chế mã hóa chính thường được sử dụng như là: Cơ chế mã hóa khóa đối xứng ( Symmetric Key Cryptography), mã hóa khóa bất đối xứng (Asymmetric Key Cryptography) để đảm bảo thỏa mãn các thuộc tính của một giao thức bảo mật thông thường như:
- Trao đổi khóa phiên bí mật để mã hóa dữ liệu
- Xác định rõ các bên tham gia, định danh hai cá thể trao đổi dữ liệu, chống phát lại thông điệp
- Truyền dữ liệu an toàn:
+ Đảm bảo tính bảo mật (Confidentiality): Ngăn chặn được vấn đề xem trộm thông điệp
+ Đảm tính chứng thực (Authentication): Nhằm đảm bảo cho bên nhận rằng thông tin không bị thay đổi trong quá trình truyền tin Như vậy tính chứng thực ngăn chặn các hình thức tấn công sửa thông điệp, mạo danh, và phát lại thông điệp
+ Đảm tính không từ chối (Non_repudiation): Là cơ chế để xác định rằng trách nhiệm của các bên tham gia Cơ chế để bảo đảm tính chứng thực và tính không từ chối của bên tham gia người ta cũng thiết lập một cơ chế như vậy, cơ chế này được gọi là chữ ký điện tử
+ Đảm bảo tính rõ ràng (Message Freshness)
Giao thức bảo mật được sử dụng phổ biến như sử dụng trong thương mại điện tử: có giao thức TLS (Transport Layer Security) được sử dụng cho https:// URLs Sử dụng trong các giao dịch ngân hàng, mạng lưới điện thoại di động và
hệ thống WiFi v v
Trang 91.2.2 Các lỗ hổng trong bảo mật và phương thức tấn công mạng
Các lỗ hổng là những điểm yếu trên hệ thống mà dựa vào đó đối tượng tấn công có thể xâm nhập trái phép vào hệ thống
Các loại lỗ hổng trong bảo mật:
+ Lỗ hổng loại C: Cho phép thực hiện hình thức tấn công theo kiểu DoS (Denial of Services – Từ chối dịch vụ) làm ảnh hưởng tới chất lượng dịch vụ, ngưng trệ, gián đoạn hệ thống, nhưng không phá hỏng dữ liễu hoặc đoạt được quyền truy cập hệ thống
+ Lỗ hổng loại B: Lỗ hổng cho phép người sử dụng có thêm các quyền trên hệ thống mà không cần kiểm tra tính hợp lệ dẫn đến lộ, lọt thông tin
+ Lỗ hổng loại A: Cho phép người ngoài hệ thống có thể truy cập bất hợp
pháp vào hệ thống, có thể phá hủy toàn bộ hệ thống
- Kỹ thuật đánh lừa (Social Engineering): Đây là thủ thuật được nhiều hacker sử dụng cho các cuộc tấn công thâm nhập vào hệ thống mạng và máy tính bởi tính đơn giản mà hiệu quả của nó Kỹ thuật này thường được sử dụng để lấy cắp mật khẩu, thông tin, tấn công vào và phá hủy hệ thống Ví dụ, kỹ thuật đánh lừa Fake Email Login
- Kỹ thuật tấn công vào vùng ẩn: Những phần bị dấu đi trong các website thường chứa những thông tin về phiên làm việc của các client Các phiên làm việc này thường được ghi lại ở máy khách chứ không tổ chức cơ sở dữ liệu trên máy chủ Vì vậy, người tấn công có thể sử dụng chiêu thức View Source của trình duyệt để đọc phần đầu đi này và từ đó có thể tìm ra các sơ hở của trang Web mà họ muốn tấn công Từ đó, có thể tấn công vào hệ thống máy chủ
Trang 10- Tấn công vào các lỗ hổng bảo mật: Hiện, nay các lỗ hổng bảo mật được phát hiện càng nhiều trong các hệ điều hành, các web server hay các phần mềm khác, Các hãng sản xuất cũng luôn cập nhật các bản vá lỗ hổng và đưa ra các phiên bản mới sau khi đã vá lại các lỗ hổng của các phiên bản trước Do đó, người sử dụng phải luôn cập nhật thông tin và nâng cấp phiên bản cũ mà mình đang sử dụng để tránh các hacker lợi dụng điều này tấn công vào hệ thống
- Khai thác tình trạng tràn bộ đệm: Tràn bộ đệm là một tình trạng xảy ra khi dữ liệu được gửi quá nhiều so với khả năng xử lý của hệ thống hay CPU Nếu hacker khai thác tình trạng tràn bộ đệm này thì họ có thể làm cho hệ thống bị tê liệt hoặc làm cho hệ thống mất khả năng kiểm soát
- Nghe trộm: Các hệ thống trao đổi thông tin qua mạng đôi khi không được bảo mật tốt và lợi dụng điều này, hacker có thể truy cập vào data paths để nghe trộm hoặc đọc trộm luồng dữ liệu truyền qua
- Kỹ thuật giả mạo địa chỉ: Thông thường, các mạng máy tính nối với Internet đều được bảo vệ bằng tường lửa Tường lửa có thể hiểu là cổng duy nhất
mà người đi vào nhà hay đi ra cũng phải qua đó và sẽ bị “điểm mặt” Tường lửa hạn chế rất nhiều khả năng tấn công từ bên ngoài và gia tăng sự tin tưởng lẫn nhau trong việc sử dụng tài nguyên chia sẻ trong mạng nội bộ
- Kỹ thuật chèn mã lệnh:Một kỹ thuật tấn công căn bản và được sử dụng cho một số kỹ thuật tấn công khác là chèn mã lệnh vào trang web từ một máy khách bất kỳ của người tấn công
- Tấn công dùng Cookies:Cookie là những phần tử dữ liệu nhỏ có cấu trúc được chia sẻ giữa website và trình duyệt của người dùng Cookies được lưu trữ dưới những file dữ liệu nhỏ dạng text (size dưới 4KB) Chúng được các site tạo
ra để lưu trữ, truy tìm, nhận biết các thông tin về người dùng đã ghé thăm site và những vùng mà họ đi qua trong site Những thông tin này có thể bao gồm tên, định danh người dùng, mật khẩu, sở thích, thói quen
Do đó việc ngăn chặn và hạn chế các lỗ hổng, kiểm chứng các giao thức là điều cần thiết và đáng được quan tâm Kiểm chứng giao thức bảo mật là việc kiểm tra các chương trình nhằm đảm bảo thông tin liên lạc qua một mạng lưới
Trang 11truyền tin như Internet được an toàn dựa trên các kỹ thuật mã hóa Lỗi bảo mật
có hậu quả nghiêm trọng, dẫn đến mất tiền hoặc mất lòng tin của người sử dụng
hệ thống Hơn nữa, các lỗi bảo mật không thể được phát hiện bằng cách kiểm tra các phần mềm chức năng bởi vì lỗi chỉ xuất hiện khi có sự hiện diện của kẻ thù nguy hiểm
Để chứng minh giao thức bảo mật là chính xác, một trong những nhu cầu đầu tiên là mô hình hóa chúng bằng toán học Hai mô hình của giao thức được
xem xét là: Mô hình xác minh tính toán (Computational veri cation model): Dựa
trên việc mô phỏng, chứng minh bằng tay các thuộc tính bảo mật Việc chứng minh được thực hiện bởi các logic rời rạc, các phần tử Các thông điệp là các chuỗi bít, chúng coi những hàm mã hóa là ánh xạ từ chuỗi bít-chuỗi bit, phức tạp hơn, hiện đại hơn và có tính xác suất, tính bảo mật chỉ được bảo toàn nếu xác suất các hàm mã hóa bị phá vỡ là vô cùng nhỏ Trong mô hình này, chiều dài của khóa được xác định bởi tên giá trị là tham số bảo mật, và thời gian chạy của các
đối thủ được coi là các hàm đa thức trong tham số bảo mật Mô hình thứ hai là
mô hình xác minh biểu trưng:( Symbolic veri cation model): Dựa trên phương pháp hình thức truy tìm các cuộc tấn công bằng dấu vết của giao thức, mô hình này coi những hàm mã hóa dữ liệu cơ bản là hộp đen, kẻ tấn công không thể giải
mã các mật mã cơ sở Mô hình này giới hạn các đối thủ tấn công để thực hiện tính toán và nó giả định các mật mã là hoàn hảo Có thể kết hợp với các kĩ thuật khác để chứng minh tính đúng đắn
1.2.3 Một số giao thức bảo mật phổ biến
Mỗi một loại giao thức lại có những đặc tính, đặc điểm khác nhau nhằm bảo đảm các thuộc tính bảo mật và những đặc trưng riêng của từng lĩnh vực Một
số giao thức bảo mật cụ thể như là: Kao Chow Authentication Protocol ( giao thức chứng thực Kao Chow); the 3-D Secure Protocol ( Giao thức bảo mật 3D), Needham Schroeder Public Key Protocol ( Giao thức khóa công khai Needham Schroeder), Andrew Secure RPC Protocol ( Giao thức bảo mật RPC) Challenge Handshake Authentication Protocol ( Giao thức xác minh bắt tay chứng thực ) Diffie- Hellman Key Exchange Protocol ( Giao thức trao đổi khóa
Trang 12Diffie_hellman) là những giao thức đã được sử dụng phổ biến và được quan tâm
chú trọng
a Kao Chow Authentication Protocol
Là giao thức chứng thực lẫn nhau và phân phối khóa với mục đích là nhấn mạnh việc chứng thực đảm bảo tính đúng đắn của thông điệp
- Đặc tả giao thức:
+ Kas , Kbs : là các khóa đối xứng tương ứng của các giá trị A và S, B và S
A và B là bên giao tiếp với nhau, phát sinh thêm một bên đáng tin cậy S
+ Na, Nb: là số duy nhất cho việc chứng thực lẫn nhau và để kiểm chứng tính chứng thực của khóa đối xứng Kab
+ Thông điệp 3,4 được xác thực lặp đi lặp lại Sau khi thông điệp 1,2 đã được hoàn thành thì 3,4 có thể phát lại dịch vụ nhiều lần bởi B trước khi bắt đầu giao tiếp bí mật với A và được mã hóa với khóa phiên Kab Giao thức này được thiết kế để ngăn chặn các cuộc tấn công mới mẻ trên một phần xác thực lặp đi lặp lại của các giao thức Neumann Stubblebine Thực ra, số duy nhất Na trong thuật toán mã hóa của thông điệp 2 ngăn chặn việc chia sẻ khóa bị xâm nhập sau mỗi lần chạy và sử dụng lại giao thức Giao thức phải đảm bảo giứ bí mật của Kab: Trong mỗi phiên giá trị của Kab chỉ được biết bởi bên tham gia A,B và S Khi A yêu cầu, B nhận khóa Kab trong thông điệp 3 và yêu cầu 2 Khóa này phải được ban hành trong cùng một phiên bởi máy chủ S với A bắt đầu giao tiếp bằng thông điệp 1 Giao thức cũng phải đảm bảo chứng thực lẫn nhau giữa A và B
b Needham Schroeder Public Key Protocol
Dựa trên mã hóa khóa công khai Giao thức này được thiết kế để cung cấp
Trang 13bên biết được khóa công khai của nhau Như vậy, việc mã hóa các dữ liệu có thể
sử dụng khóa công khai của từng bên
có những thuộc tính mà Kss được sử dụng để mã hóa và giải mã KPS
Giao thức được chạy như sau:
A yêu cầu khóa công khai của B từ S
S phản hổi với khóa công khai KPB cùng với danh tính của B có chữ ký
của máy chủ với mục đích xác thực
A chọn ngẫu nhiên một một số NA và gửi nó cho B
B bây giờ biết A muốn giao tiếp, vì vậy B yêu cầu các khóa công khai của A
Trang 14Tại thời điểm kết thúc của giao thức A và B sẽ biết danh tính của nhau và biết cả NA,NB là những số duy nhất không được tiết lộ cho kẻ nghe lén thông tin
Tuy nhiên giao thức này dễ bị tổn thương từ một kẻ tấn công trung gian
Nếu một kẻ mạo danh có thể thuyết phục A để bắt đầu một phiên làm việc với A,
nó có thể chuyển tiếp các thông điệp đến B và thuyết phục B giao tiếp với A Bỏ qua các thông tin đến và đi từ S cái mà không thay đổi, các cuộc tấn công chạy như sau:
A gửi NA đến I cài mà đã giải mã các thông tin với KSI
I sẽ chuyển thông điệp tới B và trả vờ như là A đang giao tiếp
B gửi NB
I chuyển tiếp đến A
A giải mã NB và xác nhận nó cho I người mà lấy cắp thông tin
I mã hóa lại NB và thuyết phục B rằng đã giải mã nó
Khi kết thúc cuộc tấn công, B đã sai lầm tin rằng mình đã giao tiếp với A
và NA,NB chỉ biết bởi A và B
Cuộc tấn công được mô tả đầu tiên bởi Gavin Lowe trong năm 1995 Và cũng đã sửa chữa và đưa ra một phiên bản khác có tên Needham Schroeder Lowe Protocol Việc sửa chữa được sửa đổi ở thông điệp thứ 6 bao gồm danh tính của người trả lời:
Được thay thế bằng
Trang 15c Andrew Secure RPC Protocol
Giao thức này nhằm phân phối khóa phiên làm việc mới giữa các bên tham gia A và B Khi khóa phiên k được chia sẻ thì nó phải đảm bảo tính bí mật
Giao thức này thiết lập việc chia sẻ một khóa đối xứng mới là K’ab N’b là
số duy nhất gửi đi trong thông điệp 4 sẽ được dùng trong các phiên tiếp theo Giả định ban đầu khóa đối xứng Kab chỉ được biết bởi A và B
Giao thức phải bảo đảm giữ bí mật khóa K'ab mới được chia sẻ: Trong mỗi phiên, giá trị của K'ab chỉ được biết bởi người tham gia đóng vai trò Avà B
Giao thức phải bảo đảm tính xác thực của khóa K’ab Trong mỗi phiên, khi
tiếp nhận thông điệp 4 thì A phải đảm bảo rằng các khóa K'ab trong thông điệp đã được tạo ra bởi A trong cùng một phiên
d Challenge Handshake Authentication Protocol
Giao thức này dùng để chứng thực người dùng hoặc các máy chủ nhà mạng nhằm mục đích chứng thực các thực thể của các bên tham gia Nó được sử dụng định kì để xác minh các danh tính ngang hàng sử dụng cách thức bắt tay 3 bước ( 3-way Handshake) Điều này được hình thành dựa việc thiết lập các liên kết ban đầu (LCP) và có thể được lặp lại bất cứ lúc nào Giao thức này là một chương trình xác thực được sử dụng bởi giao thức Point To Point (PPP) máy chủ
để xác nhận danh tính của khách hàng từ xa Nó đòi hỏi cả client và sever phải biết các bí mật bản rõ mặc dù nó chưa được gửi qua môi trường mạng Giao thức này cung cấp bảo mật tốt hơn sơ với Password Authentication Protocol (PAP)
Trang 16- Chu kỳ làm việc
1 Sau khi hoàn thành giai đoạn thiết lập liên kết ban đầu Việc chứng thực
sẽ gửi một thông điệp thách thức (challenge) đến với những đối tượng ngang hàng
2 Các đối tượng ngang hàng này sẽ phản hồi với một giá trị được tính toán bằng cách sử dụng một hàm băm một chiều trên các thách thức và bí mật được phối hợp
3 Thực hiện chứng thực việc kiểm tra các đáp ứng chống lại tính toán riêng về các giá trị băm mong muốn Nếu các giá trị phù hợp thì việc chứng thực được thừa nhận Ngược lại nó sẽ châm dứt kết nối
4 Tại những khoảng thời gian ngẫu nhiên, việc chứng thực sẽ gửi một thách thức mới cho các đối tượng ngang hàng và thực hiện việc lặp đi lặp lại các bước từ 1 đến 3
Ưu điểm:
- Cung cấp giải pháp bảo vệ chống lại việc tấn công quay lại bởi các đối tượng ngang hàng thông qua việc từng bước thay đổi định danh và biến thách thức giá trị Việc sử dụng các thách thức lặp đi lặp lại là nhằm hạn chế thời gian
tiếp xúc với bất kỳ cuộc tấn công đơn nào Thực hiện chứng thực ở trong kiểm
soát tần số và thời gian của những thách thức
e Diffie- Hellman Key Exchange Protocol
Là một phương pháp cho hai người sử dụng máy tính tạo ra một khóa riêng chia sẻ với nhau để có thể trao đổi thông tin trên một kênh không an toàn Khóa này có thể được sử dụng sau đó để mã hóa các thông báo tiếp theo bằng cách sử dụng một thuật toán mã hóa khóa đối xứng
- Đặc tả giao thức:
Ta có hai bên giao tiếp là A và B Đầu tiên họ đưa ra 2 số nguyên tố p và
g Trong đó p là số lớn ( thường ít nhất là 512 bit) và g là một phần gốc của nguyên tố p Trong thực tế cũng có thể thay thế p bằng (p-1) / 2 cũng là số nguyên tố Các con số g và p không cần phải được giữ bí mật từ những người dùng khác
Trang 17Đầu tiên A chọn một số ngẫu nhiên lớn a như một khóa riêng của mình và
B cũng chọn một số lớn b làm khóa riêng của mình Sau đó A thực hiện tính A=
g ^ a (mod p) cái mà gửi cho B Và B thực hiện tính B = g ^ b (mod p) cái mà nhận được từ A.Tiếp theo cả A và B tính toán khóa chia sẻ của họ K = g ^ (ab) (mod p)
A thực hiện tính khóa K=B^a (mod p)=(g^b)^a (mod p)
B thực hiện tính khóa K=A^b (mod p)=(g^a)^b (mod p)
A và B có thể sử dụng khóa K để chia sẻ thông tin vơi nhau mà không cần
lo lắng về người dùng khác biết được thông tin này Để cho một kẻ nghe lén (Eve) có khả năng làm được điều đó thì đầu tiên họ cần có được K=g^(ab) (mod p) chỉ biết g, p, A = g ^ a (mod p) và B = g ^ b (mod p) Điều này có thể được
thực hiện bằng cách tính toán a từ A = g ^ a (mod p) và b từ B = g ^ b (mod p)
Đây là bài toán logarit rời rạc cái mà khả thi để tính toán cho số p lớn Tính toán logarit rời rạc của một số lớn p cũng phải mất một khoảng thời gian như việc phân tích kết quả của hai số nguyên tố cùng kích thước với p cái mà dựa trên sự
an toàn của hệ mật mã RSA Như vậy giao thức này có độ an toàn gần tương đồng với RSA
f The 3-D Secure Protocol
Là giao thức dựa trên XML được dùng như một lớp bảo mật bổ sung cho các giao dịch thẻ tín dụng và ghi nợ trực tuyến Ban đầu nó được phát triển bởi
Hệ thống Arcot, Inc và lần đầu tiên được triển khai bởi Visa với ý định cải thiện
sự an toàn của các tài khoản thanh toán trên Internet được cung cấp cho khách
hàng theo tên xác minh bởi Visa Mỗi bên phát hành có thể sử dụng bất kỳ loại
phương pháp chứng thực nào Phương pháp phổ biến nhất là phương pháp dựa trên mật khẩu Như vậy , để thanh toán online thì ta sử dụng một mật khẩu bí mật gắn vào thẻ Cách xác minh bởi giao thức của Visa là đề nghị trang xác minh của ngân hàng nạp vào một khung (frame) nội tuyến Bằng cách này, hệ thống của ngân hàng có thể được tổ chức để chịu trách nhiệm cho hầu hết các lỗ hổng bảo mật Các dịch vụ dựa trên giao thức cũng đã được thông qua bởi MasterCard như: MasterCard SecureCode và bởi JCB International như: J/Secure American
Trang 18Express đã thêm 3-D Secure vào 11/8/2010 như: American Express SafeKey trong các môi trường được chọn lọc và tiếp tục triển khai và bổ sung thêm một số môi trường nữa Nhiều những nghiên cứu và phân tích các giao thức đã cho thấy
nó có nhiều vấn đề bảo mật ảnh hưởng đến người dùng bao gồm tất cả các trường hợp có thể lừa đảo và sự thay đổi về trách nhiệm trong các trường hợp thanh toán gian lận
1.3 Tổng quan về phương pháp hình thức
Phương pháp hình thức là việc áp dụng các kỹ thuật toán học cho việc đặc
tả và phân tích các thuộc tính và các hành vi của các đối tượng, phát triển
và kiểm định các hệ thống phần mềm và phần cứng Nó được phân biệt từ các đặc tả yêu cầu hệ thống bằng cách nhấn mạnh tính đúng đắn và chứng minh nó Cách tiếp cận này đặc biệt quan trọng đối với các hệ thống cần có tính toàn vẹn cao, chẳng hạn hệ thống điều khiển lò phản ứng hạt nhân hay điều khiển tên lửa
và các hệ thống mà an toàn, bảo mật giữ vai trò quan trọng, để góp phần đảm bảo rằng quá trình phát triển hệ thống sẽ không có lỗi Các phương pháp hình thức đặc biệt hiệu quả tại giai đoạn đầu của quá trình phát triển (tại các mức yêu cầu và đặc tả hệ thống), nhưng cũng có thể được sử dụng cho một quá trình phát triển hoàn chỉnh của một hệ thống Nó chỉ ra tính chính xác (correctness) của toàn bộ hệ thống (tính chính xác luôn luôn đi kèm thuộc tính cụ thể) Để thay thế cho kiểm thử (Các phương pháp hình thức chạy trên mã nguồn, hay có thể trên byte code)
Lịch sử của phương pháp hình thức:
- Những năm 80, kiểm định phần mềm được xem như “chết”
+ Ít tự động, người lập trình phải nỗ lực “bằng chân tay” quá nhiều
+ Chỉ có một số ít chương trình ví dụ có thể chạy được
- Những năm 90, kiểm tra mô hình (model checker) thành công
+ Kiểm tra một cách đầy đủ và tự động hoàn toàn các mô hình (với một tập các trạng thái hữu hạn)
+ Kiểm định phần cứng và các giao thức giao tiếp
- Từ cuối những năm 90, mối quan tâm về kiểm định phần mềm tăng lên
Trang 19+ Chứng minh/kiểm tra mô hình những phần quan trọng của phần mềm
- Những ứng dụng mới như proof-carrying-code (PCC)
+ Đặt các bằng chứng (proof) cùng với mã máy (machine code) và chứng minh rằng mã máy đó thỏa mãn một số thuộc tính về bảo mật/an toàn
- Xem xét những vấn đề mới: bảo mật
Phương pháp hình thức là chủ để “hot” trong nghiên cứu cũng như trong công nghiệp
1.3.1 Phân loại
Các phương pháp hình thức có thể được sử dụng tại nhiều mức:
- Mức 0: Đặc tả hình thức có thể được thực hiện và rồi một chương trình
được phát triển từ đặc tả này một cách không hình thức Trong nhiều trường hợp, cách này có thể là lựa chọn hiệu quả nhất về mặt chi phí
- Mức 1: Sử dụng phát triển và kiểm định hình thức để tạo một chương
trình theo một quy trình hình thức hơn Ví dụ, có thể thực hiện các chứng minh
về các tính chất hoặc quá trình tinh chỉnh (refinement) từ đặc tả hình thức tới một chương trình Đây có thể là lựa chọn phù hợp nhất đối với các hệ thống yêu cầu tính toàn vẹn cao với các tiêu chí về an toàn và an ninh
- Mức 2: Sử dụng các bộ chứng minh định lý (theorem prover) để thực
hiện các chứng minh hình thức hoàn toàn và được kiểm chứng bằng máy móc Việc này có thể đòi hỏi chi phí rất cao và chỉ đáng lựa chọn trong thực tiễn nếu phí tồn cho các lỗi sai là cực kỳ cao (ví dụ, trong các phần quan trọng của thiết kế
bộ vi xử lý)
Cùng với việc phân loại ngữ nghĩa hình thức của ngôn ngữ lập trình, các phương pháp hình thức có thể được phân loại tương đối như sau:
- Ngữ nghĩa ký hiệu (Denotational semantics): Trong đó ý nghĩa của một
hệ thống được biểu diễn bằng lý thuyết toán học về miền xác định Ưu điểm của những phương pháp này phụ thuộc vào bản chất được hiểu rõ của các miền xác định để từ đó đem lại ý nghĩa cho hệ thống Nhược điểm của nó là không phải hệ thống nào cũng có thể được nhìn một cách tự nhiên hoặc trực quan dưới dạng một hàm số
Trang 20- Ngữ nghĩa hoạt động (Operational semantics): Trong đó, ý nghĩa của
một hệ thống được biểu diễn bằng một chuỗi các hành động của một mô hình tính toán (các giả thiết) đơn giản hơn Ưu điểm của phương pháp này là tính đơn giản của các mô hình tạo nên sự trong sáng của việc biểu diễn Nhược điểm là phương pháp này đã trì hoãn các vấn đề của ngữ nghĩa (ai định nghĩa ngữ nghĩa của các mô hình đơn giản hơn?)
- Ngữ nghĩa tiên đề (Axiomatic semantics): Trong đó, ý nghĩa của hệ thống
được biểu diễn theo các tiền điều kiện (precondition) và hậu điều kiện (postcondition), đây lần lượt là các điều kiện phải được thỏa mãn tại các thời điểm trước và sau khi hệ thống thực hiện một nhiệm vụ Ưu điểm phương pháp này là nó có mối quan hệ với lôgic kinh điển Nhược điểm của nó là những ngữ nghĩa thuộc dạng này không thực sự mô tả xem hệ thống làm cái gì (chỉ là cái gì đúng trước đó và sau đó)
1.3.2 Sử dụng
Các phương pháp hình thức có thể được áp dụng tại nhiều điểm khác nhau trong cả quá trình phát triển phần mềm Tuy có thể nói đến một quá trình phát triển bất kỳ, nhưng để thuận tiện, ta sẽ dùng các thuật ngữ và quy trình của mô hình thác nước
a Đặc tả:
Các phương pháp hình thức có thể được sử dụng để mô tả về hệ thống cần phát triển, tại bất kỳ mức độ chi tiết mà ta muốn Mô tả hình thức này có thể được sử dụng để hướng dẫn các hoạt động phát triển tiếp theo, ngoài ra nó có thể được sử dụng để kiểm định xem các yêu cầu cho hệ thống đang được phát triển
đã được đặc tả một cách đầy đủ và chính xác hay chưa
Nhu cầu về các hệ thống đặc tả hình thức đã được nói đến từ nhiều năm Trong Báo cáo ALGOL 60, John Backus đã trình bày một hệ thống ký hiệu hình thức để mô tả cú pháp ngôn ngữ lập trình (sau này đặt tên là Backus normal form hay Backus Naur Form (BNF) dạng chuẩn tắc Backus)
Trang 21b Phát triển
Khi một đặc tả hình thức đã được phát triển xong, đặc tả đó có thể được
sử dụng làm một hướng dẫn trong quá trình hệ thống thực được phát triển (nghĩa
là được hiện thực hóa trong phần mềm và/hoặc phần cứng) Ví dụ:
- Nếu đặc tả hình thức là một ngữ nghĩa hoạt động, hành vi được quan sát của hệ thống thực sẽ có thể được so sánh với hành vi trong đặc tả (chính đặc tả cũng nên chạy được hoặc giả lập được) Thêm vào đó, các lệnh hoạt động của đặc tả có thể thích hợp cho việc dịch thẳng mã chạy được
- Nếu đặc tả hình thức là một ngữ nghĩa tiên đề, các tiền điều kiện và hậu điều kiện của đặc tả có thể trở thành sự khẳng đinh (assertion) trong mã chạy được
c Kiểm định
Khi một đặc tả hình thức đã được phát triển, đặc tả này có thể được dùng làm cơ sở cho việc chứng minh các tính chất của đặc tả
- Chứng minh bằng tay: Đôi khi, động cơ cho việc chứng minh tính đúng
đắn của một hệ thống không phải là nhu cầu đảm bảo tính đúng đắn của hệ thống
mà là mong muốn hiểu rõ hơn về hệ thống Do đó, một số chứng minh được thực hiện dưới hình thức chứng minh toán học: viết tay hoặc đánh máy nội dung bằng ngôn ngữ tự nhiên, với mức độ phi hình thức như các chứng minh toán học thông thường mà con người vẫn thực hiện Một chứng minh "tốt" là một chứng minh mà những người khác có thể đọc được và hiểu được Nhược điểm đối với cách tiếp cận này là tính đa nghĩa cố hữu trong ngôn ngữ tự nhiên cho phép các lỗi sai trong các chứng minh đó có thể không bị phát hiện, nhiều khi những lỗi tinh vi có thể xuất hiện trong các chi tiết mức thấp mà thường không được để ý đến bởi những chứng minh thuộc kiểu này Ngoài ra, việc tạo ra các chứng minh tốt đòi hỏi trình độ toán học cao
- Chứng minh tự động: Ngược lại, ngày càng có nhiều quan tâm đến các chứng minh về tính đúng đắn của hệ thống bằng các công cụ tự động Các kỹ thuật tự động được phân thành hai loại chính:
Trang 22+ Chứng minh định lý tự động: Trong đó, khi cho trước một mô tả về hệ thống, một tập các tiên đề lôgic và một tập các quy tắc suy luận, một hệ thống sẽ
cố gắng tự xây dựng một chứng minh hình thức từ đầu
+ Kiểm tra mô hình: Trong đó, một hệ thống kiểm định các tính chất nhất định bằng cách duyệt toàn bộ tất cả các trạng thái mà trong thời gian chạy, hệ thống có thể vào trạng thái đó
Cả hai kỹ thuật trên đều hoạt động mà không cần đến sự hỗ trợ của con người Các bộ chứng minh định lý tự động thường yêu cầu định hướng xem các tính chất nào là đáng quan tâm còn các bộ kiểm tra mô hình có thể nhanh chóng
sa lầy vào việc kiểm tra hàng triệu trạng thái không đáng quan tâm nếu không được cho trước một mô hình đủ trừu tượng
Ưu điểm của các hệ thống này là các kết quả của chúng có độ xác tính toán học cao hơn việc chứng minh bằng tay, do tất cả các chi tiết đã được kiểm định một cách có thuật toán Việc huấn luyện cần thiết để có thể sử dụng được các hệ thống này cũng ít hơn đòi hỏi cần thiết cho việc tạo ra các chứng minh toán học tốt bằng tay Nhờ đó, các kỹ thuật này có thể dùng được cho nhiều người hơn Nhưng nhược điểm các hệ thống kiểu này là giống như máy sấm truyền: chúng đưa ra các tuyên bố về sự thật nhưng lại không đưa ra giải thích nào về sự thực đó Còn có cả vấn đề "kiểm định hệ kiểm định", nếu chính chương trình tham gia công tác kiểm định không được chứng minh là đúng, thì
có thể có lý do để nghi ngờ tính đúng đắn của các kết quả được tạo ra
Trang 23Các dạng khác nhau của π-Calculus:
- Pure pi-calculus (Phép tính Pi thuần túy) [Robin Milner 1990]
+ Các phép tính cho việc tính toán xảy ra cùng lúc
+ Tính năng chính: tên gọi mới (fresh names,) kênh giao tiếp
(communication channels), tên gọi tạm thời (name passing), sự đệ quy.(recursion)
- Spi-calculus (Phép tính Spi) [Martin Abadi, Andrew Gordon 1997] + Mở rộng phép tính Pi thuần túy với số không đổi (fixed number) của các mã nguyên hàm
+ Tính năng chính: Chứng minh các thuộc tính bảo mật sử dụng việc mô
phỏng
( bisimulations)
- Applied pi-calculus [Martin Abadi, Cédric Fournet 2001]
+ Mở rộng Spi-calculus với việc bổ sung thêm các nét tương đồng hơn các
mã nguyên hàm
+ Tính năng: Dễ dàng sử dụng để chứng minh tính bảo mật
Áp dụng π-Calculus là một quy trình tính toán được thiết kế để phân tích
mã hóa giao thức, nó là một biểu thức, một ngôn ngữ để mô hình hóa và phân tích hệ thống xảy ra đồng thời Áp dụng π-Calculus cho phép mở rộng tính đa
Trang 24dạng của bản mã phải được xác định bằng lý thuyết cân bằng Hơn nữa, nó được
mở rộng bởi các mối quan hệ để kiểm tra sự tương đồng giữa các quá trình và cho phép chúng ta xác định và phân tích các tính chất riêng tư Nó được giả định
là một tập vô số các tên (names) được sử dụng để mô hình hóa các kênh truyền
và dữ liệu tự động khác, một tập vô số các biến (variables) và chữ kí (signature )
Σ cái mà chứa một tập hữu hạn của mỗi hàm biểu trưng ( function symbols ) ứng với mỗi thực thể Hàm biểu trưng nắm giữ những cái ban đầu được sử dụng để
mã hóa giao thức như là hàm băm (hash functions), chữ kí số ( digital signatures), mã hóa và giải mã chương trình Một hàm biểu trưng với thực thể là
0 là một hằng số
Một ví dụ của chữ kí là: Σsym = {enc, dec}, trong đó nắm giữ mã hóa đối xứng enc, và giải mã dec Mã hóa của thông điệp m với khóa k là enc(m, k) và giải mã của kí số c với khóa k là dec(c, k) Phương trình dec(enc(x, y), y) = E x trong đó x và y là biến, nói rằng dec đại diện cho giải mã và là hàm nghịch đảo của enc đại diện cho mã hóa
a Cú pháp và ngữ nghĩa
- Điều khoản (Terms) được định nghĩa bởi tên, biến, các hàm biểu trưng
được áp dụng theo cú pháp như sau:
Nó bao gồm các tập kiểu (type) cơ sở như: Nonce, Key và tất cả các kiểu đơn giản dựa trên kiểu dữ liệu Ngoài ra nếu ω là một kiểu thì sau đó Channel
<ω> là một kiểu ( bằng trực giác các kiểu của kênh truyền truyền điều khoản về
Trang 25kiểu ω ) Tên và biến thí sử dụng các kiểu bất kì, hàm biểu trưng chỉ có thể được
áp dụng và trả về giá trị, điều khoản của kiểu cơ sở
Các đẳng thức điều khoản được mô hình hóa sử dụng thuyết cân bằng E, một tập hữu hạn của phương trình trong đó định nghĩa mối quan hệ tương ứng =E Để đơn giản chúng ta có thể bỏ qua các kí hiệu (subscript) E khi nó là rõ ràng từ các ngữ cảnh (context)
- Quy trình (Processes) được áp dụng π-Calculus có cú pháp như sau:
Trong đó, null process thì không làm bất cứ điều gì, P | Q là thành phần
song song của P và Q và sự lặp lại !P thực hiện vô số các bản sao của P trong quá
trình song song, νn.P sự giới hạn về tên phát sinh một tên riêng mới n và tiếp tục thực hiện giống như P Quá trình điều kiện “ if M = N then P else Q” thực hiện P
nếu M =E N và ngược lại là Q (=E Các quan hệ tương đương) Chúng ta có thể
bỏ qua giới hạn “else Q” khi Q là 0 Quá trình in(u, x).P thông điệp đầu vào trên kênh truyền u thuộc kiểu Channel <ω x > gán nó với biến x thuộc kiểu ω x Cuối
cùng out(u, M).P đầu ra của term M thuộc kiểu ω M trên kênh truyền u thuộc kiểu Channel < ω M >, P thường được bỏ qua khi P là 0 Quá trình được mở rộng với
các hoạt động thay thế và sự giới hạn các biến
Trang 26- Quá trình mở rộng ( Extended Processes): Được biểu diễn như sau:
Hạn chến biến νx.A với biên giới hạn của x trên quy trình A Hoạt động
thay thế {M/x} thay thế biến x với điều khoản M trong bất kì quá trình nào đi song song với nó
- Process Pch1 : Gọi P là một quá trình đơn giản và ch1 là một kênh truyền Quá trình Pch1 được định nghĩa như sau:
Việc áp dụng các chuyển đổi được phân phối trên các thành phần song song ‘|’ và sự sao chép lặp lại ‘!’ Từ đó trong hai trường hợp này nó là đủ cho mỗi quy trình song song với đầu ra dữ liệu của nó được yêu cầu bộc lộ Trong trường hợp của quá trình điều kiện việc chuyển đổi được áp dụng cho các chi nhánh thực hiện, cuối cùng là quy trình rỗng không thực hiện gì cả
và
Trang 27Là thông điệp đầu ra không được tiết lộ Ta có quy trình Pch1, ch2 không chỉ tiết lộ dữ liệu bí mật trên kênh truyền ch1 , nhưng cũng lấy yêu cầu từ bên ngoài (attacker) trên kênh truyền ch2 trước khi gửi một thông điệp hoặc phân nhánh Mô hình này chưa một bên tham gia không an toàn, ví dụ kẻ tấn công có thể kiểm soát các nhánh để đưa vào trường hợp của quá trình điều kiện và có thể cung cấp thông điệp của nó cho đầu ra của quy trình
- Process Pch1, ch2 : Gọi P là một quá trình đơn giản và ch1, ch2 là hai kênh truyền Quá trình Pch1, ch2 được định nghĩa như sau:
- Ngữ nghĩa của cấu trúc tương đương ( Semantics of Structural Equivalence ):
Trang 28Trong đó: REWRITE cho phép thay thế một điều khoản với một điều khoản tương ứng SUBST mô tả bản chất của hoạt động thay thế cái mà có thể
áp dụng ở bất kì quá trình nào đi song song với nó ALIAS cho phép sự ra đời của một hoạt động thay thế tùy ý với mục đích hạn chế REPL thể hiện việc lặp
và PAR là quá trình song song tương ứng
- Observational Equivalence: Kí hiệu (≈) là mối quan hệ đối xứng lớn nhất
trên quy trình mở rộng như A R B kéo théo:
Trong đó: Mối quan hệ → diễn tả sự chuyển đổi và phản xạ sự kết thúc
của mổi quan hệ → Hai quá trình A và B là Observational Equivalence nếu
1 Quá trình A phát triển thành một quá trình mà đầu ra có thể ở trên kênh truyền c cũng vậy B có thể phát triển thành một quá trình tương tự
2 Nếu A phát triển thành một vài quá trình A’ cũng vậy B phát triển thành
một vài quá trình B’ và A’ và B’ là Observational Equivalence
3 Cho tất cả các ngữ cảnh C[A] và C[B] là Observational Equivalence
Ví dụ: Cho f là một hàm biểu trưng một toán hạng, sau đó chúng ta có
Một ví dụ khác: Với s1 và s2 là tên chúng ta có:
Chúng ta có thể chứng minh điều đó bởi sử dụng ngữ cảnh
Trang 29
Nếu x = s1 thì out(a, s1)|_, điều này không đáp ứng đúng yêu cầu
- Labeled Bisimilarity: Kí hiệu (≈l), là quan hệ R đối xứng lớn nhất trên
quy trình hoạt động khép kín như A R B kéo théo:
Quan hệ A →α A’ định nghĩa một ngữ nghĩa được kí hiệu cái để tránh sự lượng hóa của tất cả các ngữ cảnh Nó thể hiện rằng A có thể tiến triển đến A’ sử dụng kí hiệu chuyển đổi Điều này xảy ra khi A thực hiện một đầu vào hoặc đầu
ra do một số tương tác với môi trường, và α là kí hiệu đại diện cho hành động liên quan
Ví dụ: Cho bất kì quy trình khép kín P chúng ta có
1.3.5 Ưu điểm và nhược điểm
- Lợi ích của phương pháp hình thức:
+ Có tính chặt chẽ, kỷ luật: việc chứng minh hình thức cho tính đúng đắn
sẽ luôn đòi hỏi đặc điểm kỹ thuật khắt khe để đáp ứng mục tiêu
+ Phương pháp tiếp cận toàn diện này có thể giúp xác định những lý luận lỗi sớm hơn so với các thiết kế truyền thống
+ Độ chính xác cao
Trang 30+ Đòi hỏi sự rõ ràng: Các mục tiêu, phương pháp phải rõ ràng, loại bỏ những gì mập mờ
+ Buộc người phát triển phải nghĩ về các vấn đề một cách có hệ thống + Giúp thiết kế tốt hơn và phát hiện sớm các lỗi và những điểm không đồng nhất
+ Cung cấp tài liệu cho đội ngũ phát triển
+ Định hướng cho các pha phát triển tiếp theo Hỗ trợ cho các phương pháp phân tích và thiết kế khác
+ Cung cấp nền tảng cho việc tái sử dụng thông qua việc khớp đặc tả + Có thể thay thế nhiều test case Giảm thời gian phát triển và kiểm thử + Tạo điều kiện cho việc phát sinh test case tự động Là một phương pháp tốt để tìm ra lỗi phần mềm (trong mã nguồn và trong đặc tả)
+ Có thể đảm bảo được một số thuộc tính của mô hình hệ thống hình thức
- Nhược điểm của phương pháp hình thức:
+ Chi phí: Do đòi hỏi tính chặt chẽ nên tốn chi phí hơn các kỹ thuật khác + Giới hạn các mô hình: Hầu hết các phương pháp hình thức giới thiệu một số hình thức của mô hình tính toán
1.4 Công cụ Proverif
ProVerif là công cụ phần mềm thuộc kĩ thuật kiểm chứng mô hình trong
mô hình biểu trưng, nó cho phép khả năng lập luận tự động về các thuộc tính bảo mật được tìm thấy trong các giao thức mã hóa Điều này đã được phát triển bởi Bruno Blanchet 2004 Công cụ này để kiểm chứng các giao thức cho số vô hạn của phiên làm việc sử dụng không gian thông điệp vô hạn Công cụ này có khả năng tái tấn công nơi mà tính chất không thể được chứng minh, một dấu vết được thực hiện khi các thuộc tính đã bị bóp méo trong khi được xây dựng Có 2 cách thức để cung cấp đầu vào cho công cụ này là sử dụng phương pháp hình thức với mệnh đề Horn và giải tích Pi Trong cả hai trường hợp, đầu ra của công cụ này cơ bản là giống nhau Mô hình rõ ràng của kẻ tấn công là không cần thiết Nó cũng
có thể nêu rõ liệu những kẻ tấn công đang hoạt động hay đang thụ động Nó là một kiểu của bộ chứng minh định lý (theorem prover) (dựa trên logic) nhưng
Trang 31hoàn toàn tự động Các giao thức bảo mật được đặc tả dưới dạng hình thức đơn
giản của pi calculus
1.4.1 Đặc điểm của Proverif
- Các giao thức được mô hình hóa sử dụng mệnh đề horn hoặc số tính toán Pi
- Công cụ có thể chạy thông qua giao diện dòng lệnh
- Nó phát sinh những đầu ra có thể như
+ Thuộc tính là true, false, và các dấu vết tấn công được phát sinh
+ Thuộc tính không thể được chứng minh khi là false tác nhân được tìm thấy
- Công cụ có thể không kết thúc
- Từng bước tạo ra các dấu vết để phát sinh giải thích việc chạy và tác nhân
- Dấu vết được phát sinh duy nhất cho thuộc tính cái mà được kiểm tra
- Các bên giao tiếp cần phải được mô hình hóa theo quy trình
- Độ cân bằng có thể được kiểm tra bởi việc sử dụng “ if then” or “let in”
- Nó chỉ kiểm tra duy nhất những cuộc tấn công cho các câu lệnh truy vấn: query đã được đặc tả trong code
- Nó có thể chạy các giao thức vô hạn của phiên làm việc
- Nhanh và hợp lý, trả về các dấu vết tấn công khi một tấn công được tìm thấy
- Không cung cấp vấn đề thời gian một cách chi tiết, không cung cấp vấn
đề về liên quan đến xác suất
- Proverif cho phép chứng minh và kiểm tra các thuộc tính:
+ Bí mật với câu lệnh truy vấn: Query attacker (M)
+ Xác nhận sự tương ứng
- Chuyên đặc tả thiết kế cho việc phân tích các giao thức
- Xác minh bí mật mạnh,yếu, bí mật chuyển tiếp, tính chứng thực, sự bí mật
- Có thể xử lý các cấu trúc dữ liệu phức tạp hơn so với mục đích chung của các công cụ kiểm tra mô hình (model-checking)
- Không cung cấp vấn đề về liên quan đến xác suất Ví dụ :Các giao thức xác suất (probabilistic protocols)
- Không thể mô hình hóa phần riêng các gói thông tin
Trang 32- Khả năng giới hạn để mô hình hóa các giao thức phức tạp cái mà sử dụng
bộ dữ liệu đệm( data cache)/ bộ nhớ (storage): ProVerif cung cấp các mô hình bộ nhớ nhưng chỉ hoạt động với tính năng đọc và thêm
- Việc mã hóa được giả định là hoàn hảo
- Không hoàn chỉnh đôi lúc không kết thúc
1.4.2 Cài đặt công cụ:
Có thể cài đặt ProVerif theo 2 cách
Cách 1: Để chạy phần mềm này, cần có Objective CAML phiên bản 3.00 hoặc cao hơn Bạn có thể tải Ocaml từ: http://caml.inria.fr
Giải nén các file lưu trữ proverif1.92.tar.gz và proverifdoc1.92.tar.gz trong thư mục tự chọn Điều này sẽ tạo ra một thư mục con có tên proverif1.92
Mở một cửa sổ DOS, cd vào thư mục proverif1.92 và chạy tập tin build BAT
Hệ thống chạy trên windown nhìn không thân thiện Ta phải sử dụng dòng lệnh
để chạy các chương trình
Cách 2:
+ Với Cygwin
Trang 33Giải nén tập tin lưu trữ binary và tài liệu bằng cách sử dụng GNU tar:
Giải nén các file lưu trữ và proverifbsd1.92.tar.gz proverifdoc1.92.tar.gz
sử dụng Winzip, trong thư mục được chọn Điều này sẽ tạo ra một thư mục con
Trong đó [options] là các tùy chọn sau:
- In <format> : Chọn định dạng đầu vào với <format> là: horn, horntype, spass, pi, pitype
- out <format>: Chọn định dạng đầu ra với <format> là: solve (mặc định: dùng để phân tích giao thức) hoặc spass ( dùng để phân tích trước khi giải quyết)
Trang 34- lib <filename>: Chọn tập tin thư viện cho pitype chỉ front-end
- test : Hiển thị thêm chút thông tin để gỡ lỗi
- TulaFale <version>: Chỉ ra các phiên bản của TulaFale bên trong khi ProVerif sử dụng
- Gc: Hiển thị trạng thái thống kê
- Color: Sử dụng mã màu ANSI
- Html: Hiển thị mã html
- Help: hiển thị danh sách các tùy chọn
Phần mềm này có hai chương trình thực thi, proverif và proveriftotex + Chương trình thực thi Proverif: Lấy đầu vào là việc mã hóa giao thức rồi kiểm tra xem liệu nó có đủ các thuộc tính bí mật, xác thực và các thuộc tính tương đương Các mô tả của giao thức có thể có một số định dạng khác nhau Các định dạng được yêu cầu như những định dạng phép tính toán số học Pi trong các ứng dụng (Abadi và Fournet, POP01) Các mô tả của giao thức được dịch sang mệnh đề Horn sau đó gọi lõi phần xác minh
Định dạng đầu vào được lưu trữ trong file docs/manual.pdf (được tìm trong proverifdoc1.92.tar.gz ) Ví dụ về các giao thức mô tả có thể được tìm thấy trong thư mục con examples/pitype Hoặc đặc tả lại giao thức và lưu với đuôi pv Để chạy những ví dụ đó ta sử dụng lệnh: <thư mục dẫn>proverif
<filename>.pv hoặc nếu tên tập tin không kết thúc bằng pv <thư mục dẫn>proverif -in pitype <filename>
+ Chương trinh thực thi proveriftotex môt tả các giao thức đầu vào và chuyển đổi chúng thành một file LaTeX Thực thi bằng cách:
/test all
/test-type all
a Đầu vào của Proverif
+ Input là Horn clauses: Mặc định proverif thực thi đầu vào là mệnh đề
Horn Thực thi bằng lệnh sau: /proverif <filename>
Trang 35Cú pháp sự kiện (fact) và mệnh đề (clause) của nó như sau:
Trong đó:
- Seq<X> là dãy số của X:
- X* : Thể hiện sự lặp đi lặp lại của X
- [X] : X hoặc không gì cả
Các từ khóa của hệ thống đầu vào này là : data, elimtrue, equation, fun, not, nounif, param, pred, query, reduc
Các file input bao gồm một danh sách các khai báo (declaration) và theo
sau nó là từ khóa reduc và các mệnh đề :
+ Input là quá trình mở rộng của Pi-calculus: Để cung cấp đầu vào cho proverif là Pi-calculus ta phải thực hiện câu lệnh với tùy chọn là -in pi