電子ブロック工房

MachiKania type P/PU ver 1.7.1を公開

2026年9月26日

MachiKania type P/PU ver 1.7.1 を公開しました。

https://github.com/machikania/phyllosoma/releases/tag/Ver1.7.1

今回の更新では、不具合修正が主です。ただし、不具合修正は6月半ばごろから多くの HTTPS サイトへの接続ができなくなっていたものを修正したことが含まれますので、この記事ではそれについて述べます。

TLS 暗号化通信プロトコルの運用の流れ

TLS は、HTTPS サイトで行われている暗号化通信ですが、その運用はセキュリティーを鑑みて、年々変化しています。特に、2026 年においては次のように進んでいます。

・TLS 1.3 を新しい TLS 利用プロトコルでは必須とする方向
・TLS 1.2 での古い RSA/DH 鍵交換方式を非推奨化
・TLS 1.0/1.1 は既に非推奨

これに伴い、MachiKania のような小規模プログラムで行っていた通信方法(具体的には、Pico-SDK の pico-example に載せられていた方法)では、6月半ばから多くの HTTPS サイトへの接続ができなくなりました。

もともと、MachiKania ver 1.7.0 やそれ以前では、CA 証明書(認証局証明書)の確認は行っていませんでした。つまり、「HTTPS サイトへの接続は行えるがセキュアーではない」というスタンスだったわけです。このことに関しては、ドキュメント(wifi.txt)でも、そのように説明してきました。しかしながら、そういったセキュアーでない通信をサーバー側が認めなくなったのが、6月半ばです。それにより、MachiKania ver 1.7.0 では多くの HTTPS サイトに接続できなくなっていました。

MachiKania で、CA 証明書の確認に対応

そこで ver 1.7.1 では、MachiKania における TLS 通信でも、CA 証明書をちゃんと確認する接続方法に変更しました。この接続方式における通信の流れは、おおよそ次の通りです。

1.MachiKania: これらのルート CA 証明書のどれかで接続したい。
2.TLS サーバー: 分かった、その中にうちのルート証明書がある。それをルートに持つこの CA 証明書で通信する。
3.MachiKania: 了解。その CA 証明書が正規の物であることを確認した。では、こんな情報が欲しい。
4.TLS サーバー: その情報は、これだ。

ただし、3.の「CA 証明書が正規の物であることの確認」は、セキュリティーを確保する上では必須ですが、通信に必須ではありません。ですので、デフォルトではこの確認はオフにしてあります。後ほど述べるように、セキュアーな通信を行うために、この確認をオンにすることもできます。

Raspberry Pi Pico 2 W が必須に

TLS 通信には、多くのメモリー容量が必要です。MachiKania ver 1.7.0 で行っていた簡易通信では Raspberry Pi Pico W の 264 KB の RAM 容量でも通信できていましたが、ver 1.7.1 では正式な CA 証明書確認のため、その RAM 容量では通信できず、520 KB の RAM 容量を持つ Raspberry Pi Pico 2 W が必須です。ただし、HTTPS 通信以外の用途(ローカル HTTP サーバーへの接続、ローカル HTTP サーバーの構築)には、今まで通り Raspberry Pi Pico W が使えます。

Raspberry Pi Pico 2 W で TLS 通信を使うメリットは、大容量の RAM 以外にもう一つあります。搭載のマイクロコントローラ RP2350 は TRNG(真性乱数生成器)を搭載しており、TLS 通信のための暗号キーの生成が RP2040 に比べて格段にセキュアーになりました。RP2350 の TRNG のセキュリティーレベルは、PC やスマートフォンの web ブラウザーでの TLS 通信でのセキュリティーレベルと同等です。

これにより、MachiKania での TLS 通信を、web ブラウザーと同レベルのセキュリティーで行う事が可能になりました。

セキュアーな TLS 通信を行うには

上で述べたように、Raspberry Pi Pico 2 W + MachiKania ver 1.7.1 では、RP2350 の TRNG を用いたセキュアーな TLS 接続が可能です。これにより、盗聴による通信内容の漏洩は、ほぼ起こりえません。少なくとも、その漏洩の危険性は、通常の web ブラウザーにおける盗聴の危険性と、同じぐらいに非常に低いです。

この様に、盗聴による情報漏洩は起きませんが、まだ中間者攻撃による情報漏洩の危険性があります(中間者攻撃は、盗聴よりも高度なクラッキングテクニックです)。この、中間者攻撃を防ぐには、先に述べた「CA 証明書が正規の物であることの確認」が必要です。これを行うには、WGET クラスを使用する際に、次の命令を実行してください。

WGET::VERIFYCA()

これにより、中間者攻撃を防ぐ事が出来、web ブラウザーと同じレベルの TLS 通信を行う事が出来ます。ただし、より多くの計算が必要なため、接続速度の低下は起きます。また、繰り返しになりますが、MachiKania を用いたセキュアーな通信は、あくまでも自己責任の下で行ってください。

デフォルトでは9割以上の HTTPS サーバーに対応

MachiKania ver 1.7.1 では、デフォルトで次の7つのルート CA 証明書に対応しています

・ ISRG Root X2
・ GTS Root R1
・ Security Communication RootCA2
・ DigiCert Global Root G3
・ Amazon Root CA 1
・ USERTrust ECC Certification Authority
・ GlobalSign

これにより、9割以上の HTTPS サーバーに接続する事が出来ます。もし接続したい HTTPS サーバーが上に述べたもの以外のルート CA 証明書を使っているのならば、それを「WGET::SETCACERT()」メソッドでPEM文字列として指定すれば、接続できるようになります。例えば、次の例のように記述します。

USECLASS WGET
T$="-----BEGIN CERTIFICATE-----\n"
T$=T$+"MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQsw\n"
T$=T$+"CQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2gg\n"
T$=T$+"R3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00\n"
T$=T$+"MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVTMSkwJwYDVQQKEyBJbnRlcm5ldCBT\n"
T$=T$+"ZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNSRyBSb290IFgyMHYw\n"
T$=T$+"EAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0HttwW\n"
T$=T$+"+1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9\n"
T$=T$+"ItgKbppbd9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0T\n"
T$=T$+"AQH/BAUwAwEB/zAdBgNVHQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZI\n"
T$=T$+"zj0EAwMDaAAwZQIwe3lORlCEwkSHRhtFcP9Ymd70/aTSVaYgLXTWNLxBo1BfASdW\n"
T$=T$+"tL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5U6VR5CmD1/iQMVtCnwr1\n"
T$=T$+"/q4AaOeMSQ+2b1tbFfLn\n"
T$=T$+"-----END CERTIFICATE-----\n"
WGET::SETCACERT(T$)

接続したいサーバーのルート CA 証明書を調べるには、例えば「FireFoxで特定のサーバーのルートCA証明書を調べるには?」のような質問で AI に聞いてみてください。

コメント

コメントはありません

コメント送信