Chrome Developer Tools

Nguồn: https://developers.google.com/chrome-developer-tools/docs/overview

Developer Tools, được tích hợp và có sẵn ở Chrome, cho phép các nhà phát triển và lập trình viên web có thể truy cập sâu vào các thành phần bên trong của trình duyệt và ứng dụng web của họ. Developer Tools dựa vào WebKit Web Inspector, là một phần của dự án mở nguồn mở WebKit.

Làm sao để mở Developer Tools?

  • Ấn chuột phải trên bất kì thành phần nào của trang web và chọn Inspect element.
  • Trong Windows and Linux, press
    • Control – Shift – I để mở Developer Tools
    • Control – Shift – J để mở Developer Tools và ở mục Console.
    • Control – Shift – C để chọn chế độ Inspect Element.
  • On Mac, press
    • Command – Option – I để mở Developer Tools
    • Command – Option – J để mở Developer Tools và ở mục Console.
    • Control – Option – C để chọn chế độ Inspect Element.

Mật mã học 101 – Mã hóa công khai

Nguồn:

  • Chapter 1, Applied Cryptography: Protocols, Algorithms, and Source Code in C, Second Edition, Bruce Schneier, 1996

Keyword

  • Public-Key Algorithm, Asymmetric Algorithm, Mã hóa khóa công khai, Mã hóa bất đối xứng

Mã hóa công khai

Mã hóa khóa công khai (hay còn gọi là mã hóa bất đối xứng) được thiết kế sao cho khóa để mã hóa khác khóa để giải mã. Hơn nữa, khóa để giải mã không thể (ít nhất là trong thời gian cho phép) có thể tính toán được từ khóa để mã hóa. Các thuật toán như vậy được gọi là các thuật toán công khai vì khóa để mã hóa có thể công bố rộng rãi: Một người hoàn toàn lạ có thể sử dụng khóa để mã hóa để mã hóa thông điệp, nhưng chỉ  có những người đặc biệt biết được khóa để giải mã mới có thể giải mã. Trong các hệ thống này, khóa để mã hóa thường được gọi là khóa công khai (public key), và khóa để giải mã được gọi là khóa riêng tư (private key). Khóa riêng tư cũng được gọi là khóa bí mật (secret key).

ĐỘNG NÃO CHÚT NÀO?

C1. Lợi ích của hệ mã hóa công khai?

C2. RSA là một hệ mã công khai điển hình.

a) Hãy tạo ra bộ khóa cho riêng mình

b) Hãy mã hóa và giải mã thông điệp “I LIKE PUBLIC-KEY ALGORITHM” với bộ khóa đó.

(Trả lời bằng cách comment dưới bài viết này)

(Xem loạt bài về Mật mã học tại đây)

Mật mã học 100 – Mã hóa đối xứng

Nguồn:

  • Chapter 1, Applied Cryptography: Protocols, Algorithms, and Source Code in C, Second Edition, Bruce Schneier, 1996

Keyword

  • Symmetric Algorithms, Conventional Algorithm, Secret-Key Algorithm, Single-Key Algorithm, One-Key Algorithm, Mã hóa đối xứng

Mã hóa đối xứng

Có 2 loại mật mã sử dụng khóa: mật mã đối xứngmật mã khóa công khai. Trong mật mã đối xứng (symmetric algorithm), khóa sử dụng để mã hóa có thể được tính ra từ khóa để giải mã và ngược lại. Trong hầu hết các mã đối xứng,  khóa để mã hóa giống khóa để giải mã. Các thuật toán này cũng gọi là mã hóa khóa bí mật (secret-key algorithm), mã hóa khóa đơn (single-key algorithm hay one-key algorithm), yêu cầu người gửi và ngưởi nhận phải thống nhất một khóa trước khi liên lạc bí mật. Độ an toàn của thuật toán đối xứng phụ thuộc vào độ an toàn của khóa, nếu khóa bị tiết lộ thì ai cũng có thể mã hóa và giải mã các thông điệp.

Quá trình mã hóa và giải mã trong mã hóa đối xứng có thể được biểu diễn bởi:

E_{K}(M)=C \\ D_{K}(C)=M

Mật mã đối xứng có thể chia thành 2 dạng. Một dạng làm việc với từng bit (hoặc byte) trong một lúc; được gọi là mã hóa dòng (stream algorithm hoặc stream cipher). Một dạng làm việc với một nhóm các bit. Nhóm các bit đó được gọi là các khối (block). Dạng mã hóa này được gọi là mã hóa khối (block algorithm hoặc block cipher). Trong các thuật toán cho máy tính hiện đại, một khối thường có độ dài 64 bit –  vừa đủ lớn để có thể ngăn chặn phá mã, vừa đủ nhỏ để có thể làm việc. (trước thời đại của máy tính, các thuật toán thường làm việc với từng kí tự một. Bạn có thể nghĩ đó là các mật mã dòng)

ĐỘNG NÃO CHÚT NÀO?

C1. Bạn biết những thuật toán mã hóa đối xứng nào? (liệt kê càng nhiều càng tốt)

C2. DES là một loại mật mã đối xứng phổ biến, được chính phủ Mỹ chọn làm chuẩn vào năm 1976

a) Hãy mã hóa đoạn văn bản sau “I Love DES” với khóa là Byte[] = 1122334455667788

b) Giải mã đoạn mã sau “4D BD 54 F2 A3 27 06 AA 80 69 88 3A 1D CB 79 4B” với khóa là Byte[] = 1122334455667788

(Trả lời bằng cách comment dưới bài viết này)

(Xem loạt bài về Mật mã học tại đây)

Mật mã học 011 – Công cụ: Các thuật toán và Khóa

Nguồn:

  • Chapter 1, Applied Cryptography: Protocols, Algorithms, and Source Code in C, Second Edition, Bruce Schneier, 1996

Keyword

  • Cryptography Algorithms, Keys, Symmetric Algorithm, Public-Key Algorithm, Các thuật toán mã hóa, Thuật toán, Thuật toán đối xứng, Thuật toán công khai

Mở đầu

Một thuật toán mã hóa (cryptographic algorithm), hay gọi là một mật mã (cipher), là các hàm toán học sử dụng trong quá trình mã hóa và giải mã (thông thường, có hai hàm: một hàm để mã hóa và một hàm để giải mã)

Các thuật toán hạn chế (restricted algorithm)

Nếu độ an toàn của một hệ mật mã phụ thuộc vào việc giữ bí mật về thuật toán, thì đó là thuật toán hạn chế (restricted algorithm). Các thuật toán hạn chế có lịch sử rất thú vị, nhưng lại không phù hợp với các tiêu chuẩn của ngày nay. Các tổ chức lớn hoặc các tổ chức hay có sự thay đổi không thể sử dụng chúng, vì mỗi khi một thành viên trong tổ chức rời khỏi, mọi thành viên còn lại phải thay đổi thuật toán. Nếu một thành viên trong nhóm làm lộ thuật toán ra bên ngoài, thuật toán cũng phải thay đổi.

Một tác hại nữa, là các thuật toán hạn chế không yêu cầu bất kì sự kiểm soát hoặc tiêu chuẩn nào. Một nhóm bất kì có thể nghĩ ra một thuật toán của riêng họ. Do đó, các nhóm không thể dùng chung một phần mềm hay phần cứng nào (vì mỗi phần mềm và phần cứng đó lại dùng thuật toán riêng biệt). Với các thuật toán cài đặt trên phần mềm và phần cứng, kẻ xấu có thể mua sản phẩm đó và tìm ra được thuật toán. Nếu không có ai trong nhóm là một nhà mật mã giỏi, họ không thể biết được thuật toán họ sử dụng có an toàn hay không.

Do những nhược điểm đó, những thuật toán hạn chế thường được sử dụng cho các ứng dụng nhỏ.  Người dùng thường không nhận ra hoặc không quan tâm các vấn đề về an toàn trong hệ thống của họ.

Khóa

Mật mã hiện đại giải quyết vấn đề đó bằng khóa (key), ký hiệu là K. Khóa này là một số bất kỳ trong một tập hợp số rất lớn. Tập hợp số rất lớn đó được gọi là không gian khóa (keyspace).  Cả hàm giải mã lẫn hàm mã hóa điều sử dụng khóa, ta biểu diễn như sau

E_{k}(M) = C \\ D_{k}(C)= M

Dễ thấy, các hàm này có tính chất

D_{k}(E_{k}(M))=M

Một số thuật toán dùng khóa để mã hóa (encryption key) khác với khóa để giải mã (decryption key). Ký hiệu khóa để mã hóa là K_1, khóa để giải mã là K_2, ta có các phương trình:

E_{K_1}(M)=C \\D_{K_2}(C)=M\\D_{K2}(E_{K_1}(M))=M

Độ an toàn của các thuật toán này phụ thuộc vào khóa; không phụ thuộc vào chi tiết các thuật toán. Điều này khiến các thuật toán có thể được công bố và phân tích rộng rãi. Do đó, các thuật toán này có thể dùng trong nhiều tổ chức, mà vẫn đảm bảo được tính an toàn. Kẻ xấu biết được về thuật toán, nhưng không có khóa thích hợp, vẫn không thể biết được nội dung của thông điệp.

Một hệ mật mã (cryptosystem) một thuật toán, kèm thêm tất cả các bản rõ, bản mã và khóa.

>> Động não chút nào?

Bạn đã từng gặp hoặc các thuật toán hạn chế nào?

Mật mã học 010 – Sức mạnh

Nguồn:

  • Chapter 1, Applied Cryptography: Protocols, Algorithms, and Source Code in C, Second Edition, Bruce Schneier, 1996

Keyword

  • Cryptography, An toàn (Confidentiality), Xác thực (Authentication), Toàn vẹn (Integrity) và Không chối bỏ (Nonrepudiation)

Bạn thường nghe nói mật mã rất “mạnh”!!! Vậy mã hóa giúp chúng ta những gì?

Mã hóa cung cấp sự bí mật (confidentiality)

Những mật mã mạnh, chia bị phá vỡ, và được dùng đúng cách giúp bạn bảo vệ thông tin của bạn một cách an toàn.

Bạn có thể giữ bí mật khi gửi thư điện tử với PGP, kết nối của bạn đến một trang web có thể bí mật với giao thức SSL/TLS,…

Mã hóa hỗ trợ việc xác thực (authentication)

Mã hóa giúp người nhận có thể tin tưởng rằng thông điệp do đúng người gửi. Kẻ xấu không thể giả mạo bất kì người nào.

Mã hóa bảo đảm tính toàn vẹn (integrity)

Mã hóa giúp người nhận tin tưởng rằng thông điệp không bị sửa trong quá trình truyền. Kẻ xấu không thể thay thế một thông điệp giả mạo với một thông điệp hợp pháp.

Mã hóa bảo đảm tính “không chối bỏ” (non-repudiation)

Mã hóa khiến người gửi không thể phủ nhận rằng anh ta đã không gửi thông điệp mà anh ta đã gửi.

>>> Động não chút nào?

Hãy giúp tôi liệt kê thêm các sức mạnh của mật mã, hoặc bổ sung thêm các ví dụ cho những sức mạnh này

 

 

 

Mật mã học 001 – Các thuật ngữ

Nguồn:

  • Chapter 1, Applied Cryptography: Protocols, Algorithms, and Source Code in C, Second Edition, Bruce Schneier, 1996

Keyword

  • Cryptography, Plaintext, Ciphertext, bản mã, bản rõ, mã hóa, giải mã, phá mã

Mở đầu

Bài này nhằm giới thiệu những khái niệm chung nhất về mật mã học. Cũng là để thống nhất các thuật ngữ cho các bài viết sau này.

Người gửi (sender) và người nhận (receiver)

Trong mật mã học, ta xem xét đến trường hợp người gửi muốn gửi một thông điệp cho người nhận  một cách bí mật. Thông điệp cần được truyền sao cho trong ngay cả khi nó lọt vào tay kẻ xấu, kẻ xấu vẫn không thể hiểu được nội dung của thông điệp.

Thông điệp và mã hóa

Thông điệp (message), hay còn gọi là văn bản gốc, bản rõ (plaintext, cleartext), là thứ người gửi muốn truyền đạt đến cho người nhận. Ví dụ, một anh chàng đang yêu muốn gửi thư đến cho một cô nàng, anh ấy viết thư và trao trực tiếp cho cô ấy, thì bức thư chính là một thông điệp (message).

Nhưng vấn đề nảy sinh khi anh chàng không trực tiếp gửi cho cô gái (chắc do ngại), mà nhờ một người bạn X gửi hộ. X có thể là người xấu, rất có thể X sẽ tò mò giở bức thư ra xem, và bao nhiêu “thủ đoạn” của anh chàng sẽ bị X biết hết. Do đó, anh chàng cần “biến đổi” bức thư sao cho những người khác không hiểu được, mà chỉ có cô gái có thể hiểu được thôi. Việc biến đổi như vậy, được gọi là quá trình mã hóa (encrypt). Và bức thư khi đã được “biến đổi”, được gọi là văn bản mã (ciphertext) (hay còn có các tên khác như bản mã). Quá trình cô gái chuyển từ bức thư đã được “biến đổi” trở về bức thư gốc ban đầu anh chàng viết, được gọi là quá trình giải mã (decrypt).

Một cách tổng quát, quá trình mã hóa và giải mã được biểu diễn bởi sơ đồ sau:

encryptionprocess

Mật mã học (cryptography) là nghệ thuật và môn khoa học giữ các thông điệp bí mật.

Những người nghiên cứu và phát triển mật mã được gọi là nhà mật mã học (cryptographer)

Người phá mã (cryptanalyst) là những người nghiên cứu và phát triển ngành phá mã (cryptanalysis)

Bản rõ và Bản mã

Bản rõ thường được ký hiệu là M (message) hay P (plaintext). Nó có thể là một vài bit, một tập tin văn bản, một hình ảnh, một đoạn phim,… hay bất cứ thứ gì chứa thông tin. Trong mật mã cổ điển, M thường là các văn bản. Trong mật mã hiện đại, M thường là dữ liệu nhị phân. Bản rõ thường tham gia vào quá trình truyền dữ liệu và lưu trữ. Trong mọi trường hợp, bản rõ luôn được mã hóa.

Bản mã thường được ký hiệu là C (cipher). Nó cũng là dữ liệu nhị phân.

Hàm mã hóa E, là hàm biến đổi M thành C: E(M) = C

Hàm giải mã D, là hàm biến đổi C thành M: D(C) = M

Trong các bài viết sau này, sẽ thống nhất dùng thuật ngữ "bản rõ" cho từ plaintext (tương đương với các từ văn bản gốc), "bản mã" cho từ ciphertext (tương đương với từ văn bản mã). "Mã hóa" cho từ encrypt, "giải mã" cho từ decrypt, "phá mã" cho từ cryptanalysis (tương đương với các từ thám mã, phân tích mã)

ĐỘNG NÃO CHÚT NÀO?

C1. Hãy lấy một ví dụ về các khái niệm mật mã, mã hóa, bản mã, bản rõ, nhà giải mã, nhà phá mã mà bạn biết

(Trả lời bằng cách comment dưới bài viết này)