Hệ thống thanh toán điện tử hiện tại được sử dụng rộng rãi nhất dựa trên giao thức SSL để đảm bảo tính an toàn của thông tin được chuyển đi. Tuy nhiên, những giao dịch bất hợp pháp xảy ra thường liên quan đến các thông tin bí mật nhạy cảm của cá nhân như số thẻ tín dụng, số bí mật (mật khẩu) của thẻ tín dụng và chu kỳ có hiệu lực của các yếu tố trên. Bài báo này giới thiệu các vấn đề cơ bản về thiết kế kỹ thuật của các hệ thống thanh toán điện tử an toàn theo quan điểm mật mã, bao gồm các yêu cầu an toàn của mỗi thực thể tham gia vào giao dịch điện tử, các thuật toán mật mã, các môđun xác thực và quản lý khoá mật mã an toàn.
1. Yêu cầu an toàn cho các thực thể tham gia giao dịch
Một hệ thống thanh toán dựa trên thẻ tín dụng trên quy mô lớn gồm có thẻ, người giữ thẻ, cửa hàng có thanh toán qua Internet (sau đây gọi là cửa hàng), Người phát hành (Issuer) và Người thu nhận (Acquirer). Người giữ thẻ thực hiện thanh toán điện tử thông qua quá trình xác thực. Cửa hàng yêu cầu người giữ thẻ xác thực thẻ của mình, xác thực chính người giữ thẻ và sau đó mới tiến hành giao dịch điện tử. Người phát hành thẻ và người thu nhận có một vai trò nhất định trong việc kiểm tra tính xác thực của người giữ thẻ và xác thực thẻ. Khi các thủ tục được đáp ứng, người phát hành thẻ chấp nhận giao dịch điện tử.
Các yêu cầu đối với người giữ thẻ và các cửa hàng
Để có một giao dịch an toàn, người giữ thẻ cần phải nắm giữ thẻ của mình một cách an toàn để không xảy ra rủi ro do sự không cẩn thận hoặc thiếu hiểu biết của người dùng. Người giữ thẻ hướng dẫn để hiểu được một cách dễ dàng một số thủ tục. Người giữ thẻ cần khẳng định mức độ an toàn về thanh toán điện tử trước khi trả tiền và cung cấp một số thông tin của thẻ tín dụng cho cửa hàng. Cửa hàng cần phải được sự tin cậy và bảo đảm của một tổ chức tín nhiệm công cộng và hoạt động theo đúng pháp luật.
Các yêu cầu đối với người phát hành thẻ
Người phát hành thẻ cung cấp, và chấp nhận giao dịch cuối cùng phù hợp với việc xác thực thẻ và người giữ thẻ. Việc xác thực thẻ đảm bảo rằng nó đã được phát hành một cách hợp pháp, việc xác thực người giữ thẻ đảm bảo rằng đó là người chủ thực sự của thẻ. Vì người phát hành thẻ chịu phần lớn trách nhiệm đối với giao dịch bị bác bỏ của dịch vụ thanh toán và nắm giữ tất cả thông tin quan trọng của người giữ thẻ, nên họ giữ vai trò quan trọng trong việc thiết lập các hệ thống thanh toán điện tử an toàn.
Cài đặt môđun xác thực: Môđun xác thực có chức năng xác thực người giữ thẻ và xác thực thẻ trong hệ thống thanh toán. Mỗi loại môđun xác thực cần phải thoả mãn ít nhất các yêu cầu sau:
Trước hết, trong việc xác thực người đọc thẻ, người phát hành thẻ cần phải chắc chắn thực hiện việc xác thực người giữ thẻ để khẳng định người chủ thực sự của thẻ, ngăn chặn việc sử dụng không hợp lệ của thẻ tín dụng do bị mất cắp hoặc bị thất lạc; thông báo cho người giữ thẻ các chính sách liên quan của người phát hành thẻ với mục đích để người giữ thẻ có thể đăng ký dịch vụ thanh khoản và chọn một mật khẩu xác thực an toàn, và cần phải hạn chế số lần nhập vào sai (thường là 3 lần thử) nhằm tránh tấn công tìm khoá vét cạn. Cũng vậy, người ta khuyến cáo rằng người phát hành thẻ cần cài đặt một dịch vụ ngăn chặn việc lựa chọn của mật khẩu xác thực yếu mà kẻ tấn công có thể dễ đoán (ví dụ, tấn công đoán trực tuyến, tấn công từ điển,...), thông tin xác thực người giữ thẻ cần phải được chuyển tới người phát hành thẻ trong khuôn dạng đã được mã hóa. Cuối cùng, để ngăn chặn tấn công lặp lại, cần phải có cơ chế phân biệt các gói tin.
Thứ hai, cần phải thực hiện việc xác thực thẻ để khẳng định xem có phải đó là thẻ tín dụng đã được phát hành bởi người phát hành hợp pháp và thông tin nhạy cảm dùng cho việc xác thực thẻ (ví dụ, số thẻ, thời hạn có hiệu lực, số bí mật thẻ, ...) cần phải không được thể hiện ở dạng bản rõ trên màn hình của máy tính cá nhân mà người giữ thẻ sử dụng. Tuy nhiên, số thẻ và thời hạn có hiệu lực có thể được hiện ra một phần ở dạng rõ. Tương tự với việc xác thực người giữ thẻ, cần phải hạn chế tần suất lỗi nhập vào ( thường là 3 lần thử) để tránh tấn công tìm kiếm khoá vét cạn, thông tin xác thực thẻ cần phải được chuyển tới người phát hành thẻ ở dạng đã được mã hoá, và cần phải chú ý tới tấn công lặp lại.
Quản lý khoá: Điều quan trọng là phải quản lý các khoá mật mã khác nhau một cách an toàn. Người phát hành thẻ cần phải sinh, lưu trữ, cập nhật, huỷ bỏ các khóa bí mật và các khoá riêng trong các thiết bị an toàn như thiết bị HSM (Hardware Security Module – Môđun an toàn cứng hóa). Cần phải phân loại và quản lý theo từng loại khóa và đối tượng phải mã hóa của các khóa mật mã. Hơn thế, cần phải có kiểm soát tiếp cận với môđun quản lý khoá thông qua xác thực hai nhân tố. Đối với thẩm quyền của người thay đổi khoá chủ cần phải sử dụng phương pháp Kiểm soát Kép (Dual Control).
Quản lý thông tin nhạy cảm của người giữ thẻ: Thông tin nhạy cảm của người giữ thẻ được lưu trữ trong cơ sở dữ liệu của người phát hành thẻ, và nó cần phải được đảm bảo tính bí mật và tính toàn vẹn. Thông tin nhạy cảm này chỉ những người chuyên trách mới có thẩm quyền được tiếp cận, và cần phải sử dụng phương pháp kiểm tra tiếp cận có hàm xác thực hai nhân tố. Người phát hành thẻ cần phải tạo ra tệp nhật ký với mục đích để nó không bị rò rỉ thông tin, hoặc có chức năng phát hiện rò rỉ về mặt vật lý để ngăn chặn việc thất thoát thông tin của người giữ thẻ.
2. Các yêu cầu chi tiết
Phần này chứa các yêu cầu tối thiểu đối với các thuật toán mật mã, môđun xác thực và quản lý khoá, để bảo vệ việc truyền và lưu trữ thông tin.
Hướng dẫn chọn thuật toán mật mã
Các hệ thống thanh toán dựa trên thẻ tín dụng dùng nhiều thuật toán mật mã với mục đích cung cấp các chức năng mật mã khác nhau chẳng hạn như bảo đảm tính bí mật, toàn vẹn của dữ liệu, xác thực dữ liệu/thực thể, không chối bỏ,... Các thuật toán mật mã sử dụng cần phải được thừa nhận là an toàn một cách công khai (ví dụ, TDES, AES). Thuật toán cần phải được lựa chọn dựa trên cơ sở mức an toàn được yêu cầu và mức độ đe doạ của môi trường ứng dụng quá trình vận hành và phải bảo đảm đối với năng lực tính toán và không gian lưu trữ của hệ thống thanh toán.
Các mã khối: Các mã khối được sử dụng như là cơ sở để đảm bảo tính xác thực và toàn vẹn. DES và TDES là những thuật toán được sử dụng nhiều nhất với mục đích đảm bảo bí mật, xác thực và toàn vẹn trong lĩnh vực tài chính. Tuy nhiên, chú ý rằng việc sử dụng DES chỉ nên thực hiện trong một số môi trường mà yêu cầu tính an toàn không cao (ví dụ như các môi trường thay đổi thường xuyên việc mã hoá, khoá mã trong một giai đoạn ngắn) và tuỳ thuộc vào năng lực tính toán của máy tính. DES với khoá 56 bit cần phải được sử dụng trong môi trường “ít nguy hiểm”, hoặc chu kỳ sống của khoá chỉ cần ngắn. Ở mức an toàn cao hơn cần phải sử dụng mã khối TDES với khoá ít nhất 112 bit.
Các thuật toán MAC: Thuật toán MAC là thuật toán dùng khoá bí mật chia sẻ trước, biến đổi dữ liệu có độ dài chuỗi bit bất kỳ thành chuỗi bit có độ dài cố định. Nó cung cấp tính xác thực của dữ liệu. Nhìn chung, thuật toán MAC được sử dụng trong lĩnh vực tài chính chủ yếu dựa trên hàm băm, thuật toán MAC dựa trên DES (ISO/IEC 9797-1).
Các hàm băm: Hàm băm là một thuật toán mà biến đổi thông báo có độ dài chuỗi bit bất kỳ thành một thông báo có độ dài chuỗi bit cố định. Hàm băm được sử dụng như là hàm nén dữ liệu, cung cấp tính toàn vẹn của dữ liệu và hơn thế, là thành tố của thuật toán chữ ký. Bởi vì độ an toàn của hàm băm phụ thuộc vào độ dài đầu ra, nên các yêu cầu về độ dài đầu ra đóng một vai trò quan trọng nhất. Trước đây các hàm băm có độ dài đầu ra là 128 bit được sử dụng là chính (ví dụ, MD4, MD5), hiện nay ít nhất cần sử dụng hàm băm cùng với giá trị băm 160 bit để tăng cường độ an toàn (ví dụ, SHA-1/256/384/512, RIPEM-160, HAS-160). Chú ý rằng mức an toàn của nó là xấp xỉ cũng như mã khối với khoá 80 bit đối với tấn công ngày sinh.
Các thuật toán khoá công khai: Thuật toán khoá công khai mã hóa hoặc giải mã dữ liệu đã được mã hoá nhờ khoá công khai hay khoá bí mật tương ứng. Hai khoá này cần phải được quản lý theo phương pháp khác nhau. Khoá bí mật cần phải được lưu giữ một cách an toàn. Vì nó chiếm nhiều thời gian khi mã hoá dữ liệu dung lượng lớn nên thông thường người ta không sử dụng thuật toán mã hoá khoá công khai để mã hóa dữ liệu. Đối với thuật toán công khai, chúng tôi khuyến cáo PKCS#1 v2.0 thay cho PKCS# v1.5 với mức an toàn của RSA 1024-bit.
Các thuật toán chữ ký số: Thuật toán chữ ký số nhằm ký và kiểm tra chữ ký số của dữ liệu. Một số thuật toán ký số chẳng hạn như RSA dựa trên bài toán phân tích ra số nguyên tố, ECDSA dựa trên đường cong elliptic, và DSA dựa trên bài toán logarit rời rạc. Các thuật toán chữ ký này cần phải được lựa chọn khi xem xét dựa trên khả năng tính toán, độ phức tạp được yêu cầu trong phần cứng của người dùng, ... Đối với yêu cầu về độ an toàn, cần phải có mức an toàn của RSA 1024 bit và ECDSA 160 bit.
Hướng dẫn cho môđun xác thực:
Môđun xác thực cung cấp khả năng xác thực thẻ, người giữ thẻ và thông tin dữ liệu về việc thanh toán và hàng hóa.
Xác thực thẻ: Khi người giữ thẻ sử dụng thẻ tín dụng, người phát hành thẻ cần phải khẳng định xem thẻ được sử dụng có phải là thẻ được công bố hợp pháp thực sự bởi người phát hành thẻ hay không. Xác thực thẻ được thực hiện thông qua người phát hành thẻ một cách trực tuyến hoặc không trực tuyến. Việc xác thực của thẻ tín dụng hiện nay được thực hiện cùng với số thẻ, thời hạn có hiệu lực, số bí mật (mật khẩu) của thẻ. Cho nên, chúng tôi khuyến cáo một số yêu cầu như sau:
- Khuyến cáo đối với việc sinh và quản lý thông tin xác thực thẻ:
+ Số thẻ, thời hạn hiệu lực của thẻ, và số bí mật thẻ để xác thực thẻ cần phải được thể hiện bằng dấu hiệu được che giấu (ký hiệu *) trên màn hình máy tính hoặc thiết bị đầu cuối (terminal).
+ Số thẻ cần phải không ít hơn 8 ký tự
+ Thông tin thẻ cần phải nhập vào để xác thực thẻ không được nhập lại một cách tự động
+ Số bí mật thẻ không được ghi lại ở tại cửa hàng.
+ Nếu thông tin về số thẻ và thời hạn hiệu lực được ghi lại tại cửa hàng, nó cần phải được quản lý bởi phương thức Kiểm soát kép của người quản trị CSDL về thông tin tiền trả và người phát hành thẻ để kiểm soát việc rò rỉ thông tin, hoặc để cửa hàng không thể lợi dụng thông tin liên quan.
- Khuyến cáo đối với việc truyền đi thông tin xác thực thẻ:
+ Thông tin xác thực thẻ được chuyển đi dưới dạng đã được mã hoá để tránh tấn công lặp lại.
+ Tính toàn vẹn của tất cả thông tin được truyền đi cần phải được bảo đảm.
+ Việc xác thực thẻ cần phải được giới hạn số lần mắc lỗi nhập vào (3 lần thử) để tránh tấn công tìm khoá vét cạn.
Xác thực người giữ thẻ: Trong trường hợp mất thẻ, việc xác thực người giữ thẻ là quá trình để kiểm tra người nắm giữ thẻ thực sự với mục đích một người lạ không thể sử dụng nó một cách gian lận. Đối với việc trả tiền của thẻ tín dụng dựa trên từ tính, chúng tôi phân loại giao thức để xác thực người giữ thẻ an toàn, kiểu của phương pháp xác thực để xác thực người giữ thẻ.
- Khuyến cáo đối với phương pháp xác thực người giữ thẻ khi sử dụng mật khẩu xác thực:
+ Mật khẩu xác thực sử dụng từ 6 đến 12 ký tự.
+ Nó cần phải không được hiện ở dạng rõ trên màn hình.
+ Mật khẩu xác thực cần phải được nhập vào 2 lần.
+ Nó cần phải được truyền đi dưới dạng mã hoá để tránh tấn công lặp lại.
+ Tính toàn vẹn đối với tất cả dữ liệu được truyền đi cần phải được đảm bảo.
+ Xác thực người giữ thẻ cần phải hạn chế số lần lỗi nhập vào (3 lần thử) để tránh tấn công tìm khoá vét cạn.
+ Người giữ thẻ cần phải thay đổi mật khẩu xác thực một cách thường xuyên.
- Khuyến cáo đối với phương pháp xác thực người giữ thẻ sử dụng thông tin sinh trắc:
+ Hệ thống có thông tin sinh trắc cần phải là một môđun an toàn chống xâm nhập.
+ Nó cần phải được mã hoá với mục đích dữ liệu được truyền đi để nhận dạng sinh học và lưu trữ là không bị lộ ra đối với người lạ trong quá trình xác thực người giữ thẻ.
Xác thực và toàn vẹn cho thông tin giao dịch: Trong giao dịch điện tử, thông tin giao dịch được truyền đi có thể bị lộ ra do truy cập bất hợp pháp, hoặc bị thay đổi bởi nhiễu xảy ra trong kênh truyền (ví dụ, nhiễu điện từ). Vì thế, cũng như đối với giao dịch điện tử, thông tin giao dịch cần phải được đảm bảo là không bị giả mạo và được truyền đi một cách chính xác.
Khuyến cáo đối với xác thực và toàn vẹn cho việc truyền và lưu trữ:
+ Chức năng không chối bỏ đối với giao dịch đã chấp nhận và các chi tiết của giao dịch.
+ Toàn vẹn đối với thông tin được truyền đi và lưu trữ.
+ Xác thực dữ liệu đối với thông tin được truyền đi.
Hướng dẫn đối với quản lý khoá
Quản lý khoá là quản lý việc sinh, sử dụng, lưu trữ và huỷ bỏ khoá trong chu kỳ sống của các khoá mật mã. Thường sử dụng khoá mật mã để trao đổi, lưu trữ thông tin giao dịch đã được truyền đi qua kênh truyền thông giữa các đối tượng trong một hệ thống thanh toán điện tử dựa trên thẻ tín dụng. Cần phải quản trị một cách đúng đắn thông tin bí mật liên quan tuỳ theo môi trường, mục đích của việc sử dụng khoá mật mã.
Phân loại của các khoá mật mã: Chúng ta có thể phân loại khoá mật mã để sử dụng trong hệ thống thanh toán điện tử dựa trên thẻ tín dụng thành khoá để sinh chữ ký, khoá kiểm tra chữ ký, khoá MAC, khoá bí mật, khoá công khai, khoá riêng,... tuỳ theo phương pháp được sử dụng. Chúng ta cũng có thể phân loại thành khoá mã dữ liệu đối với bí mật dữ liệu, khoá mật mã cho toàn vẹn dữ liệu, khoá chữ ký,... tuỳ theo cách sử dụng của khoá mật mã. Hơn thế nữa, chúng ta phân loại chúng thành khoá chính, khoá dẫn xuất, khoá phiên trong mã khối. Chú ý rằng người ta cần phải sử dụng khoá chính để tạo ra khoá dẫn xuất và quản trị an toàn nhất. Khoá dẫn xuất cần phải chỉ được sử dụng trong việc tạo ra khoá phiên để sử dụng.
Sinh khoá: Khoá mật mã cần phải được tạo ra trong một thiết bị an toàn mà không bị tiếp cận một cách dễ dàng. Vì thế, phần cứng cần phải bao gồm môđun an toàn để tạo ra khoá mật mã và tạo ra khoá ở bên trong thiết bị. Tức là phần cứng cần phải bao gồm module an toàn chống xâm nhập đã được giải thích trong FIPS 140-2. Cũng vậy, khoá mật mã cần phải được tạo ra trong thiết bị an toàn đã được thoả mãn cùng với các yêu cầu của mức 2 của FIPS 140-2, và nó cần phải sử dụng cơ chế kiểm soát truy cập chẳng hạn như Kiểm soát kép. Khoá mật mã cần phải được tạo ra thông qua quá trình sinh số ngẫu nhiên hoặc giả ngẫu nhiên trong ISO 9564-1, hoặc ISO 11568-5, và nó cần phải sử dụng các nguồn ngẫu nhiên tốt. Hơn thế, khoá bí mật và khoá riêng cần phải đảm bảo tính bí mật, và khoá công khai được tạo ra cần phải được bảo vệ bằng xác thực CA. Nói chung, khoá riêng và khoá bí mật cần mức lưu trữ an toàn hơn so với khoá công khai.
Sử dụng khoá: Khoá mật mã cần phải được sử dụng một cách an toàn bởi người sử dụng hợp pháp. Đặc biệt, cần phải sử dụng tất cả các khoá đúng mục đích (ví dụ, mã hoá, xác thực, chữ ký, ...). Một số thông tin khoá nào có thể bị lộ ra nếu người ta không sử dụng khoá chỉ cho đúng một mục đích. Cần phải kiểm soát việc sử dụng cùng một khoá với nhiều cách sử dụng khác, nhiều người phát hành thẻ không được sử dụng một cặp khoá công khai cũng như người phát hành thẻ khác một cách có chủ ý. Không nên sử dụng hai khoá cho một mục đích. Khoá cần phải được tạo ra và cần phải được sử dụng bởi mục đích đã được dự kiến. Nếu khoá riêng và khoá bí mật đã hết hạn, hoặc bị lộ thì nó cần phải không được sử dụng tiếp nữa. Người phát hành thẻ cần phải sử dụng cặp khoá công khai có mức an toàn ít nhất là RSA 1024-bit và đối với mã khối cần phải sử dụng khoá bí mật có mức an toàn ít nhất như TDES 112-bit.
Lưu trữ khoá: Nếu người sử dụng mà không được phép sử dụng thiết bị an toàn mà lại thử tiếp cận thì cần phải dễ phát hiện ra hành động kiểu này. Cần phải biết PIN hoặc mật khẩu để có thể tiếp cận thẻ lưu giữ, giả thiết rằng khoá riêng và khoá bí mật được lưu trữ trong thẻ (ví dụ, thẻ thông minh, USB, đĩa mềm, ...). Cần phải lưu trữ và quản lý khoá riêng và khoá bí mật một cách an toàn theo các yêu cầu của Mức 2 của FIPS 140-2. Cũng vậy, khoá riêng và khoá bí mật mà không tồn tại trong một thiết bị an toàn về mặt mật mã cần phải được mã bằng mã khối chẳng hạn như TDES với khoá 112-bit hoặc RSA với ít nhất 1024-bit.
Huỷ bỏ khoá: Một khoá mật mã cần phải được huỷ bỏ, nếu khoá đã bị tổn hại hoặc thời hạn hiệu lực đã hết. Người sử dụng cần phải tiêu huỷ nó càng nhanh càng tốt để giảm thiểu mối nguy hiểm. Nó cần phải được huỷ một cách vật lý, hoặc cần phải xoá thông tin liên quan đến khoá một cách hoàn toàn bằng các phương tiện điện tử, nếu khoá được lưu trữ trong thẻ IC hoặc EEPROM. Nếu khoá đã bị hết hạn hoặc hết hạn hiệu lực, thì cần phải loại bỏ các khoá và không sử dụng tiếp nữa. Cần phải ghi đè các số ‘0’ hoặc ‘1’ ít nhất 3 lần để xoá khoá đã được lưu trữ trong EEPROM. Khuyến cáo cách xoá bỏ khoá mật mã bởi quy trình đã được chỉ ra bởi ISO 9564-1 hoặc ISO 11568-3. Nếu khoá bí mật bị tổn thương, bạn phải tiêu huỷ chứng chỉ khoá công khai tương ứng. Không sử dụng tiếp khoá bí mật trong cặp khóa và chứng chỉ liên quan nếu thời hạn hợp lệ đã hết. Bản sao của chứng chỉ đã hết hạn cần phải được duy trì cùng với việc kiểm tra giá trị chữ ký đã được tạo ra bởi khoá bí mật tương ứng với chứng chỉ đã hết hạn cần phải được yêu cầu. Khi kiểm chứng nó, cần phải kiểm tra thông qua trạng thái chứng chỉ mà chữ ký đã được tạo ra (có hiệu lực, hết hạn, bị thu hồi).
3. Kết luận
Chúng ta đã điểm lại các yêu cầu cơ bản đối với các hệ thống thanh toán điện tử theo các khía cạnh mật mã. Các yếu tố quan trọng trong hệ thống thanh toán điện tử dựa trên thẻ tín dụng được xem xét một cách chi tiết và phân tích vai trò của mỗi đối tượng cấu hình, việc lựa chọn các thuật toán mật mã, môđun xác thực và quản lý khoá,... Bài viết còn xem xét cách thức để chọn công nghệ cơ bản, cách sử dụng và quản trị nó. Cuối cùng, cần phải sử dụng các thuật toán có mức an toàn đáp ứng được cơ chế của giao thức sử dụng và quản lý một số thông tin quan trọng một cách an toàn trong hệ thống.