banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận bảo mật One Time Password  XML
  [Discussion]   One Time Password 15/09/2009 05:36:04 (+0700) | #1 | 192763
thangdiablo
HVA Friend

Joined: 11/05/2003 17:31:58
Messages: 734
Offline
[Profile] [PM] [WWW]
Hi all,
Trên HVA hiện cũng có vài topic về chủ đề này nhưng rải rác và được thảo luận sôi nổi lắm.
Với lại hiện tại mình đang trong qúa trình làm OTP cho hệ thống của công ty. Mình có 1 số thắc mắc cũng như kinh nghiệm muốn trao đổi cùng anh em nên lập ra topic này.

Relate topic:
/hvaonline/posts/list/26513.html
/hvaonline/posts/list/30760.html

Do đây không phải là bài viết hướng dẫn nên không có giới thiệu cũng như hướng dẫn cách làm. Mà chỉ nêu ra những thắc mắc hoặc kinh nghiệm cần trai đổi trong quá trình làm OTP.

Hiện bên mình đang sử dụng RSA với tokens là hardware, Base Server License.

Mình setup agent là windows thành công và khi muốn access vào agent thì phải dùng UserID + Passcode (Pin + 6 digit numbers on token)
Để tránh nhầm lẫn ngay từ bài đầu tiên này mình nói rõ ý nghĩa của mấy cụm từ như PIN, PASScode ..etc vì nó có rất nhiều thứ mà thông thường chúng ta hay gọi là "password"

PIN = là 1 chuỗi ký tự cố định được set trên RSA Authentication Manager.
Passcode = là PIN + 1 chuỗi ký tự radom được thể hiện trên token
Password = là mật khẩu cố định của agents (windows, linux, firewall ...etc)

Việc access vào agent bằng UserID + .... gì gì phía sau thì tùy mình set option. Cái này không quan trọng.

Lúc này khi login vào Windows đương nhiên phải sử dụng UserID + Passcode. Đến đây nghĩ thấy...bảo mật quá smilie
Nhưng khi mình thử share 1 folder trên windows và từ client mình access vào thư mục share bằng user ID + password.
Nó vẫn vào được bình thường, như vậy có vẻ không ổn lắm nhỉ?
Các bạn khác có ý kiến gì không?

Còn vài thứ muốn chia sẻ với anh em khi móc LDAP từ RSA AM nhưng từ từ đã.
Hãy sống có Tuệ Giác.
[Up] [Print Copy]
  [Discussion]   One Time Password 15/09/2009 22:45:44 (+0700) | #2 | 192820
[Avatar]
Ikut3
Elite Member

[Minus]    0    [Plus]
Joined: 24/09/2007 23:47:03
Messages: 1429
Location: Nhà hát lớn
Offline
[Profile] [PM] [Yahoo!]
Em cũng chẳng biết gì nhiều về cơ chế này nhưng Google thì thấy Một mã nguồn mở code C cho cơ chế One Time Password . Mang lên cho mọi người cùng tham khảo smilie

http://www.cl.cam.ac.uk/~mgk25/otpw.html
[Up] [Print Copy]
  [Discussion]   One Time Password 15/09/2009 22:53:00 (+0700) | #3 | 192823
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

Ikut3 wrote:
Em cũng chẳng biết gì nhiều về cơ chế này nhưng Google thì thấy Một mã nguồn mở code C cho cơ chế One Time Password . Mang lên cho mọi người cùng tham khảo smilie

http://www.cl.cam.ac.uk/~mgk25/otpw.html 

Không liên quan rồi em ơi.
Let's build on a great foundation!
[Up] [Print Copy]
  [Discussion]   One Time Password 15/09/2009 23:56:02 (+0700) | #4 | 192835
Cuncon201
Member

[Minus]    0    [Plus]
Joined: 12/08/2009 04:37:42
Messages: 7
Offline
[Profile] [PM]
Cho em hỏi. Thuật toán tạo passcode dùng HOTP = HMAC-SHA1 đồng bộ giữa client và server dựa vào 2 yếu tố chính là shared secret và movingFactor.
MovingFactor là đồng bộ về thời gian, thời gian trên server là giờ hệ thống của server, còn thời gian trên client( mobile) là giờ hệ thống của client. Lỡ thời gian giữa 2 cái ko đồng bộ thì sao? Có cách nào giải quyết tốt vấn đề này? Hay phải tự đồng bộ thời gian giữa client và server?
Shared secret là một key bí mật cần trao đổi giữa client và server ( em hiểu nôm na là thế).Vậy cho em hỏi cơ chế tạo ra secret là ntn?
Em đang làm đề tài về vấn đề này. Mong mấy anh giúp đỡ.
Thân.
[Up] [Print Copy]
  [Discussion]   One Time Password 16/09/2009 00:54:11 (+0700) | #5 | 192851
thangdiablo
HVA Friend

Joined: 11/05/2003 17:31:58
Messages: 734
Offline
[Profile] [PM] [WWW]

Cuncon201 wrote:
Cho em hỏi. Thuật toán tạo passcode dùng HOTP = HMAC-SHA1 đồng bộ giữa client và server dựa vào 2 yếu tố chính là shared secret và movingFactor.
MovingFactor là đồng bộ về thời gian, thời gian trên server là giờ hệ thống của server, còn thời gian trên client( mobile) là giờ hệ thống của client. Lỡ thời gian giữa 2 cái ko đồng bộ thì sao? Có cách nào giải quyết tốt vấn đề này? Hay phải tự đồng bộ thời gian giữa client và server?

Em đang làm đề tài về vấn đề này. Mong mấy anh giúp đỡ.
Thân. 


Theo mình được biết, giữa token và authentication server được đồng bộ với nhau bằng 2 cách
- Cách thứ 1 gọi là time base
- Cách thứ 2 gọi là event base

Còn cách gọi shared secret hay MovingFactor có thể là 1 cách gọi trong 1 số tài liệu khác
Với cách thứ 1 thì token sẽ hiển thị chuỗi số radom 1 cách liên tục và thời gian đồng bộ giữa token và authentication manager (AM không vượt quá 1 phút).
Với cách thứ 2 thì trên token có 1 nút bấm để tạo ra 1 số radom. Chuỗi số này đống bộ với thuật toán một chiều trên AM.

Với cả 2 cách đều có những thời điểm giữa token và AM không đồng bộ được với nhau về thời gian hoặc sai giá trị về thuật toán.
Khi gặp những trường hợp này thì chúng ta có thể sync ( đồng bộ ) lại giữa token vào AM bằng cách sau khi gõ passcode lần thứ 1, bạn sẽ được yêu cầu gõ passcode lần thứ 2.

Shared secret là một key bí mật cần trao đổi giữa client và server ( em hiểu nôm na là thế).Vậy cho em hỏi cơ chế tạo ra secret là ntn? 


Giữa AM và agent sẽ được xác thực và mã hóa thông tin với nhau thông qua node secret.
Lần đầu tiên khi Agent có yêu cầu được chứng thực với AM thì nó sẽ gửi tới AM node secret. AM sẽ respond node secret này hợp lệ hay không trong lần authen đầu tiên để đảm bảo agent đó là đáng tin cậy.
Nó giống kiểu SSH bằng pubkey.
Node Seret được tạo ra trên servers và copy sang cho agents.
Hãy sống có Tuệ Giác.
[Up] [Print Copy]
  [Discussion]   One Time Password 16/09/2009 03:16:07 (+0700) | #6 | 192870
Cuncon201
Member

[Minus]    0    [Plus]
Joined: 12/08/2009 04:37:42
Messages: 7
Offline
[Profile] [PM]

thangdiablo wrote:


Với cách thứ 1 thì token sẽ hiển thị chuỗi số radom 1 cách liên tục và thời gian đồng bộ giữa token và authentication manager (AM không vượt quá 1 phút.
Với cách thứ 2 thì trên token có 1 nút bấm để tạo ra 1 số radom. Chuỗi số này đống bộ với thuật toán một chiều trên AM.

Với cả 2 cách đều có những thời điểm giữa token và AM không đồng bộ được với nhau về thời gian hoặc sai giá trị về thuật toán.
Khi gặp những trường hợp này thì chúng ta có thể sync ( đồng bộ ) lại giữa token vào AM bằng cách sau khi gõ passcode lần thứ 1, bạn sẽ được yêu cầu gõ passcode lần thứ 2.

 

Gõ passcode lần thứ 2 có tác dụng ji? Em ko hiểu? Với 2 cách anh nói thì random đều đựa theo thời gian cả. Chỉ là 1 cái 1 khoảng tg nó random còn 1 cái khi người dùng cần thì nó random thôi.Còn client và AM chỉ xác thực 1 lần duy nhất. Vì vậy mốc tg là bên phía mỗi thiết bị. Vậy giã sử tg bên token chậm hơn bên server thì nhập passcode lần 2 để làm ji? Em ko hiểu.

Giữa AM và agent sẽ được xác thực và mã hóa thông tin với nhau thông qua node secret.
Lần đầu tiên khi Agent có yêu cầu được chứng thực với AM thì nó sẽ gửi tới AM node secret. AM sẽ respond node secret này hợp lệ hay không trong lần authen đầu tiên để đảm bảo agent đó là đáng tin cậy.
Nó giống kiểu SSH bằng pubkey.
Node Seret được tạo ra trên servers và copy sang cho agents. 

Anh có thể giải thích giùm em chơ chế gửi node secret từ client tới server và cơ chế node secret được tạo ra bên server là ntn để nó phân biệt dc các agent của nó?
Thank anh.
[Up] [Print Copy]
  [Discussion]   One Time Password 16/09/2009 04:02:37 (+0700) | #7 | 192880
thangdiablo
HVA Friend

Joined: 11/05/2003 17:31:58
Messages: 734
Offline
[Profile] [PM] [WWW]

Cuncon201 wrote:

Gõ passcode lần thứ 2 có tác dụng ji? Em ko hiểu? Với 2 cách anh nói thì random đều đựa theo thời gian cả. Chỉ là 1 cái 1 khoảng tg nó random còn 1 cái khi người dùng cần thì nó random thôi.Còn client và AM chỉ xác thực 1 lần duy nhất. Vì vậy mốc tg là bên phía mỗi thiết bị. Vậy giã sử tg bên token chậm hơn bên server thì nhập passcode lần 2 để làm ji? Em ko hiểu.
 

Thế này nhé!
Với Token ở dạng time base cần phải đồng bộ lại khi cái đồng hồ (clock) giữa AM và token không còn giống nhau nữa.
Với Token ở dạng Event base cần phải đồng bộ lại khi tokencode count giữa AM và token không còn giống nhau nữa.
Nghĩa là bộ đếm của thuật toán 1 chiều không khớp nhau tại 1 thời điểm.


Mình ví dụ ở thời điểm phút 01 ngày 01 tháng 01 năm 2001 thì passcode trên AM và Token đều đồng bộ là 111111
Tuy nhiên vì lí do gì đó, sau 1 tháng token mất đồng bộ về passcode với AM. Nghĩa là phút 01 ngày 01 tháng 02 năm 2001 passcode trên AM là 999999 nhưng passcode trên token bị chậm mất 1 phút vẫn là 888888

Do đó khi user gõ 888888 vào thì AM báo xác thực bị lỗi. Lúc này cách làm là admin sẽ đồng bộ lại token với AM bằng cách gõ passcode 2 lần.

Lần thứ 1 vd passcode là 888888
Sau đó chờ 1' để token chuyển sang passcode mới thì gõ lần thứ 2 là 999999
Lúc này AM sẽ tự động chuyển lại thời gian sinh ra passcode sao cho trùng với đồng hồ của token.
Thuật toán về đồng bộ thời gian mà RSA đang sử dụng là AES-TIME
Đó là sync với token là time base.
Còn với Event base thì trong RSA có 1 mode gọi là Database Recovery Mode dùng để reset lại thuật toán trên AM.



Anh có thể giải thích giùm em chơ chế gửi node secret từ client tới server và cơ chế node secret được tạo ra bên server là ntn để nó phân biệt dc các agent của nó?
Thank anh. 


Node secret là 1 thuật ngữ trong RSA, còn với Entrust hay Vasco có thể người ta gọi tên kiểu khác. Tuy nhiên, về mặt ý nghĩa thì nó cũng giống nhau.
Node Secret là 1 shares secret giữa Agent với AM. Agent sẽ sử dụng node secret để mã hóa yêu cầu xác thưc và gửi nó tới AM.

Vd như Agent nó chạy lên AM kêu là " Anh ơi! Passcode của em là 123456 có đúng không anh, anh cho em vào nhé? " Thì nguyên cái đoạn hỏi này agent sẽ dùng node secret để mã hóa.

Giữa AM và Agent phải hoàn toàn đồng ý với nhau về trạng thái của node secret. Thật ra cái này cũng không khó hình dung. Để dễ hiểu hơn bạn cứ nghĩ tới việc thỏa thuận các thuật toán mã hóa, xác thực ..etc trong quá trình thiệt lập VPN IPSEC site to site ấy.

Có 2 cách để tạo ra 1 node secret. Như cách trình bày bên trên là cách tạo tự động khi có yêu cầu của agent và AM xác nhận đây là trust agent. Tất nhiên, các agent này đều phải được add bằng tay trên AM.
Ngoài ra cũng có thể tạo node secret trên AM trước, sau đó copy sang Agent.
Hãy sống có Tuệ Giác.
[Up] [Print Copy]
  [Discussion]   One Time Password 16/09/2009 04:42:25 (+0700) | #8 | 192890
Cuncon201
Member

[Minus]    0    [Plus]
Joined: 12/08/2009 04:37:42
Messages: 7
Offline
[Profile] [PM]
Cảm ơn anh. Em đã hiểu, em cứ tưởng nó phức tạp hơn nhiều.Để em làm thử, có gì không biết em sẽ xin ảnh chỉ giáo tiếp!
[Up] [Print Copy]
  [Discussion]   One Time Password 16/09/2009 07:04:58 (+0700) | #9 | 192929
mrro
Administrator

Joined: 27/12/2001 05:07:00
Messages: 745
Offline
[Profile] [PM]

thangdiablo wrote:

Lúc này khi login vào Windows đương nhiên phải sử dụng UserID + Pin + Passcode. Đến đây nghĩ thấy...bảo mật quá smilie

Nhưng khi mình thử share 1 folder trên windows và từ client mình access vào thư mục share bằng user ID + password.

Nó vẫn vào được bình thường, như vậy có vẻ không ổn lắm nhỉ? Các bạn khác có ý kiến gì không?
 


Mình nghĩ những giải pháp như RSA SecurID chỉ phù hợp với môi trường xác thực khách hàng bên ngoài sử dụng các dịch vụ công mà doanh nghiệp cung cấp như thương mại điện tử hay ngân hàng điện tử.

Dùng RSA SecurID cho các loại hình dịch vụ này thiệt ra cũng chỉ là tô vẽ thêm cho khách hàng an tâm và hơn hết là làm đúng quy định của nhà chức trách thôi, chứ nếu tính toán về chi phí và hiệu quả thì mình không nghĩ dùng RSA SecurID là giải pháp tối ưu cho bài toán xác thực hai yếu tố.

Mình cũng cho rằng, đem RSA SecurID vào áp dụng cho môi trường doanh nghiệp để xác thực nhân viên sẽ không phù hợp ở chỗ chi nhiều tiền để giải quyết một rủi ro không quá nghiêm trọng. Thử nghĩ xem RSA SecurID khi dùng kèm với Active Directory để làm Windows logon authentication thì giải quyết được những rủi ro gì? Mình sẽ bàn kỹ về vấn đề này trong một post khác nếu có bạn nào muốn thảo luận.

Mình nghĩ nếu đã muốn xác thực nhân viên, thì nên hướng đến xác thực việc sử dụng dữ liệu, bởi cuối cùng rồi thì dữ liệu của doanh nghiệp, chứ không phải tài khoản của người sử dụng, mới là thứ quý giá cần phải được bảo vệ. Thử nghĩ đến trường hợp nhân viên cố tình phá hoại, vốn luôn là rủi ro hàng đầu của mọi doanh nghiệp, thì chúng ta sẽ thấy giải pháp xác thực nhân viên lúc họ đăng nhập vào máy tính sẽ trở nên không còn có ý nghĩa.

Tương tự như các dịch vụ công, cái cần phải tập trung bảo vệ là các giao dịch tài chính, chứ không phải tài khoản 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
[Up] [Print Copy]
  [Discussion]   One Time Password 17/09/2009 00:05:04 (+0700) | #10 | 193008
thangdiablo
HVA Friend

Joined: 11/05/2003 17:31:58
Messages: 734
Offline
[Profile] [PM] [WWW]

mrro wrote:


Mình nghĩ những giải pháp như RSA SecurID chỉ phù hợp với môi trường xác thực khách hàng bên ngoài sử dụng các dịch vụ công mà doanh nghiệp cung cấp như thương mại điện tử hay ngân hàng điện tử.

Dùng RSA SecurID cho các loại hình dịch vụ này thiệt ra cũng chỉ là tô vẽ thêm cho khách hàng an tâm và hơn hết là làm đúng quy định của nhà chức trách thôi, chứ nếu tính toán về chi phí và hiệu quả thì mình không nghĩ dùng RSA SecurID là giải pháp tối ưu cho bài toán xác thực hai yếu tố.



-m 


Khi triển khai 1 dịch vụ nào đó về IT trong kinh doanh, người ta luôn xem xét đến các khía cạch khác nhau. Ngoài việc nó phù hợp với thương mại điện từ và ngân hàng về mặt IT thì đúng là yếu tố marketing do nó mang lại cũng khá tốt cho doanh nghiệp.

Đôi khi ngoài việc bảo mật, chi phí ...etc nó còn phải đạt được yếu tố thuận tiện,dễ sử dụng và đẹp nữa.
Chứ xác thực 2 hay 3 yếu tố thì có nhiều cách khác nhau với chi phí rẻ hơn, nhưng tại sao doanh nghiệp vẫn lựa chọn RSA, Entrust, Vasco ... vì nếu xét trên khía cạnh thương mại nó vẫn tốt.

Mình cũng cho rằng, đem RSA SecurID vào áp dụng cho môi trường doanh nghiệp để xác thực nhân viên sẽ không phù hợp ở chỗ chi nhiều tiền để giải quyết một rủi ro không quá nghiêm trọng. Thử nghĩ xem RSA SecurID khi dùng kèm với Active Directory để làm Windows logon authentication thì giải quyết được những rủi ro gì? Mình sẽ bàn kỹ về vấn đề này trong một post khác nếu có bạn nào muốn thảo luận.  


Nói như vậy cũng chưa đúng lắm!
Vd như RSA SecureID mình dùng cho các Admin để login vào windows,linux,firewall,SSL VPN....etc cho an toàn.
RSA SecureID mình dùng kèm với Active Directory để user mobile có thể sử dụng email khi ra ngoài làm việc và dùng máy tính công cộng.
Còn tất nhiên, mình cũng không bao giờ triển khai cái RSA SecureID nếu chỉ để user login vào windows

mrro wrote:
Mình nghĩ nếu đã muốn xác thực nhân viên, thì nên hướng đến xác thực việc sử dụng dữ liệu, bởi cuối cùng rồi thì dữ liệu của doanh nghiệp, chứ không phải tài khoản của người sử dụng, mới là thứ quý giá cần phải được bảo vệ. Thử nghĩ đến trường hợp nhân viên cố tình phá hoại, vốn luôn là rủi ro hàng đầu của mọi doanh nghiệp, thì chúng ta sẽ thấy giải pháp xác thực nhân viên lúc họ đăng nhập vào máy tính sẽ trở nên không còn có ý nghĩa.
Tương tự như các dịch vụ công, cái cần phải tập trung bảo vệ là các giao dịch tài chính, chứ không phải tài khoản của khách hàng.
 


Về vấn đề này mình đồng ý với mrro 1 nửa.
Con người luôn là yếu tố quan trọng nhất. Nếu 1 tay Admin muốn phá hoại thì chẳng có hệ thống bảo mật nào ngăn cản được.

Tuy nhiên trong thương mại điện tử, ngoài việc bảo vệ các giao dịch tài chính thì tài khoản khách hàng còn vô cùng quan trọng.

Vd như trong chứng khoán nếu như 1 KH bị mất password để người khác login vào sau đó họ lấy tiền của KH mua/bán CK.
Tỉ lệ rủi ro với số tiền của KH là vô cùng lớn. Ngoài ra còn có 1 số dịch vụ chuyển tiền online nữa, nếu không bảo vệ tài khoản khách hàng thì số tiền bị sử dụng không kiểm soát là hoàn toàn có thể xảy ra.

Tương tự như các dịch vụ công, cái cần phải tập trung bảo vệ là các giao dịch tài chính, chứ không phải tài khoản của khách hàng.  
Hãy sống có Tuệ Giác.
[Up] [Print Copy]
  [Discussion]   One Time Password 17/09/2009 05:53:37 (+0700) | #11 | 193038
MrNothing
Member

[Minus]    0    [Plus]
Joined: 04/01/2008 11:05:37
Messages: 76
Offline
[Profile] [PM]
Bạn Cuncon201 nhầm HOTP thì phải.
Theo tớ biết thì HOTP dùng HMAC_SHA1 đồng bộ dựa theo Counter

Client có một cái token sinh mã OTP= HMAC_SHA1(Key, Counter_Client)
Server xác thực dựa vào OTP=HMAC_SHA1(Key, Counter_Server).

Vấn đề chỉ là đồng bộ counter của Client và Server. Giá trị counter là 32 bits.

Giả sử Counter_Client hiện tại là Counter_server+a, Với a< w=10 chẳng hạn (cửa sổ đồng bộ)

Client gửi OTP hiện thời, server sẽ kiểm tra xem cái OTP Client gửi nằm trong khoảng từ
OTP=HMAC_SHA1(Key, Counter_Server+1) đến OTP=HMAC_SHA1(Key, Counter_Server+w)
sẽ phát hiện cái HMAC_SHA1(Key, Counter_Server+a) là bằng với cái client gửi. Coi như xác thực đúng client. Cập nhật lại Counter_server= Counter_server+a.
Lúc này 2 bên client và server có cùng giá trị counter. Tại sao lại có +a. Giá sử Client lỡ nhấn a lần phím sinh pass thì sẽ bị đi quá giá trị đồng bộ. w=10 chỉ giới hạn cửa sổ cho phép đồng bộ. Lỡ tay nhấn nút nhiều lần quá thì sẽ không xác thực được nữa. Có thể đồng bộ lại counter trên server bằng cách nhập hai số OTP liên tiếp từ client, counter_server sẽ chạy liên tục đến khi có 2 giá trị liên tiếp bằng giá trị nhận được từ client!
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 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|