@@ -13,16 +13,17 @@ provides a broader look at this kind of cryptographic construct.
1313## Disclaimer
1414
1515DO NOT USE THOSE ALGORITHMS FOR ANYTHING SERIOUS !
16+
1617The source codes provided in this project are for education purpose only, to help
1718understanding the cryptanalysis published recently.
1819
1920
2021## History
2122
2223Both GEA-1 and GEA-2 are stream ciphers based on 3, respectively 4, LFSRs and a
23- boolean function. There are relying on 64 bits symmetric key, established after
24+ boolean function. They are relying on a 64 bits symmetric key, established after
2425a successful authentication of a mobile subscriber. They can be used to protect
25- GPRS and EDGE connections (i.e. 2G) , depending of the configuration done by the mobile
26+ GPRS and EDGE connections, depending of the configuration done by the mobile
2627operator in its [ SGSN] ( https://en.wikipedia.org/wiki/GPRS_core_network#Serving_GPRS_support_node_(SGSN) ) .
2728
2829They were initially designed in the 90's, together with the GPRS system.
@@ -34,12 +35,18 @@ This last one is hopefully used by most of the operators in their SGSN today (in
3435A risk remains as most of the handsets continue supporting GEA-1 and GEA-2 (in 2021),
3536even if there is more and more initiatives to remove at least GEA-1 from them.
3637Keeping support for weak encryption algorithm in current handsets enables for potential
37- semi-passive or plain man-in-the-middle attacks against GPRS connections.
38+ semi-passive or plain man-in-the-middle attacks against GPRS and EDGE connections.
39+
40+ Unfortunately, other attacks exist against 2G connections, mainly due to weaknesses
41+ within the protocols and especially the weak authentication procedure for 2G subscribers.
42+ Recently, the EFF indicated the Android OS will provide a feature to disable 2G in smartphones.
43+ Some large mobile operators have also started decommissioning their 2G network,
44+ or are planning to in the years to come.
3845
3946
4047## Licensing
4148
42- The code contained in this repository provided as is without warranty, under the
49+ The code contained in this repository is provided as is, without warranty, under the
4350[ GNU AGPL v3] ( https://www.gnu.org/licenses/agpl-3.0.txt ) software license.
4451
4552
@@ -89,8 +96,8 @@ GEA2 test vector 1: OK
8996GEA2 test vector 2: OK
9097```
9198
92- Warning: this Python implementation is slow as hell! For any serious work, please
93- use the Rust or C ones.
99+ Warning: this Python implementation is slow as hell! For any work that requires producing
100+ large keystreams, use the Rust or C ones.
94101
95102
96103### C
@@ -113,7 +120,7 @@ $ make clean
113120rm -f test gea12.so
114121```
115122
116- Warning: the code makes use of the ` uint64_t ` type for each register, hence requires
123+ Warning: the code makes use of the ` uint64_t ` type for each LFSR register, hence requires
117124a 64 bit machine. Moreover, it has been tested on a little-endian system only.
118125
119126
0 commit comments