Quá trình kiểm tra BAC đảm bảo chống đọc lén thông tin trong chíp và nghe trộm thông tin truyền giữa RFIC và IS.
Cơ chế này cần thực hiện bởi thực tế là các RFIC có thể kết nối đến bất kỳ một thiết bị đầu đọc theo chuẩn ISO/IEC 14443. Do đó, BAC nhằm mục đích giới hạn truy cập thông tin lưu trên RFIC của HCĐT cho những đối tượng có truy cập vật lý đến chính booklet của nó. Nghe lén/đọc trộm bị chặn bằng cách truyền thông báo bảo mật, tất cả dữ liệu chuyển giữa RFIC và đầu đọc được mã hoá sử dụng khoá phiên có được từ BAC. Như vậy ta có thể ngăn chặn được hai hình thức tấn công là đọc lén và nghe trộm. Hình 27 mô tả chi tiết các bước tính toán của quá trình BAC.
Quy trình BAC bao gồm 2 bước sau:
- Thứ nhất, khi nhận được tín hiệu từ RFIC, IS chứng minh nó đã đọc vùng MRZ và có được khoá truy cập dữ liệu cơ bản: KENC và KMAC (khoá mã hóa và khóa xác thực).
Để nhận được khoá KENC và KMAC , IS đọc MRZ từ vùng quang học, tính KSeed‟=SHA1(MRZ.DocNum|| MRZ.DoB || MRZ.ExpDate), sau đó tính Kseed=MostSignificantBytes(Kseed‟,16).
Trong đó MRZ.DocNum, MRZ.DoB và MRZ.ExpDate tương ứng với số hộ chiếu, ngày sinh và ngày hết hạn.
Từ KSeed tính KENC và KMAC
KENC‟=SHA(Kseed || “00000001”) KENC=MostSignificantBytes(KENC‟,16) KMAC‟=SHA(Kseed || “00000002”) KMAC=MostSignificantBytes(KMAC‟,16)
Khi IS đã có KENC và KMAC, nó gửi yêu cầu thách đố đến RFIC. RFIC gửi số ngẫu nhiên c đến IS. IS sinh ra kIS (một phần để tạo ra khoá phiên truyền thông báo bảo mật giữa hai bên) và t (time stamp) ngẫu nhiên. Tính cp=KENC(t||c||kIS), tính mã xác thực thông báo m=KMAC(cp) và gửi (cp||m) đến RFIC.
RFIC tính mã xác thực thông báo để kiểm tra tính toàn vẹn của thông điệp, giải mã cp dùng KENC (khoá KENC và KMAC lưu trong chíp từ khi cấp hộ chiếu) và so sánh c‟
xem có trùng với c ban đầu không. Nếu tất cả những thẩm tra này đều thành công, RFIC có thể tin chắc rằng IS đã đọc MRZ và sở hữu KENC và KMAC.
RFIC IS
Đọc MRZ vùng quang học Read(MRZ(ORC))
Kseed‟=SHA(MRZ.DocNum||
MRZ.DoB || MRZ.ExpDate)
Kseed=MostSignificantBytes(Kseed‟,16) KENC‟=SHA(Kseed || “00000001”) KENC=MostSignificantBytes(KENC‟,16) KMAC‟=SHA(Kseed || “00000002”) KMAC=MostSignificantBytes(KMAC‟,16)
c=Rnd()
Challenge Request
c
t,kIS=Rnd(); s=t || c || kIS
cp={s}KENC; m=MAC(cp,KMAC) r=cp || m MAC(cp,KMAC) = m t' || c‟ || kIS‟={cp}KENC c = c‟ r kRFIC=Rnd(); s‟=c || t‟ || kRFIC cp‟={s‟}KENC m‟= MAC(cp‟, KMAC) r‟=cp‟ || m‟ r‟ MAC(cp‟, KMAC) = m‟ c‟‟ || t‟‟ || kRFIC‟ = {cp‟}KENC t = t‟ kSM=kIS kRFIC kSM=kIS kRFIC
Hình 27: Mô tả quá trình Basic Access Control
- Bước thứ 2 là sự “dàn xếp” khoá phiên bảo mật thông điệp (kSM). RFIC sinh ra số ngẫu nhiên kRFIC, tính s‟=c||t‟||kRFIC. Tính r‟=cp‟||m‟ trong đó cp‟=KENC(s‟) và cp‟ là mã xác thực thông báo của s‟. Sau đó RFIC gửi r‟ đến IS.
Tiếp theo, cả IS và RFIC cùng tính khoá phiên truyền thông báo bảo mật kSM=kIS