Tổng quan

Một phần của tài liệu nghiên cứu sử dụng giọng nói trong xác thực và mã hóa dữ liệu trên thiết bị di động và xây dựng hệ thống demo trên android (Trang 41)

Mã hóa (encryption) là phương pháp biến đổi dữ liệu ban đầu (plaintext) thành dạng dữ liệu không thể đọc được (ciphertext). Dữ liệu ban đầu là dữ liệu có thể đọc hiểu bởi con người hoặc là các dạng dữ liệu mà máy tính có thể hiểu và thực thi (executable code). Khi dữ liệu được mã hóa, cả người và máy đều không hiểu được cho đến khi nó được giải mã. Việc mã hóa những dữ liệu nhạy cảm khi lưu trữ chúng trên máy tính là việc làm cần thiết để tránh những truy cập của kẻ xấu. Đặc biệt, mã hóa rất cần thiết khi truyền tải dữ liệu qua mạng nhất là qua các kênh truyền không an toàn.

Hình 2.3-1 Mã hóa và giải mã

Một hệ thống hỗ trợ mã hóa và giải mã dữ liệu được gọi là một cryptosystem. Hệ thống này được xây dựng dựa trên phần cứng hoặc hỗ trợ thông qua code trong ứng dụng. Cryptosystem sử dụng các giải thuật mã hóa, các giải thuật này cho biết mức độ phức tạp của hệ thống. Hầu hết các giải thuật đều là những hàm toán học phức tạp được áp dụng trên plaintext. Các giải thuật mã hóa sử dụng một giá trị gọi là khóa (key), thường là một chuỗi bit, để mã hóa và giải mã (Hình 2.3-2).

Hình 2.3-2 Mã hóa

Giải thuật mã hóa là tập hợp các luật toán học phức tạp để mã hóa và giải mã dữ liệu. Hiện nay, cơ chế mà nhiều giải thuật làm việc không còn được giữ bí mật nữa. Phần bí mật của một quá trình mã hóa dữ liệu chính là khóa. Khóa là một giá trị bất kỳ được tạo nên từ một chuỗi lớn các bit ngẫu nhiên. Tuy nhiên không phải bất kỳ giá trị nào cũng có thể là khóa. Mỗi giải thuật sẽ có một miền giá trị nhất định (gọi là không gian khóa - keyspace), trong đó mỗi giá trị có thể làm khóa cho giải thuật đó. Keyspace càng lớn đồng nghĩa với việc tìm ra khóa chính xác mà giải thuật sử dụng cũng khó khăn hơn (hay nói cách khác là an toàn hơn).

2.3.1.1 Substitution Cipher - Transposition Cipher

Để chuyển một plaintext thành một ciphertext, có hai kỹ thuật cơ bản đó là thay thế (substitution cipher) và hoán vị (transposition cipher hay permutation cipher).

Phương pháp thay thế sẽ thay các bit, ký tự hoặc một nhóm ký tự bởi các bit, ký tự hoặc nhóm ký tự khác. Phương pháp hoán vị không thay thế các giá trị hiện tại bởi các giá trị khác mà nó dịch chuyển (hoán vị) các bit hay các ký tự với nhau nhằm tạo thành một dữ liệu mới.

Hình 2.3-3 Không gian khóa

 Substitution Cipher

Kỹ thuật này sử dụng khóa để dẫn hướng cho quá trình thay thế. Trường hợp đơn giản nhất là giải thuật Caesar Cipher phát minh bởi Julius Caesar, mỗi ký tự được thay thế bởi một ký tự khác nằm ở vị trí thứ 3 ngay sau nó trong ký tự trong bảng chữ cái alphabet. Ví dụ,

plain: meet me after the toga party cipher: PHHW PH DIWHU WKH WRJD SDUWB

Ta có thể thấy rằng, Caesar Cipher rất yếu vì keyspace của Caesar Cipher chỉ gồm 25 giá trị. Tất nhiên, đây chỉ là ví dụ đơn giản cho phương pháp thay thế. Thực tế phương pháp này được sử dụng trong các giải thuật nhưng với sự phức tạp gấp nhiều lần, hơn nữa chúng thường sử dụng nhiều hơn một bảng chữ cái.

Như đã nói, phương pháp này sẽ hoán chuyển vị trí các ký tự trong mẫu ban đầu. Khóa sẽ được sử dụng để chỉ ra vị trí mà các ký tự được di chuyển tới.

Ví dụ, ta có thể sắp xếp các ký tự của plaintext thành một mảng nhiều dòng, sau đó hoán vị các cột và ghi lại theo thứ tự cột ta được ciphertext:

Key: 4 3 1 2 5 6 7 Plaintext: a t t a c k p o s t p o n e d u n t i l t w o a m x y z Ciphertext: TTNAAPTMTSUOAODWCOIXKNLYPETZ

Trên thực tế, việc các hoán chuyển vị trí này được xác định bởi những hàm toán học phức tạp hơn rất nhiều.

Hầu hết các giải thuật hiện nay sử dụng một chuỗi các thao tác thay thế và hoán vị phức tạp để chuyển plaintext thành ciphertext. Chuỗi thao tác này được một giải thuật tạo ra nhờ vào một giá trị khóa cụ thể.

2.3.1.2 Block Cipher - Stream Cipher

Block cipher mã hóa plaintext theo từng khối (block). Thường thì mỗi khối có kích thước khoảng 64 bit hoặc 128 bit. Các khối này được mã hóa một cách riêng biệt không phụ thuộc lẫn nhau cũng như trạng thái hiện tại của quá trình mã hóa. Do đó, nó còn được gọi là stateless cipher.

Stream cipher cũng có thể xem là một block cipher với kích thước khối tương đối nhỏ (thường là 1 bit). Việc mã hóa bit hiện tại phụ thuộc vào trạng thái của quá trình mã hóa (các bit được mã hóa trước đó). Do đó, nó còn được gọi là state cipher.

Một phần của tài liệu nghiên cứu sử dụng giọng nói trong xác thực và mã hóa dữ liệu trên thiết bị di động và xây dựng hệ thống demo trên android (Trang 41)