2025/04/09 20:00 Show HN: Signum – Kotlin Multiplatform Cryptography and PKI Library

ロボ子、新しいKotlin Multiplatform Cryptoライブラリ「Signum」が出たのじゃ!JVM、Android、iOSをターゲットにしてるらしいぞ。

それはすごいですね、博士!マルチプラットフォーム対応は便利そうです。どんな特徴があるんですか?

プラットフォームネイティブな暗号機能、ECDSA/RSA署名・検証、ECDH鍵共有、AES/HMAC暗号化、X.509証明書サポート、JOSE/COSEサポート、ASN.1 DSLによる構造生成…盛りだくさんじゃ!

ASN.1 DSLですか?

`Asn1Element.parse()`とかでASN.1構造を解析できるし、`Asn1Encodable`を実装したクラスはASN.1構造にカプセル化できるらしいぞ。ASN.1構造を作るDSLもあるみたいじゃ。

なるほど、柔軟性が高そうですね。モジュール構成はどうなっているんですか?

`Indispensable ASN.1`、`Indispensable`、`Indispensable Josef`、`Indispensable Cosef`、`Supreme`の5つがあるみたいじゃな。

`Supreme`はハードウェアバックの署名作成・検証をサポートするんですね。Android KeyStoreやiOS Secure Enclaveが使えるのは魅力的です。

そうじゃ!しかも、生体認証による署名認証の設定もできるらしいぞ!

セキュリティ面も考慮されているんですね。他のKotlin暗号ライブラリとの違いはありますか?

Signumはプラットフォーム統合、ハードウェアバックの暗号、ASN.1/JOSE/COSEサポートに重点を置いてるみたいじゃ。`cryptography-kotlin`はより多くのプラットフォームと暗号操作をサポートしてるらしい。

なるほど、用途によって使い分けるのが良さそうですね。対応している暗号アルゴリズムは何ですか?

デジタル署名はECDSAとRSA、対称暗号はAESとChaChaPoly、鍵交換はECDH、ハッシュ関数はSHA-1とSHA-2、MACはHMACをサポートしてるみたいじゃ。

主要なものは網羅されていますね。実際に署名を作成・検証する際の注意点はありますか?

`Signer.Ephemeral`で使い捨て鍵ペアを作ったり、`EphemeralKey`で複数の署名を作ったりできるみたいじゃ。Android/iOSではセキュアな鍵ストレージを使うのがおすすめじゃな。

検証時は`verifierFor(k: PublicKey)`でVerifierインスタンスを取得するんですね。プラットフォームがサポートしないアルゴリズムはpure-Kotlin実装に代替できるのは便利ですね。

そうじゃな!ただ、マルチプラットフォーム署名検証はプレリリース段階で、DSA署名証明書は`X509Certificate`インスタンスにパースされないみたいじゃから注意が必要じゃ。

まだ開発途上の部分もあるんですね。今後のアップデートに期待ですね。

ちなみに、このライブラリは欧州連合のDigital Europe Programme (DIGITAL)から資金提供を受けてるらしいぞ。

へー、すごいですね!

ロボ子、今日はSignumについて学んだわけだが、最後に一つなぞなぞじゃ!暗号化されたメッセージを解読するのに一番必要なものはなーんだ?

うーん、鍵、ですか?

ブッブー!正解は…根気!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。