Nội dung • Tổng quan về hệ thống thư tín điện tử • Các giao thức sử dụng cho thư tín điện tử • An toàn máy chủ thư tín điện tử và nội dung thư tín điện tử • An toàn thư tín trên máy t
Trang 1AN TOÀN THƯ TÍN ĐIỆN TỬ
Trang 2Nội dung
• Tổng quan về hệ thống thư tín điện tử
• Các giao thức sử dụng cho thư tín điện tử
• An toàn máy chủ thư tín điện tử và nội dung thư tín điện tử
• An toàn thư tín trên máy trạm
• Quản trị an toàn hệ thống thư tín điện tử
• An toàn thư tín sử dụng mật mã
• Thực hành xây dựng và quản trị hệ thống thư tín điện tử, xây dựng hệ webmail, mail client
Trang 3TỔNG QUAN VỀ THƯ TÍN ĐIỆN TỬ
Trang 4TỔNG QUAN VỀ THƯ TÍN ĐIỆN TỬ
Trang 5TỔNG QUAN VỀ THƯ TÍN ĐIỆN TỬ
• Khái niệm email:
– Email là thư dựa trên ký tự được gửi qua máy tính từ người này đến người khác
– Email là phương pháp lý tưởng cho việc gửi tài liệu bằng cách đính kèm
– Email là cách liên lạc với mọi người, với cơ quan làm việc hoặc bất cứ ở đâu trên thế giới miễn là ở đó có kết nối vào mạng internet
Trang 6TỔNG QUAN VỀ THƯ TÍN ĐIỆN TỬ
• Lịch sử phát triển:
– Năm 1971 Ray Tomlinson thực hiện gửi thành công một
thông báo thư tín điện tử đầu tiên trong mạng ARPANET – Tomlinson đã sửa đổi hệ thống xử lý thông báo để người sử dụng có thể gửi các thông báo cho các đối tượng nhận không chỉ trong một hệ thống mà trên các hệ thống ARPANET
khác
– Sau đó nhiều công trình nghiên cứu khác đã được tiến hành
và thư tín điện tử đã nhanh chóng trở thành một ứng dụng được sử dụng nhiều nhất trên ARPANET trước đây và Internet ngày nay
Trang 7TỔNG QUAN VỀ THƯ TÍN ĐIỆN TỬ
• Cách thức hoạt động:
– Soạn thảo thư: Thực hiện nhập các trường chính như: chủ
đề, nội dung, đối tượng nhận,
– Gửi thư: Thư sẽ được chuyển đổi sang một định dạng chuẩn xác định bởi RFC 822 (Standard for the Format of ARP
Internet Text Messages)
– Thư sau khi chuyển đổi sẽ gồm hai phần: phần tiêu đề
(header) và phần thân (body) Phần tiêu đề gồm một số
thông tin như: thời gian gửi, đối tượng gửi, đối tượng nhận, chủ đề, thông tin về định dạng Phần thân chính là nội dung của thư
Trang 8TỔNG QUAN VỀ THƯ TÍN ĐIỆN TỬ
sẽ gửi tiếp thư đến máy chủ thư có tên miền tương ứng
Trang 9• Mô hình hệ thống thư điện tử
TỔNG QUAN VỀ THƯ TÍN ĐIỆN TỬ
Trang 10• Các hiểm họa đối với thư điện tử:
– Bị đọc lén thư (cá nhân, chính phủ trong nước, ngoài nước, các tổ chức vv )
– Thu thập và phân tích đường truyền
– Giả mạo (giả mạo người gửi thư)
– Bom thư
TỔNG QUAN VỀ THƯ TÍN ĐIỆN TỬ
Trang 11CÁC GIAO THỨC SỬ DỤNG CHO THƯ TÍN ĐIỆN TỬ
Trang 13Giao thức SMTP
Trang 14Giao thức SMTP
• Do Jon Postel thuộc Trường đại học Nam
California đã phát triển vào tháng 8 năm 1982
• Được sử dụng để truyền thư tín điện tử một cách tin cậy và hiệu quả
• Chạy trên tầng TCP/IP và sử dụng cổng 25
Trang 15DNS Query
DNS Server
Reply with
IP address resolution
Trang 17• Việc trao đổi mail sử dụng TCP/IP được thực hiện qua MTA (Message Transfer Agent)
– MTA chịu trách nhiệm hướng mail tới địa chỉ đích theo
đúng yêu cầu
– MTA sử dụng bản ghi MX (Mail Exchange) từ máy chủ
DNS để xác định nơi cần gửi tới
• SMTP có vai trò gắn kết giữa các MTA
Giao thức SMTP
Trang 18Relay MTA
Local MTA Local MTA
User Mailboxes
Trang 19• Mô hình hoạt động của SMTP
Giao thức SMTP
User
HÖ thèng file
SMTP
Sender- SMTP HÖ thèng
Receiver-file
SMTP commands/replies
• Sender-SMTP thiết lập một kênh truyền tải 2 chiều tới một Receiver-SMTP Receiver-SMTP hoặc là đích hoặc là điểm tạm thời
• Các lệnh SMTP được sinh ra bởi Sender-SMTP và gửi tới Receiver-SMTP
• Receiver-SMTP trả lời các lệnh gửi từ Sender-SMTP
Trang 20• Thủ tục truyền trong SMTP
Thủ tục truyền tải SMTP có 3 bước:
Bước 1: Sử dụng lệnh MAIL để định danh người gửi
Bước 2: Sử dụng một hoặc nhiều lệnh RCPT để định danh thông tin người nhận
Bước 3: Sử dụng lệnh DATA để xác định dữ liệu thư
Các lệnh trên có cú pháp như sau:
MAIL <SP> FROM:<reverse-path> <CRLF>
RCPT <SP> TO:<forward-path> <CRLF>
DATA <CRLF>
Giao thức SMTP
Trang 21Ví dụ người gửi hongdq gửi thư tại máy fis-kma.edu tới người dùng thaith, toannq và khoanc trên máy fit-kma.edu như sau:
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Blah blah blah
S: etc etc etc
S: <CRLF>.<CRLF>
R: 250 OK
Giao thức SMTP
Trang 22Giao thức SMTP
• Thủ tục gửi thư:
– Forward-path là thông tin chỉ đến địa chỉ đích tới của thư – Trong một số trường hợp thì thông tin đích trong <forward-path> bị sai, Receiver-SMTP sẽ nhận biết đích đúng khi
<forward-path> đúng
– Khi đó sẽ xảy ra một trong 2 lệnh đáp lại dưới đây được sử dụng để cho phép người gửi liên lạc với đích được cho là đúng
- 251 User not local; will forward to path>
<forward-Hoặc
- 551 User not local; please try <forward-path>
Trang 24• Kiểm tra và mở rộng danh sách thư
- SMTP cung cấp thêm một số đặc tính như: kiểm tra tên người
sử dụng bằng lệnh VRFY, và mở rộng danh sách mail bằng lệnh EXPN Các lệnh này có cú pháp như sau:
VRFY <SP> <string> <CRLF>
EXPN <SP> <string> <CRLF>
Giao thức SMTP
Trang 25• Ví dụ về kiểm tra tên người sử dụng như sau:
Trang 26Giao thức SMTP
• Ví dụ về mở rộng danh sách mail như sau:
S: EXPN Example-People
R: 250-Jon Postel <Postel@USC-ISIF.ARPA>
R: 250-Fred Fonebone <Fonebone@USC-ISIQ.ARPA> R: 250-Sam Q Smith <SQSmith@USC-ISIQ.ARPA> R: 250-Quincy Smith <@USC-ISIF.ARPA:Q-Smith@ISI-VAXA.ARPA>
Trang 27Giao thức SMTP
• Phân phối tới mailbox và terminal
– Việc phân phối thông điệp tới các mailbox của người sử dụng được gọi là "mailing", còn phân phối thông điệp tới các terminal của người sử dụng được gọi là "sending" (người dùng gửi thông điệp thông qua terminal)
– Dưới đây là 3 lệnh đã được định nghĩa để hỗ trợ "sending" SEND <SP> FROM:<reverse-path> <CRLF>
SOML <SP> FROM:<reverse-path> <CRLF>
SAML <SP> FROM:<reverse-path> <CRLF>
Trang 28Giao thức SMTP
• Đóng và mở phiên giao dịch
– Tại thời điểm kênh truyền tải được mở thì có sự trao đổi thông tin
để chắc chắn rằng các máy đang truyền thông với nhau Hai lệnh sau đây được sử dụng để đóng mở phiên giao dịch cho kênh truyền tải
HELO <SP> <domain> <CRLF>
QUIT <CRLF>
– Trong lệnh HELO máy sẽ gửi lệnh tự định danh cho nó, tương tự như một lời chào "Chào các bạn, tôi là <domain>" Ví dụ mở kết nối như sau:
R: 220 BBN-UNIX.ARPA Simple Mail Transfer Service Ready S: HELO USC-ISIF.ARPA
Trang 29Giao thức SMTP
• Lưu chuyển mail
– Đó là quá trình chuyển thư từ một SMTP Server này sang một SMTP Server khác
– Hai tham số dùng cho quá trình chuyển là: forward-path và reverse-path
– Forward-path chứa địa chỉ của SMTP Server mà thư sẽ được chuyển tới tiếp theo
– Reverse-path là địa chỉ SMTP Server mà thư vừa đi qua
Trang 30Giao thức SMTP
• Các lệnh SMTP cơ bản
– HELO HELO <SP> domain> <CRLF> Định danh Sender-SMTP đối với Receiver-SMTP, tham số <domain>
thường là tên máy
– MAIL MAIL <SP> FROM:<reverse- path> CRLF>
Khởi tạo phiên giao dịch mail tới một hoặc nhiều mailbox và
đồng thời định danh người gửi bằng tham số reverse-path
– RCPT RCPT <SP> TO:<forward- path> <CRLF>
Định danh một người nhận dữ liệu mail thông qua tham số
forward, nếu nhiều người nhận thì sử dụng nhiều dòng lệnh – DATA DATA <CRLF>Các dòng sau lệnh này sẽ là dữ liệu thư
– RSET RSET <CRLF>Chỉ ra phiên giao dịch thư hiện tại sẽ
bị loại bỏ
– SEND SEND <SP> FROM:<reverse- path> CRLF> Khởi
tạo phiên giao dịch dữ liệu thư phân phối tới một hoặc nhiều
terminal Tham số reverse-path để định danh người gửi
Trang 31Giao thức SMTP
• SOML SOML <SP> FROM:<reverse- path> <CRLF> Khởi tạo phiên giao dịch dữ liệu mail phân phối tới một hoặc nhiều terminal hoặc nhiều mailbox Tham số reverse-path để định danh người gửi
• SAML SAML <SP> FROM:<reverse- path> <CRLF> Khởi tạo phiên giao dịch dữ liệu mail phân phối tới một hoặc nhiều terminal và nhiều mailbox Tham số reverse-path để định
danh người gửi
• VRFY VRFY <SP> <string> <CRLF>Yêu cầu người
nhận mail xác nhận một người sử dụng
• EXPN EXPN <SP> <string> <CRLF>Yêu cầu xác nhận
tham số để định danh một danh sách thư
• HELP HELP [<SP> <string>] <CRLF>Người nhận gửi
thông tin trợ giúp tới người gửi
• NOOP NOOP <CRLF>Nhận được lệnh này từ phía người gửi, tức là không thực hiện gì khác, thì người nhận trả lời OK
Trang 32Giao thức SMTP
• QUIT QUIT <CRLF>Lệnh này yêu cầu người nhận gửi tín hiệu trả lời OK, sau đó đóng phiên
giao dịch
• TURN TURN <CRLF>Lệnh này yêu cầu
người nhận hoặc là phải gửi tín hiệu OK và sau đó đóng vai trò là Sender-SMTP, hoặc là phải gửi tín hiệu từ chối và trả về đúng vai trò Receiver-
SMTP
Trang 33• Các lệnh SMTP mới (RFC 1425)
• Đăng ký các mở rộng dịch vụ SMTP (RFC 1651)
• Các tham số bổ sung cho các lệnh SMTP MAIL FROM và RCPT TO (RFC 1869)
Trang 34Giao thức SMTP
– Để tương thích giữa các máy SMTP thế hệ cũ và mới thì cần phải có một phương thức nhằm cho phép ứng dụng thư client xác định xem máy chủ có hỗ trợ các phần mở rộng hay
phần mở rộng hiện máy chủ đó hỗ trợ Nếu máy chủ không
hỗ trợ phần mở rộng SMTP, sẽ có thông báo kết quả thực hiện lệnh không thành công, khi đó MUA phải thực hiện
lệnh HELO chuẩn
Trang 35Giao thức SMTP
• Các thành phần mở rộng của SMTP
Trang 36CÁC GIAO THỨC NHẬN THƯ
Trang 37Giao thức POP3
(Post office protocol – version 3)
• Giao thức POP3 được sử dụng để truy nhập và lấy các thông điệp thư điện tử từ mailbox trên máy
và tải tất cả các thông báo mail tới máy trạm đó
Trang 38Giao thức POP3
• Nguyên tắt hoạt động và các lệnh của giao thức POP3
– Hoạt động của giao thức POP3 được thể hiện ở hình dưới đây:
POP3 Client POP3 Server
TCP connection
AUTHORIZATION state
TRANSACTION state
UPDATE state
Trang 40– Trạng thái TRANSACTION: Trong trạng thái này, client có thể truy nhập tới mailbox của mình trên server để kiểm tra, nhận thư
– Trạng thái UPDATE: Khi client gửi lệnh QUIT tới server từ trạng thái TRANSACTION, thì phiên vào trạng thái UPDATE, trong trạng thái này server gửi goodbye tới client và đóng kết nối TCP, kết thúc phiên làm việc
Trang 41Giao thức POP3
• Các lệnh trong giao thức POP3
– Các lệnh trong POP3 có thể có một hoặc nhiều đối số Kết thúc của lệnh bởi một cặp CRLF Các từ khoá và đối số
trong lệnh là các ký tự trong ASCII
– Một lời đáp lại (response) từ POP3 server gồm một mã trạng thái và theo sau là các thông tin Có hai mã trạng thái hiện hành là: thành công (+OK) và lỗi (-ERR)
Trang 42– Ngoài ra còn có các cơ chế xác thực khác được mô tả trong RFC 1734
Trang 43Giao thức POP3
– Xác thực sử dụng kết hợp hai lệnh USER và PASS:
• Lệnh USER
• Cú pháp: USER name
• Đối số: name là tên người dùng
• Mô tả: Được sử dụng trong trạng thái AUTHORIZATION để
gửi tên của user tới POP3 server Server sẽ đáp lại thành công (+OK) nếu nhập tên user là đúng và ngược lại sẽ trả lại mã lỗi (-ERR) Chú ý: trong các ví dụ kể từ đây, ký hiệu C: được gửi
từ Client và S: là response của Server
Trang 45Giao thức POP3
• Cơ chế xác thực sử dụng lệnh APOP
Cú pháp: APOP name disgest
Đối số:
name: tên của user
disgest: một chuỗi MD5 disgest
– Việc xác thực trong phiên sử dụng kết hợp lệnh USER/PASS
có nhược điểm là mật khẩu được truyền rõ trên mạng Để khắc phục nhược điểm này thì cơ chế xác thực sử dụng lệnh APOP được sử dụng trong giao thức POP3
– Phương pháp xác thực này cho phép cả xác thực và bảo vệ replay bằng cách không gửi mật khẩu ở dạng rõ trên mạng
Trang 47Giao thức POP3
• Khi POP3 server nhận lệnh APOP, nó kiểm tra disgest đó Nếu disgest đúng, thì POP3 server sẽ đáp lại tới client
thành công (+OK) và phiên PO3 vào trạng thái
TRANSACTION Trái lại, server sẽ thông báo lỗi tới
client và phiên POP3 vẫn ở trạng thái AUTHORIZATION
Ví dụ:
S: +OK POP3 server ready 1896.697170952@dbc.mtview.ca.us> C: APOP mrose c4c9334bac560ecc979e58001b3e22fb
S: +OK maildrop has 1 message (369 octets)
Trong ví dụ này bí mật dùng chung là chuỗi 'tanstaaf' Do đó đầu vào của giải thuật MD5 này là chuỗi
<1896.697170952@dbc.mtview.ca.us>tanstaaf
Đầu ra có giá trị là c4c9334bac560ecc979e58001b3e22fb
Trang 48Giao thức POP3
• Các lệnh trong trạng thái TRANSACTION
– Các lệnh trong trạng thái TRANSACTION là: STAT, LIST, TOP, NOOP, RETR, DELE, UIDL, QUIT và RSET
Trang 49Giao thức POP3
Trang 50Giao thức POP3
Trang 51GIAO THỨC IMAP
Internet Messages Access Protocol
Trang 52Giao thức IMAP
• IMAP là một giao thức cho phép client truy nhập email trên một server, không chỉ tải thông điệp thư điện tử về máy của người sử dụng (POP) mà có
thể thực hiện các công việc như: tạo, sửa, xoá, đổi tên mailbox, kiểm tra thông điệp mới, thiết lập và xoá cờ trạng thái,
• IMAP được thiết kế trong môi trường người dùng
có thể đăng nhập vào server (cổng 143/tcp) từ các máy trạm khác nhau
Trang 53Giao thức IMAP
• Sử dụng IMAP với các mục đích sau:
– Tương thích đầy đủ với các chuẩn thông điệp Internet (ví dụ MIME)
– Cho phép truy nhập và quản lý thông điệp từ nhiều máy tính khác nhau
– Hỗ trợ cả 3 chế độ truy nhập: online, offline, và
disconnected
– Hỗ trợ truy nhập đồng thời tới các mailbox dùng chung
– Phần mềm bên client không cần thiết phải biết kiểu lưu trữ file của server
Trang 54Giao thức IMAP
• Hoạt động của IMAP
– Kết nối IMAP bao gồm: kết nối mạng cho client/server, khởi tạo trên server hay gọi là "hello message", và những tương tác client/server tiếp theo
– Những tương tác này bao gồm: lệnh từ client, dữ liệu trên server, và trả lời trên server Tương tác giữa IMAP client và IMAP server thực hiện dựa vào các giao thức gửi/nhận của client/server
Trang 55Giao thức IMAP
• Giao thức gửi của client và nhận của server
– Khi hoạt động, bên client gửi một lệnh, mỗi lệnh có một định danh (sắp xếp theo alphabel, ví dụ: A00001, A00002) được gọi là một thẻ Mỗi thẻ này được sinh từ phía client cho từng lệnh khác nhau
– Nếu server nhận ra một lỗi dòng lệnh, thì nó gửi thông tin trả lời là BAD để huỷ bỏ lệnh và chống việc gửi thêm lệnh từ phía client
– Server có thể gửi một thông tin trả lời cho nhiều lệnh khác nhau cùng một thời điểm (trong trường hợp gửi nhiều lệnh), hoặc dữ liệu không gán thẻ
Trang 56Giao thức IMAP
– Trong trường hợp khác khi yêu cầu tiếp tục gửi lệnh đang chờ, thì client thực hiện theo thông tin trả lời lệnh từ phía server và đọc thông tin trả lời khác từ server đến Trong tất
cả các trường hợp, thì client phải gửi các thông tin hoàn thành lệnh trước khi khởi tạo lệnh mới
– Giao thức nhận bên server đọc dòng lệnh từ phía client gửi sang, phân tích lệnh và các tham số, sau đó truyền tải dữ liệu trên server và thông tin hoàn thành lệnh sang client
Trang 57Giao thức IMAP
• Giao thức gửi của server và nhận của client
– Dữ liệu đã truyền tải sang client cả thông tin trạng thái thông báo chưa kết thúc lệnh (đặt trước là dấu "*", được gọi là
không gán thẻ)
– Dữ liệu trên server có thể được gửi theo lệnh từ phía client, hoặc có thể được gửi từ phía server mà không cần theo lệnh
từ phía client
– Thông tin hoàn thành lệnh từ phía server sử dụng một trong
3 chuỗi sau: OK để thông báo lệnh đã thực hiện thành công,
NO để thông báo lệnh thực hiện lỗi, và BAD để thông báo bị lỗi khi sử dụng giao thức (lệnh không được công nhận, hoặc
cú pháp lệnh sai)