2012-05-08 26 views
9

Tôi đã cập nhật điện thoại Android của mình lên 4.0.4 và tôi nhận thấy rằng một tệp mới nfcee access.xml xuất hiện trong thư mục hệ thống. Ý tưởng của tập tin theo như tôi hiểu là giữ một danh sách các chữ ký, và cho phép truy cập vào SE và liên quan chỉ dành cho các gói được ký với một trong các chữ ký này. Cho đến nay trong danh sách này tất nhiên là chữ ký của Google Wallet.Phần tử bảo mật Kiểm soát truy cập trên ICS 4.0.4

Có ai biết quy trình trong tương lai sẽ được nhập vào danh sách này trong tương lai không? Bạn có cần xin phép Google trực tiếp không?

Trả lời

6

Điều này thực sự thú vị. Nếu nhập chứng chỉ và tên gói trong tệp này là tất cả những gì cần thiết, bạn không cần phải nói chuyện với Google, chỉ cần nhận bất kỳ ai đang xây dựng ROM (bản thân bạn nếu ROM tùy chỉnh hoặc một nhà cung cấp cụ thể) bao gồm nó. Tuy nhiên, vấn đề lớn hơn là, bạn cần phải nói chuyện với ai để có được các phím CardManager. Nếu đó là nhà cung cấp dịch vụ, bạn cũng có thể yêu cầu họ cài đặt sẵn applet của bạn, vì vậy bạn có thể không cần các khóa khi chạy (trừ khi bạn muốn sử dụng một kênh an toàn cho applet của mình).

Cập nhật: Dưới đây là tóm tắt về hỗ trợ SE trong Android và một số thông tin khác về cách sử dụng tính năng nhúng. Trong ngắn hạn, nó hoạt động, nhưng bạn chỉ có thể truy vấn các công cụ của khóa học. Nó chạy JavaCard và tương thích GP 2.1.1, sử dụng các khóa 3DES cho kênh bảo mật.

http://nelenkov.blogspot.com/2012/08/accessing-embedded-secure-element-in.html

http://nelenkov.blogspot.com/2012/08/android-secure-element-execution.html

BTW, đây là cert hiện phép trên GN của tôi 4.0.4. Gói không được chỉ định, vì vậy mọi ứng dụng được ký với nó sẽ có quyền truy cập vào SE:

Certificate: 
    Data: 
     Version: 3 (0x2) 
     Serial Number: 
      a8:cd:17:c9:3d:a5:d9:90 
     Signature Algorithm: sha1WithRSAEncryption 
     Issuer: C=US, ST=California, L=Mountain View, O=Google Inc., OU=Android, CN=Google NFC 
     Validity 
      Not Before: Mar 24 01:06:53 2011 GMT 
      Not After : Aug 9 01:06:53 2038 GMT 
     Subject: C=US, ST=California, L=Mountain View, O=Google Inc., OU=Android, CN=Google NFC 
+0

Tôi đồng ý rằng vấn đề thực tế là Khóa quản lý thẻ, nhưng nếu Google cung cấp dịch vụ TSM trong tương lai, điều này cũng có thể cho phép các bên khác sử dụng SE. Ý kiến ​​của tôi là nếu Google không mở thêm một chút, thẻ SIM hoặc thẻ MicroSD sẽ sớm trở thành SE thích hợp hơn. Tôi chỉ muốn biết nếu ai đó biết kế hoạch tương lai của Google theo hướng này. –

+0

Vâng, tôi không thể nói về kế hoạch của Google, nhưng vì Google Wallet không hoạt động tốt, có thể họ sẽ mở ra để cho phép các dịch vụ thanh toán NFC khác tương tự/cạnh tranh hoạt động với SE trên thiết bị Nexus. –

0

Câu trả lời đơn giản là KHÔNG bạn không thể làm gì với Phần tử bảo mật. Chỉ chủ sở hữu hoặc tổ chức phát hành SE mới có thể cho phép truy cập vào SE - tức là chính Google, hoặc có thể là Dữ liệu đầu tiên (http://www.firstdata.com/en_us/products/merchants/mobile-commerce/trusted-service-manager -solution.html), nhưng tôi nghĩ công ty này chỉ chịu trách nhiệm về chính Google Wallet chứ không phải cho quản lý SE - điều này có thể được thực hiện bởi SK C & C - Tôi không có ý tưởng ...

Cũng lấy nó - điều kiện tiên quyết để sử dụng phần tử bảo mật được nhúng là bạn đang cung cấp dịch vụ tuyệt vời và bạn là đối tác của Google hoặc đối tác sản xuất điện thoại khác (trừ khi bạn đến từ Facebook hoặc công ty tương tự tiết kiệm thời gian của bạn và không thử). Điều này là không dễ dàng và 99,99% dịch vụ không thể ở đó. Về các yếu tố an toàn, bạn có thể chờ cho đến khi thẻ SWP và SIM trở nên phổ biến và có thể chấp nhận được vì bạn có thể nhận được hợp đồng với MNO ở cấp quốc gia dễ dàng hơn hoặc hy vọng trong giải pháp NFC-WI và thẻ SD hoặc đi với các nhãn dán hoặc phụ kiện bên ngoài như iCarte cho iPhone.

BR Sten

+0

Tuyên bố này có dựa trên chính sách/thực tế thực tế hay bạn chỉ đoán ở đây? 'điều kiện tiên quyết để sử dụng phần tử bảo mật được nhúng là bạn đang cung cấp dịch vụ tuyệt vời và bạn là Google' –

+0

Xin chào, tôi đoán dựa trên kinh nghiệm của tôi.Bạn có biết bất kỳ dịch vụ nào khác thì Google Wallet cho Sprint không? Nếu bạn kiểm tra những gì đang xảy ra trong ngành công nghiệp NFC, đó là 'trận SE', bởi vì nếu bạn kiểm soát SE bạn tham gia vào doanh thu. Không gian trên SE là quý giá và chủ yếu sẽ được sử dụng cho các giải pháp thanh toán, các ứng dụng MNO và các dịch vụ lớn như Oyster. Nó dành cho các công ty đáng tin cậy - trừ khi toàn bộ hệ sinh thái thay đổi. Vì vậy, ý tưởng rằng bạn sẽ có giải pháp tốt đẹp mà sẽ bảo đảm khóa cửa của bạn và bạn muốn chạy dịch vụ đó trong SE nhúng như tôi nghĩ Utopia. Tôi có thể sai tất nhiên ... – STeN

+1

Điều rõ ràng đối với tôi là tại thời điểm phần tử bảo mật được nhúng không có sẵn cho bất kỳ ai khác ngoài Google. Nhưng tôi chỉ nói rằng sự thay đổi mới nhất này trong NFCService là dấu hiệu cho thấy Google đi theo hướng sẽ cho phép các bên thứ ba trong tương lai có các ứng dụng sử dụng SE. Tất nhiên sau khi được Google chấp thuận. Một cái gì đó như RIM đang làm tại thời điểm này với yếu tố an toàn của họ. –

16

Nếu bạn nhổ tận gốc điện thoại, bạn có thể sửa đổi tập tin. Tệp này chứa danh sách chữ ký và tên gói được phép truy cập vào phần tử bảo mật (SE). Chữ ký là chứng chỉ X.509 được mã hóa bằng hex. Để tạo một thẻ, chỉ cần bao gồm thẻ <debug /> trong tệp và nó sẽ in ra để ghi lại chữ ký được mã hóa bằng hex của các ứng dụng bị từ chối truy cập SE, để dễ dàng cắt và dán vào tệp này.

Để tạo ra một ứng dụng có thể truy cập vào các SE, bạn cần phải thêm giấy phép này để manifest:

<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" /> 

Để thực sự truy cập vào các SE, bạn cần phải truy cập vào một API ẩn bằng cách nhập com.android.nfc_extras:

import com.android.nfc_extras.NfcAdapterExtras; 
import com.android.nfc_extras.NfcAdapterExtras.CardEmulationRoute; 
import com.android.nfc_extras.NfcExecutionEnvironment; 

Cách dễ nhất để thực hiện điều này có thể là biên dịch ứng dụng của bạn trong cây mã nguồn Android bằng cách đặt nó trong packages/apps và tạo nó từ đó. Bạn cần phải thêm dòng sau vào Android.mk makefile để có được quyền truy cập vào API SE:

LOCAL_JAVA_LIBRARIES := com.android.nfc_extras 

Các chức năng trong com.android.nfc_extras phép cho phép và vô hiệu hóa các SE, gửi lệnh đến nó và nhận phản hồi từ nó (so sánh với IsoDep.transceive()).

+1

wow! +1. Tôi không biết về api ẩn. Dù sao, bạn có biết bất kỳ liên kết nào về điều này không? Hoặc một hướng dẫn từng bước để bắt đầu? –

+1

Hãy xem [bài đăng trên blog này] (http://nelenkov.blogspot.nl/2012/08/accessing-embedded-secure-element-in.html) bởi @NikolayElenkov –

2

Với cavets: Nếu bạn có thể nhận ứng dụng của bạn trên danh sách nfcee_access bạn có thể làm những điều sau đây:

  • Enable UICC (thẻ sim) và cho phép các phần tử bảo mật nhúng (nếu có)
  • Mở kênh giao tiếp với phần tử bảo mật được nhúng và trao đổi dữ liệu
  • Nhận dữ liệu giao dịch từ UICC (thẻ sim) nếu UICC muốn gửi dữ liệu cho bạn (bạn sẽ là người nhận).

Bạn có thể làm tất cả điều này nếu bạn root điện thoại của mình. Không cần phải hack danh sách nfcee_access để làm như vậy, bạn chỉ có thể chặn tất cả lưu lượng truy cập đến nfc-chip.

Những gì bạn không thể làm được, ngay cả với một chiếc điện thoại bắt nguồn từ:

  • Cài đặt applet trên UICC/ESE
  • Log/Màn hình/ảnh hưởng truyền dữ liệu giữa các phần tử bảo mật/UICC nhúng và một đầu đọc bên ngoài, ví dụ hệ thống thanh toán hack.

Lưu ý: Bạn có thể thực hiện hầu hết mọi thứ nếu và chỉ khi bạn có kiến ​​thức và các khóa truy cập bảo mật để truy cập SE được nhúng. Tuy nhiên, nếu bạn có những thông tin này, bạn sẽ không hỏi về tràn ngăn xếp. :-)

Kiến thức này được giữ bí mật và không ai cho bạn biết bí mật này trừ khi bạn là công ty lớn như google, mastercard, visa, American-express và tương tự.

Các vấn đề liên quan