[Discussion] Dùng Cert từ verisgn trên nhiều Web Server chạy song song? |
29/01/2010 13:21:33 (+0700) | #1 | 204129 |
thangdiablo
HVA Friend
|
Joined: 11/05/2003 17:31:58
Messages: 734
Offline
|
|
Hi all,
Mình lập ra topic này với mong muốn trao đổi cùng anh em về việc install Certificate được issued từ một trong những trusted root CA (verisign chẳng hạn) lên nhiều webserver chạy song song.
Ví dụ mình có 1 trang web ebanking có common name là ebank.abc.com
Và khi KH truy cập vào địa chỉ này thì nó sẽ tự động chuyển sang https
Mình xin trình bày quy trình xin cấp Certificate từ verisign có thể được hình dung đơn giản như sau:
- Vào IIS (giả định môi trường là windows) generate ra Certificate signing request (CSR) và gửi lên verisign.
- Tùy vào level mình mua Certificate mà verisign sẽ có cách để xác minh thông tin khác nhau. Họ sẽ gọi điện confirm hoặc email confirm.
- Sau đó họ gửi cho mình 1 cái cert và mình cùng cái này để install lên Server của mình.
Với trường hợp chúng ta chỉ có 1 webserver để duy trì cái trang ebank.abc.com thì đơn giản rồi. Tuy nhiên, nếu chúng ta có nhiều hơn 1 cái webserver cùng chạy song song và duy trì cái trang ebanking này thì
- Việc xin cấp Certificate từ verisign sẽ diễn ra thế nào?
- Việc tạo ra CSR chỉ cần làm trên 1 servers hay trên tất cả servers ?
- Mình phải mua mấy Certificate từ verisign?
- Common name lúc này có thay đổi hay không?
- Khi dữ liệu được encryption từ client tới servers thì verisign sẽ chứng thực cái Certificate này là không bị giả mạo ở khúc nào?
Mời mọi người thảo luận. Mọi người lưu ý tập trung vào vấn đề mình đang hỏi. Đừng lang bang sang vấn đề khác vì đề tài về CA này là rất rộng.
|
|
Hãy sống có Tuệ Giác. |
|
|
|
[Discussion] Dùng CA từ verisgn trên nhiều Web Server chạy song song? |
29/01/2010 14:03:37 (+0700) | #2 | 204133 |
mrro
Administrator
|
Joined: 27/12/2001 05:07:00
Messages: 745
Offline
|
|
mình có vài chỗ lưu ý:
1. CA = Certificate Authority là từ dùng để nói về một tổ chức/thực thể được tín nhiệm để cấp certificate cho những cá nhân và tổ chức khác.
2. Certificate = chứng chỉ của một cá nhân hay tổ chức được một CA cấp cho (có thể phải trải qua quá trình CA kiểm tra danh tính của đơn vị muốn được cấp certificate).
Ví dụ Verisign là CA được tín nhiệm, thông qua hình thức là self-signed certificate của họ được các trình duyệt web tín nhiệm. Verisign cấp certificate cho công ty của thangdiablo. Việc cấp này đơn giản là Verisign dùng self-signed certificate của họ để ký lên CSR của khách hàng.
-m
|
|
http://tinsang.net
TetCon 2013 http://tetcon.org
Làm an toàn thông tin thì học gì?/hvaonline/posts/list/42133.html |
|
|
|
[Discussion] Dùng CA từ verisgn trên nhiều Web Server chạy song song? |
29/01/2010 14:08:43 (+0700) | #3 | 204134 |
thangdiablo
HVA Friend
|
Joined: 11/05/2003 17:31:58
Messages: 734
Offline
|
|
Thank mrro về những thông tin trên. Còn về thắc mắc của mình, mrro có ý kiến gì không?
|
|
Hãy sống có Tuệ Giác. |
|
|
|
[Discussion] Dùng CA từ verisgn trên nhiều Web Server chạy song song? |
29/01/2010 14:36:31 (+0700) | #4 | 204137 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
thangdiablo wrote:
...
Tuy nhiên, nếu chúng ta có nhiều hơn 1 cái webserver cùng chạy song song và duy trì cái trang ebanking này
--> thangdiablo nói rõ hơn chỗ này đi. Mục đích là để redundancy, load balancing, hay là gì?
PS: Tài liệu Licensing Verisign Certificates có đề cấp đến vấn đề này đấy.
|
|
Let's build on a great foundation! |
|
|
|
[Discussion] Dùng CA từ verisgn trên nhiều Web Server chạy song song? |
29/01/2010 14:39:30 (+0700) | #5 | 204138 |
thangdiablo
HVA Friend
|
Joined: 11/05/2003 17:31:58
Messages: 734
Offline
|
|
quanta wrote:
thangdiablo wrote:
...
Tuy nhiên, nếu chúng ta có nhiều hơn 1 cái webserver cùng chạy song song và duy trì cái trang ebanking này
--> thangdiablo nói rõ hơn chỗ này đi. Mục đích là để redundancy, load balancing, hay là gì?
PS: Tài liệu Licensing Verisign Certificates có đề cấp đến vấn đề này đấy.
Uh! tất nhiên mục đích là một trong những yếu tố Quân nêu ở trên.
|
|
Hãy sống có Tuệ Giác. |
|
|
|
[Discussion] Dùng CA từ verisgn trên nhiều Web Server chạy song song? |
29/01/2010 14:46:35 (+0700) | #6 | 204140 |
|
conmale
Administrator
|
Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
|
|
thangdiablo wrote:
Với trường hợp chúng ta chỉ có 1 webserver để duy trì cái trang ebank.abc.com thì đơn giản rồi. Tuy nhiên, nếu chúng ta có nhiều hơn 1 cái webserver cùng chạy song song và duy trì cái trang ebanking này thì
- Việc xin cấp Certificate từ verisign sẽ diễn ra thế nào?
- Việc tạo ra CSR chỉ cần làm trên 1 servers hay trên tất cả servers ?
- Mình phải mua mấy Certificate từ verisign?
- Common name lúc này có thay đổi hay không?
- Khi dữ liệu được encryption từ client tới servers thì verisign sẽ chứng thực cái Certificate này là không bị giả mạo ở khúc nào?
Mời mọi người thảo luận. Mọi người lưu ý tập trung vào vấn đề mình đang hỏi. Đừng lang bang sang vấn đề khác vì đề tài về CA này là rất rộng.
- Mỗi server tạo một CSR bởi vì mỗi server có private key riêng (tùy web service là cái gì nữa).
- Bao nhiêu servers thì bấy nhiêu certificates. Signed certificate là public key của từng server (có private key riêng).
- CN không cần phải thay đổi. Tuy nhiên, cần phải ghi nhận ngày giờ signed của từng certificate cho từng server để phân biệt chúng và renew chúng về sau.
- Khi dữ liệu được encrypted từ client tới server là sao? Ý em là clients (browsers) từ encrypt cái gì rồi gởi lên server? |
|
What bringing us together is stronger than what pulling us apart. |
|
|
|
[Discussion] Dùng CA từ verisgn trên nhiều Web Server chạy song song? |
29/01/2010 15:09:08 (+0700) | #7 | 204142 |
hvthang
Member
|
0 |
|
|
Joined: 20/07/2005 03:26:58
Messages: 187
Offline
|
|
- Mỗi server tạo một CSR bởi vì mỗi server có private key riêng (tùy web service là cái gì nữa).
- Bao nhiêu servers thì bấy nhiêu certificates. Signed certificate là public key của từng server (có private key riêng).
- CN không cần phải thay đổi. Tuy nhiên, cần phải ghi nhận ngày giờ signed của từng certificate cho từng server để phân biệt chúng và renew chúng về sau.
- Khi dữ liệu được encrypted từ client tới server là sao? Ý em là clients (browsers) từ encrypt cái gì rồi gởi lên server?
Trong trường hợp này phải xin cert cho từng sub-domain con phải không anh? vd: web1.abc.com, web2.abc.com,...
Khi đó có thể sẽ có sự ưu đãi về giá (vì chung abc.com).
Tuy nhiên, khi hệ thống cấu hình theo kiểu clustering thì có gì khác không các anh? Có khả năng nào chỉ cần xin một cert cho tên miền chính? |
|
|
|
|
[Discussion] Dùng CA từ verisgn trên nhiều Web Server chạy song song? |
29/01/2010 15:09:57 (+0700) | #8 | 204144 |
mrro
Administrator
|
Joined: 27/12/2001 05:07:00
Messages: 745
Offline
|
|
cái này là tùy thuộc vào khả năng tài chính với nhu cầu an toàn thôi. nếu có nhiều tiền thì làm như anh conmale đề nghị, tự vì Verisign bắt sẽ phải trả thêm tiền mặc dù chúng chỉ là những cert khác nhau của một common name mà thôi.
nếu là mình thì mình mua 1 cert thôi, xài chung cho tất cả các máy chủ web (hay là xài chung cho các thiết bị cân bằng tải nằm giữa khách hàng với máy chủ web thật sự). không có vấn đề gì về kỹ thuật cả. về mức độ an toàn thì cũng không khác gì mấy với việc mua nhiều cert. ví dụ như sợ rằng attacker xâm nhập vào máy chủ web chôm private key, nên phải dùng private key riêng cho từng máy chủ, nhưng thực ra nếu chúng đã vào được 1 máy chủ rồi, thì khả năng chúng có thể vào các máy chủ còn lại cũng sẽ rất cao.
vả lại có thể cất private key vào HSM, lúc đó sẽ khỏe re. mà lại rẻ nữa.
-m |
|
http://tinsang.net
TetCon 2013 http://tetcon.org
Làm an toàn thông tin thì học gì?/hvaonline/posts/list/42133.html |
|
|
|
[Discussion] Dùng CA từ verisgn trên nhiều Web Server chạy song song? |
29/01/2010 15:28:26 (+0700) | #9 | 204145 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
@thangdiablo: vấn đề là với những mục đích khác nhau thì Verisign lại có những khuyến cáo khác nhau. Cụ thể:
- Redandant: Verisign vẫn cho phép dùng chung certificate và private key cho một standby server. Nếu nhiều hơn một thì phải mua thêm license.
- Load balancing: chia làm 2 dạng:
- dynamic hostname: mỗi thằng phải dùng một certificate riêng hoặc có thể dùng wildcard certificates (*.yourcompany.com)
- identical hostname: mỗi thằng phải dùng một certificate riêng hoặc mua dạng Licensed Certificate Option.
Ngoài ra, trong tài liệu trên nó còn đề cập đến 2 dạng nữa là: SSL Acceleration và Shared hosting.
|
|
Let's build on a great foundation! |
|
|
|
[Discussion] Dùng CA từ verisgn trên nhiều Web Server chạy song song? |
29/01/2010 15:31:22 (+0700) | #10 | 204146 |
thangdiablo
HVA Friend
|
Joined: 11/05/2003 17:31:58
Messages: 734
Offline
|
|
Anh em cho mình hỏi thêm.
Ví dụ giữa các web server mình không có 1 thiết bị load blancing có khả năng generate ra CSR dạng như Citrix chẳng hạn mà đơn giản chỉ là sử dụng network load balance có sẵn trên Windows.
Như vậy việc generate ra CSR phải thực hiện trên từng WebServer. Nếu WebServer thứ 1 mình dùng Certificate của Verisign, WebServer thứ 2 mình muốn dùng Certificate của StartCom. Yêu cầu là common name không thay đổi. Như vậy có được không?
conmale wrote:
- Khi dữ liệu được encrypted từ client tới server là sao? Ý em là clients (browsers) từ encrypt cái gì rồi gởi lên server?
Hi anh, nếu 2 webserver dùng 2 cert được issued từ CA thì không có vấn đề rồi.
Tại lúc đầu em suy nghĩ tới hướng nếu chỉ có 1 server (Server A) generate ra CSR và CA signed vào sau đó có thể dùng chung cho nhiều servers thì các thằng servers còn lại này sẽ được CA xác minh cert bằng cách nào?
Vì lúc này khi client truy cập (đăng nhập user name + password) nguyên đống thông tin này sẽ được mã hóa bằng session key và session key lại được mã hóa bằng public key (cert) của Server. Và cert này sẽ được CA kiểm định xem có an toàn hay không. Nếu nó đi tới Server A thì server A có private key để mà giải mã.
Các server khác không có private key thì sẽ ứng xử thế nào hehe
|
|
Hãy sống có Tuệ Giác. |
|
|
|
[Discussion] Dùng CA từ verisgn trên nhiều Web Server chạy song song? |
29/01/2010 15:41:55 (+0700) | #11 | 204148 |
|
conmale
Administrator
|
Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
|
|
thangdiablo wrote:
Anh em cho mình hỏi thêm.
Ví dụ giữa các web server mình không có 1 thiết bị load blancing có khả năng generate ra CSR dạng như Citrix chẳng hạn mà đơn giản chỉ là sử dụng network load balance có sẵn trên Windows.
Như vậy việc generate ra CSR phải thực hiện trên từng WebServer. Nếu WebServer thứ 1 mình dùng Certificate của Verisign, WebServer thứ 2 mình muốn dùng Certificate của StartCom. Yêu cầu là common name không thay đổi. Như vậy có được không?
---> cái này thì tùy thuộc vào cái path mà requests đi vào và cơ chế duy trì session khi truy cập xuyên qua https. Nếu em load balancing theo kiểu dùng DNS round robin cho 2 web servers chẳng hạn mà 1 cái thì mang verisign, 1 cái thì mang startCom thì sẽ có vấn đề.
Giải pháp anh thường khai triển trong trường hợp này là tạo 1 cái reverse proxy đứng trước các web servers. Trên reverse proxy ấy mình chỉ cần 1 cert cho web.abc.com là đủ. Reverse proxy này có thể map vào trong 1, 2, 3.... 100 web servers cũng được. Tất nhiên là cái reverse proxy phải được bảo đảm uninterupted (mạng bảo đảm fully redundancy, thiết bị bảo đảm không chết sảng....). |
|
What bringing us together is stronger than what pulling us apart. |
|
|
|
[Discussion] Dùng CA từ verisgn trên nhiều Web Server chạy song song? |
29/01/2010 15:45:20 (+0700) | #12 | 204149 |
thangdiablo
HVA Friend
|
Joined: 11/05/2003 17:31:58
Messages: 734
Offline
|
|
Hi anh conmale,
Bên em dữ liệu là real time nên em không có suy nghĩ tới giải pháp là reverse proxy |
|
Hãy sống có Tuệ Giác. |
|
|
|
[Discussion] Dùng Cert từ verisgn trên nhiều Web Server chạy song song? |
29/01/2010 16:29:15 (+0700) | #13 | 204152 |
|
ORA2009
Member
|
0 |
|
|
Joined: 31/08/2009 11:04:02
Messages: 109
Offline
|
|
Bỏ qua vấn đề license thì ta hoàn toàn có thể dùng duy nhất 1 certificate cho nhiều web server với điều kiện bên ngoài Internet sử dụng duy nhất 1 common name đã đăng ký.
Thực tế ở đơn vị mình cũng đã triển khai cái này cho Internet Banking, mô hình của bên mình cũng dùng riêng 2 Server làm reverse proxy, 2 server này đều dùng Certificate đã cấp từ Verisign.
Mình nghĩ rằng có thể dùng bất kỳ 1 server nào để CSR, bởi vì sau khi có Certificate và đã được install vào 1 server rồi ta vẫn có thể export nó ra với private key kèm theo để import sang server khác.
Để giảm load cho Server nhiều nơi sẽ chọn giải pháp Install SSL ngay trên thiết bị Loadblancing (F5 chẳng hạn).
|
|
|
|
|
[Discussion] Dùng CA từ verisgn trên nhiều Web Server chạy song song? |
29/01/2010 16:38:25 (+0700) | #14 | 204154 |
|
conmale
Administrator
|
Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
|
|
thangdiablo wrote:
Hi anh conmale,
Bên em dữ liệu là real time nên em không có suy nghĩ tới giải pháp là reverse proxy
Reverse proxy không cache thì vẫn không ảnh hưởng gì đến dữ liệu real time cả. Đừng nghĩ "proxy" là phải cache. |
|
What bringing us together is stronger than what pulling us apart. |
|
|
|
[Discussion] Dùng Cert từ verisgn trên nhiều Web Server chạy song song? |
29/01/2010 16:48:42 (+0700) | #15 | 204156 |
|
ORA2009
Member
|
0 |
|
|
Joined: 31/08/2009 11:04:02
Messages: 109
Offline
|
|
Theo em được biết thì con Web Server của hệ thống Banking thường rất cần được bảo mật . Vì vậy chắc rằng mọi người cũng không dám đặt nó vào DMZ của Firewall. Đặt thêm reverse proxy no cache như anh conmale nói là rất hợp lý. |
|
|
|
|
[Discussion] Dùng Cert từ verisgn trên nhiều Web Server chạy song song? |
29/01/2010 17:25:52 (+0700) | #16 | 204161 |
mrro
Administrator
|
Joined: 27/12/2001 05:07:00
Messages: 745
Offline
|
|
@thangdiablo: CA hầu như không tham gia vào quá trình thực thi của bộ giao thức SSL/TLS. nói cách khác, trình duyệt và máy chủ hầu như chỉ nói chuyện trực tiếp với nhau, mà không phải kết nối đến một bên thứ 3 nào cả. CA chỉ đóng vai trò trong việc xác lập hạ tầng khóa công khai (PKI), hầu như không tham gia vào quá trình kiểm tra và xác thực cert.
vậy việc kiểm tra và xác thực cert diễn ra như thế nào? khi trình duyệt kết nối vào máy chủ web, máy chủ web gửi lại cert của họ, thì trình duyệt sẽ có trách nhiệm kiểm tra cert này. việc kiểm tra này gồm các bước (thứ tự tùy thuộc vào trình duyệt):
1. xem cert này được ai ký, và tổ chức ký cert này có được trình duyệt tín nhiệm hay không.
2. xem cert có còn hạn sử dụng hay không.
3. xem cert có bị vô hiệu hóa hay chưa.
4. xem common name của cert có trùng với tên của máy chủ mà trình duyệt đang kết nối hay không.
bước thứ 3 là lý do mà mình dùng từ "hầu như". trình duyệt (và máy chủ) có thể kết nối đến CA để kiểm tra xem certificate của bên còn lại có bị vô hiệu hóa hay chưa (revoked). RFC của TLS/SSL không bắt buộc các hiện thực TLS/SSL phải thực hiện bước này, và theo mình biết thì mặc định các trình duyệt không thực hiện việc kiểm tra này.
mình nghĩ thangdiablo nên dành thời gian xem kỹ lại SSL/TLS trước khi triển khai nó. đây là một bộ giao thức mạnh mẽ, nhưng cũng rất phức tạp nên dễ cấu hình và dùng sai. năm rồi mình có làm một cái báo cáo nhỏ, khảo sát một số ngân hàng ở VN, đa số đều cấu hình SSL/TLS sai, dẫn đến làm yếu hoặc vô hiệu hoàn toàn sức mạnh của SSL/TLS.
-m |
|
http://tinsang.net
TetCon 2013 http://tetcon.org
Làm an toàn thông tin thì học gì?/hvaonline/posts/list/42133.html |
|
|
|
[Discussion] Dùng CA từ verisgn trên nhiều Web Server chạy song song? |
29/01/2010 21:36:05 (+0700) | #17 | 204174 |
thangdiablo
HVA Friend
|
Joined: 11/05/2003 17:31:58
Messages: 734
Offline
|
|
conmale wrote:
Reverse proxy không cache thì vẫn không ảnh hưởng gì đến dữ liệu real time cả. Đừng nghĩ "proxy" là phải cache.
Cám ơn anh. Em sẽ cân nhắc việc sử dụng giải reverse proxy với việc mua 1 thiết bị web load balance dạng như Citrix.
@ mrro: Đúng là để hiểu rõ tường tận bộ giao thức SSL/TLS là rất phức tạp. Và tại VN rất ít tổ chức ứng dụng và khai thác hiệu quả bộ giao thức này.
Về việc trình CA chỉ đóng vai trò khi trình duyệt kiểm tra xem certificate này có bị revoked hay chưa thì mình hoàn toàn đồng ý.
Có 4 thông tin mà trình duyệt sẽ kiểm tra khi truy cập vào 1 trang web ứng dụng SSL như mrro đã nói.
Tuy nhiên mình có thắc mắc là nếu trình duyệt không thực hiện bước kiểm tra revoked thì nếu vì 1 lí do nào đó tổ chức bị CA revoked mà trình duyệt vẫn báo trusted thì sao? |
|
Hãy sống có Tuệ Giác. |
|
|
|
[Discussion] Dùng Cert từ verisgn trên nhiều Web Server chạy song song? |
30/01/2010 00:14:28 (+0700) | #18 | 204180 |
mfeng
Researcher
|
Joined: 29/10/2004 15:16:29
Messages: 243
Offline
|
|
Theo mình biết thì khi trình duyệt kết nối với một https webserver, mặc định các trình duyệt hiện nay (xem http://en.wikipedia.org/wiki/Online_Certificate_Status_Protocol#Browser_Support) đều kiểm tra tình trạng của certificate đó xem đã bị revoked hay chưa thông qua 2 con đường:
- OCSP: Nếu trong certificate có chỉ định giá trị CRL Distribution Points trong X509 Ext, trình duyệt sẽ sử dụng tham chiếu này để kiểm tra tự động; có thể thay đổi cấu hình này.
- CRL: được cập nhật bằng tay.
Nếu cert đã bị revoked mà web browser không thực hiện kiểm tra khi kết nối, coi như cert đó vẫn hợp lệ. |
|
|
|
|
[Discussion] Dùng Cert từ verisgn trên nhiều Web Server chạy song song? |
30/01/2010 11:00:14 (+0700) | #19 | 204195 |
myquartz
Member
|
0 |
|
|
Joined: 04/01/2005 04:58:30
Messages: 563
Offline
|
|
Chỉ có ý kiến về việc nhiều SSL web server.
Chỉ cần 1 bộ cert duy nhất cho tất cả các web server phục vụ chung 1 CN (hay domain). Trường hợp bác Thắng là ebanking.xxx.com.vn, cùng làm 1 nhiệm vụ, cùng một ứng dụng và chia sẻ session.
Thực chất, 1 bộ cert gồm: private/public key (cái này nếu xài IIS thì Win sinh ra, apache thì mọi ng dùng openssl) và cái cert (có chứa public key luôn). Mỗi thứ này có thể lưu như là 1 cái file, hoặc 1 cái file PKCS12 gộp chung. CSR chỉ là file tạm cho quá trình yêu cầu CA ký và trả về cert và sẽ ko còn giá trị khi việc đó xong xuôi.
Trường hợp IIS, chỉ cần sinh key, tạo CSR và lấy cert 1 lần, 1 máy. Sau đó, cùng CertManager của Win, export cái đó ra dạng p12, rồi load cái này vào IIS khác, rồi set cho IIS khác xài cái p12 đã load đó (ko sinh CSR mới). Việc backup file này cũng quan trọng vì lỡ máy IIS bị hư, cài lại thì có Cert+Key mà load lên.
Apache thì đơn giản hơn, copy mấy file key, cert là xong.
Một điểm phải lưu ý, mỗi khi client kết nối vào 1 web server cụ thể, nó có 1 loạt các thông tin như session key, cipher.... với web đó. Nếu không đảm bảo được việc client sẽ kết nối và luôn duy trì được kết nối (1 hay nhiều lần tạo/close) trong suốt phiên làm việc với web server cụ thể. Nếu ko, client cứ kết nối với web server mới thì lại phải bắt tay lại, sẽ làm chậm đi nhiều.
Apache thì em có khái niệm là SSL Session Cache. Thông tin này có thể config để chia sẻ giữa các instance (tất nhiên phải đảm bảo bảo mật vì lúc này session key nó truyền qua mạng nội bộ hoặc công cụ share). Như thế bất kỳ kết nối với web server nào cũng ko phải bắt tay.
Cách load balance thì có thể DNS hoặc có con load balance gateway, cái nào cũng có thể hoạt động với HTTPS được cả.
Quan điểm của em, em ko xài cách nhiều HTTPS web server này. Em hay thường xài cái gọi là SSL Accelerator nằm trước, nhằm giải phóng tài nguyên bớt cho web server vốn rất nặng nề, lại cho phép load balance, fail over, và nhiều cái khác.
P/S:Sao giờ mới thấy, HVA member kỳ cựu như mrro, nay là thangdiablo, lại làm ... banking nhiều thế? (kể cả tôi, ko dấu gì, cũng banking nốt). Hay lãnh vực này bà con cần nhiều bảo mật hơn cả, ở VN thôi. Không thấy bác nào khoe mình ở lãnh vực chính phủ hay là các công ty bảo mật nhỉ? |
|
|
|
|
[Discussion] Dùng CA từ verisgn trên nhiều Web Server chạy song song? |
30/01/2010 11:21:27 (+0700) | #20 | 204196 |
myquartz
Member
|
0 |
|
|
Joined: 04/01/2005 04:58:30
Messages: 563
Offline
|
|
thangdiablo wrote:
Về việc trình CA chỉ đóng vai trò khi trình duyệt kiểm tra xem certificate này có bị revoked hay chưa thì mình hoàn toàn đồng ý.
Có 4 thông tin mà trình duyệt sẽ kiểm tra khi truy cập vào 1 trang web ứng dụng SSL như mrro đã nói.
Tuy nhiên mình có thắc mắc là nếu trình duyệt không thực hiện bước kiểm tra revoked thì nếu vì 1 lí do nào đó tổ chức bị CA revoked mà trình duyệt vẫn báo trusted thì sao?
Trong cái cert của CA (nhớ là Cert của CA, tự CA ký), nó có 1 thông số là Revoke url và CRL Expire time. Cái này bảo cho trình duyệt biết địa chỉ để tải CRL, và bao lâu thì phải kiểm tra lại cái CRL này và việc kiểm tra CRL là bắt buộc.
Tất nhiên, nếu trình duyệt không thể kiểm tra server cert qua CRL (lỗi gì đó hoặc bị cản), hoặc thời gian truy cập nó rơi vào khe thời gian giữa 2 lần update (bằng thời gian expire time) thì dĩ nhiên trình duyệt không thể biết được, sẽ trusted hay untrust tuỳ theo chế độ mặc định (sẽ untrust nếu ko thể verify được CRL chẳng hạn).
Vì thế, với các CA class 3 hoặc EV, người ta để thời gian expire này nhỏ, chỉ một vài ngày thôi, giảm đi rủi ro. Ngoài ra thêm 1 cơ chế như EV để xác thực bổ sung với 1 đối tác thứ 3. Thí dụng trình duyệt IE nếu không bật SmartScreen Filter, sẽ không bao giờ xác nhận EV cho một site nào đó.
|
|
|
|
|
[Discussion] Dùng CA từ verisgn trên nhiều Web Server chạy song song? |
31/01/2010 07:12:49 (+0700) | #21 | 204246 |
gamar
Member
|
0 |
|
|
Joined: 25/09/2009 19:22:29
Messages: 23
Offline
|
|
thangdiablo wrote:
Vì lúc này khi client truy cập (đăng nhập user name + password) nguyên đống thông tin này sẽ được mã hóa bằng session key và session key lại được mã hóa bằng public key (cert) của Server. Và cert này sẽ được CA kiểm định xem có an toàn hay không. Nếu nó đi tới Server A thì server A có private key để mà giải mã.
nếu mình không nhầm thì ở đây thangdiablo hỏi về chiều ngược lại so với giải thích của mrro.
Còn đoạn mà mrro nói sẽ giải thích chỗ "... Và cert này sẽ được CA kiểm định xem có an toàn hay không " (mặc dù không hẳn là được CA kiểm định vì CA chỉ "ra tay" khi user muốn biết info revoked của 1 cert xác định)
thangdiablo wrote:
Các server khác không có private key thì sẽ ứng xử thế nào hehe
Còn chuyện private key của server thì mình nghĩ server nào cũng có public/private key của nó cả. Thế nếu mà mỗi server có cặp key riêng thì không thể nào dùng 1 cert được (mình có câu hỏi, làm sao các bạn chứng minh được là không tồn tại 2 cặp key: public1/private1 và public2/private2 sao cho public1=public2 và private1!=private2 ?)
Ngược lại nếu muốn dùng 1 cert và chỉ cần 1 CSR thì sẽ set cặp public/private key duy nhất cho tất cả các server (liệu chỗ này mình chỉ cần set public key thôi là đủ không nhỉ, vì thuật toàn mã hóa public key sẽ tự tìm ra private key tương ứng)... |
|
|
|
|
[Discussion] Dùng Cert từ verisgn trên nhiều Web Server chạy song song? |
31/01/2010 09:11:34 (+0700) | #22 | 204257 |
mrro
Administrator
|
Joined: 27/12/2001 05:07:00
Messages: 745
Offline
|
|
gamar wrote:
mình có câu hỏi, làm sao các bạn chứng minh được là không tồn tại 2 cặp key: public1/private1 và public2/private2 sao cho public1=public2 và private1!=private2
bạn có học qua lý thuyết số thì sẽ thấy việc chứng minh này rất dễ dàng. giải thích cái này dài dòng, nằm ngoài nội dung của chủ đề này, nên mình không viết ra ở đây.
gamar wrote:
Ngược lại nếu muốn dùng 1 cert và chỉ cần 1 CSR thì sẽ set cặp public/private key duy nhất cho tất cả các server (liệu chỗ này mình chỉ cần set public key thôi là đủ không nhỉ, vì thuật toàn mã hóa public key sẽ tự tìm ra private key tương ứng)...
he he he nếu mà cái chỗ màu đỏ đúng thì còn gì hệ mã khóa công khai nữa bạn. ngược lại thì đúng, nghĩa là có private key thì sẽ tính được public key, nhưng mà nhìn vào public key không thể nào tính được private key.
@mfeng: cảm ơn. mình mới thử sniff lại thì thấy đúng là Firefox3 có kết nối đến máy chủ chứa CRL Distribution list của Verisign. Nhưng không thấy nó kết nối đến máy chủ OCSP nha.
-m
|
|
http://tinsang.net
TetCon 2013 http://tetcon.org
Làm an toàn thông tin thì học gì?/hvaonline/posts/list/42133.html |
|
|
|
[Discussion] Dùng Cert từ verisgn trên nhiều Web Server chạy song song? |
31/01/2010 12:08:11 (+0700) | #23 | 204270 |
StarGhost
Elite Member
|
0 |
|
|
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
|
|
mrro wrote:
he he he nếu mà cái chỗ màu đỏ đúng thì còn gì hệ mã khóa công khai nữa bạn. ngược lại thì đúng, nghĩa là có private key thì sẽ tính được public key, nhưng mà nhìn vào public key không thể nào tính được private key.
Ậy ậy, bạn mrro cẩn thận chỗ này. Trong security definition của public-key cryptography không có yêu cầu cái này, và cái này cũng không đúng (vd: RSA, Elgamal, Cramer-Shoup) |
|
Mind your thought. |
|
|
|
[Discussion] Dùng Cert từ verisgn trên nhiều Web Server chạy song song? |
31/01/2010 14:00:02 (+0700) | #24 | 204276 |
mrro
Administrator
|
Joined: 27/12/2001 05:07:00
Messages: 745
Offline
|
|
@StarGhost: mình đang nói đến thông tin nằm trong file chứa private key, còn SG lại nói về lý thuyết.
Dẫu vậy đây cũng là một vấn đề hay, mình không biết Elgamal và Cramer-Shoup nên không dám nói bừa, mình có biết chút ít về RSA nên thử bàn xem: liệu biết (n, d) có thể tính được e hay không? Đương nhiên lúc này e phải thỏa mãn những tính chất khi người ta chọn e trong thực tế, ví dụ như e phải rất nhỏ.
-m |
|
http://tinsang.net
TetCon 2013 http://tetcon.org
Làm an toàn thông tin thì học gì?/hvaonline/posts/list/42133.html |
|
|
|
[Discussion] Dùng Cert từ verisgn trên nhiều Web Server chạy song song? |
31/01/2010 16:20:57 (+0700) | #25 | 204288 |
gamar
Member
|
0 |
|
|
Joined: 25/09/2009 19:22:29
Messages: 23
Offline
|
|
mrro wrote:
bạn có học qua lý thuyết số thì sẽ thấy việc chứng minh này rất dễ dàng. giải thích cái này dài dòng, nằm ngoài nội dung của chủ đề này, nên mình không viết ra ở đây.
uhm mình cũng nghĩ cái này chứng minh toán học và bắt buộc phải thỏa mãn điều này thì mới đảm bảo tính chất an toàn của hệ thống mã khóa công khai. Có điều chứng minh dễ hay không, và nó có tùy thuộc vào từng loại thuật toán không thì mình không biết ...
mrro wrote:
gamar wrote:
Ngược lại nếu muốn dùng 1 cert và chỉ cần 1 CSR thì sẽ set cặp public/private key duy nhất cho tất cả các server (liệu chỗ này mình chỉ cần set public key thôi là đủ không nhỉ, vì thuật toàn mã hóa public key sẽ tự tìm ra private key tương ứng)...
he he he nếu mà cái chỗ màu đỏ đúng thì còn gì hệ mã khóa công khai nữa bạn. ngược lại thì đúng, nghĩa là có private key thì sẽ tính được public key, nhưng mà nhìn vào public key không thể nào tính được private key.
chỗ này mình kết luận linh tinh quá, nếu mà từ public mà suy ra được private thì đúng là chả cần khóa làm gì cả hehe
mrro wrote:
liệu biết (n, d) có thể tính được e hay không? Đương nhiên lúc này e phải thỏa mãn những tính chất khi người ta chọn e trong thực tế, ví dụ như e phải rất nhỏ.
từ (n,d) suy ra e thì chắc chỉ có bruteforce và trong trường hợp này bruteforce chắc cũng thua . Tuy nhiên có private rồi thì kiểu gì cũng có public, cần gì phải tìm ra làm gì nữa
|
|
|
|
|
[Discussion] Dùng Cert từ verisgn trên nhiều Web Server chạy song song? |
31/01/2010 16:32:12 (+0700) | #26 | 204289 |
StarGhost
Elite Member
|
0 |
|
|
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
|
|
mrro wrote:
@StarGhost: mình đang nói đến thông tin nằm trong file chứa private key, còn SG lại nói về lý thuyết.
À à, thế mình lại sai rồi. Cái này mình không nhớ rõ. Sau này mình không bàn luận bừa nữa.
mrro wrote:
Dẫu vậy đây cũng là một vấn đề hay, mình không biết Elgamal và Cramer-Shoup nên không dám nói bừa, mình có biết chút ít về RSA nên thử bàn xem: liệu biết (n, d) có thể tính được e hay không? Đương nhiên lúc này e phải thỏa mãn những tính chất khi người ta chọn e trong thực tế, ví dụ như e phải rất nhỏ.
Hì hì, nếu nói như mrro thì chả cần có private key mình cũng biết e là gì (với xác suất cao), vì hầu hết bây giờ người ta toàn dùng e = 65537. Lí do: i) 65537 đủ nhỏ mà cũng đủ lớn (để encrypt nhanh) ii) 65537 = 2^16+1 (để tính toán nhanh) iii) 65537 là một số nguyên tố (để chọn p,q nhanh).
Còn Elgamal và Cramer-Shoup thì hiển nhiên không được, vì mapping từ PubKey Set -> PriKey set không phải là one-to-one. |
|
Mind your thought. |
|
|
|
[Discussion] Dùng Cert từ verisgn trên nhiều Web Server chạy song song? |
31/01/2010 21:17:19 (+0700) | #27 | 204298 |
myquartz
Member
|
0 |
|
|
Joined: 04/01/2005 04:58:30
Messages: 563
Offline
|
|
Trong RSA, có private key ko tính toán được public key, và ngược lại, 2 con số này (2 cái key thực ra là 2 con số nguyên tố), nó quan hệ toán học với nhau đối xứng thì mới thành cặp key, nếu không phải thì ko thể thành cặp. Nếu xét về mặt toán thì cái nào là public, cái nào là private cũng được, quan trọng là giữ bí mật cái nào thì cái đó là private key, vậy thôi. (tham khảo http://en.wikipedia.org/wiki/RSA ).
Nguyên lý của nó, là bạn mã hoá bằng public thì giải mã bằng private, và ký bằng private (thực chất là mã hoá chuỗi hash của plain text), sẽ giải mã được bằng public, so cái chuỗi hash được giải mã đó với hash của plain text nhận được thì biết là đúng chữ ký hay không.
Hàm của nó kiểu:
e = c(p,pub)
=> p = c(e,pv).
<=>
e = c(p,pv)
p = c(e,pub)
Trong đó: e = bản đã mã, hoặc ký, p = plain, pv: private, pub = public. c là hàm mã hoá.
Về việc ko thể tính toán, nói đúng hơn ko phải ko tính ra được, mà là thời gian tính nó rất dài với năng lực của máy tính hiện tại (kể cả siêu máy tinh) thành ra là impossible. Tỉ dụ nếu độ dài 512bit (số 512bit độ dài, to lắm đấy, so với máy tính 64bit thì biết), ng ta nói rằng một số siêu máy tính trên thế giới đã có thể tính toán được ra cặp đối xứng đó, trong vòng 1 vài năm. Nhưng, với 1024, 2048 hoặc hơn, thì phải hàng ngàn, triệu năm.
RSA dựa vào nguyên tắc là việc tính toán ra số nguyên tố cực lớn là một việc cực kỳ vất vả. Nếu bẻ gãy được việc này, giảm thời gian đó xuống thì sẽ giải mã được RSA.
Cũng vì điều này, giải mã, mã hoá bất đối xứng như RSA, hay cả DSA là một việc tốn kém năng lực của máy tính, người ta không dùng nó để mã hoá cả 1 đoạn text dài, chỉ mã hoá hoặc ký vào symetric key hay là hash thôi, hay ký trong certificate hash. Symetric key này sẽ tiếp tục làm cái việc là mã hoá plain text bằng 1 block cipher có tốc độ cao hơn. Session key chính là Symetric key, lộ cái này thì phiên SSL cũng coi như là bị giải mã.
Có một câu chuyện bảo mật gần đây, liên quan đến bộ RSA này, là việc sinh key. Nó dựa theo việc sinh ra 1 cặp số nguyên tố ngẫu nhiên rồi tính ra key. Tính ngẫu nhiên đó cực kỳ quan trọng, bởi nếu đoán được "ngẫu nhiên" ra sao thì coi như là tính ra key ngay. Đó là lỗi sinh key OpenSSL của các lập trình viên Debian, và vạ lây là Ubuntu hay các derived distro, khi "quote" lại đoạn code tăng thêm yếu tố ngẫu nhiên, làm giảm bớt tính ngẫu nhiên, đâu như có 65K trường hợp. Thế là bà con có thể sinh ra 65K trường hợp đó để thành 65K key và tấn công hệ thống Debian từ 65K cặp đó (cứ so thấy public key giống nhau là vác cái private ra mà táng được). |
|
|
|
|
[Discussion] Dùng Cert từ verisgn trên nhiều Web Server chạy song song? |
31/01/2010 22:37:44 (+0700) | #28 | 204304 |
mrro
Administrator
|
Joined: 27/12/2001 05:07:00
Messages: 745
Offline
|
|
@SG: ha ha mình cố tình chọc SG thôi . dẫu vậy thì cái này cũng là ví dụ tiêu biểu là thực tế, vì nhiều lý do, khác với lý thuyết.
he he he ngoài lề một chút, ở HVAOnline nếu tìm người có thể so sánh được với SG về mức độ cẩn trọng trong từng lời nói và suy nghĩ, chắc chỉ có anh prof.
@myquartz: thế nào tí nữa bạn StarGhost cũng sẽ vô *hỏi thăm* đoạn vừa rồi mà bạn viết. mình cũng tính nói mà thấy SG với myquartz thích nói chuyện với nhau, nên để hai bạn nói .
-m |
|
http://tinsang.net
TetCon 2013 http://tetcon.org
Làm an toàn thông tin thì học gì?/hvaonline/posts/list/42133.html |
|
|
|
[Discussion] Dùng Cert từ verisgn trên nhiều Web Server chạy song song? |
31/01/2010 23:24:26 (+0700) | #29 | 204306 |
namnx
Member
|
0 |
|
|
Joined: 09/07/2006 01:22:18
Messages: 5
Offline
|
|
StarGhost wrote:
mrro wrote:
@StarGhost: mình đang nói đến thông tin nằm trong file chứa private key, còn SG lại nói về lý thuyết.
À à, thế mình lại sai rồi. Cái này mình không nhớ rõ. Sau này mình không bàn luận bừa nữa.
Cái này cũng là một vấn đề. Có bạn nào thử tìm hiểu xem trong file private key nó chứa những thông tin gì ko?
StarGhost wrote:
mrro wrote:
Dẫu vậy đây cũng là một vấn đề hay, mình không biết Elgamal và Cramer-Shoup nên không dám nói bừa, mình có biết chút ít về RSA nên thử bàn xem: liệu biết (n, d) có thể tính được e hay không? Đương nhiên lúc này e phải thỏa mãn những tính chất khi người ta chọn e trong thực tế, ví dụ như e phải rất nhỏ.
Hì hì, nếu nói như mrro thì chả cần có private key mình cũng biết e là gì (với xác suất cao), vì hầu hết bây giờ người ta toàn dùng e = 65537. Lí do: i) 65537 đủ nhỏ mà cũng đủ lớn (để encrypt nhanh) ii) 65537 = 2^16+1 (để tính toán nhanh) iii) 65537 là một số nguyên tố (để chọn p,q nhanh).
Còn Elgamal và Cramer-Shoup thì hiển nhiên không được, vì mapping từ PubKey Set -> PriKey set không phải là one-to-one.
Nếu người ta không chọn e=65537 thì bạn làm thế nào để tìm? :-D
|
|
-namnx |
|
|
|
[Discussion] Dùng Cert từ verisgn trên nhiều Web Server chạy song song? |
01/02/2010 06:54:31 (+0700) | #30 | 204307 |
StarGhost
Elite Member
|
0 |
|
|
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
|
|
Dưới đây là một số bổ sung cho post của bạn myquartz. Các giải thích toán học quá dài dòng nên mình đành bỏ qua, dù vậy chúng rất hiển nhiên.
myquartz wrote:
Trong RSA, có private key ko tính toán được public key, và ngược lại, 2 con số này (2 cái key thực ra là 2 con số nguyên tố), nó quan hệ toán học với nhau đối xứng thì mới thành cặp key, nếu không phải thì ko thể thành cặp. Nếu xét về mặt toán thì cái nào là public, cái nào là private cũng được, quan trọng là giữ bí mật cái nào thì cái đó là private key, vậy thôi. (tham khảo http://en.wikipedia.org/wiki/RSA ).
Nguyên lý của nó, là bạn mã hoá bằng public thì giải mã bằng private, và ký bằng private (thực chất là mã hoá chuỗi hash của plain text), sẽ giải mã được bằng public, so cái chuỗi hash được giải mã đó với hash của plain text nhận được thì biết là đúng chữ ký hay không.
Hàm của nó kiểu:
e = c(p,pub)
=> p = c(e,pv).
<=>
e = c(p,pv)
p = c(e,pub)
Trong đó: e = bản đã mã, hoặc ký, p = plain, pv: private, pub = public. c là hàm mã hoá.
Về việc ko thể tính toán, nói đúng hơn ko phải ko tính ra được, mà là thời gian tính nó rất dài với năng lực của máy tính hiện tại (kể cả siêu máy tinh) thành ra là impossible. Tỉ dụ nếu độ dài 512bit (số 512bit độ dài, to lắm đấy, so với máy tính 64bit thì biết), ng ta nói rằng một số siêu máy tính trên thế giới đã có thể tính toán được ra cặp đối xứng đó, trong vòng 1 vài năm. Nhưng, với 1024, 2048 hoặc hơn, thì phải hàng ngàn, triệu năm.
RSA dựa vào nguyên tắc là việc tính toán ra số nguyên tố cực lớn là một việc cực kỳ vất vả. Nếu bẻ gãy được việc này, giảm thời gian đó xuống thì sẽ giải mã được RSA.
Cũng vì điều này, giải mã, mã hoá bất đối xứng như RSA, hay cả DSA là một việc tốn kém năng lực của máy tính, người ta không dùng nó để mã hoá cả 1 đoạn text dài, chỉ mã hoá hoặc ký vào symetric key hay là hash thôi, hay ký trong certificate hash. Symetric key này sẽ tiếp tục làm cái việc là mã hoá plain text bằng 1 block cipher có tốc độ cao hơn. Session key chính là Symetric key, lộ cái này thì phiên SSL cũng coi như là bị giải mã.
--> Mình nghĩ bạn myquartz đang nói đến e và d trong RSA. Như vậy mình cho rằng khó có khả năng đây là 2 số nguyên tố.
--> Thực ra việc bẻ khóa RSA không lâu đến vậy. Với 512bit thì chỉ cần ba trăm máy tính (thời cách đây chục năm) trong khoảng vài tháng là đã ra. Còn nếu nói siêu máy tính thì chỉ trong cấp độ tuần. Đấy là mình nói về mặt tổng quát, tức là bẻ bất cứ khóa 512 bit nào, chứ không tính đến một số loại khóa bẻ nhanh hơn. Hiện nay có bộ thuật toán *NFS giải quyết vấn đề này nhanh nhất (mà theo mình biết VN ta có bác rd là chuyên gia, đã từng viết vài papers cải tiến vài khâu quan trọng).
--> Đoạn này mình không hiểu lắm, ý bạn có phải là nếu mình muốn tìm một số nguyên tố có độ dài 500 bits là rất vất vả, và RSA dựa vào nguyên tắc này? Nếu vậy thì mình không đồng ý lắm. Trên thực tế, RSA không dựa vào bất cứ nguyên tắc nào liên quan đến số nguyên tố cả.
--> "điều này" = "việc tính toán số nguyên tố lớn rất vất vả"? Mình nghĩ chưa chắc, vì khi mã hóa hoặc giải mã có động gì đến số nguyên tố đâu. |
|
Mind your thought. |
|
|
|
|
|
|
Users currently in here |
1 Anonymous
|
|
Powered by JForum - Extended by HVAOnline
hvaonline.net | hvaforum.net | hvazone.net | hvanews.net | vnhacker.org
1999 - 2013 ©
v2012|0504|218|
|
|