※本記事は2024年9月9日時点の内容です。
この記事は私がfree5GCとリアルgNB(ローカル5G用小型基地局= Small Cell)を使ってiPhone接続を試す機会があり、その過程をまとめたものです。
free5GCのインストールについては基本的には全てfree5GCプロジェクトのWEBサイトを参考に進めました。
インストールしたバージョンは以下の通りです。
OS : Ubuntu 20.04.6 LTS
Linux Kernerl : 5.4.0-193-generic
free5GC : v3.4.2
過去記事はこちら
① Ubuntuインストール編
② free5GCインストール編
③ free5GC設定変更編
iPhoneをローカル5Gで使うために… (SUCI SIM)
1. SUCI SIMについて
iPhone, iPad は IOS17からプライベートネットワークに対応しました。
ローカル5Gは5G SAですが、Appleの5G SA セキュリティとプライバシーの要件には以下の記載があります。
プライバシーの秘匿: SUCI(Subscription Concealed Identifier)では非Null保護スキームを使用する必要があります。これは、TCA 2.3.1および3.1仕様で説明されているように、SIM上のSUCI計算またはME SUCI計算のいずれかによって実現できます。詳しくは、3GPP技術仕様33.501を参照してください。
ユーザデータの機密性: ユーザデータを不正なアクセスから保護するため、Null暗号化には対応していません。
[Apple webサイトより]
SUCI暗号化の保護スキームには現状以下3種があるのそうですが、
- Null Scheme (ID = 0x0)
- Profile A (ID = 0x1)
- Profile B (ID = 0x2)
※他、0x3 ~ 0xFは予約されている。
プライバシー要件として、上記保護スキームのうち「Null Scheme」には対応しておらず「Profile A」か「Profile B」の保護スキームを使う必要があるようです。
※SUCI保護スキームの詳細については3GPP TS33.501を参照ください。
という事で、iPhoneをローカル5Gネットワークで使用しようとする場合にはSUCI保護スキーム「Profile A」か「Profile B」に設定されたSIMを準備します。
2. SUCI保護スキーム用プライベートキーとパブリックキーの生成
SUCI SIM作成にあたり、SIMと5G Coreに設定する暗号鍵を生成する必要があります。これはOpenSSLで生成しました。
今回はProfile Aで進めました。3GPPによると、Profile Aの暗号化アルゴリズムはCurve25519です。
以下のコマンドでプライベートキーを生成。
openssl genpkey -algorithm X25519 -out <Path & filename>.key
<Path & filename>部分はkeyファイルをexportする場所とファイル名を指定します。
(例)openssl genpkey -algorithm X25519 -out /root/ProfileA_private.key
次に生成したプライベートキーファイルからプライベートキーとパブリックキーを確認します。
openssl pkey -text -in <上で生成したプライベートキーのフルパス>
プライベートキーとパブリックキーが16進数64桁でそれぞれ表示されますのでメモします。
SUCI SIM作成にはこのパブリックキーが必要で、一方free5GCにはプライベートキーとパブリックキー両方を設定します。
※SIM調達方法については別途記事にするつもりです。
3. free5GCへキー設定
メモしたプライベートキーとパブリックキーをfree5GCに設定します。
SSH接続後、udmcfg.yamlを編集します。
cd /root/free5gc/config
vi udmcfg.yaml
SUCI profileのProfile Aの部分にプライベートキーとパブリックキーを入れて保存します。
入力の際にはデフォルトでキーが記載されていますのでそれにならって同じように16進数64桁をコロンなしで入力します。
以上で設定完了です。
次記事ではgNB接続の過程についてまとめる予定です。