Tải bản đầy đủ (.docx) (39 trang)

Kiến trúc và thiết kế phần mềm.Chủ đề: Tổng hợp và tiềm hiểu về các yếu tố công nghệ mới

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (579.25 KB, 39 trang )

BỘ THÔNG TIN VÀ TRUYỀN THÔNG
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THƠNG
KHOA CƠNG NGHỆ THƠNG TIN 2
o0o

CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
o0o

Tp.HCM, ngày 17 tháng 04 năm 2017 2015

BÁO CÁO BÀI TẬP SỐ 1
Họ và tên sinh viên:
Giảng viên hướng dẫn:
Môn:
Chủ đề:
I.

Võ Tiến Đạt
N13DCCN022
D13CQCP01-N
TS. Võ Xuân Thể.
Kiến trúc và thiết kế phần mềm.
Tổng hợp và tiềm hiểu về các yếu tố công nghệ mới.
MỤC LỤC

HYPER-V (VIRTUAL) VÀ CÁC HỆ THỐNG MƠ PHỎNG (EMULATOR / SIMULATOR):..................3
1.

Hyper-V (Virtual):.................................................................................................................................................3


2.

Các hệ thống mơ phỏng (Emulator/ Simulator):..............................................................................................4

II.

CƠNG NGHỆ PHỊNG VÀ CHỐNG HACKER (HACKING):....................................................................6

III.

PHẦN MỀM MÃ NGUỔN MỞ VÀ GPL & GNU:..........................................................................................9

1.

Phần mềm mã nguồn mở:....................................................................................................................................9

2.

GNU & GPL:........................................................................................................................................................10

IV.
CHỮ KÝ SỐ (CHỮ KÝ ĐIỆN TỬ) VÀ MỘT SỐ KỸ THUẬT MÃ HÓA CHỮ KÝ SỐ, GIỚI THIỆU
CÁC GIẢI THUẬT SHA VÀ RSA :...............................................................................................................................11
1.

Chữ ký số:.............................................................................................................................................................11

2.

Một số giải thuật mã hóa chữ ký số:.................................................................................................................11


V.

CƠNG NGHỆ TÌM KIẾM VÀ ĐỊNH VỊ:...........................................................................................................15
1.

Sematic Web (Web ngữ nghĩa):.........................................................................................................................15

2.

Điện toán đám mây (cloud computing):...........................................................................................................16

3.

GoogleMap API, Facebook API:.......................................................................................................................18

4.

Kỹ thuật tin nhắn sms trong phần mềm:.........................................................................................................20

VI.

CƠNG NGHỆ NHẬN DIỆN VÀ THỊ GIÁC MÁY TÍNH (COMPUTER VISION):...............................22

VII.
KHO DỮ LIỆU, KHAI PHÁ DỮ LIỆU, CÔNG NGHỆ TRI THỨC VÀ TIN SINH HỌC
(BIOINFOMATICS):........................................................................................................................................................24
1.

Khai phá dữ liệu:.................................................................................................................................................24


2.

Công nghệ tri thức:.............................................................................................................................................26

3.

Tin sinh học (BioInfomatics)..............................................................................................................................27

VIII.

NGÂN HÀNG ĐIỆN TỬ (EBANKING):....................................................................................................27

IX.

THƯƠNG MẠI ĐIỆN TỬ (ECOMMERCE) VÀ THANH TOÁN ĐIỆN TỬ (EPAYMENT):..............28

1.

Thương mại điện tử (ecommerce):...................................................................................................................28

2.

Thanh toán điện tử (ePayment):.......................................................................................................................29

X.

ERP VÀ CRM:.........................................................................................................................................................30
1.


ERP:.......................................................................................................................................................................30

2.

CRM:.....................................................................................................................................................................32

XI.

DỊCH VỤ SEO:....................................................................................................................................................33

XII.

E-LEARNING VÀ DISTANCE LEARNING:................................................................................................33

XIII.

BÁO ĐIỆN TỬ (EPAPER) VÀ RSS:...........................................................................................................36

1


2


I.

HYPER-V (VIRTUAL) VÀ CÁC HỆ THỐNG MÔ PHỎNG (EMULATOR /
SIMULATOR):
1. Hyper-V (Virtual):
Cơng nghệ ảo hóa đang trở thành một phần của cuộc sống chúng ta.

Virtual là việc tạo ra một phiên bản ảo ( khơng phải thiết kế vật lí), bao gồm hệ điều hành và
một số thiết bị lưu trữ,…Ảo hóa diễn ra trên cùng một nền tảng phần cứng sau khi cài đặt
phần mềm chuyên dụng – hypervision. Hypervision là lớp bổ sung giữa cấu hình vật lý và
thành phần ảo. Nó quản lý các tài nguyên phần cứng của hệ thống để chúng được phân phối
hiệu quả giữa các máy ảo (VM).
Tài nguyên của hệ thống được cung cấp cho các máy ảo và hypervision phân phối các tài
ngun này một cách linh hoạt, thậm chí cịn điều chỉnh thời gian tuy thuộc vào chính sách
của hệ thống và VM hiện hành.
Guest software được cung cấp cho người dùng chạy trên máy ảo như thể nó đang chạy trên
phần cứng vật lý.
Từ khi công nghệ hyper-V ra đời, các cơng ty nhận ra rằng họ có thể tiết kiệm chi phí bằng
cách chuyển từ cơ sở vật lý sang cơ chế ảo.
Một số lợi ích mà cơng nghệ ảo hóa mang lại:
- Tiết kiệm chi phí bằng cách giảm số máy chủ tiêu thụ năng lượng, ít mua máy chủ hơn
cũng như chi phí duy trì.
- Quản lý và kiểm sốt các máy chủ ảo hóa dễ dàng hơn so với các máy chủ truyền thống.
- Cung cấp một môi trường linh hoạt hơn.
Microsoft không thể bỏ qua xu hướng ảo hóa. Microsoft giới thiệu Hyper-V như là một nền
tảng ảo hóa trong năm 2008 và tiếp tục phát hành các phiên bản Hyper-V mới với các phiên
bản máy chủ Windows mới. Cho đến nay, có tất cả bốn phiên bản, bao gồm Windows Server
2012 R2, Windows Server 2012, Windows Server 2008 R2 và Windows Server 2008.
Kiến trúc của Hyper-V:
Hình 1

3


2. Các hệ thống mô phỏng (Emulator/ Simulator):
Để thực hiện mobile testing, bạn cần một thiết bị di động. Ngoài ra bạn cần sự hỗ trợ từ nhiều
phần mềm giả lập khác nhau, trên những phần mềm giả lập đó bạn cần khẳng định một điều rằng

làm thế nào sản phẩm của chúng ta sẽ làm việc và có giao diện trông giống như trên một thiết bị
điện thoại di động nhất.
Để có thể thực hiện kiểu test này, chúng ta cần phải có được những thiết bị cần thiết bị tương ứng
và sau đó tiến hàng test để kiểm tra xem ứng dụng có đạt được kỳ vọng phát triển hay khơng.
Chắc bạn cũng từng có suy nghĩ, mn có đầy đủ thiết bị để thực hiện cơng việc test thì việc phải
bỏ ra một khoản chi phí khá lớn là điều khơng thể tránh khỏi. Vậy có lựa chọn nào khả thi hơn
không?
Các giải pháp cho vấn đề này là sử dụng Mobile Simulators and Mobile Emulators. Đây chủ yếu
là các chương trình phần mềm được thiết kế để cung cấp mơ phỏng cho các tính năng quan trọng
của smartphone. Tổng quan chúng rất giống nhau, nên trên thực tế chúng được sử dụng khá nhiều
để thay thế cho nhau.
Hãy so sánh cách test trên một Emulator / Simulator khác nhau như thế nào đối với một Real
Device - Thiết bị thực.

Một Emulator / Simulator không thể bắt chước các tính năng sau đây:


Pin điện thoại di động.
4




Camera của điện thoại di động.



Khó khăn trong việc bắt chước sự gián đoạn về cuộc gọi hay gửi tin nhắn SMS.




Khơng có q nhiều mơ phỏng thực tế cho việc sử dụng bộ nhớ điện thoại di động.
Bây giờ chúng ta hiểu thêm về mobile simulators và mobile emulators.

Có sự khác biệt giữa hay kiểu ứng dụng này. Bảng sau đây liệt kê sự khác biệt lớn giữa một
simulators và một emulators.

II.

CƠNG NGHỆ PHỊNG VÀ CHỐNG HACKER (HACKING):

Giới thiệu một số biện pháp kỹ thuật quan trọng để phong chống tấn cơng vào các lỗ hổng an
tồn của website
1. Cập nhật phiên bản ứng dụng thường xuyên để chống hack website
Điều này trơng có vẻ hiển nhiên nhưng hãy chắc chắn rằng tất cả ứng dụng của mình đều
được cập nhật phiên bản mới nhất, đây là công việc quan trọng giúp website trở nên an toàn.
Biện pháp này được áp dụng trên cả hệ điều hành máy chủ hoặc bất cứ ứng dụng nào đang
chạy trên website, ví dụ như một hệ quản trị nội dung (CMS) hay một diễn đàn. Khi một lỗ

5


hổng bảo mật được tìm thấy trong ứng dụng, tin tặc luôn biết cách để lợi dụng triệt để chúng.
Đây là một mối lo mà bất kỳ quản trị viên nào cũng phải đối mặt.
Nếu người dùng sử dụng hosting mà website không được cập nhật thường xuyên, họ phải
nhanh chóng yêu cầu nhà cung cấp dịch vụ để thực hiện.
2. Chống tấn công SQL Injection
Tấn công SQL Injection xảy ra khi tin tặc khai thác điểm yếu trong các điểm đầu vào trên
website, một tham số trong URL để tấn công và chiếm quyền truy cập, khai thác cơ sở dữ
liệu của website. Tin tặc có thể chèn các đoạn Shellcode độc hại nhằm thay đổi, lấy thông tin

hoặc xóa dữ liệu trên website. Biện pháp đơn giản để ngăn chặn kiểu tấn công này là kiểm
duyệt chặt chẽ các tham số đầu vào.
Ví dụ thực hiện truy vấn sau:
"SELECT * FROM table WHERE column = '" + tham_so_tu_url + "';"
Nếu tin tặc thay đổi tham số URL thành ‘ or ‘1’=’1 như sau:
"SELECT * FROM table WHERE column = '' OR '1'='1';"
Do 1 luôn bằng 1 nên câu lệnh cho phép tin tặc thêm vào các đoạn truy vấn SQL ở cuối cùng
sẽ được thực thi và làm sai lệch cách xử lý của ứng dụng và làm lộ các thông tin nhạy cảm.
3. Chống tấn công XSS
Tấn công Cross site scripting xảy ra khi tin tặc cố gắng đưa các mã độc JavaScript, VBscript,
Flash… hoặc những đoạn mã độc khác trang web nhằm thực thi mã độc với người dùng truy
cập website.
Để chống hack website cần chắc chắn rằng ứng dụng web đã được kiểm duyệt chặt chẽ các
tham số đầu vào cũng như ứng dụng web kiểm sốt được các dữ liệu hiển thị trên trình duyệt
web.
4. Hạn chế tối đa các thông báo lỗi
Thận trọng với các thông tin trả về của website, đặc biệt là các thơng báo lỗi, nó có thể chứa
các thơng tin nhạy cảm về đường dẫn, dữ liệu RAM, tài khoản…. Ví dụ nếu có một form
đăng nhập trên website, người quản trị nên nghĩ về việc sử dụng ngôn ngữ giao tiếp với
người dùng trong trường hợp đăng nhập thất bại thay vì hiển thị các thơng báo lỗi mặc định.
5. Kiểm duyệt phía máy chủ, kiểm duyệt form nhập
Kiểm duyệt dữ liệu đầu vào ln phải được hồn thành ngay trên trình duyệt và cả phía máy
chủ. Trình duyệt web có thể bắt những lỗi đơn giản như để trống trường bắt buộc hay nhập
ký tự chữ cái vào trường số điện thoại. Tuy nhiên, tin tặc hoàn tồn có thể vượt qua các thao

6


tác kiểm duyệt này. Cần đảm bảo chắc chắn rằng webiste đã kiểm duyệt được các dữ liệu đầu
vào được gửi đến từ người dùng website.

6. Sử dụng Mật khẩu an toàn
Mọi người đều biết nên sử dụng mật khẩu phức tạp, nhưng khơng phải ai cũng làm điều đó.
Quản trị website nên sử dụng mật khẩu mạnh cho máy chủ và khu vực quản trị website, kể cả
những tài khoản người dùng cũng nên dùng tài khoản mạnh. Nếu một máy chủ đặt mật khẩu yếu,
máy chủ đó có thể bị hack chỉ “5 phút” sau khi hoàn thành việc cài đặt?
7. Bảo vệ các form File Upload
Các form này cho phép người dùng tải lên các tệp tin, đây có thể là một rủi ro an tồn rất lớn,
nếu các form này khơng được kiểm duyệt, kiểm sốt chặt chẽ, tin tặc có thể vượt qua để tải lên
các tệp tin độc hại. Đây sẽ là các điểm yếu nguy hiểm trên website.
Nếu website có một form upload thì form này phải được kiểm duyệt chặt chẽ và kết hợp nhiều
yếu tố trước khi ghi file vào ổ cứng của máy chủ. Bao gồm: tên file, phần mở rộng, MIME
TYPE, kích thước… Ngồi ra bạn có thể đảm bảo an tồn bằng cách khơng cho phép thực thi tệp
tin trong các thư mục chứa tài liệu upload. Một vài lựa chọn có thể dùng là đổi tên file đã được
tải lên nhằm đảm bảo đúng phần mở rộng, hoặc thay đổi quyền của tệp tin, ví dụ chmod 0666
không thể thực thi. Nếu bạn sử dụng máy chủ Apache, bạn có thể tạo một tệp tin .htaccess file
như sau:

Để chống hack website, giải pháp được khuyến cáo khác là ngăn sự sự truy cập trực tiếp đến các
file được tải lên.Theo cách này, bất cứ file nào tải lên website đều được lưu trữ trong một thư
mục ngoài webroot hoặc trong cơ sở dữ liệu dưới dạng blob. Nếu tệp tin của người dùng không
thể truy cập trực tiếp, bạn cần tạo ra một script lấy file từ thư mục riêng (hoặc một HTTP xử lý
trong .NET) và chuyển chúng đến trình duyệt.
Ngồi ra, nếu có thể hãy đặt cơ sở dữ liệu ở máy chủ khác máy chủ web. Máy chủ cơ sở dữ liệu
sẽ không thể truy cập trực tiếp từ bên ngoài, chỉ máy chủ web mới có thể truy cập được nó, giảm
thiểu rủi ro rò rỉ dữ liệu.
Cuối cùng, đừng quên cách ly truy cập vật lý đến máy chủ.

7



9. Triển khai HTTPs
SSL là một giao thức cung cấp chuẩn an tồn thơng qua Internet để mã hóa các dữ liệu được gửi
trên đường truyền và chống hack website.
10. Kiểm thử an toàn cho website, máy chủ
Nếu website của người dùng đã đảm bảo được 9 yếu tố trên thì chưa hẳn đã an tồn. Để chống bị
hack website nên thực hiện việc kiểm thử độ an toàn website, tìm kiếm các lỗ hổng khác của
website. Cách hiệu quả nhất là thông qua một số dịch vụ. Các chuyên gia về An tồn thơng tin có
thể hỗ trợ bạn tìm kiếm các lỗ hổng, hỗ trợ khắc phục và ứng cứu khi có sự cố xảy ra. Tại Việt
Nam hiện nay có khá nhiều đơn vị cung cấp các dịch vụ về Kiểm tra, đánh giá bảo mật cho
website, máy chủ với chi phí hợp lý, các dịch vụ này sẽ giúp người dùng đảm bảo an toàn cho
website của mình.
III.
PHẦN MỀM MÃ NGUỔN MỞ VÀ GPL & GNU:
1. Phần mềm mã nguồn mở:
Phần mềm nguồn mở là phần mềm với mã nguồn được công bố và sử dụng một giấy phép
nguồn mở. Giấy phép này cho phép bất cứ ai cũng có thể nghiên cứu, thay đổi và cải tiến
phần mềm, và phân phối phần mềm ở dạng chưa thay đổi hoặc đã thay đổi.
-

Tác dụng của phần mềm mã nguồn mở: huy động trí tuệ và nhân lực để phát triển và cải
tiến sản phẩm phần mềm.


Phần mềm có thể được sao chép hồn tồn miễn phí, bạn hồn tồn an tâm khi chia sẽ
một chương trình tuyệt vời với bạn bè



Các định dạng file khơng hồn tồn bị kiểm sốt bởi một vài nhà cung cấp


Hầu hết các sản phẩm Open Source đều có khả năng bảo mật tuyệt vời, khi một vết
nứt được tìm thấy, nó thường được trám nhanh hơn phần mềm có bản quyền.
 Các hệ thống Open Source, nhất là các hệ thống dựa trên UNIX, thường linh hoạt đến
khó tin nổi. Bởi vỡ chúng được xây dựng từ nhiều khối thống nhất và được miêu tả
cặn kẽ, rất dễ để bạn thay thế nhiều phần của hệ thống với phần có giao diện tương tự.
 Có một cộng đồng hỗ trợ lớn. Không bị phụ thuộc vào một công ty nào.
Nguyên tắc của phần mềm mã nguồn mở:


-



Tự do phân phối lại.



Chương trình phải được cung cấp dưới dạng: mở mã nguồn.



Sản phẩm dẫn xuất: những thay đổi và các sản phẩm dẫn xuất đều được phép phân
phối lại và hưởng mọi qui định của giấy phép gốc.



Tính tồn vẹn của mã nguồn.




Không phân biệt đối xử giữa cá nhân hoặc nhóm người.



Khơng phân biệt đối xử theo lĩnh vực sử dụng.

8


-



Người nhận chương trình được hưởng mọi quyền hạn mà không cần một giấy phép
khác.



Giấy phép không được giới hạn vào một sản phẩm.

Ưu điểm của phần mềm mã nguồn mở:
Tính an tồn: Do phần mềm mã nguồn mở được sáng tạo bởi vô số các nhà thiết kế và
người sử dụng nên độ bảo mật của chúng sẽ được cải thiện, cũng như chúng cũng sẽ
được mang thêm nhiều tính năng mới và những cải tiến mới nên phần mềm mã mở sẽ
dễ chú ý sử dụng hơn.
 Tính ổn định và đáng tin cậy: Các phần mềm nguồn mở thường ổn định và đáng tin
cậy đó là kết luận từ những cuộc phân tích, đánh giá và so sánh với các phần mềm
nguồn đóng khác.
 Giảm lệ thuộc vào xuất khẩu.
 Vấn đề vi phạm bản quyền, quyền sở hữu trí tuệ, và tính tuân thủ WTO.

 Bản địa hóa.
 Khơng phải lệ thuộc vào nhà cung cấp.
Nhược điểm của phần mềm mã nguồn mở:


-

-



Nhiều lĩnh vực chưa có sản phẩm phần mềm hồn thiện mặc dù có rất nhiều dự án
phần mềm mã nguồn mở đang được tiến hành do thiếu những người vừa giỏi về kỹ
thuật lại vừa thạo về chuyên ngành kinh doanh, nghiên cứu.



Phần mềm mã nguồn mở thường khơng hồn tồn tương thích với PMMNĐ, nhất là
khi cài trên máy để bàn..Khi nào các cơng ty chuyển hẳn từ hệ thống chuẩn đóng sang
chuẩn mở thì nhược điểm này sẽ được khắc phục.



Phần mềm mã nguồn mở cũng thiếu tính tiện dụng vốn là đặc trưng của phần mềm
thương mại. Giao diện đồ họa với người sử dụng (GUI – Graphical User Interface)
của phần mềm mã nguồn mở chưa thực sự thân thiện.



Tuy nhiên, cùng với sự phát triển của phần mềm mã nguồn mở, tất cả những hạn chế

nói trên sẽ dần được khắc phục.

Xu hướng hiện nay của các dạng phần mềm mã nguồn mở:


Sự phát triển về ý thức của con người: Nhiều người muốn đóng góp cơng sức của
mình cho xã hội mà không cần trả công.



Sự phát triển của các Lập trình viên nói chung và Internet nói riêng.



Sử dụng phần mềm nguồn mở sẽ không bị phụ thuộc vào công nghệ riêng của bất kỳ
hướng nào, do đó, khi một hướng nào đó thay đổi cơng nghệ thì cũng khơng ảnh
hưởng trực tiếp hoặc nếu có thì cũng rất ít đến hoạt động của ta.



Phần mềm nguồn mở được nhiều người cùng tham gia thiết kế nên tính ổn định cao
ngồi ra, khi có lỗi (do nguồn mở) nên sẽ được phát hiện ngay và sửa chữa kịp thời.

Giá cả (tổng chi phí sở hữu – TCO) của phần mềm nguồn mở thấp hơn nhiều so với
phần mềm thương mại.
2. GNU & GPL:


9



GNU là một phần mềm tự do (được gọi là hệ thống GNU) với mục đích là phát triển hệ điều
hành dạng Unix đầy đủ.
Giấy phép GNU (cũng được gọi là GPL: General Public License): cho phép mọi người nhận
chương trình máy tính các quyền, hay tự do dưới đây:
+ Tự do chạy chương trình, cho bất cứ mục đích nào.
+ Tự do tìm hiểu chương trình hoạt động cách nào, và tự do sửa đổi nó. (Quyền truy cập mã
nguồn là điều kiện tiên quyết cho tự do này).
+ Tự do tái phân phối bảo sao.
+ Tự do cải tiến chương trình, và phát hành những gỡ cải tiến ra cụng cộng. (Quyền truy cập
mó nguồn là điều kiện tiên quyết cho tự do này).
Có 3 dạng quyền truy xuất và khai thác sử dụng các phần mềm mã nguồn mở:
+ Dạng BSD: cho phép lấy mã nguồn, chỉnh sửa nhưng khơng được đưa phần đó chỉnh sửa
ngược trở lại thư viện mã nguồn ban đầu.
+ Dạng Apache: cho phép lấy mã nguồn, chỉnh sửa và có thể đưa lại thư viện mã nguồn ban
đầu.
+ Dạng GNU: cho phép lấy mã nguồn, chỉnh sửa và có thể đưa lại thư viện mã nguồn ban đầu.
Điểm quan trọng của GNU là dựa trên mã nguồn của một phần mềm theo GNU để tạo phần
mềm khác thì phần mềm mới bắt buộc phải theo GNU (tức nguồn mở, được quyền sao chép,
sửa chữa,… chỉ được tính phí phát hành, quảng cáo, hỗ trợ kỹ thuật khơng được tính “cơng”
làm ra phần mềm – điều này gọi là Copyleft với nghĩa trái lại với phần mềm thương mại có
Copyright).
IV.
CHỮ KÝ SỐ (CHỮ KÝ ĐIỆN TỬ) VÀ MỘT SỐ KỸ THUẬT MÃ HÓA CHỮ
KÝ SỐ, GIỚI THIỆU CÁC GIẢI THUẬT SHA VÀ RSA :
1. Chữ ký số:
Về căn bản, khái niệm chữ ký số cũng giống như chữ viết tay. Bạn dùng nó để xác nhận lời
hứa hay cam kết của mình và sau đó khơng thể rút lại được. Chữ ký số khơng địi hỏi phải sử
dụng giấy mực, nó gắn đặc điểm nhận dạng của người ký vào một bản cam kết nào đó.
CHỮ KÝ SỐ là một dạng chữ ký điện tử.

CHỮ KÝ SỐ dựa trên cơng nghệ mã hóa cơng khai (RSA): mỗi người dùng phải có 1 cặp
khóa (keypair) gồm khóa cơng khai (public key) và khóa bí mật (private key)
“PRIVATE KEY” là một khóa trong cặp khóa thuộc hệ thống mã không đối xứng được
dùng để tạo chữ ký số.
“PUBLIC KEY” là một khóa trong cặp khóa thuộc hệ thống mã không đối xứng, được sử
dụng để kiểm tra chữ ký số được tạo bởi khóa bí mật tương ứng trong cặp khóa.
“KÝ SỐ” là việc đưa khóa bí mật vào một chương trình phần mềm để tự động tạo và gắn
chữ ký số vào thông điệp dữ liệu.
10


“NGƯỜI KÝ” là th bao dùng đúng khóa bí mật của mình để ký số vào một thơng điệp dữ
liệu dưới tên của mình.
“NGƯỜI NHẬN” là tổ chức, cá nhân nhận được thông điệp dữ liệu được ký số bởi người
ký, sử dụng các chứng thư số của người ký đó để kiểm tra chữ ký số trong thơng điệp dữ liệu
nhận được và tiến hành các hoạt động, giao dịch có liên quan.
2. Một số giải thuật mã hóa chữ ký số:
Giải thuật SHA:
SHA (Secure Hash Algorithm hay thuật giải băm an toàn) là năm thuật giải được chấp nhận
bởi Federal Information Processing Standards(FIPS) dùng để chuyển một đoạn dữ liệu nhất
định thành một đoạn dữ liệu có chiều dài không đổi với xác suất khác biệt cao. Những thuật
giải này được gọi là "an tồn" bởi vì, theo nguyên văn của chuẩn FIPS 180-2 phát hành ngày
1 tháng 8 năm 2002
Tính chất:
- Cho một giá trị băm nhất định được tạo nên bởi một trong những thuật giải SHA, việc tìm
lại được đoạn dữ liệu gốc là khơng khả thi.
- Việc tìm được hai đoạn dữ liệu nhất định có cùng kết quả băm tạo ra bởi một trong những
thuật giải SHA là không khả thi.
- Bất cứ thay đổi nào trên đoạn dữ liệu gốc, dù nhỏ, cũng sẽ tạo nên một giá trị băm hoàn
toàn khác với xác suất rất cao.

Năm thuật giải SHA là SHA-1 (trả lại kết quả dài 160 bit), SHA-224 (trả lại kết quả dài 224
bit), SHA-256 (trả lại kết quả dài 256 bit), SHA-384 (trả lại kết quả dài 384 bit), và SHA512 (trả lại kết quả dài 512 bit). Thuật giải SHA là thuật giải băm mật được phát triển bởi cục an
ninh quốc gia Mĩ (National Security Agency hay NSA) và được xuất bản thành chuẩn của chính
phủ Mĩ bởi viện công nghệ và chuẩn quốc gia Mĩ (National Institute of Standards and
Technology hay NIST). Bốn thuật giải sau thường được gọi chung là SHA-2.
SHA-1 được sử dụng rộng rãi trong nhiều ứng dụng và giao thức an ninh khác nhau, bao
gồm TLS và SSL, PGP, SSH, S/MIME, và IPSec. SHA-1 được coi là thuật giải thay thế MD5,
một thuật giải băm 128 bit phổ biến khác.
Hiện nay, SHA-1 khơng cịn được coi là an tồn bởi đầu năm 2005, ba nhà mật mã học
người Trung Quốc đã phát triển thành cơng một thuật giải dùng để tìm được hai đoạn dữ liệu
nhất định có cùng kết quả băm tạo ra bởi SHA-1. Mặc dù chưa có ai làm được điều tương tự với
SHA-2, nhưng vì về thuật giải, SHA-2 không khác biệt mấy so với SHA-1 nên nhiều nhà khoa
học đã bắt đầu phát triển một thuật giải khác tốt hơn SHA. NIST cũng đã khởi đầu một cuộc thi
phát triển thuật giải băm mới an toàn hơn SHA, giống như quy trình phát triển chuẩn mã hóa tiên
tiến (Advanced Encryption Standard hay AES).
SHA-1
Trong mật mã, SHA-1 là một hàm băm mật mã được thiết kế bởi National Security Agency và
được công bố bởi NIST là U.S.Federal Information Processing Standard . SHA là viết tắt
của Secure Hash Algorithm . Ba thuật toán SHA được cấu trúc khác nhau và được phân biệt
như SHA-0 , SHA-1 , và SHA-2 . SHA-1 rất giống với SHA-0, nhưng sửa chữa một lỗi trong đặc
11


tả kỹ thuật băm SHA ban đầu dẫn đến những điểm yếu đáng kể. Các thuật tốn SHA-0 khơng
được chấp nhận bởi nhiều ứng dụng. SHA-2, mặt khác đáng kể khác với các hàm băm SHA-1.
SHA-1 là sử dụng rộng rãi nhất hiện có của hàm băm SHA, và được sử dụng trong một số ứng
dụng bảo mật sử dụng rộng rãi và giao thức.Trong năm 2005, các lỗi bảo mật được xác định
trong SHA-1, cụ thể là một điểm yếu tốn học có thể tồn tại, chỉ ra rằng một hàm băm mạnh hơn
sẽ được mong muốn.Mặc dù không có cuộc tấn cơng thành cơng vẫn chưa được báo cáo trên các
biến thể SHA-2, chúng những nỗ lực tương tự như thuật toán SHA-1 và như vậy đang được tiến

hành để phát triển các lựa chọn thay thế được cải thiện.Một tiêu chuẩn mới băm, SHA-3, hiện
đang được phát triển - một liên tục NIST băm cạnh tranh chức năng dự kiến sẽ kết thúc với việc
lựa chọn một chức năng giành chiến thắng trong năm 2012.
SHA-2
SHA-2 bao gồm bốn giải thuật SHA-224, SHA-256, SHA-384 và SHA-512. Ba thuật giải SHA256, SHA-384 và SHA-512 được xuất bản lần đầu năm 2001 trong bản phác thảo FIPS PUB
180-2. Năm 2002, FIPS PUB 180-2, bao gồm cả SHA-1 được chấp nhận thành chuẩn chính thức.
Năm 2004, FIPS PUB 180-2 được bổ sung thêm một biến thể - SHA-224, với mục đích tạo ra
một biến thể SHA-2 có độ dài khóa trùng với DES ba lần với 2 khóa (2TDES) - 112 bit. Những
biến thể SHA-2 này được đăng ký Bằng sáng chế Hoa Kỳ số 6.829.355.
Về giải thuật, các biến thể của SHA-2 không khác nhau. Mặc dù chúng sử dụng giá trị biến và
hằng số cũng như độ dài từ, v.v. khác nhau.
Mặc dù Gilbert và Handschuh (2003) đã nghiên cứu và khơng tìm ra điểm yếu của những biến
thể này, chúng vẫn chưa được kiểm chứng kĩ như SHA-1.
Giải thuật RSA:
RSA là một trong những hệ thống mã hoá bất đối xứng được sử dụng rộng rãi. Nó được đặt theo
tên của 3 nhà khoa học MIT thiết kế ra nó là: Ron Rivest, Adi Shamir, và Leonard Adleman. Ý
tưởng then chốt để đảm bảo tính an tồn của RSA là dựa trên sự khó khăn trong việc phân tích
nhân tử của 2 số nguyên tố lớn. (a x b = c, tìm ngược lại a, b từ c là phân tích nhân tử).
Hệ thống mã hố RSA bao gồm 4 bước: key generation, key
distribution, encryption và decryption. Vì để đảm bảo tính bí mật, nên mỗi hệ thống khác nhau
cần tạo ra các public, và private key khác nhau. Sau qúa trình handshake và public key được gởi
tới phía client thì thơng tin mới chính thức được mã hoá khi server và client giao tiếp với nhau.
Mã hoá và giải mã
Tạm thời bỏ qua bước public key và private được tạo ra như thế nào. Chúng ta có cơng thức để
mã hố và giải mã dữ liệu như sau:


Encryption: memodn=cmemodn=c




Decryption: cdmodn=mcdmodn=m

Trong đó:


m là message ban đầu
12




e, n là public key



c là dữ liệu đã được mã hoá



d là private key thường là một số rất lớn, tích của 2 số nguyên tố, và được giữ an tồn
tuyệt đối

Ví dụ cho e = 17, n = 3233, d = 2753 và cho thông điệp cần đc mã hoá là m = 42


Mã hoá: 4217mod3233=25574217mod3233=2557

Số 2557 này khi được giải mã thì nó trở về 42 như cũ:



Giải mã: 25572753mod3233=4225572753mod3233=42

private key d được tạo ra dựa vào 2 prime factor của n. Trong thực tế n được tạo ra bằng cách
nhân hai số nguyên tố 2048 bits cho nên tính ra d thì dễ, cịn từ n tính ngược lại 2 số đó để tìm
private key là gần như bất khả thi với máy tính hiện giờ.
Cách tạo public và private key
Phần này thiêng về toán, hầu như chúng ta không cần quan tâm nếu như sử dụng các gói Cipher
có sẵn của Java hoặc JavaScript.
1. Chọn hai số nguyên tố ngẫu nhiên phân biệt p và q (trong thực tế là càng lớn càng tốt, cỡ
2048 bits hay 617 chữ số).
o Ví dụ: p = 61 và q = 53
2. Tính tích n=p∗q=61∗53=3233n=p∗q=61∗53=3233
3. Tính kết quả hàm số Euler (totient): Φ(n)=(p−1)(q−1)Φ(n)=(p−1)
(q−1)Φ(3233)=(61−1)∗(53−1)=3120Φ(3233)=(61−1)∗(53−1)=3120
4. Chọn một số bất kỳ 1o Chọn e=17e=17
5. Tính d là nghịch đảo modular e(modΦ(n))e(modΦ(n)):
e∗dmodΦ(n)=117∗dmod3120=1e∗dmodΦ(n)=117∗dmod3120=1
Hoặc là dùng cách brute force để tính d (có thể được vì chúng ta chọn các số nhỏ), hoặc dùng
thuật tốn Euclid mở rộng, ta có d=2735d=2735
Cách brute force thì như sau (chạy chưa tới 15 bước là ra):
def compute_d(phi_n, e):
for i in range(1, 1000):
x = ((i * phi_n) + 1) / e
13


y = (e * x) % phi_n
if y == 1:

print x
break
compute_d(3120, 17)
Như vậy cuối cùng chúng ta tính tốn được public key: e = 17, n = 3233 và private key: d = 2735
Tính an tồn của RSA
Tính an tồn của RSA chủ yếu dựa vào bộ tạo số ngẫu nhiên sinh ra 2 số nguyên tố p và q ban
đầu. Việc tính ngược lại p và q từ n là chuyện hầu như không thể với hai số nguyên tố 2048 bits
như đã đề cập ở trên. Nhưng việc tính ra d từ từ p và q là việc rất dễ dàng. Do đó nếu như một
bên nào đó đốn ra được hoặc tìm ra lỗ hổng của bộ sinh số ngẫu nhiên đó thì coi RSA bị hố
giải. Gần đây có ý kiến cho rằng Bộ An ninh Nội địa Hoa Kỳ (NSA) đã cài một back door vào bộ
tạo số ngẫu nhiên Dual Elliptic Curve để giúp NSA có thể crack RSA nhanh hơn 10,000 lần. Và
điều đáng quan tâm là bộ tạo số ngẫu nhiên này được công ty RSA (được thành lập bởi 3 đồng
tác giả của hệ thống RSA) cài đặt mặc định trong rất nhiều ứng dụng khác nhau.
V.

CƠNG NGHỆ TÌM KIẾM VÀ ĐỊNH VỊ:

1. Sematic Web (Web ngữ nghĩa):
2001: Tim Berners Lee cùng nhóm nghiên cứu đã cơng bố cơng trình về web ngữ nghĩa:
“Semantic Web như một sự mở rộng của web hiện tại mà trong đó thơng tin được xử lý một
cách tự dộng bằng máy tính, làm cho máy tính và con người có thểhợp tác với nhau” .
Hình 2

Kiến trúc web ngữ nghĩa:
Hình 3

14


TầngUnicode & URI:

-

Unicode: sử dụng tập kí tự quốc tế

-

URI (Uniform Resource Identifier): định danh các đối tượng trong Semantic Web

TầngXML + namespace + schema: tầng cơ sở cú pháp của semantic web
liệu web có cấu trúc với từ vựng do người dùng định nghĩa.

cho phép viết tài

TầngRDF vàRDFS:
-

RDF (Resource Description Framework):
• RDF tn thủ cú pháp XML.
• mơ hình dữ liệu cơ bản, dung để mô tả các đối tượng

-

RDF Schema:
• các khái niệm cơ bản là các lớp, thuộc tính, các mối quan hệ lớp con, thuộc tính con,
rang buộc vùng định nghĩa và phạm vi.
• mơ hình sơ khai cho sự tổ chức các đốit ượng web vào các phân cấp.

Ontology vocabulary: định nghĩa mối liên hệ giữa các khái niệm khác nhau
Lớp Digital Signature: được dùng để xác định tác giả của tài liệu.
Các lớp Logic, Proof, Trust:đang trong giai đoạn nghiên cứu

-

Lớp Logic cho phép viết ra các luật

-

Lớp Proof thi hành các luật

-

Lớp Trustđánh giá
=> quyết định ứng dụng nên hay không nên tin tưởng/chấp nhận

2. Điện toán đám mây (cloud computing):

15


Điện tốn đám mây là một giải pháp tồn diện cung cấp cơng nghệ thơng tin như một dịch
vụ. Nó là một giải pháp điện toán dựa trên Internet ở đó cung cấp tài ngun chia sẻ giống
như dịng điện được phân phối trên lưới điện. Các máy tính trong các đám mây được cấu
hình để làm việc cùng nhau và các ứng dụng khác nhau sử dụng sức mạnh điện toán tập hợp
cứ như thể là chúng đang chạy trên một hệ thống duy nhất.
Tính linh hoạt của điện toán đám mây là một chức năng phân phát tài nguyên theo yêu cầu.
Điều này tạo điều kiện thuận lợi cho việc sử dụng các tài nguyên tích lũy của hệ thống, phủ
nhận sự cần thiết phải chỉ định phần cứng cụ thể cho một nhiệm vụ. Trước điện toán đám
mây, các trang web và các ứng dụng dựa trên máy chủ đã được thi hành trên một hệ thống cụ
thể. Với sự ra đời của điện toán đám mây, các tài nguyên được sử dụng như một máy tính
gộp ảo. Cấu hình hợp nhất này cung cấp một mơi trường ở đó các ứng dụng thực hiện một
cách độc lập mà khơng quan tâm đến bất kỳ cấu hình cụ thể nào.

Tại sao lại đổ xơ vào đám mây?
Có các lý do có cơ sở và quan trọng về kinh doanh và công nghệ thông tin đối với sự dịch
chuyển sang mẫu hình điện tốn đám mây. Việc coi th ngồi như một giải pháp có những
điểm cơ bản được xem là các lý do ấy.
• Chi phí giảm: Điện tốn đám mây có thể làm giảm cả chi phí vốn (CapEx) lẫn chi phí vận
hành (OpEx) vì các tài nguyên chỉ được mua khi cần và chỉ phải trả tiền khi sử dụng.
• Cách sử dụng nhân viên được tinh giản: Việc sử dụng điện toán đám mây giải phóng đội
ngũ nhân viên quý giá cho phép họ tập trung vào việc cung cấp giá trị hơn là duy trì phần
cứng và phần mềm. • Khả năng mở rộng vững mạnh: Điện toán đám mây cho phép khả năng
điều chỉnh quy mô ngay lập tức hoặc tăng lên hoặc giảm xuống, bất cứ lúc nào mà không cần
giao kết dài hạn.
Các khối xây dựng của điện toán đám mây
Mơ hình điện tốn đám mây gồm có một mặt trước (front end) và một mặt sau (back end).
Hai thành phần này được kết nối thông qua một mạng, trong đa số trường hợp là Internet.
Phần mặt trước là phương tiện chuyên chở qua đó người dùng tương tác với hệ thống; phần
mặt sau chính là đám mây. Phần mặt trước gồm có một máy tính khách hoặc mạng máy tính
của doanh nghiệp và các ứng dụng được sử dụng để truy cập vào đám mây. Phần mặt sau
cung cấp các ứng dụng, các máy tính, các máy chủ và lưu trữ dữ liệu để tạo ra đám mây của
các dịch vụ.
Các tầng: Điện toán là một dạng hàng hoá
Khái niệm điện toán đám mây được xây dựng trên các tầng, mỗi tầng cung cấp một mức
chức năng riêng. Sự phân tầng này của các thành phần đám mây đã cung cấp một phương
tiện cho các tầng của điện toán đám mây để trở thành một loại hàng hóa như điện, dịch vụ
điện thoại hoặc khí tự nhiên. Hàng hóa mà điện tốn đám mây bán là khả năng tính tốn với
chi phí và phí tổn thấp hơn cho người dùng. Điện toán đám mây đã sẵn sàng để trở thành
dịch vụ siêu tiện ích tiếp theo.
Trình giám sát máy ảo (VMM- virtual machine monitor) cung cấp phương tiện để sử dụng
đồng thời các tiện ích điện tốn đám mây. VMM là một chương trình trên một hệ thống ibm.
Cơ bản về điện tốn đám mây của máy tính chủ cho phép một máy tính hỗ trợ nhiều mơi
trường thi hành giống hệt nhau. Từ quan điểm của người dùng, hệ thống này là một máy tính

16


độc lập, hoàn toàn cách biệt với những người dùng khác. Trong thực tế, các người dùng đang
được phục vụ bởi cùng một máy tính. Một máy ảo là một hệ điều hành (OS) đang được quản
lý bởi một chương trình điều khiển nằm dưới cho phép nó xuất hiện giống như là nhiều hệ
điều hành. Trong điện toán đám mây, VMM cho phép những người dùng giám sát và do đó
quản lý các khía cạnh của q trình như là truy cập dữ liệu, lưu trữ dữ liệu, mã hóa, đánh địa
chỉ, cấu trúc liên kết và di chuyển tải công việc.
Đây là các tầng đám mây được cung cấp:
• Tầng cơ sở hạ tầng là nền tảng của đám mây. Nó gồm có các tài sản vật lý — các máy chủ,
các thiết bị mạng, các ổ đĩa lưu trữ, v.v.. Cơ sở hạ tầng là một dịch vụ (IaaS) có các nhà cung
cấp như IBM® Cloud. Khi sử dụng IaaS bạn thực tế khơng kiểm sốt cơ sở hạ tầng nằm
dưới, nhưng bạn có quyền kiểm sốt các hệ điều hành, lưu trữ, triển khai các ứng dụng và ở
một mức độ hạn chế, có quyền kiểm soát việc lựa chọn các thành phần mạng. Dịch vụ in theo
yêu cầu (POD) là một ví dụ về các tổ chức có thể hưởng lợi từ IaaS. Mơ hình POD được dựa
trên việc bán sản phẩm có khả năng tùy chỉnh. Các POD cho phép các cá nhân mở cửa hàng
và bán thiết kế các sản phẩm. Các chủ cửa hàng có thể tải lên nhiều hay ít thiết kế tùy theo
khả năng sáng tạo của họ. Có hàng ngàn lần tải lên. Với các khả năng lưu trữ đám mây, một
POD có thể cung cấp khơng gian lưu trữ khơng hạn chế.
• Tầng giữa là nền tảng hệ thống. Nó cung cấp cơ sở hạ tầng của ứng dụng. Nền tảng là một
dịch vụ (PaaS) cung cấp sự truy cập đến các hệ điều hành và các dịch vụ có liên quan. Nó
cung cấp một cách để triển khai các ứng dụng lên đám mây bằng cách sử dụng các ngơn ngữ
lập trình và các cơng cụ do nhà cung cấp hỗ trợ. Bạn không cần phải quản lý hoặc kiểm soát
cơ sở hạ tầng nằm dưới, nhưng bạn có quyền điều khiển các ứng dụng đã triển khai và ở một
mức độ nào có quyền điều khiển ứng dụng sử dụng các cấu hình mơi trường trên máy tính
chủ. PaaS có các nhà cung cấp như là Elastic Compute Cloud (EC2) của Amazon. Nhà phần
mềm doanh nhân nhỏ là một hoạt động kinh doanh lý tưởng đối với PaaS. Với nền tảng hệ
thống đã chọn lọc kỹ, có thể tạo ra các sản phẩm đẳng cấp thế giới mà không thêm gánh nặng
cho hệ thống đang chạy trong cơng ty.

• Tầng trên cùng là tầng ứng dụng, tầng mà hầu hết mọi người xem như là đám mây. Các ứng
dụng chạy ở đây và được cung cấp theo yêu cầu của những người dùng. Phần mềm là một
dịch vụ (SaaS) có các nhà cung cấp như Google Pack. Google Pack bao gồm các ứng dụng,
các công cụ có thể sử dụng được qua Internet, như Calendar, Gmail, Google Talk, Docs và
nhiều hơn nữa.
Các cách hình thành đám mây
Có ba kiểu hình thành đám mây: riêng tư (theo giả thuyết), cơng cộng và lai.
• Các đám mây cơng cộng có sẵn cho cơng chúng hoặc một nhóm ngành nghề lớn và do một
tổ chức bán các dịch vụ đám mây sở hữu và cung cấp. Một đám mây cơng cộng là cái mà
người ta hình dung là đám mây theo nghĩa thơng thường; đó là, các tài ngun được cung cấp
động trên Internet bằng cách sử dụng các ứng dụng web từ một nhà cung cấp bên thứ ba bên
ngoài cung cấp các tài nguyên chia sẻ và gửi hóa đơn tính cước trên cơ sở tính tốn việc sử
dụng.
• Các đám mây riêng tư tồn tại bên trong tường lửa của công ty bạn và do tổ chức của bạn
quản lý. Chúng là các dịch vụ đám mây do bạn tạo ra và kiểm soát trong doanh nghiệp của
mình. Các đám mây riêng tư cũng cung cấp nhiều lợi ích tương tự như các đám mây cơng
17


cộng — sự khác biệt chủ yếu là tổ chức của bạn chịu trách nhiệm thiết lập và duy trì đám
mây đó.
• Các đám mây lai là một sự kết hợp của đám mây công cộng và riêng tư khi sử dụng các
dịch vụ có trong cả hai vùng cơng cộng và riêng tư. Các trách nhiệm quản lý được phân chia
giữa các nhà cung cấp dịch vụ đám mây cơng cộng và chính doanh nghiệp. Khi sử dụng một
đám mây lai, các tổ chức có thể xác định các mục tiêu và các yêu cầu của các dịch vụ được
tạo ra và có được chúng dựa vào sự lựa chọn thích hợp nhất.
Trong thời đại cách mạng mới này, điện tốn đám mây có thể cung cấp cho các tổ chức
phương tiện và các phương pháp cần thiết để đảm bảo sự ổn định tài chính và dịch vụ chất
lượng cao. Tất nhiên, phải có hợp tác chung nếu q trình điện tốn đám mây là để đạt tới sự
an toàn tối ưu và các tiêu chuẩn vận hành chung. Với sự ra đời của điện toán đám mây, điều

cấp thiết với tất cả chúng ta là sẵn sàng cho cuộc cách mạng này.
3. GoogleMap API, Facebook API:
GoogleMap API
Google Map là một dịch vụ ứng dụng vào công nghệ bản đồ trực tuyến trên web miễn phí
được cung cấp bởi Google, hỗ trợ nhiều dịch vụ khác của Google đặc biệt là dò đường và chỉ
đường; hiển thị bản đồ đường sá, các tuyến đường tối ưu cho từng loại phương tiện, cách bắt
xe và chuyển tuyến cho các loại phương tiện công cộng (xe bus, xe khách ...), và những địa
điểm (kinh doanh, trường học, bệnh viện, cây ATM...) trong khu vực cũng như khắp nơi trên
thế giới.
Một số ứng dụng của Google Map API


Đánh dấu các địa điểm trên bản đồ kèm theo thông tin cho địa điểm đó : khu vui chơi giải
trí, nhà hàng khách sạn, cây ATM, bệnh viện, trường học,… bất cứ địa điểm nào bạn
muốn



Chỉ dẫn đường đến các địa điểm cần tìm(đường tối ưu và nhiều option khác),chỉ dẫn
đường giao thơng cơng cộng, có thể là các địa điểm cung cấp như trên. Ở đây sử dụng
các service google cung cấp.



Khoanh vùng khu vực: các trung tâm kinh tế, khu đô thị, khu ơ nhiễm…



Tình trạng giao thơng các khu vực… từ đó đưa ra các giải pháp…


Tính năng hỗ trợ:


Hình ảnh 45 độ



Tự động hồn thành địa chỉ



Analytics



Tìm kiếm doanh nghiệp và điểm yêu thích (POI)
18




Chỉ đường



Ma trận khoảng cách



Thời gian đi lại dự đoán




Định tuyến theo tình hình giao thơng



Cơng cụ vẽ



Cấu hình độ cao



Hỗ trợ về Enterprise



Chuyển tiếp và đảo ngược mã hóa địa lý



Hình ảnh vệ tinh tồn cầu



Kết xuất KML




Cập nhật nhanh chóng từ MapMaker



Giao thơng thời gian thực



Độ tin cậy cao



Bản đồ tĩnh



Chế độ xem phố



Bản đồ theo kiểu



Hỗ trợ cho các thiết bị khác nhau

Facebook API:
Facebook API là cách chủ yếu để lấy dữ liệu vào và ra khỏi đồ thị xã hội của Facebook. Đó
là một HTTP API dựa trên mức độ thấp mà bạn có thể sử dụng để truy vấn dữ liệu, gửi những

câu chuyện mới, tải lên hình ảnh và một loạt các nhiệm vụ khác mà một ứng dụng có thể cần
phải làm.
Facebook API bao gồm:


node (nút): Một cách cơ bản là những "thứ" người ta sử dụng, một hình ảnh, một
trang, một nhận xét trong facebook
19




edge (cạnh): Là các kết nối giữa những "thứ", chẳng hạn như kết nối giữa hình
ảnh và trang chứa ảnh đó, hoặc một ghi chú và bức ảnh được ghi chú đó



field (trường/lĩnh vực): Thơng tin về những "thứ", chẳng hạn như ngày sinh nhật
của người sử dụng, hoặc tên của một trang.

Facebook API là dựa trên HTTP, do đó, làm việc với bất kỳ ngơn ngữ nào có một thư
viện HTTP, như cURL, urllib. Chúng tơi sẽ giải thích thêm một chút về những gì bạn có
thể làm với điều này trong phần dưới đây, nhưng nó có nghĩa là bạn cũng có thể sử dụng
Graph API trực tiếp trong trình duyệt của bạn, ví dụ như gửi một địi hỏi này tương
đương với:
/>Và nhận được kết quả, nó chứa thông tin về icon của facebook graph. Copy giá trị url có
trong kết quả và dán lên trình duyệt bạn sẽ có được icon đó.
Cấu trúc Facebook Graph API
Object ID
Mỗi nút có một ID duy nhất được sử dụng để truy cập thông qua Graph API

Access Token
Truy cập vào trang:
/>Sau đó chuyển tới "Graph API Explorer", nó cho phép bạn khám phá những gì
mà Graph API mang tới cho bạn một cách trực quan.
Màn hình "Graph API Explorer" có 4 phần quan trọng:


Access Token: Là mã cho phép gửi đòi hỏi tới Server. Nếu bạn đang login vào một tài
khoản facebook nào đó, giá trị này sẽ được mặc định hiển thị cho tài khoản đó.



URL gửi tới server để nhận về giá thông tin.



Vùng 3, giúp bạn thêm các trường cần thiết vào đòi hỏi.



Kết quả nhận về sau khi nhấn Submit.

Access Token là một đoạn String, nó giống như một giấy phép cho phép bạn truy cập
vào Facebook Graph để lấy dữ liệu nào đó. MỗiAccess Token mang thơng tin rằng bạn có
quyền làm được những gì. Để có tối đa quyền khám phá Facebook Graph API trên tài
khoảnFacebook của bạn, hãy tạo một Access Token với quyền hạn lớn nhất.
4. Kỹ thuật tin nhắn sms trong phần mềm:

20



Tin nhắn di động, cụ thể là các dịch vụ tin nhắn văn bản (SMS - Short Message Service), là
một kênh truyền thông quan trọng để tiếp cận người dùng. Tin nhắn cũng là một phần trọng
tâm của những trải nghiệm di động người dùng. Tuy nhiên, việc thực hiện các ứng dụng nhắn
tin di động là rất khó và đắt tiền do những rào cản về chi phí khi làm việc với các nhà cung
cấp dịch vụ viễn thông. Bài viết này nhằm giúp nhận định lại những kiến thức cơ bản của tin
nhắn di động, và cùng thảo luận về một số phương pháp tiếp cận kỹ thuật để giải quyết
những khó khăn này.
SMS là kênh nhắn tin di động phổ biến nhất. Trên thực tế, tất cả các điện thoại di động đều
có thể gửi và nhận tin nhắn, với tối đa 160 ký tự. Tùy theo một số "rào cản" khác nhau, tuy
nhiên, giới hạn an toàn nhất cho tin nhắn di động là từ 140 ký tự.
Các dịch vụ tin nhắn đa phương tiện (MMS - Multimedia Messaging Service) là một hình
thức nâng cao của tin nhắn văn bản (SMS) cho phép người dùng gửi và nhận hình ảnh, các
đoạn phim ngắn, qua điện thoại. Giới hạn cho phép của dạng tin nhắn này ở mức tối đa là
300KB. Các dạng tin nhắn MMS cũng được hiển thị như là một dạng của SMS để báo hiệu
cho người dùng, khi người dùng mở tin nhắn, điện thoại sẽ tự động truyền tải nội dung đa
phương tiện thông qua một giao thức email chuẩn. MMS đặc biệt rất phổ biến trong giới trẻ,
nhưng nhìn chung, độ thâm nhập vào thị trường vẫn còn thấp, một phần cũng là do các
phương tiện truyền thông không thể tương thích được với các định dạng tải trọng khác nhau.
SMS và MMS thường được sử dụng cho các hình thức giao tiếp đồng đẳng (peer-to-peer),
cho phép người sử dụng gửi tin nhắn cho nhau. Đối với các nhà phát triển ứng dụng, điều mà
chúng tôi quan tâm là ở cách thức truyền tải các tin nhắn từ các ứng dụng. Trong thuật ngữ
công nghiệp, cái chúng ta thường quan tâm đến là các dạng tin nhắn Mobile Terminate (MT)
— là dạng tin nhắn được gửi từ một ứng dụng trực tiếp đến một thiết bị di động — và dạng
tin nhắn Mobile Originated (MO) — tin nhắn sẽ được truyền tải từ một thiết bị di động đến
thẳng một ứng dụng. Để thực hiện được cả 2 dạng tin nhắn loại này, các ứng dụng được chọn
yêu cầu phải có sự tương thích với các máy chủ do các cơng ty viễn thông quản lý.
Gửi tin nhắn SMS và MMS miễn phí
Việc gửi một tin nhắn định dạng MT thơng qua hình thức tin nhắn SMS hoặc MMS đến một
số điện thoại nào đó thực sự rất đơn giản nếu bạn biết số điện thoại người nhận hoặc số kết

nối không dây từ các nhà mạng. Hầu hết tất cả các nhà mạng khơng dây đều có cổng nhận
email và truyền tải đến các thiết bị cầm tay dưới dạng tin nhắn MMS và SMS
Tương tự, các email có đính kèm hình ảnh cũng có thể được chuyển tiếp đến điện thoại dưới
dạng tin nhắn MMS thông qua cổng MMS email của nhà mạng.
Phương pháp này rất hữu ích trong việc gửi những thơng điệp mang tính chất nhắc nhở,
nhưng khi đối với hầu hết các trường hợp sử dụng khác, phương pháp này lại mang đến
những hạn chế nhất định:
• Tin nhắn đơi khi lại đến từ những số điện thoại ngẫu nhiên với những định dạng sai. Điều
này thật không chuyên nghiệp chút nào.
21


• Người nhận sẽ không thể trả lời tin nhắn hoặc gửi bất kỳ thông tin nào ngược trở lại ứng
dụng của bạn. Điều này sẽ làm hạn chế rất nhiều đến các ứng dụng khác
• Khi tin nhắn đến từ các số điện thoại khác nhau, người sử dụng không thể đánh dấu được
những số điện thoại này để liên kết chúng với các ứng dụng.
• Bạn cần phải yêu cầu người sử dụng cung cấp thông tin về nhà mạng mà bạn đã đăng ký để
có thể chọn dùng đúng cổng email. Để có được sự tương tác một cách thuận lợi với người sử
dụng, bạn cần gửi và nhận tin nhắn từ một số điện thoại nhất định mà được đăng ký dịch vụ.
Vì đó chính là cách tốt nhất để hồn chỉnh quy trình tin nhắn trên di động.
VI.

CÔNG NGHỆ NHẬN DIỆN VÀ THỊ GIÁC MÁY TÍNH (COMPUTER
VISION):

Một lĩnh vực đầy hứa hẹn, song hành với trí tuệ nhân tạo. Bài viết giới thiệu tổng quan về
cơng nghệ cảm quan máy tính, khả năng ứng dụng cũng như hướng phát triển.
Vai trị của máy tính là trợ giúp con người trong sản xuất và đời sống. Để đảm đương được
những cơng việc phức tạp, máy tính phải có khả năng suy nghĩ và trí tuệ tương đối. Trước
hết, máy tính phải có được cảm nhận về thế giới như con người. Công nghệ cảm ứng đã phát

triển mạnh trong các thập niên qua - với nhiều giác quan hồn hảo giúp máy tính cảm nhận
về bản thân như gia tốc, vận tốc, định vị, định hướng, v.v...
Tuy nhiên, máy tính vẫn chưa thể cảm nhận về thế giới xung quanh - ngoại trừ một số thông
tin như nhiệt độ, áp lực, khoảng cách... Mảng ghép quan trọng cịn thiếu chính là thị giác. Thị
giác đem đến thơng tin có thể khái qt hóa và tập hợp thành mơ hình. Thị giácđược hồn
thiện sẽ nâng tầm trí tuệ nhân tạo (AI) lên một tầm cao mới, máy tính sẽ trở nên gần gũi và
tương tác với con người thuận lợi hơn.
Cơng nghệ cảm quan máy tính (Computer Vision - CV) khởi đầu từ thập niên 70, cùng với
ngành khoa học không gian - với yêu cầu điều khiển từ xa các thiết bị, robot thám hiểm. Sự
phát triển khơng ngừng tốc độ xử lí của máy tính là động lực quan trọng cho CV. Khi sức
mạnh máy tính được cải thiện, CV đã trở nên khả thi ứng dụng cho nhiều lĩnh vực.
Các thành phần:
-

Thu thập ảnh

-

Hiệu chỉnh và phục chế ảnh

-

Xử lí màu sắc và độ phân giải ảnh

-

Xử lí hình trạng và phân tách chi tiết

-


Tái dựng ảnh ba chiều và diễn giải ảnh

-

Nhận dạng và giám sát thực thể
22


Ứng dụng CV:
-

Y khoa (chẩn đoán, giải phẫu)

-

An ninh (camera thông minh, nhận dạng)

-

Giao thông (theo dõi lưu thông, điều khiển xe)

-

Robot (gia đình, khơng gian)

-

Tự động hóa sản xuất (đo lường, kiểm định chất lượng)

Phát triển ứng dụng với thư viện OpenCV

OpenCV (Open Computer Vision library) do Intel phát triển, được giới thiệu năm 1999 và
hoàn thiện thành phiên bản 1.0 năm 2006. Thư viện OpenCV - gồm khoảng 500 hàm – được
viết bằng ngơn ngữ lập trình C và tương thích với các hệ điều hành Windows, Linux, Mac
OS... đóng vai trị xác lập chuẩn giao tiếp, dữ liệu, thuật toán cho lĩnh vực CV và tạo điều
kiện cho mọi người tham gia nghiên cứu và phát triển ứng dụng.
Trước OpenCV khơng có một cơng cụ chuẩn nào cho lĩnh vực CV. Các đoạn code đơn lẻ do
các nhà nghiên cứu tự viết thường không thống nhất và không ổn định. Các bộ công cụ thương
mại như Matlab, Simulink, Halcon, v.v... lại có giá cao chỉ thích hợp cho các cơng ty phát triển
các ứng dụng lớn. Ngồi ra cịn có các giải pháp kèm theo thiết bị phần cứng mà phần lớn là mã
đóng và được thiết kế riêng cho từng thiết bị, rất khó khăn cho việc mở rộng ứng dụng.
OpenCV là cơng cụ hữu ích cho các bạn bước đầu làm quen với CV vì các ưu điểm sau:
- OpenCV là công cụ chuyên dụng: Được Intel phát triển theo hướng tối ưu hóa cho các ứng
dụng xử lí và phân tích ảnh, với cấu trúc dữ liệu hợp lý, thư viện tạo giao diện, truy xuất thiết
bị phần cứng được tích hợp sẵn. OpenCV thích hợp để phát triển nhanh ứng dụng.
- OpenCV là công cụ mã nguồn mở: Không chỉ là công cụ miễn phí (với BSD license), việc
được xây dựng trên mã nguồn mở giúp OpenCV trở thành cơng cụ thích hợp cho nghiên cứu
và phát triển, với khả năng thay đổi và mở rộng các mơ hình, thuật tốn.
- OpenCV đã được sử dụng rộng rãi: Từ năm 1999 đến nay, OpenCV đã thu hút được một
lượng lớn người dùng, trong đó có các cơng ty lớn như Microsoft, IBM, Sony, Siemens, Google
và các nhóm nghiên cứu ở Standford, MIT, CMU, Cambridge... Nhiều forum hỗ trợ và cộng
đồng người dùng đã được thành lập, tạo nên kênh thông tin rộng lớn hữu ích cho việc tham
khảo tra cứu.
Tổ chức thư viện OpenCV khá đơn giản bao gồm 4 module chính và 2 module mở rộng:

23


- CV & CVAUX: hỗ trợ các chức năng cấp cao (nhận dạng khn mặt, hiệu chỉnh camera),
xử lí ảnh, phân tích chuyển động... Trong đó CV là module ổn định, còn CVAUX chứa các
chức năng thử nghiệm để đưa vào phiên bản kế tiếp.

- CxCore: tổ chức dữ liệu cơ sở, thực hiện các thuật tốn (phép tính ma trận, tính tốn), hỗ
trợ chuẩn dữ liệu XML, các thao tác vẽ chú thích.
- HighGUI: giúp tạo nhanh giao diện đơn giản và hỗ trợ truy xuất ảnh/phim từ file hoặc thiết
bị ngoại vi.
Hai module còn lại là MLL và IPP ít được sử dụng hơn. Module MLL (machine learning
library) cung cấp khả năng tự học của thuật toán với chức năng thống kê phân loại và các
thuật toán phân nhóm. IPP là module thương mại cung cấp các đoạn mã mở rộng đã được tối
ưu hóa cho phần cứng của Intel giúp tăng tốc các ứng dụng lớn.
Kèm theo thư viện là tài liệu hướng dẫn và các ví dụ mẫu thể hiện một phần các chức năng
của công cụ OpenCV.
Các chức năng của openCV tập trung vào thu thập ảnh, xử lí ảnh và các thuật tốn phân tích
dữ liệu ảnh, bao gồm:
- Truy xuất ảnh và phim: đọc ảnh số từ camera, từ file, ghi ảnh và phim
- Cấu trúc dữ liệu ảnh số và các dữ liệu hỗ trợ cần thiết: ma trận, vector, chuỗi, xâu và cây
- Xử lí ảnh căn bản: các bộ lọc có sẵn, tìm chi tiết cạnh, góc, chỉnh đổi màu, phóng to thu
nhỏ, và hiệu chỉnh histograms
- Xử lí cấu trúc: tìm viền, nhận chuyển động, thay đổi trong khơng gian 3D, đối chiếu bản
mẫu, xấp xỉ các đơn vị hình học cơ sở - mặt phẳng, đa giác, ellipse, đường thẳng...
- Phân tích dữ liệu ảnh: nhận dạng thực thể, theo dõi các chi tiết và phân tích chuyển động
- Tạo giao diện đơn giản: hiển thị ảnh, thao tác bàn phím, chuột, thanh trượt để chỉnh thơng
số (nếu cần thiết các bạn có thể tự tạo thêm các phím điều khiển thơng qua thao tác chuột,
hoặc tích hợp thêm các thư viện về giao diện như wxWidgets)
- Chức năng vẽ, chú thích lên ảnh.
VII.

KHO DỮ LIỆU, KHAI PHÁ DỮ LIỆU, CÔNG NGHỆ TRI THỨC VÀ TIN
SINH HỌC (BIOINFOMATICS):

1. Khai phá dữ liệu:
Hiện nay có nhiều kỹ thuật khai phá dữ liệu, mơ hình truy vấn, mơ hình xử lý và thu thập dữ

liệu khác nhau. Vậy bạn sẽ sử dụng một kỹ thuật nào để khai phá dữ liệu của mình và bạn có
thể sử dụng kỹ thuật nào để kết hợp với phần mềm và cơ sở hạ tầng hiện có của mình? Hãy
xem xét các kỹ thuật và các giải pháp khai phá dữ liệu và phân tích khác nhau và tìm hiểu
cách xây dựng chúng nhờ sử dụng phần mềm và các bản cài đặt hiện có. Hãy khám phá các
24


cơng cụ khai phá dữ liệu khác nhau có sẵn và tìm hiểu cách xác định xem kích thước và độ
phức tạp của những thơng tin của bạn có thể dẫn đến những khó khăn rắc rối về xử lý và lưu
trữ khơng và cần phải làm gì.
Khai phá dữ liệu là một quá trình Về cơ bản, khai phá dữ liệu là về xử lý dữ liệu và nhận biết
các mẫu và các xu hướng trong thơng tin đó để bạn có thể quyết định hoặc đánh giá. Các
nguyên tắc khai phá dữ liệu đã được dùng nhiều năm rồi, nhưng với sự ra đời của big data
(dữ liệu lớn), nó lại càng phổ biến hơn.
Big data gây ra một sự bùng nổ về sử dụng nhiều kỹ thuật khai phá dữ liệu hơn, một phần vì
kích thước thơng tin lớn hơn rất nhiều và vì thơng tin có xu hướng đa dạng và mở rộng hơn
về chính bản chất và nội dung của nó. Với các tập hợp dữ liệu lớn, để nhận được số liệu
thống kê tương đối đơn giản và dễ dàng trong hệ thống vẫn chưa đủ. Với 30 hoặc 40 triệu
bản ghi thông tin khách hàng chi tiết, việc biết rằng 2 triệu khách hàng trong số đó sống tại
một địa điểm vẫn chưa đủ. Bạn muốn biết liệu 2 triệu khách hàng đó có thuộc về một nhóm
tuổi cụ thể khơng và bạn cũng muốn biết thu nhập trung bình của họ để bạn có thể tập trung
vào các nhu cầu của khách hàng của mình tốt hơn. Những nhu cầu hướng kinh doanh này đã
thay đổi cách lấy ra và thống kê dữ liệu đơn giản sang việc khai phá dữ liệu phức tạp hơn.
Vấn đề kinh doanh hướng tới việc xem xét dữ liệu để giúp xây dựng một mơ hình để mô tả
các thông tin mà cuối cuộc sẽ dẫn đến việc tạo ra báo cáo kết quả.
Các công cụ khai phá dữ liệu
Khai phá dữ liệu không phải là tất cả về các công cụ hay phần mềm cơ sở dữ liệu mà bạn
đang sử dụng. Bạn có thể thực hiện khai phá dữ liệu bằng các hệ thống cơ sở dữ liệu bình
thường và các cơng cụ đơn giản, bao gồm việc tạo và viết phần mềm riêng của bạn hoặc sử
dụng các gói phần mềm bán ngồi cửa hàng. Khai phá dữ liệu phức tạp được hưởng lợi từ

kinh nghiệm trong quá khứ và các thuật toán đã định nghĩa với phần mềm và các gói phần
mềm hiện có, với các cơng cụ nhất định để thu được một mối quan hệ hoặc uy tín lớn hơn
bằng các kỹ thuật khác nhau.
Ví dụ, IBM SPSS®, có nguồn gốc từ việc phân tích thống kê và khảo sát, có thể xây dựng
các mơ hình dự báo hiệu quả bằng cách xem xét các xu hướng trong quá khứ và xây dựng
các dự báo chính xác. IBM InfoSphere® Warehouse cung cấp thơng tin tìm nguồn cấp dữ
liệu, thơng tin xử lý trước, thông tin khai phá và thông tin phân tích trong một gói duy nhất,
để cho phép bạn lấy thông tin thẳng từ cơ sở dữ liệu nguồn đến đầu ra báo cáo cuối cùng.
Gần đây các tập hợp dữ liệu rất lớn và việc xử lý dữ liệu theo cụm và quy mơ lớn có thể cho
phép khai phá dữ liệu để sắp xếp và lập báo cáo về các nhóm và các mối tương quan của dữ
liệu phức tạp hơn. Bây giờ đã có sẵn rất nhiều cơng cụ và hệ thống hồn tồn mới, gồm các
hệ thống lưu trữ và xử lý dữ liệu kết hợp.
Bạn có thể khai phá dữ liệu với nhiều tập hợp dữ liệu khác nhau, gồm các cơ sở dữ liệu SQL
truyền thống, dữ liệu văn bản thô, các kho khóa/giá trị và các cơ sở dữ liệu tài liệu. Các cơ sở
dữ liệu có phân cụm, như Hadoop, Cassandra, CouchDB và Couchbase Server, lưu trữ và
cung cấp quyền truy cập vào dữ liệu theo cách không phù hợp với cấu trúc bảng truyền
thống.
25


×