Máy Enigma, được người Đức sử dụng trong Đại chiến thế giới II, thực hiện mã hóa được bao vệ các thông tin tính toán học nhạy cam.
**Mật mã học** là một lĩnh vực liên quan đến các kỹ thuật ngôn ngữ và toán học để đảm bảo an toàn thông tin, cụ thể là trong thông tin liên lạc. Trong lịch sử, mật mã học gắn liền với quá trình *mã hóa*; điều này có nghĩa là nó gắn với các cách thức để chuyển đổi thông tin từ dạng này sang dạng khác nhưng ở đây là từ dạng thông tin có thể nhận thức được thành dạng không nhận thức được, làm cho thông tin trở thành dạng không thể đọc được nếu như không có các kiến thức bí mật. Quá trình mã hóa được sử dụng chủ yếu để đảm bảo tính bí mật của các thông tin quan trọng, chẳng hạn trong công tác tình báo, quân sự hay ngoại giao cũng như các bí mật về kinh tế, thương mại. Trong những năm gần đây, lĩnh vực hoạt động của mật mã hóa đã được mở rộng: mật mã hóa hiện đại cung cấp cơ chế cho nhiều hoạt động hơn là chỉ duy nhất việc giữ bí mật và có một loạt các ứng dụng như: chứng thực khóa công khai, chữ ký số, bầu cử điện tử hay tiền điện tử. Ngoài ra, những người không có nhu cầu thiết yếu đặc biệt về tính bí mật cũng sử dụng các công nghệ mật mã hóa, thông thường được thiết kế và tạo lập sẵn trong các cơ sở hạ tầng của công nghệ tính toán và liên lạc viễn thông.

Mật mã học là một lĩnh vực liên ngành, được tạo ra từ một số lĩnh vực khác. Các dạng cổ nhất của mật mã hóa chủ yếu liên quan với các kiểu mẫu trong ngôn ngữ. Gần đây thì tầm quan trọng đã thay đổi và mật mã hóa sử dụng và gắn liền nhiều hơn với toán học, cụ thể là toán học rời rạc, bao gồm các vấn đề liên quan đến lý thuyết số, lý thuyết thông tin, độ phức tạp tính toán, thống kê và tổ hợp. Mật mã hóa cũng được coi là một nhánh của công nghệ, nhưng nó được coi là không bình thường vì nó liên quan đến các sự chống đối ngầm (xem công nghệ mật mã hóa và công nghệ an ninh). Mật mã hóa là công cụ được sử dụng trong an ninh máy tính và mạng.

Lĩnh vực có liên quan với nó là *steganography* — là lĩnh vực nghiên cứu về việc che giấu sự *tồn tại* của thông điệp mà không nhất thiết phải che giấu *nội dung* của thông điệp đó (ví dụ: ảnh điểm, hay mực không màu).

Thuật ngữ
---------

Việc nghiên cứu tìm các phương thức để phá vỡ việc sử dụng mật mã được gọi là *phân tích mật mã*, hay *phá mã*. Mật mã hóa và phân tích mật mã đôi khi được nhóm lại cùng nhau dưới tên gọi chung *mật mã học*, nó bao gồm toàn bộ các chủ đề liên quan đến mật mã. Trong thực tế, thuật ngữ *mật mã hóa* thông thường được sử dụng để nói đến ngành này một cách tổng thể.

Trong một số ngôn ngữ như tiếng Anh nó là *cryptography*, có nguồn gốc từ tiếng Hy Lạp *kryptós* tức là "ẩn", và *gráphein*, "viết ra"
Việc sử dụng từ 'cryptography' lần đầu tiên có lẽ diễn ra trong bài diễn thuyết của Sir Thomas Browne năm 1658 có tên gọi *The Garden of Cyrus*: *"the strange Cryptography of Gaffarel in his Starrie Booke of Heaven"*.

*Mật mã hóa* là quá trình chuyển đổi các thông tin thông thường (*văn bản thường* hay *văn bản rõ* hay *văn bản trơn*) thành dạng không đọc trực tiếp được, là *văn bản mã hóa*. *Giải mật mã* hay giải mã là quá trình ngược lại, phục hồi lại văn bản thường từ văn bản mã. *Mật mã* là thuật toán để mật mã hóa và giải mật mã. Hoạt động chính xác của mật mã thông thường được kiểm soát bởi các khóa — một đoạn thông tin bí mật nào đó cho phép tùy biến cách thức tạo ra văn bản mã. Hệ thống mã hóa bao gồm: mã hóa,mật hóa,văn bản hóa,.... Các *giao thức mật mã* chỉ rõ các chi tiết về việc mật mã (và các nền tảng mật mã hóa khác) được sử dụng như thế nào để thu được các nhiệm vụ cụ thể. Một bộ các giao thức, thuật toán, cách thức quản lý khóa và các hành động quy định trước bởi người sử dụng cùng phối hợp chặt chẽ tạo thành *hệ thống mật mã*.

Trong cách nói thông thường, "mã" bí mật thông thường được sử dụng đồng nghĩa với "mật mã". Trong mật mã học, thuật ngữ này có ý nghĩa kỹ thuật đặc biệt: Các mã là các phương pháp lịch sử tham gia vào việc thay thế các đơn vị văn bản lớn hơn, thông thường là các từ hay câu văn (ví dụ, "`qua tao`" thay thế cho "`tan cong luc rang dong`"). Ngược lại, mật mã hóa cổ điển thông thường thay thế hoặc sắp xếp lại các chữ cái riêng biệt (hoặc một nhóm nhỏ các chữ cái) — ví dụ, "`tan cong luc rang dong`" trở thành "`ubo dpoh mvd sboh epoh`" bằng cách thay thế.

Như vậy trong một hệ thống mật mã khái quát sẽ có các thành phần sau:

* **Văn bản trơn** (*plaintext*), tức là thông điệp nguyên gốc chưa được mã hóa.
* **Văn bản mã hóa** (*ciphertext*), tức là thông điệp đã được mã hóa.
* **Thuật toán mã hóa** (*enciphering algorithm*) là các giao thức hoặc hướng dẫn có tác dụng chuyển đổi văn bản trơn thành văn bản mã hóa. Đối với các hệ thống mật mã truyền thống, chỉ có người gửi thông điệp biết được thuật toán mã hóa, tuy nhiên đối với các hệ thống dùng mật mã hóa khóa công khai (*Public key code - PKC*), tất cả mọi người đều có thể biết thuật toán mã hóa mà không ảnh hưởng tiêu cực đến an ninh của hệ thống.
* **Khóa mã hóa** (*enciphering key*) là một hoặc nhiều đối tượng (thường là các con số hay là các hướng dẫn quan trọng nào đó) được dùng trong việc mã hóa văn bản trơn. Ngoại trừ trong hệ thống PKC, để đảm bảo bí mật an toàn thì khóa mã hóa thường chỉ được người gửi biết.
* **Thuật toán giải mã** (*deciphering algorithm*) là các giao thức hoặc hướng dẫn có tác dụng chuyển đổi văn bản mã hóa trở về văn bản trơn. Để đảm bảo bí mật, chỉ có người nhận thông điệp biết được thuật toán giải mã.
* **Khóa giải mã** (*deciphering key*) là một hoặc nhiều đối tượng (thường là các con số hay là các hướng dẫn quan trọng nào đó) được dùng trong việc giải mã văn bản bị mã hóa. Để đảm bảo bí mật, chỉ có người nhận thông điệp biết được khóa giải mã.-\_-"§
* **Sản phẩm mật mã** (*Cryptography Product*) bao gồm các hệ thống thiết bị, module, mạch tích hợp và các chương trình phần mềm mã hoá chuyên dụng có tích hợp các thuật toán mật mã, được thiết kế, chế tạo để bảo vệ thông tin giao dịch điện tử và lưu trữ dưới dạng số hoá, trong đó sử dụng "Thuật toán mã đối xứng" hoặc "Thuật toán mã không đối xứng".!

Thám mã
-------

Bài chi tiết: Thám mã
Mục tiêu của thám mã (phá mã) là tìm những điểm yếu hoặc không an toàn trong phương thức mật mã hóa. Thám mã có thể được thực hiện bởi những kẻ tấn công ác ý, nhằm làm hỏng hệ thống; hoặc bởi những người thiết kế ra hệ thống (hoặc những người khác) với ý định đánh giá độ an toàn của hệ thống.

Có rất nhiều loại hình tấn công thám mã, và chúng có thể được phân loại theo nhiều cách khác nhau. Một trong những đặc điểm 
liên quan là những người tấn công có thể biết và làm những gì để hiểu được thông tin bí mật. Ví dụ, những người thám mã chỉ truy cập được bản mã hay không? hay anh ta có biết hay đoán được một phần nào đó của bản rõ? hoặc thậm chí: Anh ta có chọn lựa các bản rõ ngẫu nhiên để mật mã hóa? Các kịch bản này tương ứng với tấn công bản mã, tấn công biết bản rõ và tấn công chọn lựa bản rõ.

Trong khi công việc thám mã thuần túy sử dụng các điểm yếu trong các thuật toán mật mã hóa, những cuộc tấn công khác lại dựa trên sự thi hành, được biết đến như là *các tấn công kênh bên*. Nếu người thám mã biết lượng thời gian mà thuật toán cần để mã hóa một lượng bản rõ nào đó, anh ta có thể sử dụng phương thức tấn công thời gian để phá mật mã. Người tấn công cũng có thể nghiên cứu các mẫu và độ dài của thông điệp để rút ra các thông tin hữu ích 
cho việc phá mã; điều này được biết đến như là thám mã lưu thông.

Nếu như hệ thống mật mã sử dụng khóa xuất phát từ mật khẩu, chúng có nguy cơ bị tấn công kiểu duyệt toàn bộ (*brute force*), vì kích thước không đủ lớn cũng như thiếu tính ngẫu nhiên của các mật khẩu. Đây là điểm yếu chung trong các hệ thống mật mã. Đối với các ứng dụng mạng, giao thức thỏa thuận khóa chứng thực mật khẩu có thể giảm đi một số các giới hạn của các mật khẩu. Đối với các ứng dụng độc lập, hoặc là các biện pháp an toàn để lưu trữ các dữ liệu chứa mật khẩu và/hoặc các cụm từ kiểm soát truy cập thông thường được gợi ý nên sử dụng.

Thám mã tuyến tính và Thám mã vi phân là các phương pháp chung cho mật mã hóa khóa đối xứng. Khi mật mã hóa dựa vào các vấn đề toán học như độ khó NP, giống như trong trường hợp của thuật toán khóa bất đối xứng, các thuật toán như phân tích ra thừa số nguyên tố trở thành công cụ tiềm năng cho thám mã.

Lịch sử
-------

Bài chi tiết: Lịch sử mật mã học
Gậy mật mã của người Hy Lạp là một trong những dụng cụ đầu tiên trong ngành mật mã hoá
Mật mã học có lịch sử lâu dài và đầy màu sắc. Nói chung, những dạng sớm nhất của cách viết bí mật (ngày nay gọi chung là *mật mã hóa cổ điển*) chỉ cần có bút và giấy. Hai phạm trù chính của mật mã cổ điển là mật mã hoán vị, trong đó người ta sắp xếp lại trật tự các chữ cái của thông điệp, và mật mã thay thế, trong đó người ta thay thế có hệ thống các chữ cái hay các nhóm chữ cái bằng các chữ cái hay các nhóm chữ cái khác. Văn bản được mật mã hóa bằng mật mã cổ điển có xu hướng lộ ra các thông tin thống kê nhất định về văn bản thường. Bằng cách sử dụng các thông tin này, mật mã cổ điển rất dễ bị dò ra (ví dụ bằng phân tích tần suất). Mật mã cổ điển vẫn còn được phổ biến tới ngày nay, chủ yếu thông qua việc giải các ô đố chữ (xem tài liệu viết bằng mật mã).

Các thiết bị và các kỹ thuật khác nhau đã được sử dụng để mật mã hóa. Một trong những thiết bị sớm nhất có lẽ là gậy mật mã (tiếng Hy Lạp: σκυτάλη). Trong nửa đầu thế kỷ XX, một số thiết bị cơ khí đã được phát minh để thực hiện mật mã hóa, bao gồm rotor machines — nổi tiếng nhất là máy Enigma được người Đức sử dụng trong Đại chiến thế giới 2. Mật mã thực hiện bằng các máy móc này đã tăng độ phức tạp lên đáng kể đối với công việc phân tích mã.

Với sự ra đời của máy tính kỹ thuật số và điện tử học thì các mật mã cực kỳ phức tạp đã có thể được thực hiện. Đặc trưng của mật mã máy tính là chúng thực hiện trên các chuỗi nhị phân, không giống như trong các mô hình mật mã hóa cổ điển và cơ học (chỉ sử dụng bảng chữ cái với khoảng 26 ký tự-phụ thuộc vào từng ngôn ngữ). Mật mã máy tính cũng có khả năng chịu đựng việc phân tích mật mã tốt hơn; rất ít các mật mã như thế dễ bị tổn thương chỉ bởi kiểu tấn công biết bản mã.

Các nghiên cứu rộng rãi có tính học thuật về mật mã hóa hiện đại là tương đối gần đây — nó chỉ được bắt đầu trong cộng đồng mở kể từ những năm thập niên 1970 với các chi tiết kỹ thuật của DES (viết tắt trong tiếng Anh của *Data Encryption Standard* tức *Tiêu chuẩn Mật mã hóa Dữ liệu*) và sự phát minh ra RSA. Kể từ đó, mật mã hóa đã trở thành công cụ được sử dụng rộng rãi trong liên lạc và bảo mật máy tính.

Cũng giống như các bài học thu được từ trong lịch sử của nó, các nhà mật mã hóa cũng rất thận trọng khi nhắc đến tương lai. Định luật Moore thông thường được nhắc đến khi nói về độ lớn khóa, và các hiệu ứng tiềm năng của máy tính lượng tử cũng đã được nói

An ninh thông tin
-----------------

Bài chi tiết: An ninh thông tin
Mật mã hóa được sử dụng phổ biến để đảm bảo an toàn cho thông tin liên lạc. Các thuộc tính được yêu cầu là:

1. Bí mật: Chỉ có người nhận đã xác thực có thể lấy ra được nội dung của thông tin chứa đựng trong dạng đã mật mã hóa của nó. Nói khác đi, nó không thể cho phép thu lượm được bất kỳ thông tin đáng kể nào về nội dung của thông điệp.
2. Nguyên vẹn: Người nhận cần có khả năng xác định được thông tin có bị thay đổi trong quá trình truyền thông hay không.
3. Xác thực: Người nhận cần có khả năng xác định người gửi và kiểm tra xem người gửi đó có thực sự gửi thông tin đi hay không.
4. Không từ chối: Người gửi không thể từ chối việc mình đã gửi thông tin đi.
5. Chống lặp lại: Không cho phép bên thứ ba copy lại văn bản và gửi nhiều lần đến người nhận mà người gửi không hề hay biết.

Mật mã học có thể cung cấp cơ chế để giúp đỡ thực hiện điều này. Tuy nhiên, một số mục tiêu không phải bao giờ cũng là cần thiết, trong nghĩa cảnh của thực tế hay mong muốn của người sử dụng. Ví dụ, người gửi thông tin có thể mong muốn giữ mình là nặc danh; trong trường hợp này tính không từ chối rõ ràng là không thích hợp.

Khóa đối xứng
-------------

Bài chi tiết: Thuật toán khóa đối xứng
Thuật toán khóa đối xứng là những thuật toán hoặc là sử dụng cùng một khóa cho việc mật mã hóa và giải mật mã hoặc là khóa (thứ hai) sử dụng để giải mật mã có thể dễ dàng tính được từ khóa (thứ nhất) đã dùng để mật mã hóa. Các thuật ngữ khác bao gồm mật mã hóa *khóa cá nhân*, mật mã hóa *một khóa* và mật mã hóa *khóa đơn*.

Một sự lặp lại (trên 6–10) của mật mã hóa khối SAFER-K. Các mật mã hiện đại thực hiện bởi máy tính có thể phức tạp hơn nhiều so với việc thực hiện bằng tay hay các máy cơ điện khác.
Khóa đối xứng có thể nhóm thành mật mã khối và mật mã luồng. Mật mã luồng mật mã hóa 1 bit tại một thời điểm, ngược lại với mật mã khối là phương thức cho phép thực hiện trên một nhóm các bit ("khối") với độ dài nào đó trong một lần. Phụ thuộc vào phương thức thực hiện, mật mã khối có thể được thực hiện như là mật mã luồng tự đồng bộ (chế độ CFB). Tương tự, mật mã luồng có thể làm để nó hoạt động trên các khối riêng rẽ của văn bản thường tại một thời điểm. Vì thế, ở đây tồn tại sự đối ngẫu giữa hai cách thức này. Các mật mã khối như DES, IDEA và AES, và mật mã luồng như RC4, là những loại mật mã khóa đối xứng nổi tiếng nhất.

Các nền tảng mật mã học khác đôi khi cũng được phân loại như là mật mã học khóa đối xứng:

* Các hàm băm mật mã sản sinh ra sự băm thông điệp. Trong khi nó có thể rất dễ tính toán nhưng nó lại rất khó để đảo ngược (hàm một chiều), cho dù các thuộc tính khác thông thường cũng là cần thiết. MD5 và SHA-1 là các hàm băm nổi tiếng nhất.
* Các MAC (mã xác thực thông điệp), cũng được biết đến như là *hàm băm có khóa*, là tương tự như các hàm băm, ngoại trừ việc cần có khóa để tính toán việc băm. Như tên gọi của nó, chúng được sử dụng rộng rãi để xác thực thông điệp. Chúng thông thường được xây dựng từ các nền tảng khác, chẳng hạn từ mật mã khối, hàm băm không khóa hay mật mã luồng.

Khóa công khai
--------------

*Xem chi tiết*: Mật mã hóa khóa công khai

Các thuật toán Mã hóa khóa đối xứng có một số trở ngại không thuận tiện — hai người muốn trao đổi các thông tin bí mật cần phải chia sẻ khóa bí mật. Khóa cần phải được trao đổi theo một cách thức an toàn, mà không phải bằng các phương thức thông thường vẫn dùng để liên lạc. Điều này thông thường là bất tiện, và mật mã hóa khóa công khai (hay khóa bất đối xứng) được đưa ra như là một giải pháp thay thế. Trong mật mã hóa khóa công khai có hai khóa được sử dụng, là *khóa công khai* (hay *khóa công cộng*) và *khóa bí mật* (hay *khóa cá nhân*), trong đó khóa công khai dùng để mật mã hóa còn khóa bí mật dùng để giải mật mã (cũng có thể thực hiện ngược lại). Rất khó để có thể thu được khóa bí mật từ khóa công khai. Điều này có nghĩa là một người nào đó có thể tự do gửi khóa công khai của họ ra bên ngoài theo các kênh không an toàn mà vẫn chắc chắn rằng chỉ có họ có thể giải mật mã các thông điệp được mật mã hóa bằng khóa đó.

Các thuật toán khóa công khai thông thường dựa trên các vấn đề toán học với độ khó NP. Ví dụ RSA, dựa trên độ khó (ước đoán) của bài toán phân tích ra thừa số nguyên tố. Vì lý do thuận tiện, các hệ thống mật mã hóa *lai ghép* được sử dụng trong thực tế; khóa được trao đổi thông qua mật mã khóa công khai, và phần còn lại của thông tin được mật mã hóa bằng cách sử dụng thuật toán khóa đối xứng (điều này về cơ bản là nhanh hơn). Mật mã hóa đường cong elip là một dạng thuật toán khóa công khai có thể có một số ưu điểm so các hệ thống khác.

Mật mã hóa bất đối xứng cũng cung cấp cơ chế cho chữ ký số, là cách thức để xác minh với độ bảo mật cao (giả thiết cho rằng khóa cá nhân liên quan được đảm bảo giữ an toàn) rằng thông điệp mà người nhận đã nhận được là chính xác được gửi đi từ phía người gửi mà họ yêu cầu. Các chữ ký như vậy thông thường (theo luật định hay được suy diễn mặc định) được coi là chữ ký số tương đương với chữ ký thật trên các tài liệu được in ra giấy. Xét về phương diện kỹ thuật, chúng lại không phải vậy do không có sự tiếp xúc thực tế mà cũng không có liên hệ giữa "người ký" và "chữ ký". Sử dụng hợp thức các thiết kế có chất lượng cao và các bổ sung khác tạo ra khả năng có được độ an toàn cao, làm cho chữ ký điện tử vượt qua phần lớn các chữ ký thật cẩn thận nhất về mức độ thực của nó (khó bị giả mạo hơn). Các ví dụ về các giao thức chữ ký số hóa bao gồm DSA và chữ ký ElGamal. Các chữ ký số hóa là trung tâm trong các hoạt động của hạ tầng khóa công cộng (PKI) và rất nhiều hệ thống an ninh mạng (ví dụ Kerberos, phần lớn các mạng riêng ảo (VPN) v.v). Giống như mật mã hóa, các thuật toán *lai ghép* thông thường được sử dụng trong thực tế, thay vì ký trên toàn bộ chứng từ thì hàm băm mật mã hóa của chứng từ được ký.

Mật mã khóa bất đối xứng cũng cung cấp nền tảng cho các kỹ thuật khóa thỏa thuận xác thực mật khẩu (PAKA) và không kỹ năng kiểm chứng mật khẩu (ZKPP). Điều này là quan trọng khi xét theo phương diện của các chứng minh lý thuyết và kinh nghiệm rằng việc xác thực chỉ bằng mật khẩu sẽ không đảm bảo an toàn trên mạng chỉ với khóa mật mã đối xứng và các hàm băm.

Các chủ đề khác
---------------

Bài chi tiết: Các chủ đề trong mật mã học
Độ an toàn của các hệ thống mật mã hóa thực tế vẫn chưa được chứng minh, đối với cả các hệ thống khóa đối xứng và bất đối xứng. Đối với mật mã khóa đối xứng, độ bảo mật thu được trong thuật toán thông thường là giai thoại — chẳng hạn vẫn chưa có tấn công nào trên các thuật toán được thông báo là thành công trong nhiều năm gần đây mặc dù có các phân tích rất tích cực. Vì thế mật mã loại này có thể có độ an toàn chứng minh được khi chống lại một tập hợp hữu hạn các cách thức tấn công. Đối với các hệ thống bất đối xứng, nói chung dựa trên độ khó của các vấn đề toán học có liên quan, nhưng chúng cũng không phải là độ an toàn có thể chứng minh.

Mật mã học có mật mã với kiểm chứng mạnh của độ an toàn là mật mã Vernam. Tuy nhiên, nó yêu cầu các khóa (ít nhất) là có độ dài bằng độ dài văn bản thường, vì thế nói chung người ta cho rằng chúng là quá cồng kềnh để có thể áp dụng trong thực tế.

Khi độ an toàn của hệ thống bị mất, rất hiếm khi là do các điểm yếu trong các thuật toán mật mã hóa bị khai thác. Thông thường đó là do lỗi trong việc thực thi, trong giao thức được sử dụng hoặc do lỗi của con người. Việc nghiên cứu làm thế nào tốt nhất để thi hành và kết hợp mật mã hóa là lĩnh vực của chính nó, xem thêm: công nghệ mật mã hóa, công nghệ an ninh và hệ thống mật mã.

Mật mã học có thể sử dụng để thi hành các giao thức khác nhau: không kỹ năng kiểm chứng, an toàn tính toán nhiều bên và chia sẻ bí mật.

Mật mã học có thể sử dụng để thi hành việc quản lý bản quyền số hóa.

Chú thích
---------

1. ↑  Leong, tr. 126

Tham chiếu
----------

* David Kahn, The Codebreakers, 1967, ISBN 0-684-83130-9.
* A. J. Menezes, P. C. van Oorschot, and S. A. Vanstone, Handbook of Applied Cryptography ISBN 0-8493-8523-7  Lưu trữ 2006-05-22 tại Wayback Machine.
* Bruce Schneier, Applied Cryptography, 2nd edition, Wiley, 1996, ISBN 0-471-11709-9.
* Leong Yu Kiang. *Living with Mathematics*. 3rd Edition. 2011. McGraw-Hill Education (Asia), Singapore. ISBN 978-007-132677-3

Xem thêm
--------

* Các chủ đề trong mật mã học — an analytical list of articles and terms.
* Sách về mật mã học — an annotated list of suggested readings.
* Danh sách các nhà mật mã học — an annotated list of cryptographers.
* Các ấn bản quan trọng trong mật mã học — một số tư liệu về mật mã học trong khoa học máy tính.
* Các vấn đề bỏ ngỏ trong mật mã học
* Danh sách các chủ đề mật mã học — Danh sách theo trật tự ABC các bài về mật mã học.
* Mỡ rắn

Liên kết ngoài
--------------

* International Association for Cryptologic Research
* Helger Lipmaa's cryptography pointers Lưu trữ 2008-12-21 tại Wayback Machine
* RSA Laboratories' FAQ About today's cryptography  Lưu trữ 2004-04-01 tại Wayback Machine essentially elementary coverage
* sci.crypt mini-FAQ (more recent) Lưu trữ 2004-04-23 tại Wayback Machine
* Savard's glossary Lưu trữ 2004-04-02 tại Wayback Machine an extensive and detailed view of cryptographic history with emphasis on crypto devices
* Open source project CrypTool - Exhaustive educational tool about cryptography and cryptanalysis, freeware.
* Cryptography World - A very basic guide to cryptography and key management.
* Handbook of Applied Cryptography (Free to download as.pdf)
* Techworld Elementary Primer: What is Encryption?
* Links for password-based cryptography
* Code Cracker Lưu trữ 2005-09-24 tại Wayback Machine Online tool to Crack many classic encryption codes (up to the XIX century)
* Crypto Law Survey Lưu trữ 2010-01-06 tại Wayback Machine Extensive survey of existing and proposed laws and regulations on cryptography by legal expert dr. Bert-Jaap Koops (Tilburg University)
* MaHoa.VN Lưu trữ 2018-09-03 tại Wayback Machine Công cụ mã hóa trực tuyến sử dụng công nghệ GUMX, mạnh mẽ, dễ sử dụng, và hoàn toàn miễn phí.

| * x
* t
* s
Những lĩnh vực chính của khoa học máy tính |
| --- |
| Các nền tảng toán học | Logic toán học **·**  Lý thuyết tập hợp **·**  Lý thuyết số **·**  Lý thuyết đồ thị **·**  Lý thuyết kiểu **·**  Lý thuyết thể loại **·**  Giải tích số **·**  Lý thuyết thông tin **·**  Đại số **·**  Nhận dạng mẫu **·**  Nhận dạng tiếng nói **·**  Toán học tổ hợp **·**  Đại số Boole **·**  Toán rời rạc |
| Lý thuyết phép tính | Độ phức tạp Kolmogorov **·**  Lý thuyết Automat **·**  Lý thuyết tính được **·**  Lý thuyết độ phức tạp tính toán **·**  Lý thuyết điện toán lượng tử |
| Các cấu trúc dữ liệu và các giải thuật | Phân tích giải thuật **·**  Thiết kế giải thuật **·**  Hình học tính toán **·**  Tối ưu hóa tổ hợp |
| Các ngôn ngữ lập trình và Các trình biên dịch | Các bộ phân tích cú pháp **·**  Các trình thông dịch **·**  Lập trình cấu trúc **·**  Lập trình thủ tục **·**  Lập trình hướng đối tượng **·**  Lập trình hướng khía cạnh **·**  Lập trình hàm **·**  Lập trình logic **·**  Lập trình máy tính **·**  Lập trình mệnh lệnh **·**  Lập trình song song **·**  Lập trình tương tranh **·**  Các mô hình lập trình **·**  Prolog **·**  Tối ưu hóa trình biên dịch |
| Tính song hành, Song song, và các hệ thống phân tán | Đa xử lý **·**  Điện toán lưới **·**  Kiểm soát song hành **·**  Hiệu năng hệ thống **·**  Tính toán phân tán |
| Công nghệ phần mềm | Phân tích yêu cầu **·**  Thiết kế phần mềm **·**  Các phương pháp hình thức **·**  Kiểm thử phần mềm **·**  Quy trình phát triển phần mềm **·**  Các phép đo phần mềm **·**  Đặc tả chương trình **·**  LISP **·**  Mẫu thiết kế **·**  Tối ưu hóa phần mềm |
| Kiến trúc hệ thống | Kiến trúc máy tính **·**  Tổ chức máy tính **·**  Các hệ điều hành **·**  Các cấu trúc điều khiển **·**  Cấu trúc bộ nhớ lưu trữ **·**  Vi mạch **·**  Thiết kế ASIC **·**  Vi lập trình **·**  Vào/ra dữ liệu **·**  VLSI design **·**  Xử lý tín hiệu số |
| Viễn thông và Mạng máy tính | Audio máy tính **·**  Chọn tuyến **·**  Cấu trúc liên kết mạng **·**  Mật mã học |
| Các cơ sở dữ liệu và Các hệ thống thông tin | Hệ quản trị cơ sở dữ liệu **·**  Cơ sở dữ liệu quan hệ **·**  SQL **·**  Các giao dịch **·**  Các chỉ số cơ sở dữ liệu **·**  Khai phá dữ liệu **·**  Biểu diễn và giao diện thông tin **·**  Các hệ thống thông tin **·**  Khôi phục dữ liệu **·**  Lưu trữ thông tin **·**  Lý thuyết thông tin **·**  Mã hóa dữ liệu **·**  Nén dữ liệu **·**  Thu thập thông tin |
| Trí tuệ nhân tạo | Lập luận tự động **·**  Ngôn ngữ học tính toán **·**  Thị giác máy tính **·**  Tính toán tiến hóa **·**  Các hệ chuyên gia  **·**  Học máy **·**  Xử lý ngôn ngữ tự nhiên **·**  Robot học |
| Đồ họa máy tính | Trực quan hóa **·**  Hoạt họa máy tính **·**  Xử lý ảnh |
| Giao diện người-máy tính | Khả năng truy cập máy tính **·**  Giao diện người dùng **·**  Điện toán mang được **·**  Điện toán khắp mọi nơi **·**  Thực tế ảo |
| Khoa học tính toán | Cuộc sống nhân tạo **·**  Tin sinh học **·**  Khoa học nhận thức **·**  Hóa học tính toán **·**  Khoa học thần kinh tính toán **·**  Vật Lý học tính toán **·**  Các giải thuật số **·**  Toán học kí hiệu |
| Chú ý: khoa học máy tính còn có thể được chia thành nhiều chủ đề hay nhiều lĩnh vực khác dựa theo Hệ thống xếp loại điện toán ACM. |

| * x
* t
* s
Chuyên ngành chính của Tin học |
| --- |
| Phần cứng •  Phần mềm |
| Công nghệ thông tin | 
* Cuộc sống nhân tạo
* Đa xử lý
* Điện toán lưới
* Đồ họa máy tính
* Hệ chuyên gia
* Hệ thống thông tin quản lý
* Hoạt họa máy tính
* Khoa học nhận thức
* Khoa học tính toán
* Khoa học thần kinh tính toán
* Khoa học thông tin
* Kiểm soát song hành
* Kiến trúc hệ thống
* Lập luận tự động
* Ngôn ngữ hình thức
* Ngôn ngữ học tính toán
* Người máy
* Robot học
* Thực tế ảo
* Tính toán song song
* Tối ưu hóa trình biên dịch
* Tổ chức máy tính
* Trí tuệ nhân tạo
* Từ điển học
* Tương tranh
* Vật lý học tính toán

 |
| Hệ thống thông tin | 
* An toàn thông tin
* Cơ sở dữ liệu đa phương tiện
* Cơ sở dữ liệu thông minh
* Dữ liệu lớn
* Hệ cơ sở tri thức
* Hệ dựa trên logic
* Hệ gợi ý
* Hệ thích nghi dựa trên ngữ cảnh
* Hệ thống hướng tác tử
* Hệ thống thông minh
* Hệ thống thông tin địa lý
* Hệ trợ giúp quyết định
* Kỹ nghệ dữ liệu
* Kỹ nghệ tri thức
* Logic mờ
* Phân tích dữ liệu
* Phân tích và thiết kế hệ thống
* Quản trị dự án
* Quản trị tri thức
* Thiết kế và quản trị dữ liệu
* Tích hợp dữ liệu
* Tính toán hiệu năng cao
* Web ngữ nghĩa
* Xử lý thông tin mờ

 |
| Khoa học máy tính | 
* Cơ sở dữ liệu phân tán
* Hệ quản trị cơ sở dữ liệu
* Hệ thống đa lõi
* Hệ thống truyền thông
* Hình học tính toán
* Hóa học tính toán
* Học máy
* Khai phá dữ liệu
* Lập trình song song
* Lý thuyết mã hóa
* Lý thuyết tính toán
* Ngôn ngữ và phương pháp dịch
* Nguyên lý ngôn ngữ lập trình
* Quy hoạch ràng buộc
* Sinh học tính toán (Tin sinh học)
* Thiết kế và phân tích thuật toán
* Tìm kiếm thông tin
* Tính toán khoa học
* Tính toán kí hiệu
* Tính toán phân tán
* Tính toán tiến hóa
* Tính toán tự nhiên
* Tối ưu hoá tổ hợp
* Xử lý song song

 |
| Kỹ thuật máy tính | 
* Đa phương tiện
* Định vị vệ tinh (GNSS)
* Giao diện người dùng
* Ghép nối máy tính
* Hệ nhúng
* Hệ thống thời gian thực
* Hiệu năng hệ thống
* Kiến trúc máy tính
* Lập trình đôi
* Lập trình đồ họa
* Lập trình hệ thống
* Lý thuyết nhận dạng
* Mạng nơ-ron
* Nhận dạng tiếng nói
* Phân tích tín hiệu
* Thị giác máy tính
* Thiết kế IC
* Thoại IP
* Tổng hợp giọng nói
* Tương tác người–máy tính
* Vi xử lý
* Xử lý ảnh
* Xử lý dữ liệu đa phương tiện
* Xử lý ngôn ngữ tự nhiên
* Xử lý tiếng nói
* Xử lý tín hiệu số

 |
| Kỹ nghệ phần mềm | 
* Bảo trì phần mềm
* Các phương pháp hình thức
* Chất lượng phần mềm
* Đảm bảo chất lượng phần mềm
* Đánh giá phần mềm
* Đo lường và quản trị phần mềm
* Độ tin cậy và chịu lỗi phần mềm
* Kiểm thử phần mềm
* Kiến trúc doanh nghiệp
* Kiến trúc phần mềm
* Kinh tế công nghệ phần mềm
* Kỹ nghệ hướng dịch vụ
* Lập trình linh hoạt
* Mẫu thiết kế
* Mô hình hóa phần mềm
* Phân tích hệ thống
* Phân tích thiết kế hướng đối tượng (UML)
* Phân tích yêu cầu phần mềm
* Phát triển phần mềm
* Quản lý cấu hình phần mềm
* Quản lý dự án phần mềm
* Quản lý kỹ thuật phần mềm
* Quy trình phát triển phần mềm (Vòng đời phát hành phần mềm)
* Thiết kế phần mềm
* Triển khai phần mềm
* Tối ưu hóa phần mềm

 |
| Mạng máy tính | 
* An ninh mạng
* An ninh trong giao dịch điện tử
* Đánh giá hiệu năng mạng (QoS)
* Điện toán đám mây
* Định tuyến
* Hệ phân tán
* Kỹ thuật truyền thông
* Lý thuyết thông tin
* Mạng không dây
* Mạng thế hệ mới
* Mạng thiết bị di động
* Mạng thông tin quang
* Mật mã học
* Mô phỏng mạng
* Nhận dạng
* Quản trị mạng
* Thiết bị truyền thông và mạng
* Thiết kế mạng
* Tính toán khắp nơi và di động
* Trung tâm dữ liệu
* Truyền thông di động
* Truyền thông đa phương tiện
* Truyền thông số
* Vệ tinh thông tin
* Viễn thông (Mạng viễn thông)
* Ước lượng tín hiệu và hệ thống
* Web thế hệ mới

 |
| Tin học kinh tế | 

| * x
* t
* s
Giám đốc công nghệ thông tin · Tin học kinh tế · Quản lý công nghệ thông tin |
| --- |
| Quản lý | 
* ITIL & ITSM
* Định hướng phát triển
* Phát triển nhân lực
* Quản lý bảo mật
* Quản lý chất lượng
* Quản lý công nghệ
* Quản lý dự án
* Quản lý mua sắm
* Quản lý ngân sách
* Quản lý nguồn lực
* Quản lý phát hành
* Quản lý rủi ro
* Quản lý tài sản
* Quản lý thay đổi
* Quản lý tích hợp
* Quản lý tổ chức
* Quản lý truyền thông
* Quản lý tuân thủ
* Quản lý vấn đề
* Thiết kế giải pháp
* Xây dựng chiến lược
* Xây dựng chính sách

 |
| Quản lý mạng | 
* Ảo hóa
* Mạng campus
* Mạng diện rộng
* Mạng nội bộ
* Mạng riêng ảo
* STP
* VLAN
* IVR
* VTP

 |
| Quản trị hệ thống | 

|  |  |
| --- | --- |
| Hoạt động vận hành | 
* Bảo trì thiết bị
* Bảo vệ hệ thống
* Đối phó sự cố
* Kế hoạch dự phòng

 |
| Hoạt động kỹ thuật | 
* Hỗ trợ kỹ thuật
* Kiểm soát truy cập
* Kiểm tra hệ thống
* Xác thực người dùng

 |
| Hoạt động an toàn | 
* An ninh nhân sự
* An ninh hệ thống
* Nhận thức an toàn
* Rủi ro hệ thống

 |

 |
| Quản lý hệ thống | 
* Bàn dịch vụ
* Quản lý cấu hình
* Quản lý công suất
* Quản lý dịch vụ
* Quản lý hạ tầng
* Quản lý khôi phục
* Quản lý người dùng
* Quản lý sự cố
* Quản lý tính liên tục
* Quản lý tính sẵn sàng
* Tổ chức công việc
* Tổ chức hỗ trợ

 |
| Kỹ năng lãnh đạo | 
* Kỹ năng cộng tác nhóm
* Kỹ năng đàm phán
* Kỹ năng giải quyết vấn đề
* Kỹ năng giao tiếp
* Kỹ năng gọi thoại
* Kỹ năng huấn luyện
* Kỹ năng lắng nghe
* Kỹ năng phân công ủy thác
* Kỹ năng phỏng vấn tuyển dụng
* Kỹ năng quản lý thời gian
* Kỹ năng tạo động lực
* Kỹ năng tư duy
* Kỹ năng thiết kế quy trình
* Kỹ năng thuyết trình
* Kỹ năng viết tài liệu kỹ thuật

 |
| Ứng dụng | 
* Chính phủ điện tử
* Giáo dục trực tuyến
* Hoạch định tài nguyên doanh nghiệp
* Kinh doanh điện tử (Mua sắm trực tuyến  **·**  Thương mại điện tử  **·**  Tiếp thị trực tuyến)
* Kinh doanh thông minh
* Quản lý quan hệ khách hàng
* Quản lý tri thức

 |
| Các lĩnh vực liên quan | 
* Kinh tế
* Luật pháp
* Tài chính
* Kế toán
* Kinh doanh
* Tổ chức
* Xã hội
* Quản lý

 |
| Quản trị kinh doanh |

 |

|  |  |
| --- | --- |
|  | Wikimedia Commons có thêm hình ảnh và phương tiện truyền tải về ***Mật mã học***. |