• If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.
Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.

Announcement

Collapse
No announcement yet.

Mã hóa preshare kerberos PKI CA Digital signature

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mã hóa preshare kerberos PKI CA Digital signature

    Phạm Minh Tuấn

    Hiện nay ta thấy trong hệ thống mạng thường xuyên xảy ra hành động chuyển đổi dữ liệu giữa các máy tính, hoặc trao đổi dữ liệu giữa các user, trao đổi dữ liệu giữa các network này và network kia. Tất cả các công việc trao đổi dữ liệu của chúng ta hiện nay như file, email, gói tin web và chúng ta gửi từ đối tượng này qua đối tượng khác thì cơ chế gửi dữ liệu là cleartext.
    Cleartext tức là nội dung có sao nó gửi vậy, ví dụ A gửi qua B nội dung “abc” thì A sẽ gửi đúng chuỗi “abc” gọi là cơ chế cleartext. Khi ta chuyển đổi dữ liệu như vậy từ A qua B thì có thể sẽ bị đối tượng thứ ba capture.
    Do đó nhu cầu bảo mật hệ thống thì dữ liệu chuyển đổi giữa A và B phải bảo mật, có 2 cách
    1. Không cho phép đối tượng thứ 3 capture gói tin từ A gửi qua B=> đường truyền giữa A và B là đường truyền riêng. Ví dụ: leaseline sau khi mình thuê là chỉ có Network A và B dùng, không có đối tượng thứ 3 tham gia vào.
    2. Encrypt (mã hóa) nếu ta gửi dữ liệu trong môi trường Public (ví dụ: Internet) thì ta phải mã hóa gói tin. Đối tượng thứ 3 có bắt được gói của chúng ta thì cũng không giải mã được. Khi A gửi dữ liệu cho B thì đầu tiên nó phải làm hành động encrypt (mã hóa dữ liệu), bên B nhận được phải làm hành động decrypt (giải mã) để ra được gói tin ban đầu.


    Vì thế phải dùng các phương pháp mã hóa mà trong hệ thống của mình có thể hỗ trợ.


    Hiện nay, trong một hệ thống khi có nhu cầu mã hóa dữ liệu thì có 2 phương pháp:


    1. Mã hóa đối xứng: có 2 phương pháp

    a)preshare key:
    Hai đối tượng tự định nghĩa key
    Các đối tượng muốn má hóa với nhau thì phải dùng chung một key, key ở đây là một khóa, vừa có chức năng mã hóa đồng thời cũng có chức năng giải mã. Vì thế nó còn gọi là key đối xứng.
    Vd:
    hello + 1 ---> ifmmp (trong bảng chữ cái cộng lên một kí tự)
    ifmmp – 1---> hello.
    Thuật toán mã hóa preshare key: DES, 3DES.

    Ưu:
    - Tốc độ mã hóa và giải mã nhanh.
    - Ứng dụng được trong mội trường workgroup và domain.
    Nhược:
    - Một đối tượng sử dụng quá nhiều key sẽ dẫn đến quản lí khó. Nếu dùng chung 1 key cho nhiều đối tượngthì bảo mật không cao.
    - Cấp độ bảo mật không cao. Muốn biết key thì A và B phải gặp nhau để thương lượng key => C capture tại thời điểm A và B thương lượng key => lộ key.

    b)Kerberos:
    Hệ thống domain mới dùng được key. Hai đối tượng phải nằm chung trong một AD. Trong hệ thống AD phải có một máy làm domain controller.
    Hai đối tượng A và B nhờ anh trung gian đứng ra cung cấp chứng thực. (Kerberos server)

    Ưu: cấp độ bảo mật cao hơn preshare key vì có một server đứng ra cung cấp
    Nhược: không thể ứng dụng rộng rãi. Vd: Workgroup không ứng dụng được Kerberos, AD ở hai hệ thống khác nhau thì không thể ứng dụng được Kerberos.

    2. Phương pháp mã hóa bất đối xứng:

    Còn được gọi là Public key Infrastructure (PKI): hay còn gọi là phương pháp mã hóa công khai, ứng dụng thuật toán RSA.
    Thuật toán RSA quy định một đối tượng thì phải có 2 key
    + Public key: khóa công khai, chức năng mã hóa (encrypt, mình sẽ gọi tắt là +). Tất cả mọi người biết.
    + Private key: khóa cá nhân, chức năng giải mã (decrypt, mình sẽ gọi tắt là -). Giữ kín chỉ có mình biết.
    Hai key này thực ra là một số nguyên tố, nhưng nó có giá trị vô cùng lớn, giá trị số nguyên tố này càng lớn càng tốt.
    Vì dùng 2 key cho 2 chức năng encrypt và decrypt nên nó gọi là phương pháp mã hóa bất đối xứng.

    Quy định tắt để dễ trình bày:
    Public key(Gọi tắt là P), Private key (Gọi tắt là Q). encrypt, mình sẽ gọi tắt là “+” ;decrypt, mình sẽ gọi tắt là “–“

    Vd:
    Data + P = X
    X - Q = Data

    A(Pa, Qa)------------------>B (Pb, Qb)

    B1: A và B trao đổi public key, sau khi trao đổi puclic key thành công A sẽ có Pb, B có Pa.
    B2: Muốn gửi dự liệu cho ai thì mã hóa bằng public key của người đó.
    A mã hóa
    Data + Pb = X

    B giải mã
    X - Qb = Data


    Trường hợp trên đơn giản chỉ có A và B. Nếu trường hợp có thêm đối tượng C, và giả sử C cố tình muốn lấy dữ liệu của A.

    C nhanh tay gửi Pc nói với A rằng đây là Public key của Pb


    Lúc này khi A gửi dữ liệu cho B thì thằng C capture lại dùng Qc của nó để giải mã gói tin của thằng A. (Vì lúc này A mã hóa bằng Pb của C gửi)


    Do đó trong phương pháp mã hóa PKI người ta cần phải biết được hành động giả mạo public key.

    Vì vậy trong hệ thống để tránh giả mạo public key thì ngoài A, B, C thì trong hệ thống PKI còn có D. Đứng ra làm trung gian để chứng thực cho 3 đối tượng A, B và C. A, B, C phải thống nhất dùng public key mà được chứng thực bởi D thì nó mới nhận, còn public key mà chưa chứng thực thì nó không chấp nhận.

    Trong cơ sở dữ liệu của D có:
    A-----Pa
    B-----Pb
    C-----Pc

    Khi A nhận Pb từ C, để chứng thực được Pb này có hợp lệ hay không thì A mới hỏi D xác thực xem đúng key này của B hay không. D mới nhìn vào bảng chứa public key của nó xem, sau đó D mới nói với A Pb này là của C chứ không phải của B.

    Vậy làm sao D biết key này không phải của B. Đó là do trên mỗi public key có một đặc điểm nhận dạng, đó là số serial. Mội public key có một số serial khác nhau do đó nó biết được đó là đối tượng nào.

    Vd: mình nói tên mình là Phạm Minh Tuấn, thì có ai tin không. Sau đó mình đưa chứng minh thư có tên Phạm Minh Tuấn, trong chứng minh thư có hình của mình, có mộc của Công An TP.HCM, có dấu vân tay, đặc điểm nhận dạng (sẹo, nốt ruồi, …) thì đảm bảo người ta sẽ tin mình tên là Phạm Minh Tuấn, chứ không phải giả mạo. Lí do nói người ta không tin mà đưa chứng minh thư ra người ta tin, đó là do có một anh rất uy tín đứng ra chứng thực cho mình, đó là Công An TP.HCM.

    Công An ở đây giống như D. D còn gọi là CA (Certification Authority), chứ không phải chữ viết tắt của Công An đâu nhé.

    CA là một đơn vị có chức năng cấp phát và chứng thực cho các Public key của client gửi tới. Cụ thể hơn nó cấp phát và chứng thực cho các Digital certificate (chứng nhận điện tử).

    Khi đối tượng A có nhu cầu sử dụng phương pháp chứng thực PKI thì nó phải có Public key và Private key hợp lệ. Để có public key và private key hợp lệ, đối tượng A sẽ liên hệ với anh CA để nó yêu cầu CA cấp cho nó một Digital Certificate. Sau khi nhận được Digital Certificate từ CA cung cấp thì đối tượng của mình sẽ có Public key và Private key hợp lệ. Trên một Digital Certificate sẽ có 2 giá trị P và Q.

    Vậy tại sao D chứng thực được các Public key, P của A hay P của B?
    Khi A nhận Pb làm sao biết Pb này có hợp lệ hay không, Pb này của CA nào cung cấp?
    Trên một public key để biết được do CA nào cung cấp thì nó có một signature (chữ kí). Trong hệ thống mạng thì không thể sử dụng chữ kí thông thường được mà phải sử dụng chữ kí điện tử (digital signature).

    Digital signature có 2 chức năng:

    + Chứng thực cho các Digital Certificate trong hệ thống CA.
    Trên các digital certificate của CA cấp cho A,B,C đều có đính kèm chữ kí điện tử (Digital signature). Nhìn vào chữ kí điện tử thì mới biết là Public key này được cấp từ đâu, được chứng nhận bởi anh CA nào.

    + Đảm bảo tính toàn vẹn của dữ liệu.
    Làm sao tạo được digital signature, làm sao chứng thực được digital signature là đúng hay sai.
    A ----Data---->B phải biết dữ liệu có bị sửa đổi hay giả mạo không. => lúc này A gửi cho B phải có đính kèm chữ kí điện tử của A. Nhiệm vụ của A là tạo chữ kí điện tử, nhiệm vụ của B là đi chứng thực chữ kí điện tử.
    Để sử dụng chữ kí điện tử thì người ta mới ứng dụng thuật toán RSA.(vẫn sử dụng public key và private key). Ngoài RSA nó còn sử dụng thật toán hash (băm một chiều). Thuật toán hash sử dụng rộng rãi nhất là MD5 và SHA, ngoài 2 thuật toán hash này thì có rất nhiều. Hash tức là mình có một nội dung được cắt nhỏ ra làm nhiều phần, sau đó đem trộn lại để tạo thành một nội dung mới. Nó gọi là băm một chiều vì “nội dung gốc” đem hash thì tạo ra “nội dung mới”, nhưng đem nội dung mới hash lại thì không thể tạo lại nội dung gốc. Và cùng một nội dung thì mình hash bao nhiều lần đi nữa đều ra cùng nội dung mới không thay đổi (vd: abc---hash---xyz)
    Vd:
    x^2= 4 (X có thể là -2 hoặc +2)
    10/2 = 5 (nhưng 5 thì có thể là 20/4 hoặc 50/10, …). Do đó, ta có nội dung mới thì không thể nào tìm lại nội dung ban đầu.

    Tạo chữ kí điện tử

    Bên A
    A (nội dung-gốc)--------hash--------------> A(nội dung mới-SHA)

    A(nội dung mới-SHA)---Encrypt với Qa (chú ý: private key của A)--->DSa (Digital Signature)

    Lúc này thông tin của A gửi cho B sẽ bao gồm 3 phần



    Để biết nội dung gốc này có bị giả mạo hay chưa thì B phải chứng thực Dsa này là của A.




    A(nội dung mới-SHA’) = A(nội dung mới-SHA) => DSa chính xác => nội dung gốc không thay đổi.
    A(nội dung mới-SHA’) # A(nội dung mới-SHA) => DSa giả mạo => nội dung gốc bị sửa chửa
    Nếu nội dung gốc không bị thay đổi thì mình hash lần thứ nhất hay lần thứ 2 nội dung vẫn y chang.

    Nội dung gốc này nếu bị sửa chữa trước khi tới B thì (nội dung mới-SHA’) # A(nội dung mới-SHA)
    Đó là cách chứng thực chữ kí điện tử.

    Mã hóa dữ liệu và ứng dụng digital signature là khác nhau.

    Dữ liệu từ A gửi qua B người ta capture thi nội dung gốc xem được, do nội dung gốc này chỉ đính kèm chữ kí điện tử thôi.
    Một dữ liệu mà có mã hóa thì người ta gọi đó là Encrypt. Một dữ liệu có đính kèm chữ kí điện tử đó là signing.
    => dữ liệu muốn bảo mật hoàn toàn gửi từ A tới B ta phải vừa Encrypt, vừa Singing.

    Tức sau khi A tạo chữ kí điện tử, A đính kèm chữ kí điện tử vào dữ liệu gốc. Ta gọi dữ liệu có đính kèm chữ kí điện tử là data. Data này sẽ được encrypt với public key của B ra được X.



    B nhận X
    B1: X---decrypt với Qb---Data (Nội dung gốc + DSa)
    B2: B chứng thực nội dung gốc bị thay đổi hay chưa bằng cách chứng thực DSa đúng hay sai như mô tả bên trên.

    Đây là trường hợp vừa signing, vừa encrypt.


    CA chứng thực certificate bằng Digital signature.
    Một đối tượng trong hệ thống thì ta gọi đó là Object
    + Khi đối tượng A có như cầu sử dụng Public key và Private key, thì đối tượng A yêu cầu CA cấp cho nó một digital certificate.
    A sẽ gửi thông tin của A (bao gồm cả Pa và Qa) cho CA. Nhưng trước đó A phải tự phát sinh Pa và Qa. Nhưng lúc này Pa và Qa đưa cho ai cũng sẽ bị từ chối vì chưa được CA chứng nhận.

    + CA nhận thông tin A, public key của A




    Khi có chữ kí điện tử, CA mới tạo ra Digital Certificate.


    Sau khi A đã nhận được Digital Certificate do CA trả lời thì lúc đó Pa đã được CA chứng nhận. Khi A gửi Pa cho B thì B chỉ việc xem chữ kí điện tử này có đúng của CA cung cấp hay không.

    Đó là quá trình cấp phát và chứng thực cho một Certificate trong hệ thống CA.
    Khi cấp một Digital Certificate cho một đối tượng, CA chỉ lưu thông tin của Public key chứ không lưu trữ Private key. Private key của đối tượng nào thì chỉ có đối tượng đó mới có, kể cả CA cũng không có private key của đối tượng, đó là mặc định trong hệ thống CA.

    Các đối tượng trong hệ thống CA:
    • User account
    • Computer account
    • Service account.


    Ứng dụng của certificate trong hệ thống CA.
    1. Secure email (bảo mật cho hệ thống email). Bảo đảm tính toàn vẹn thì singing email, bảo mật nội dung thì encrypt email.
    2. Secure hệ thống Web
    3. IPsec
    4. Authenticate user: Chứng thực cho user trong hệ thống.
    5. Encrypt file system (EFS): mã hóa file.

    Triển khai một máy làm chức năng CA server:
    + CA nội bộ
    + CA trong Internet.
    Vd: một số tổ chức đứng ra làm chức năng CA như: verisign.com, cybertrust.com, endtrust.com, …

    Đối với CA nội bộ thì có 2 cấp độ: (2003 gọi là certification authority, 2008 gọi là active directory certificate service)

    - Stand-alone CA:hệ thống Workgroup, cấp certificate phát bằng tay.
    - Enterprise CA: Hệ thống Active Directory, tự động cấp phát certificate. (auto enrollment)
    Phạm Minh Tuấn

    Email : phamminhtuan@vnpro.org
    Yahoo : phamminhtuan_vnpro
    -----------------------------------------------------------------------------------------------
Trung Tâm Tin Học VnPro
149/1D Ung Văn Khiêm P25 Q.Bình thạnh TPHCM
Tel : (08) 35124257 (5 lines)
Fax: (08) 35124314

Home page: http://www.vnpro.vn
Support Forum: http://www.vnpro.org
- Chuyên đào tạo quản trị mạng và hạ tầng Internet
- Phát hành sách chuyên môn
- Tư vấn và tuyển dụng nhân sự IT
- Tư vấn thiết kế và hỗ trợ kỹ thuật hệ thống mạng

Network channel: http://www.dancisco.com
Blog: http://www.vnpro.org/blog
Working...
X