diff --git a/src/osmo_gsm_tester/ofono_client.py b/src/osmo_gsm_tester/ofono_client.py
index 00cfd47..ed7e3e4 100644
--- a/src/osmo_gsm_tester/ofono_client.py
+++ b/src/osmo_gsm_tester/ofono_client.py
@@ -403,6 +403,9 @@
             return self._ki
         return self.conf.get('ki')
 
+    def auth_algo(self):
+        return self.conf.get('auth_algo', None)
+
     def _on_netreg_property_changed(self, name, value):
         self.dbg('%r.PropertyChanged() -> %s=%s' % (I_NETREG, name, value))
 
diff --git a/src/osmo_gsm_tester/osmo_hlr.py b/src/osmo_gsm_tester/osmo_hlr.py
index 08de07c..0b763c7 100644
--- a/src/osmo_gsm_tester/osmo_hlr.py
+++ b/src/osmo_gsm_tester/osmo_hlr.py
@@ -114,8 +114,18 @@
         modem.set_msisdn(msisdn)
         subscriber_id = self.next_subscriber_id
         self.next_subscriber_id += 1
+
         if not algo:
-            algo = self.AUTH_ALGO_COMP128v1 if modem.ki() else self.AUTH_ALGO_NONE
+            alg_str = modem.auth_algo()
+            if alg_str is None or alg_str == 'none':
+                algo = self.AUTH_ALGO_NONE
+            elif alg_str == 'comp128v1':
+                algo = self.AUTH_ALGO_COMP128v1
+            elif alg_str == 'xor':
+                algo = self.AUTH_ALGO_XOR
+        if algo != self.AUTH_ALGO_NONE and not modem.ki():
+            raise log.Error("Auth algo %r selected and no KI specified" % algo)
+
         self.log('Add subscriber', msisdn=msisdn, imsi=modem.imsi(), subscriber_id=subscriber_id, algo=algo)
         conn = sqlite3.connect(self.db_file)
         try:
diff --git a/src/osmo_gsm_tester/osmo_nitb.py b/src/osmo_gsm_tester/osmo_nitb.py
index be3b24b..8f91bbd 100644
--- a/src/osmo_gsm_tester/osmo_nitb.py
+++ b/src/osmo_gsm_tester/osmo_nitb.py
@@ -112,12 +112,24 @@
     def mcc_mnc(self):
         return (self.mcc(), self.mnc())
 
-    def subscriber_add(self, modem, msisdn=None):
+    def subscriber_add(self, modem, msisdn=None, algo=None):
         if msisdn is None:
             msisdn = self.suite_run.resources_pool.next_msisdn(modem)
         modem.set_msisdn(msisdn)
+
+        if not algo:
+            alg_str = modem.auth_algo()
+            if not alg_str or alg_str == 'none':
+                algo = None
+            elif alg_str == 'comp128v1':
+                algo = 'comp128v1'
+            elif alg_str == 'xor':
+                algo = 'xor'
+        if algo is not None and not modem.ki():
+            raise log.Error("Auth algo %r selected and no KI specified" % algo)
+
         self.log('Add subscriber', msisdn=msisdn, imsi=modem.imsi())
-        OsmoNitbCtrl(self).subscriber_add(modem.imsi(), msisdn, modem.ki())
+        OsmoNitbCtrl(self).subscriber_add(modem.imsi(), msisdn, modem.ki(), algo)
 
     def subscriber_delete(self, modem):
         self.log('Delete subscriber', imsi=modem.imsi())
@@ -155,8 +167,6 @@
 
     def subscriber_add(self, imsi, msisdn, ki=None, algo=None):
         created = False
-        if ki and not algo:
-            algo = 'comp128v1'
 
         if algo:
             value = '%s,%s,%s,%s' % (imsi,msisdn,algo,ki)
diff --git a/src/osmo_gsm_tester/resource.py b/src/osmo_gsm_tester/resource.py
index 9470f48..c55140a 100644
--- a/src/osmo_gsm_tester/resource.py
+++ b/src/osmo_gsm_tester/resource.py
@@ -64,6 +64,7 @@
         'modem[].path': schema.STR,
         'modem[].imsi': schema.IMSI,
         'modem[].ki': schema.KI,
+        'modem[].auth_algo': schema.AUTH_ALGO,
     }
 
 WANT_SCHEMA = util.dict_add(
diff --git a/src/osmo_gsm_tester/schema.py b/src/osmo_gsm_tester/schema.py
index 4c9b9cd..4df33f2 100644
--- a/src/osmo_gsm_tester/schema.py
+++ b/src/osmo_gsm_tester/schema.py
@@ -61,6 +61,11 @@
 def msisdn(val):
     match_re('MSISDN', MSISDN_RE, val)
 
+def auth_algo(val):
+    if val in ('none', 'xor', 'comp128v1'):
+        return
+    raise ValueError('Unknown Authentication Algorithm: %r' % val)
+
 INT = 'int'
 STR = 'str'
 BOOL_STR = 'bool_str'
@@ -71,6 +76,7 @@
 KI = 'ki'
 MSISDN = 'msisdn'
 TRX_REMOTE_IP = 'trx_remote_ip'
+AUTH_ALGO = 'auth_algo'
 SCHEMA_TYPES = {
         INT: int,
         STR: str,
@@ -82,6 +88,7 @@
         KI: ki,
         MSISDN: msisdn,
         TRX_REMOTE_IP: ipv4,
+        AUTH_ALGO: auth_algo,
     }
 
 def validate(config, schema):
