Thứ Tư, 25 tháng 3, 2020

Tại sao HTTPs bảo mật?

 Hey yo mọi người, chào mừng mọi người đến với series bài học thứ 2 của mình sau series về image classification. Ở series này, chúng ta sẽ cùng nhau đi qua các khái niệm căn bản để tìm hiểu tại sao HTTPs lại bảo mật nhé.

Bài 1: Tìm hiểu về symmetric và asymmetric encryption
Bài 2: Thuật toán mã hóa bất đối xứng RSA
Bài 3: Public key và private key
Bài 4: Digital certificate và certificate authority
Bài 5: SSL/TLS và HTTPs
Series rất dễ đọc và nắm bắt. Mình mong qua series này, các bạn có thể thu lại cho bản thân mình những kiến thức bổ ích nhé.
Share:

Thứ Ba, 24 tháng 3, 2020

SSL/TLS và HTTPS

Nếu là dân công nghệ thông tin, chắc hẳn bạn cũng biết HTTPS bảo mật hơn HTTP. Nhưng có bao giờ bạn tự hỏi tại sao lại như vậy không? Sau khi cùng nhau đi qua những kiến thức về asymmetric encrypted, Certificate Authority thì bài này sẽ kết hợp chúng lại để giải thích cho bạn biết được tại sao HTTPs lại bảo mật nhé.

SSL là gì?

SSL viết tắt của từ Secure sockets layer, nói cho đơn giản thì nó là một chuẩn bảo mật khi giao tiếp giữa client và server. TLS cũng y hệt như SSL, chỉ có điều nó là bản nâng cấp cao hơn.
Vậy SSL/TLS liên quan gì đến sự bảo mật của HTTPs? Đơn giản là HTTPs sử dụng SSL/TLS để bảo mật dữ liệu khi client và server giao tiếp với nhau. Và để hiểu cơ chế bảo mật này hoạt động ra sao, chúng ta sẽ đi tới 1 khái niệm nữa có tên gọi là: SSL Handshake.

SSL handshake


Bước 1: bạn đăng nhập vào máy chủ
Bước 2: khi bạn đăng nhập vào 1 máy chủ, máy chủ sẽ trả về cho bạn 1 cái Certificate. Tất nhiên certificate này được chứng nhận bởi Certificate Authority rồi. Và để hiểu hơn về khái niệm Digital Certificate này, bạn nên quay về đọc bài này.
Bước 3: Browser của bạn sẽ tự động kiểm tra xem, cái certificate của server trả về có đúng hay không. Việc xác thực này là nhờ vào cái CA Certificate mình đã nói ở bài trước.
Bước 4: Sau khi xác thực được certificate của server trả về là chính xác, thì bạn sẽ lấy cái public key đính kèm trong certificate đó ra để sử dụng. Public key này là 1 cái chìa mã hóa (encrypt key). Bạn dùng cái encrypt key này để mã hóa public key của máy bạn.
Bước 5: bạn gửi cái public key đã được mã hóa của bạn qua cho server
Bước 6: Server sẽ dùng private key của server để mã hóa dữ liệu, từ đó lấy được public key của bạn. Public key của bạn cũng là một cái encrypt key.
Bước 7: Server dùng public key của bạn để mã hóa dữ liệu trả về.
Bước 8: Server send dữ liệu đã được mã hóa về cho bạn
Bước 9: bạn dùng private key của bạn để mã hóa dữ liệu trả về.
Sau quá trình ssl handshake hoàn tất, bạn đã có được public key của server, và server cũng có được public key của bạn. Bây giờ tất cả thông tin trao đổi giữa bạn và server đều được mã hóa và bảo mật.
Ví dụ bạn muốn gửi cho server thông điệp: "cuonglv1109". Thì bạn sẽ dùng public key của server để mã hóa rồi gửi.
Server là người duy nhất có thể mã hóa được dữ liệu này.
Server gửi lại cho bạn thông điệp: "hết series https rồi" bằng cách mã hóa bằng public key của bạn.
Cũng chỉ có bạn là người có thể đọc được thông điệp này.

Share:

Thứ Hai, 16 tháng 3, 2020

Digital Certificate and Certificate Authority

Digital certificate và certificate authority là gì?

Certificate dịch ra là chứng chỉ, Digital là số hóa. Vậy digital certificate là chứng chỉ số. Hừm, vậy chứng chỉ số là gì?
Giống như con người chúng ta, chứng minh thư là thứ dùng để xác định danh tính, thì 1 trang web (server) sử dụng digital certificate để chứng minh được thân phận của mình. Giả sử chúng ta đi vào bar để quẩy chẳng hạn. Nhân viên bảo vệ thấy mặt còn non quá nên không cho vào vì sợ không đủ 18 tuổi. Vậy thì để chứng minh bản thân đã đủ tuổi đi bay, ta chỉ cần show chứng minh thư ra là đủ (dạo này người ta chuyển qua xài thẻ căn cước hết rôi nhỉ )


Vấn đề là khi ta đưa chứng minh thư ra, làm thế nào để bảo vệ biết cái chứng minh thư đó không phải là hàng giả mạo. Đôi khi chúng ta tự làm 1 cái giấy chứng minh giả thì sao nhỉ? À, trên chứng minh thư có con dấu của công an. Vậy con dấu của công an này chính là thứ đảm bảo cho chứng minh thư của chúng ta là hàng thật. Và tất nhiên, bảo vệ sẽ vui vẻ cho chúng ta vào múa quạt đi bay.

Với chứng minh thư là vậy, thế còn digital certificate thì sao? Cũng tương tự như thế, một trang web muốn chứng minh danh phận bản thân thì phải xài digital certificate như là chứng minh thư. Và người đứng ra bảo đảm cái digital certificate này không phải hàng giả chính là Certificate Authority (CA).

Quy trình tạo Digital certificate

Giống y hệt quá trình làm chứng minh thư, bạn phải cung cấp ảnh, tên, tuổi, địa chỉ cho công an. Sau đó công an sẽ in ra 1 cái thẻ rồi đóng dấu lên vậy là bạn đã có chứng minh thư.
Digital certificate (DC) cũng làm y hệt. Muốn tạo ra 1 cái DC thì bạn phải cung cấp 1 cái public key cho CA, và sau đó, CA sẽ tạo ra 1 cái file và mã hóa bằng private key của CA. (nếu bạn chưa hiểu 2 khái niệm public key và private key thì quay lại đọc bài này đã)

Ở đây, Public key mà bạn đưa cho CA là encrypt key của server bạn.

Xác thực DC là thật như thế nào?

Bây giờ một người nào đó muốn xác thưc DC của bạn là thật, thì họ làm như thế nào? Thực ra, các browser hiện tại đều có thể xác thực được DC đấy.
 Khi bạn install 1 browser trên máy thì browser này đã có cài sẵn những CA Certificate rồi. Những Certificate này là những certificate của những CA nổi tiếng và phổ biến. Và những certificate này cũng có tác dụng như những public key của CA, có khả năng mã hóa được những DC do CA đó mã hóa.

Vậy thì khi ai đó nhận được DC của bạn, họ chỉ cần lấy CA Certificate có sẵn trong browser và mã hóa DC bạn đưa. Như vậy là đã chứng minh được DC của bạn là hàng xịn rồi.

Share:

Thứ Ba, 3 tháng 3, 2020

Public key và Private key

 Hôm nay chúng ta sẽ đi vào tìm hiểu 2 khái niệm rất phổ biến trong mã hóa thông tin đó là : Public key và private key.
 Quay trở lại với bài toán nhận 100 bức thư từ 100 người khác nhau mà mình đã nói trong bài này.

 Bạn muốn nhận 100 bức thư từ 100 người khác nhau và không muốn bất cứ ai có thể đọc được những bức thư đó. Điều bạn có thể làm là gửi những chìa khóa mã hóa cho 100 người, và chỉ duy nhất bạn có chìa giải mã.
Trong trường hợp này, những chìa khóa mà bạn gửi cho mọi người, tức là phổ biến ra cho những người khác giữ gọi là public key.
Public key là chìa khóa được phân bố rộng rãi cho mọi người sử dụng
Public key có thể là chìa khóa mã hóa, cũng có thể là chìa khóa giải mã, tùy vào tình huống bài toán bạn giải quyết.
Chiếc chìa khóa giải mã trong ví dụ ở trên, chỉ có một mình bạn giữ và bất cứ ai cũng không được đụng tới, nó gọi là private key.

Private key là chìa khóa không được phân phối cho những người khác mà được giữ bảo mật.
Private key thì ngược lại với public key. Nếu public key là chìa khóa mã hóa thì private key sẽ là chìa khóa giải mã. Còn nếu public key dùng để giải mã thì private key dùng để mã hóa.
Share:
Được tạo bởi Blogger.