Thuật toán A5/1 bao gồm 3 thanh ghi dịch LSFR có độ dài khác nhau R1 = 19, R2 = 22, R3 = 23, các bit đầu tiên bên phải đều là các bit 0. Trên thanh ghi R1 các bit 13, 16, 17, 18 được gọi là các bit vị trí. Tương tự trên thanh ghi R2 là các bit 20, 21 và
thanh ghi R3 là 7, 20, 21, 22. Các thanh ghi này đều được đặc trưng bởi các hàm f(x) như sau :
• LSFR 1 : f(x) = x19 + x5 + x2 + x + 1
• LSFR 2 : f(x) = x22 + x + 1
• LSFR 3 : f(x) = x23 + x15 + x2 + x + 1
Hình 2.26. Cấu trúc của 3 thanh ghi dịch LSFR
Trong các vị trí d = 11, d = 12, d = 13 từ trái qua hay các bit mang số thứ tự là 8 trong thanh ghi R1 và 10 ở thanh ghi R2, R3 được gọi là các “tap clockings”.
Các thanh ghi được “clock” theo luật stop/go đặc trưng bởi hàm Majority. Ta định nghĩa hàm Majority như sau :
f{a(t + 11), b(t + 12), c(t + 13)} = (y1, y2, y3) Gía trị của hàm Majority được thể hiện trong bảng sau :
f (a(t + 11), b(t + 12), c(t + 13) ) = (y1, y2, y3) a(t+11) b(t+12) c(t+13) ( 1,1,1 ) ( 1,1,0 ) ( 0,1,1 ) 1 1 0 1 0 1 1 1 0 1 1 0 0 1 1 0 1 0
( 1,0,1 ) 1 0 0 1 1 0 Mỗi thanh ghi dịch bit định thời ‘tap clocking’, bit 8 trong R1, bit 10 trong R2 và R3. Hàm Majority được tính toán với đầu vào là các bit định thời của mỗi thanh ghi và đầu ra là các bit dùng để ‘clock’ vào các bit vị trí ‘tap possision’. Giá trị của hàm này tương ứng với các trường hợp khác nhau của bit định thời. Thanh ghi dịch chỉ được định thời khi bit ‘clock’ thỏa với hàm. Hàm điều khiển ‘clock’ này là phi tuyến trong thuật toán A5/1. Theo bảng trên, mỗi lần ‘clocks’ thì sẽ có 2 hoặc là 3 thanh ghi dịch nhận được xung clock và dịch bit. Ví dụ, trong trường hợp các bit định thời trong 3 thanh ghi dịch lần lượt là (0,0,1), kết quả hàm ‘Majority’ = (1,1,0) có nghĩa là thanh ghi R1, R2 sẽ nhận được xung clock và dịch (go), R3 không nhận được xung clock và không dịch (stop).
Chuỗi tuần tự đầu ra
U = {U(t)} = a(I1) + b (I2) + c(I3)
Trong đó, t = 0, 1...và Ii được xác định bởi tín hiệu đồng bộ ‘stop/go’, clock điều khiển bởi hàm Majority.
Hình 2.27. Hàm Majority Fuction điều khiển clock Các bước hoạt động của A5/1 như sau :
• Initialization : các bit của thanh ghi được đưa về zero. Thuật toán ở trong trạng thái S0.
• Input Kc : các thanh ghi đựoc clock nhưng không sử dụng luật stop/go trong 64 chu kỳ xung. Trong mỗi chu kỳ đưa một bit từ chuỗi khóa Kc vào cả 3 thanh ghi, từ bit có ý nghĩ thấp nhất đến bit có ý nghĩ lớn nhất. Mỗi bit này được XOR với bit zero trong mỗi thanh ghi. Khi tới chu kỳ xung mới, các bit trong thanh ghi được dịch trái, và bit mới được đưa vào lặp lại qúa trình như trên. Thuật toán đạt trạng thái S64.
• Input Fn : tương tự như bước 2, nhưng với chu kỳ là 22 chu kỳ xung clock và 22 bit Fn được nạp vào thay vì Kc. Thuật toán đạt trạng thái S86.
• Mixing : các thanh ghi được clock 100 chu kỳ. Ở bước này ta dùng thuật toán stop/go, các bit output được sinh ra ta bỏ qua và thuật toán đạt trạng thái S186
• Output generation : các thanh ghi tiếp tục được clock 228 lần nữa vẫn dùng thuật toán stop/go. Lúc này, chuỗi bit sinh ra được chia làm 2 phần, mỗi phần dài 114 bit. Phần đầu tiên được XOR với chuỗi Ciphertext thu được để giải mã, trong khi đó phần thứ 2 được XOR với chuỗi Plaintext để mã hóa chuỗi này. Chuỗi 228 bit được gọi là chuỗi mã hóa “cipher stream”. Thuật toán đạt trạng thái S414 tại cuối bước này. Các bước từ 1 đến 5 được lặp lại với mỗi khung dữ liệu mới. Mỗi lần như vậy thông số Fn thay đổi trong khi Kc vẫn được giữ nguyên cho đến lần nhận thực kế tiếp
Các trạng thái của thuật toán A5/1 được thể hiện trong hình sau :
S 186 Input COUNT S 414 100 clocks 228 clocks S 64 S86 S0 64 clocks 22 clocks
Input K C Mixing Output generation Hình 2.28. Các trạng thái của thuật toán A5