- Gần đây tôi đã mua vé concert trên Ticketmaster. Thay vì vé PDF có thể in bình thường, Ticketmaster phát hành vé thông qua hình thức vào cổng bằng di động (Mobile Entry), tức là một hệ thống gọi là SafeTix. Vé được cung cấp dưới dạng mã vạch xoay bên trong web app của Ticketmaster hoặc ứng dụng Android/iOS.
- Trước đây, vé mua online hay offline đều có thể in ra được. Vé PDF có thể xem trên gần như mọi thiết bị, có thể truy cập ngay cả khi điện thoại không có kết nối Internet, và cũng có thể dùng dưới dạng vé giấy ngay cả khi không có điện thoại. Nếu được mua từ nơi bán chính thức thì cũng biết đó là vé thật.
- Năm ngoái, khi đi một buổi concert dùng hệ thống vé mã QR xoay tương tự, rất nhiều người đã gặp vấn đề khi vào cổng. Vấn đề chính là điện thoại không có kết nối Internet nên mã QR không tải được. Nhân viên tại chỗ cũng không có cách nào hỗ trợ.
Tiếp thị
- Ticketmaster quảng bá công nghệ SafeTix như một liều thuốc vạn năng chống lại kẻ lừa đảo và phe vé.
- Họ tuyên bố rằng nhờ mã vạch độc nhất tự làm mới sau mỗi vài giây nên không thể bị đánh cắp hay sao chép, từ đó giảm mạnh rủi ro phe vé và bảo đảm an toàn.
- Việc mã vạch chuyển động chỉ là hoạt ảnh CSS, và nó không thể ngăn việc quét từ ảnh chụp màn hình.
Động cơ
- SafeTix khiến việc bán lại vé bên ngoài thị trường phe vé khép kín, có biên lợi nhuận cao của Ticketmaster trở nên khó khăn.
- Nó ép người dùng phải cài ứng dụng độc quyền của Ticketmaster.
- Vì không thể lưu và chuyển vé ra ngoài Ticketmaster, người dùng buộc phải cung cấp thông tin liên hệ của bạn bè cho Ticketmaster.
Mâu thuẫn
- Việc nói có thể lưu vé để dùng offline nhưng lại không thể chuyển vé ra ngoài Ticketmaster là một mâu thuẫn.
- Nếu dữ liệu có thể sao chép thì có thể truyền đi, và nếu có thể truyền đi thì có thể chia sẻ và bán.
- Việc nói vé có DRM mạnh nhưng vẫn có thể xem offline tự nó đã là một mâu thuẫn.
Reverse engineering
- Sau khi kiểm tra chính mã vạch, tác giả xác nhận đó là mã vạch PDF417 và nó mã hóa văn bản UTF-8.
- Mã vạch thay đổi mỗi 15 giây và gồm dữ liệu Base64, hai số có 6 chữ số và một dấu thời gian Unix.
- Hai số 6 chữ số hoạt động giống như Time-based One-Time Passwords (TOTP).
- Dữ liệu Base64 có vẻ là dữ liệu ngẫu nhiên dài 48 byte, được suy đoán là một dạng bearer token ngẫu nhiên để nhận diện vé và người sở hữu vé.
Bí mật của bí mật
- Để tạo TOTP, chỉ cần một khóa bí mật dùng chung (mảng byte) và một đồng hồ đang chạy đúng.
- Vì mã vạch có hai TOTP nên cũng sẽ có hai khóa bí mật dùng chung. Nếu có chúng cùng bearer token thì có thể tạo ra số lượng mã vạch hợp lệ tùy ý.
Gỡ lỗi web app
- Tác giả kết nối trình duyệt Chrome trên điện thoại Android với Chrome DevTools trên máy tính để bàn để xem API và mã nguồn của Ticketmaster.
- Tác giả tìm thấy request đáng chú ý tại endpoint API
/api/render-ticket/secure-barcode.
- Trong dữ liệu phản hồi có thuộc tính
token được mã hóa Base64, và khi giải mã thì đó là một đối tượng JSON.
- Tác giả suy đoán
eventKey (ek) và customerKey (ck) là các khóa bí mật TOTP.
- Khi xem mã nguồn của web app, tác giả tìm thấy hàm
generateSignedToken, nơi dữ liệu mã vạch được tạo ra.
- Hai TOTP được tạo theo khoảng thời gian 15 giây, còn ngoài ra thì được cấu thành giống TOTP SHA-1 thông thường.
Bẻ khóa vé
- Giờ đây tác giả đã biết mọi thứ cần thiết để sao chép mã vạch của Ticketmaster trong một ứng dụng tùy chỉnh.
- Có thể tạo mã vạch PDF417 không thể phân biệt với mã trong ứng dụng Ticketmaster chính thức.
- Ticketmaster còn khiến việc trích xuất token trở nên dễ dàng vì khi component trình render mã vạch được mount trên trang web,
token tự động được ghi vào console của trình duyệt.
Thời hạn hiệu lực
- Không rõ thời hạn hiệu lực của
rawToken. Có khả năng chỉ một token là hợp lệ cho mỗi tài khoản Ticketmaster.
- Theo tài liệu API dành cho nhà phát triển của Ticketmaster, token cần được làm mới 20 giờ trước khi sự kiện bắt đầu.
- Chừng đó là đủ để lưu vé dùng offline. Tác giả đã tạo ứng dụng Expo TicketGimp để render mã vạch SafeTix.
Kết luận
- Ticketmaster đang loại trừ những người yếu thế về công nghệ.
- Họ ngụy trang những dark pattern này thành biện pháp an toàn.
- Đây là một công ty ủng hộ các thực hành kinh doanh tàn nhẫn.
- Các nhà phát triển phần mềm cần sử dụng loại quyền lực này một cách đúng đắn.
- Hãy giải thể Ticketmaster.
Ý kiến của GN⁺
- Bài viết này cho thấy rõ quá trình reverse engineering công nghệ SafeTix của Ticketmaster. Về mặt kỹ thuật, đây là nội dung rất thú vị.
- Tuy nhiên, vẫn có nghi vấn về việc hành động như vậy có hợp pháp hay không. Việc tự ý hack và lạm dụng hệ thống của Ticketmaster rất có thể là bất hợp pháp.
- Dù đồng ý rằng cách hành xử của Ticketmaster gây bất lợi cho người tiêu dùng, việc đáp trả bằng cách lạm dụng công nghệ cũng không phải là hướng đi phù hợp. Cần nêu vấn đề và tìm giải pháp theo cách hợp pháp.
- Khi công nghệ phát triển, những nỗ lực áp dụng DRM và kiểm soát người tiêu dùng theo kiểu này có lẽ sẽ còn gia tăng. Có vẻ cần những thảo luận xã hội và cải thiện quy định để bảo vệ quyền riêng tư và quyền lợi người tiêu dùng.
- Với tư cách là nhà phát triển, chúng ta có trách nhiệm dùng sức mạnh của công nghệ để tạo ra thay đổi tích cực cho xã hội. Không chỉ đơn thuần triển khai công nghệ, mà còn phải suy nghĩ sâu về tác động mà công nghệ đó gây ra.
1 bình luận
Ý kiến trên Hacker News
TicketMaster và AXS đã từng có cơ hội hỗ trợ các nền tảng chuyển nhượng và chuyển giao vé, nhưng họ đã không chọn làm vậy
Mô hình kinh doanh của TicketMaster dựa trên việc đánh lừa công chúng
Lập trình viên phần mềm giống như những pháp sư và thầy phù thủy của thời hiện đại
Một thực tiễn tồi tệ khác của TicketMaster
Các bài viết liên quan đến TicketMaster thường có nhiều cách diễn đạt cường điệu
Vấn đề vé có thể được giải quyết rất đơn giản
Không thể là người tốt nếu làm việc cho một công ty tồi tệ
Thắc mắc về cách TicketMaster thực sự vận hành
Việc phải dùng điện thoại di động mới có thể vào xem chương trình là một vấn đề
Việc cần có kết nối Internet tại sự kiện là một vấn đề