投稿

AES-GCM 暗号が作れた

AESとGCMどちらも実装をしてみていたが、GCMの仕様が読みにくかったので進んでいなかった。 AESは前回からあまり変わらず適度に速いので、GCMの速度をどれくらいまで上げられるか、の前にGCMを実装できるのか? というところから。 GCMはほぼCTR Mode とハッシュ計算で認証コードの計算をするだけの組み合わせなので、CTRを若干修正したものとIVなどの初期化ができればやや完成、となる。 やや難解な初期化 CTRモード 認証タグの計算いろいろ AADの計算 ガロアさんの計算をビット反転で テストパターンをみつけてやる気を出して、なんとか完了。速度的には低下なし。本体のCTRっぽい計算のあと、認証タグの計算を別スレッドに分けてみた。2スレッドに分けることでAES-NIは使ってないのに1.5Gbpsくらいは出ていてJava標準のより速い。という結果が出てしまった。 GCM は CTRの拡張っぽい構造でストリーム暗号。本体の GCTR? とハッシュ値計算のGHASH に分けて作ったりすると楽か。スレッド分けは、本体データをハッシュ計算用にメモリに蓄積しながら本文の暗号を行う。ハッシュ計算用のスレッドが終わっていれば再始動する、くらいのものでうまく動く。スレッド間に挟むのはいつもの自作Packetなので読み書き別々にしても全読みしなければ多分問題なさそう。 基本的な高速化手法はAESもGCMも内部をlong型で64bit x 2 にすること。8bit x 16でやるよりXORが全然はやい。 GCTRとCTRの違いはIVのカウンタ部分が32bit固定になることぐらいでいいのかも。 IVの初期化は96bit 入力を使う、それ以外はGHASH で混ぜる、だがTLSでは96bit限定かもしれない。96bitの場合カウンタは乱数が入らないところからはじまる。計算された値はJ0っぽい値になる。 IVは最初の値をGHASH用に、次からGCTR用に使うのでCTRの初期値もひとつかふたつずれる。  GHASHの入力は内部で持つHから計算する、 ハッシュ計算用にAAD とかいう感じの暗号化しないヘッダ的なものを追加可能で本体は暗号化後の値で計算する。GHASHは2つを載せる前提の構造になっている。Paddingは単純な128bitまで0詰め。最後にAADと本体Cの2つのビット長を含める

Ryzen 5 9600X Ryzen 7 9700X

 65Wで販売開始されたRyzen 5 9600X Ryzen 7 9700Xが105W対応になるらしい。 DDR5-6000のメモリで定格のDDR5-5600より電力が足りず性能が落ちてしまう事に対応したということなのかな。 https://www.youtube.com/live/82o0eGXYhyY?si=rI5Or8JduJ-6Tbii   https://x.com/kato_kats/status/1823734903672070428

4Kディスプレイ 4枚目

 ディスプレイ、マルチディスプレイにすると画面サイズ、解像度が一致しないといろいろ不便だったりする。 ミニPCを買ってみてPC 2台運用しているとありあわせのディスプレイだと4K+2Kのアンバランスになってしまったので1台目を32型 4K 144Hz 2枚にあわせてみようかという試み。 acer ET32QKCbmiipzx 32型 60Hz DisplayHDR 600 当時これくらいがHDR 600の低価格帯だったがHDRをディスプレイ側でも切り換えないといけないなどでRec.702で大きいだけの4Kとして使う。 LG UltraGear 32GQ950-B 32型 60/94.98/144/159.97Hz DisplayHDR 1000 HDR自動切り換えで使いやすい。基本的にゲーミングなので細かな色設定は無理か。 DELL G3223Q 32型 23.98/24/25/29.97/30/50/59.94/60/100/119.88/120/143.96Hz DisplayHDR 600 発売当時格安だったが今買ったらちょっと高い。DisplayHDR 600あればいいかという感じで足してみた。 色味はブルーライトなど要らない機能もあるかもしれない。基本的にフルで発光するもの、Rec.702系の標準的な色、sRGB的な色、HDRな色、の4パターンぐらいに対応していればいい気がする。LGはざっくりゲーム向けでそんなものはない感じだが全部HDRで問題なさそう。DELLはDCI-P3もあるのかな。デザイン仕事などはしていないのでキャリブレーションは不要。 HDR手動切り換えが面倒なacerをサブPCに持っていったのでLGとDELLで2面組。 LGもDELLもパッケージは薄めの長い感じ、acerのがやや厚め。 VESAマウントができるのでディスプレイアームなどで並べると机の上がややすっきりする。DELL側片方だけアームにつけてみた。ネジはディスプレイ側についているものを使えた。 LGはHDMI、DP、USBが背面にありUSBドングルなどはやや電波難、DELLはUSB-Aが下にあり前面から見えるのでドングルなどを繋いでも電波を遮ったりしない。 どちらもWindows用操作パネルアプリあり。 DELLは初期は色が悪かったりしたようなのでファームウェアアップデートがある。

マウスを更新 Logi M750

 マウス、安いようで高い消耗品なのでしばらく使っていないとゴム感でねっとりしたり。 今回は新しくLinux機としてミニPCを買ってみたらWindows機としても使えそうだったので追加でマウスも足してみた。古いマウスはところどころ調子が悪い。 Logi M750は3台のWindows/Macで切り換えで使えるワイヤレスマウスでUSB AのBolt系ドングルとBluetooth LE対応。同じ3PC対応キーボードとセットで使うのもいいかもしれない。 2サイズあるが小さい方は今までと似たようなサイズ感だった。 基本的にはドングルで繋いでおくと無難。Windowsは繋ぐだけで専用アプリもセットアップされる。BluetoothだとBIOSなどがつつけない、OS毎に設定が必要などいろいろ制約があったりする。 M750はPC切り換えスイッチが背面に移動してしまったので基本的にはPC間の移動はFlowアプリで画面の端に行けば移動するという形。Windows/Mac専用で使うならいいか。Android/Linux用などドライバがない環境には向かないかもしれない。 PC切り換えボタンの代わりにスピード変更ボタン的なものがついている。他の機能も割当可能だが切り換えには使えず。 あとはホイールの横スライドスイッチがなくなっている。特に使っては無いけど。 ホイールはやや力を込めてまわすと惰性でずっと回転するタイプ。下向きだけ。まわりすぎてやや困る。 同じ部屋で2台3台同時に使うのでなければ切り替えは要らないかなという結論?

Ryzen 5 5600H なミニPCをLinux用に買ってWindowsをみてみる

PCを選ぶとき、必要ないものを削るとさくっと安くなったりする。今回はLinux用というところでGPUをCPU統合の最小な感じにしてみた。 必要なのはCPU、メモリ、SSD、ネットのみ。拡張性も不要。 中華っぽいmini PCが安いのでRaspberryPiの高性能版くらいの感覚でLinuxで使えるかもと買ってみる。ミニPCとかNUCと呼ばれている括り? ノートPCから入出力(ディスプレイ、キーボード、タッチパッド)とバッテリーを取り除いたような構成。 Intel版だと安いのはN100らしいが4コア4スレッド。AMD系はZen 2, Zen 3世代、Ryzen 5や7, 9のノートPC版APUがあって手頃なのは5600(Zen3 6Core), 5700(Zen2), 5800(Zen3 8Core) くらいの型番。シングルコア性能重視でZen 2よりはZen 3にしておきたいところ。 今回はZen 3世代でRyzen 7 5800H 32GB, 1TB(クーポンで6万円台くらい)にしようかと思ったが Ryzen 5 5600HでRyzen Proらしいメモリ16GB、SSDは 512GBというところにしてみた。Windows 11 Pro入り3万円台の謎。RaspberryPi 4Bの8GBモデルが1万円くらいなことを考えるとお得。Ryzenだけ5600Hに落として32GB,1TBでも4万円台くらいか。Linuxや2台目Windowsではメモリディスクそんなに使わないかもと思ったので最小にした。高性能GPU単体より安い。 サイズ的には11.4cmx10cmx5cm程度。 放熱が気になるが、そういう使い方はしないはず。キーボード、マウス、ディスプレイ(HDMIx2,USB-C)とWi-FiかEthernetで接続先があれば使える。電源は本体よりやや長い感じのACアダプタでUSB-C給電では使えない。 HDMIケーブルは4K 60Hzなどの高速転送には若干不安なので別のケーブルもあるといいのかも。 M.2 NVMe は2280の標準的なサイズと2242のハーフサイズぐらいまでのが使えるようなので増設する場合は小さいものを選ばないといけなさそう。Windowsを残して交換してみるのもいいのかも。 WindowsのドライバがAmazonから直接リンクされているようなサポート

DockerとPodman

DockerとかPodman とか仮想っぽいものをつついてみる。 Linuxのカーネルの機能で複数環境を切り盛りする系のいろいろ Dockerさん入れてみた Docker Compose 2種類あるよ というわけで進化も速いとドキュメントも古いぞ、ということになったり。 継ぎ接ぎだらけで調べてみたりしている。 どのツールが残ってるのかわからんな。Machineってなに、どこに機能移行したの。 RaspberryPi に入れてみたり、Windows に Docker Desktop 入れてみたり。 Minecraft の バニラとかPaperMeのとか入れてみたらそれなりに動いたり動かなかったり癖ありな感じはする。 最近のJREの作り方も把握した。 これでイメージファイル小さくはできるけどそこそこ大きいのは大きい。ディスクがあればメモリー消費するのでもないからいいか。 Podmanの本が出ていた? ようなので半額ポイントバック買い。Dockerよりいろいろできそう。Podman Desktopの1.5も出てるっぽいので入れてみるとDockerと併用できる。どっちが走ってるんだかわからない状態。 Podman Desktop (Windows, Mac, Linux) Podman イン・アクション (電子書籍版) Docker 互換な上でGoogleのKubeなんとか寄りのことなどもできるとか。 RaspberryPiにもDockerを消し去って入れてみる。v3.0系しか入らなかったのでdocker compose 互換がない。 test版でバージョンあげてみようとして失敗。RaspberryPi OS を最新版で入れ直し。Podman v4.3.1 くらいがそのまま入ったよ。 podman-compose が使えるようになっていた。docker.io が省略できない以外はだいたい同じでも動くのかな。imageの残り方がなんか違う気もする。 dockerでbuild するのとdocker composeでbuildするのと環境変数の指定が違うのかどうなのか。パラメータの多いdocker / podman 単体で使いたくないので苦戦。 dockerとpodman、基本は同じなのでそれ以降行かないならどっち使ってもいい気がした。 古い環境はdockerの方が入れやすそ

Lenovo Tablet P11 Pro (2nd) でサブディスプレイ

製品案内ではMiracastでサブディスプレイにできる、とか書かれていたLenovo Tablet P11 Pro (2nd) だが、方法がわからず。 設定のどこかでできるっぽい記述もあるが、今はそんな項目もなく。 結局Lenovo Freestyle というアプリでサブディスプレイ化することが判明。 同じアカウントで設定して共有、あっさりできたが何か違わないか?