CƠ CHẾ XÁC THỰC CỦA CÔNG NGHỆ RSA SECURID

Một phần của tài liệu Nghiên cứu xây dựng hệ thống đảm bảo an toàn truyền tin trên mạng Vinaphone (Trang 49)

2.4.1. Mô hình xác thực

Cơ chế xác thực RSA SecurID cung cấp xác thực ngƣời dùng dựa vào hai thành phần theo mô hình ba thực thể sau: Một ngƣời dùng đƣợc cấp một SecurID token, một application server mà ngƣời dùng muốn kết nối và một server xác thực có khả năng xác thực ngƣời dùng và một số định danh cá nhân đƣợc gọi là PIN. Cả ngƣời dùng và server xác thực đều biết số PIN này. Seed bí mật đƣợc lƣu trong thẻ token mà ngƣời dùng có cũng nhƣ trên máy chủ xác thực.

Cơ chế này dựa trên việc sử dụng một khóa bí mật chia sẻ hay một bản ghi seed.

Hình 2.8. Mô hình xác thực của RSA SecurID Server sử dụng xác thực hai yếu tố

User Server xác thực an toàn

2

3 4

2.4.2. Thủ tục xác thực

Giả sử một ngƣời sử dụng trong hệ thống đăng nhập vào hệ thống, ngƣời sử dụng này sẽ đƣợc yêu cầu nhập tên đăng nhập và Passcode. Passcode là sự kết hợp của số PIN và dẫy số xuất hiện trên token (Token code) của ngƣời đó vào thời điểm đăng nhập.

Hình 2.9. Thủ tục xác thực của RSA SecurID

1/.Một ngƣời dùng có tên đăng nhập trong hệ thống là quynhdth gửi yêu cầu truy cập hệ thống bằng cách gửi tên đăng nhập và passcode (quynhdth/1234159759) theo yêu cầu đến RSA Authentication Agent .

Passcode là dãy số đƣợc tạo ra bằng cách ghép số PIN của ngƣời dùng và dãy số tokencode đang hiển thị trên RSA Authenticator tại thời điểm gửi yêu cầu truy nhập.

2/.RSA Authentication Agent tiếp nhận các thông tin này, mã hóa chúng bằng khóa chia sẻ đƣợc gọi là ―secret‖ – khóa này chỉ có RSA Authentication Manager và RSA Authentication Agent đƣợc biết - và gửi đến RSA Authentication Manager .

3/.RSA Authentication Manager so sánh tên đăng nhập của ngƣời dùng với cơ sở dữ liệu ngƣời dùng của nó để lấy ra số PIN tƣơng ứng, đồng thời tính toán ra dãy số của nó tại thời điểm ngƣời dùng có yêu cầu truy cập. Sau đó, RSA Authentication Manager ghép số PIN có đƣợc trong cơ sở dữ liệu của nó với dãy số nó vừa tính ra để so sánh với passcode của ngƣời dùng cung cấp.

- Nếu hai dẫy số này giống nhau, ngƣời dùng đƣợc xác thực là hợp lệ, RSA Authentication Manager gửi thông điệp chấp nhận truy cập trở lại ngƣời dùng thông qua RSA Authentication Agent . Ngƣời dùng đƣợc quyền truy cập vào hệ thống.

- Nếu hai dẫy số này không giống nhau, quyền truy cập hệ thống của ngƣời dùng bị từ chối. RSA Authentication Manager gửi thông điệp từ chối truy cập trở lại ngƣời dùng thông qua RSA Authentication Agent .

2.4.3. Nguyên tắc đồng bộ thời gian trên RSA Authentication Manager

Để tạo ra đƣợc dẫy số thay đổi sau mỗi khoảng thời gian và đồng bộ nhau, thì trong token và trên RSA Authentication Manager của ngƣời sử dụng sẽ đều phải có những thành phần sau:

1/. Một đồng hồ bên trong (Tính theo giờ UTC).

Trên token đƣợc gán cho ngƣời sử dụng và trên RSA Authentication Manager đều có một đồng hồ bên trong đã đƣợc đồng bộ và đƣợc đặt theo giờ chuẩn quốc tế GMT, do đó đƣợc gọi là ―đồng bộ thời gian‖.

2/. Một số Seed có độ dài 64 hoặc 128 bits.

Seed là một khối khóa đối xứng 128 bít đƣợc phát triển bởi cơ quan an toàn thông tin Hàn Quốc KISA và một nhóm các chuyên gia vào năm 1998.

Cả token của ngƣời dùng và RSA Authentication Agent đều có chứa các số seed giống hệt nhau. Số seed này đƣợc nhúng vào trong một thẻ và tạo một mã xác thực mới sau mỗi 60 giây.

3/. Thuật toán tạo số giả ngẫu nhiên

Với hai yếu tố là thời gian và số seed, sau khi áp dụng thuật toán tạo số giả ngẫu nhiên, token sẽ có một con số xuất hiện trên màn hình của nó (token code) và sau một khoảng thời gian xác định, thuật toán này lại tạo ra đƣợc một con số khác ứng với thời gian đó. Thuật toán này luôn tạo đƣợc những con số thay đổi theo thời gian và không lặp lại. Do vậy, việc dự đoán trƣớc con số sẽ xuất hiện tiếp theo hoặc con số sẽ xuất hiện tại một thời điểm nào đó trong tƣơng lai là không thể (chỉ có thể thực hiện đƣợc khi có số seed và thuật toán).

Kích thƣớc khối đầu vào/đầu ra của seed là 128 bít và độ dài khóa cũng là 128 bít. Seed có cấu trúc 16 vòng. Một đầu vào 128 bít đƣợc chia thành hai khối 64 bit (L,R), và khối 64 bít phải là một đầu vào cho vòng F, với 64 bít khóa con Ki tạo ra từ sơ đồ khoá.

Mã giả cho cấu trúc của seed nhƣ sau:

for (i = 1; i <= 16; i++) {

L = R;

R = L ^ F(Ki, R); } (adsbygoogle = window.adsbygoogle || []).push({});

Khi gán một token cho một ngƣời sử dụng, quản trị mạng cũng sẽ phải cập nhật số seed của token đó vào cơ sở dữ liệu của RSA Authentication Manager tƣơng ứng với ngƣời dùng. Trên RSA Authentication Manager cũng có một chƣơng trình chạy thuật toán tạo số giả ngẫu nhiên giống với trên token. Khi có yêu cầu đăng nhập của ngƣời sử dụng, căn cứ vào tên đăng nhập, căn cứ vào đồng hồ hệ thống, căn cứ vào số seed đƣợc lƣu trong cơ sở dữ liệu, khi chạy thuật toán tạo số giả ngẫu nhiên, RSA Authentication Manager cũng sẽ có đƣợc một dẫy số giống với dẫy số trên token của ngƣời sử dụng tại cùng một thời điểm. Dãy số này đƣợc ghép với số PIN của ngƣời sử dụng trong cơ sở dữ liệu, RSA Authentication Manager có thể kiểm tra đƣợc ngƣời sử dụng này có hợp lệ hay không.

RSA Authentication Manager cho phép một sự sai lệch về thời gian giữa nó và từng token khi đăng nhập và RSA Authentication Manager sẽ chấp nhận bất cứ passcode nào của ngƣời sử dụng nằm trong khoảng thời gian sai lệch đó. Khoảng thời gian sai lệch tối đa cho phép có thể thay đổi đƣợc trên RSA Authentication Manager .

2.5. GIỚI THIỆU THUẬT TOÁN MÃ HÓA CỦA RSA SECURID 2.5.1. Giới thiệu 2.5.1. Giới thiệu

Tokencode RSA SecurID hiện nay là dựa trên một thuật toán thuộc quyền sở hữu riêng và cung cấp một tokencode 6 đến 8 chữ số giống nhƣ một đầu ra của thuật toán. Đầu ra này là một mã mới, không thể dự đoán đƣợc, đƣợc hiển thị sau một khoảng thời gian là 30 hoặc 60 giây.

Thuật toán ban đầu đƣợc thiết kế và sử dụng trên một bộ vi điều khiển 64 bit do khách hàng đặt làm với một tốc độ hoạt động ít hơn 1 megahertz. Dựa vào khả năng hoạt động và tính toán này, việc sử dụng một giá trị thời gian 64 bit và thành phần bí mật 64 bit trong thuật toán huỷ là những lựa chọn đáp ứng cho việc xác thực qua các kênh không bị pha tạp.

Nếu các mã đƣợc đƣa ra qua một phƣơng tiện trung gian mà có thể đƣợc điều khiển bởi một kẻ tấn công hoặc đƣợc quan sát trên một thiết bị mã thông bao đã đƣợc làm tạm thời, việc thi hành SecurID dễ bị tấn công nếu tồn tại một tấn công để đƣa ra thành phần bí mật bằng cách quan sát các tokencode đã đƣợc tạo ra trƣớc đó hoặc các tokencode liên tiếp.

Ngoài ra, với giá trị tới hạn của các tokencode mềm đang tồn tại trên các hệ thống hoạt động phổ biến và không phụ thuộc vào phần cứng đặc biệt nào, mức độ lỗ lực cần thiết để tìm ra thuật toán và thành phần bí mật đã đƣợc giảm đáng kể. Nếu thuật toán có thể đảo đƣợc hoặc các thành phần khởi tạo của thuật toán là có thể suy diễn thì rủi ro là các thẻ bị bắt chƣớc hoặc việc tiên đoán ra giá trị các tokencode sau này là dễ dàng có thực.

Độ đo độ an toàn trở nên rất dễ dàng: đảm bảo tính toàn vẹn và việc điều khiển của các thiết bị tokencode phần cứng cũng nhƣ phần mềm, xác thực thông qua các kênh giao tiếp đã đƣợc mã hoá và đảm bảo cuối mỗi kênh giao tiếp bằng máy chủ ứng dụng tới máy chủ xác thực ACE là không đƣợc thực hiện qua các đƣờng truyền công cộng.

2.5.2. Các vấn đề liên quan đến thuật toán

Các mã thẻ đƣợc tạo ra bằng thuật toán xuất phát từ hai giá trị bên trong: giá trị thời gian 64 bit và một giá trị bí mật 64 bit.

Kết quả của thuật toán sau đó đƣợc đƣa qua một thủ tục làm biến đổi cuối cùng làm cho nó trở nên khó hiểu hơn là đầu ra thực của thuật toán và đƣa ra một giá trị phù hợp hiển thị tokencode dựa trên phần cứng hoặc phần mềm.

Hình 2.11. Thủ tục tạo tokencode

Giá trị đƣa ra bằng thủ tục biến đổi độ dài 64 bit và chia thành nhiều tokencode phụ thuộc vào thiết bị tạo tokencode và khoảng thời gian hiển thị.

2.5.1.1. Giá trị thời gian (Time)

Biến số đặt vào trong thuật toán SecurID biểu diễn thời gian hiện tại của thuật toán là giá trị 64 bit. Tuy nhiên, quá trình kiểm tra đã chỉ ra rằng giá trị 64 bit này là đƣợc tạo ra từ biểu diễn 32 bit của thời gian hiện tại (GMT) tính theo các giây từ 12 giờ đêm ngày 01/01/1986.

Trong hàm làm tròn, giá trị đƣợc dịch trái hai lần là tƣơng đƣơng với phép nhân 4. Hàm này đảm bảo đƣợc giá trị của kết quả đầu ra luôn luôn là chẵn theo tính chất kết hợp của phép nhân. Do đó, hai bit có trọng số thấp nhất sẽ luôn luôn là 00 và các giá trị có thể của mỗi trọng số thấp nhất là 0x0, 0x4, 0x8 và 0xC. Phép nhân này sẽ xóa nhiều hơn hai bit của entropy từ giá trị thời gian 24 bit lên tới tổng giá trị thời gian có thể là 222 hay 4,194,304. Tổng giá trị thời gian này có thể giảm một cách đáng kể nếu giả thiết kẻ tấn công biết đƣợc giá trị thời gian xấp xỉ đã đƣợc tạo trƣớc đó.

Kết quả của khoảng thời gian đã đƣợc biến đổi này có khả năng tạo ra một chu kỳ tokencode hoàn chỉnh bằng cách tăng thông qua tất cả các giá trị thời gian có thể đối với một giá trị bí mật đơn lẻ. Chu kỳ hoàn chỉnh có chứa tổng 4,194,304 đầu ra 64-bit có thể từ thuật toán SecurID.

Thuật toán Convert

Giá trị trước khi convert

Giá trị tokencode 64 bít time

Giai đoạn của chu kỳ đƣợc thiết kế dài hơn thời gian sống của thiết bị chứa mã thông báo, nếu thiết bị chạy trong thời gian thực (trong trƣờng hợp một độ dài của tokencode 8-bit đƣợc sử dụng với chu kỳ hiển thị là 60 giây, nó sẽ mất gần 16 năm để lặp qua tất cả các giá trị tokencode có thể). Tuy nhiên, việc sử dụng một thiết bị tokencode mềm đã đƣợc sửa đổi , thời gian có thể tăng lên với một tốc độ lớn hơn, do đó việc đƣa ra toàn bộ chu kỳ tokencode chỉ là vấn đề bao nhiêu phút.

2.5.1.2. Giá trị bí mật (Secret)

RSA đã tiết lộ cách thức họ tạo ra các mã bí mật 64-bit ban đầu mà đƣợc sử dụng giống nhƣ các giá trị đầu vào bên trong thuật toán của họ. Những giá trị này đƣợc quy định trƣớc, giả thiết ngay cả nếu cơ chế tạo ra có thể đoán đƣợc, nó có thể đƣợc thay đổi một cách trong suốt tới một lƣợc đồ tạo ngẫu nhiên hơn. Tuy nhiên, thậm chí với cách tạo số giả ngẫu nhiên hoặc ngẫu nhiên mạnh của mã bí mật, số lƣợng giới hạn các giá trị có thể đƣợc coi là không thích hợp trong một vài trƣờng hợp nào đó.

Sẽ có thành phần bí mật đƣợc xem là thoả hiệp từ các thẻ cứng hoặc các ứng dụng thực thi thẻ mềm, tất cả các giá trị đầu ra có thể đƣợc quay vòng qua và đƣợc ghi lại bằng ccsh sử dụng thuật toán SecurID. Điều này có thể thực hiện mà không giả mạo bằng thiết bị lƣu tokencode giả mạo, do đó việc tấn công sẽ không đƣợc phát hiện tức thì.

2.5.1.3. Giá trị biến đổi (Convert)

Giá trị tokencode có thể đƣợc nhập vào bởi ngƣời sử dụng đƣợc hiển thị trong chuỗi nhị phân từ 6 đến 8 bit. Giá trị nhị phân này xuất phát từ giá trị hexa 64-bit, đƣợc gọi là ―giá trị trƣớc khi biến đổi‖ bằng cách sử dụng một thủ tục biến đổi đơn giản nhƣ sau:

For each nibble in the hexadecima pre-convert value { if (nibble > 9) { nibble = nibble - 2; nibble = nibble - {0, 2, 4, 6, 8}; nibble = nibble %10;}}

Với mỗi nibble trong giá trị trƣớc biến đổi, nếu nibble lớn hơn 9 thì phép biến đổi đƣợc sử dụng. Ngƣợc lại, nếu nibble nhỏ hơn hoặc bằng 9, số tự nhiên đƣợc hiển thị. Từ đây, giá trị chỉ ra cho ngƣời dùng có thể chỉ ra giống nhƣ trong bảng dƣới đây: 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 A B A B A B A B A B C D C D C D C D C D E F E F E F E F E F

Bảng 2.1. Bảng các giá trị của tokencode

Theo tƣ tƣởng thiết kế, giá trị nhóm 6 từ 0xA đến 0xF có khả năng đƣợc ánh xạ tới giá trị thập phân từ 0 đến 9. Tuy nhiên, do 0xA, 0xC và 0xE chỉ có thể đƣợc ánh xạ sang 0, 2, 4, 6 hay 8 và 0xB, 0xD và 0xF chỉ có thể đƣợc ánh xạ tới 1, 3, 5, 7 hoặc 9, số lƣợng các giá trị trƣớc biến đổi có thể đƣợc giảm một cách đáng kể. (adsbygoogle = window.adsbygoogle || []).push({});

Gọi tlen là độ dài của mã thông báo, với mỗi giá trị tokencode bất kỳ đƣợc đƣa ra, thủ tục biến đổi chỉ cung cấp 4tlen các giá trị trƣớc biến đổi có thể, các giá trị này sau đó có thể đƣợc phân tích để quyết định các cấu hình bit riêng biệt của giá trị bí mật thực sự.

Thiết kế lý tƣởng nếu đƣa ra 7tlen giá trị trƣớc biến đổi có thể. Ví dụ, một tokencode 6 ký tự đặc biệt, có 46 hay 4096 giá trị trƣớc biến đổi có thể đƣợc tạo ra. Trƣờng hợp lý tƣởng sẽ đƣa ra 76 hay 117,649 các giá trị trƣớc biến đổi có thể.

Với mỗi giá trị của tokencode đƣợc hiển thị thực sự thì có một khả năng là 62,5% số là số tự nhiên (ví dụ, một số 0 đƣợc hiển thị có một giá trị 0 trƣớc biến đổi), còn lại 12,5% khả năng số là {A, C, E} hoặc {B, D, F}.

2.5.1.4. Các xung đột trong chu kỳ của tokencode

Việc phân tích các chu kỳ tokencode cho một ví dụ về các secret 64 bit đƣợc tạo ra một cách giả ngẫu nhiên mang lại các kết quả thú vị. Ngoài 8,388,608 tokencode có khả năng (hai tokencode đƣợc đƣa ra cho mỗi giá trị thời gian), xấp xỉ 8 triệu tokencode là duy nhất và chỉ xuất hiện một lần trên một chu kỳ. Còn lại gần 300,000 là các giá trị lặp lại hoặc bị xung đột.

Do đó, 4% chu kỳ tokencode có các giá trị lặp. Đây là một phần giá trị đƣợc tạo ra do vòng convert. [4]

2.6. CÁC ĐIỂM YẾU TRONG RSA SECURID 2.6.1. Giới thiệu 2.6.1. Giới thiệu

Hệ thống SecurID là một dạng phổ biến của 2 nhân tố xác thực liên quan đến thẻ cầm tay phân phát cho ngƣời dùng, phần mềm client cho một loạt các hệ thống, và phần mềm máy chủ cho việc quản lý và xác thực tập trung.

Chiếc thẻ này chứa một bộ vi xử lý 8 bít, một đồng hồ, một màn hình LCD, một cục pin, và có thể là một bàn phím cảm ứng. Đơn vị này đƣợc đặt trong một bộ chống giả mạo bằng thép, và đƣợc thiết kế để xoá bộ nhớ nếu bị mở ra.

Thẻ sẽ phát sinh một chuỗi cố định các con số có vẻ không liên quan đến nhau (có thể coi nhƣ là các mã thẻ) bằng cách kết nối một số seed đã đƣợc lập trình sẵn với thời gian , và thực thi chúng thông qua cái mà thƣờng đƣợc coi là hàm băm SecurID.

Security Dynamic thƣờng có 2 hàm băm, hàm băm cho thẻ và hàm băm gọi là F2. Hãy quan sát thông tin phía dƣới về chi tiết của F2. Độ dài của các mã thẻ có thể từ 6-8 chữ số, và sẽ không thay đổi đối với một thẻ cho trƣớc. Nếu thẻ này có một bộ phím nó có thể kết nối một PIN (của 4-8 chữ số, có thể cấu hình bởi ngƣời quản trị -

Một phần của tài liệu Nghiên cứu xây dựng hệ thống đảm bảo an toàn truyền tin trên mạng Vinaphone (Trang 49)