ギャロア有限体と先進暗号化標準(AES)

2026/10/17 17:34

ギャロア有限体と先進暗号化標準(AES)

RSS: https://news.ycombinator.com/rss

要約▶

Japanese Translation:

AES 暗号化の中核機能は、有限体と呼ばれる高度な数学的構造、具体的にはガロア体 GF(2⁸) に依存しており、データのバイトを非線形に混合することで堅牢なセキュリティを実現します。この体における加算是、キャリービットを破棄してバイナリ効率を維持するために単純なビットごとの XOR として機能します。乗算と除算はより複雑であり、高次数の結果が特定の既約多項式(例:$x^8 + x^4 + x^3 + x + 1$ (0x11b))を用いて減少されるような多項式演算を利用します。除算を効率的に処理するためには、システムは直接計算ではなく、事前計算された乗法逆元表または対数/逆対数表を使用します。これらの数学的原理は、1830 年代以来の数学に根ざしており、FIPS 197 で標準化されており、AES の 4 つの主要な演算を駆動しています:SubBytes(乗法逆元とアフィン変換を適用する)、ShiftRows、MixColumns、および AddRoundKey。すべての値が単一のバイト内に保持される一方で、豊かな非可換な混合を可能にするこの設計により、暗号化鍵は常に復号化に対する有効な逆元を持ちます。この構造は、単純な線形暗号に一般的な脆弱性を効果的に防止し、さまざまな暗号攻撃に対してデータを保護します。読者には、NetRun ツールを用いてこれらの概念をさらに探求することをお勧めし、元の設計意図については Rijndael AES 論文を参照してください。

本文

ギャロワ体(Galois Field)と AES:数学的構造の解説

有限体の基本概念

  • 256 要素の普遍性
    • すべての有限体が同サイズであれば互いに同値であるため、要素数が 256 の体(GF(2^8)) は常に普遍的な性質を共有します。
    • この領域は、20 歳で亡くなったエvariste ガロワによって数学的に開拓されました。
  • GF(2^8) の定義
    • 「要素数が $2^8$ 個を持つガロア体」と呼ばれます。
    • 多項式の次数が $n$ 以下で、係数を $p$ を法とした整数から選択したものが対応します(特性 $p$ を持つ体)。
  • 数値と多項式への対応
    • 数字は単なる多項式として表されます(例:$0 \to 0, 1 \to 1$)。
    • 係数は $p$ を法とするため、$2 = 1 \times x + 0 = x$ とみなします。
    • これにより、数字の 2 進法表現とガロア体の多項式表現に単純な対応関係が生まれます。

数値との対応表(簡略化後)

数値2 進表記GF(2^8) 多項式表現簡略化後
0000
1111
210$1x + 0$x
311$1x + 1$x + 1
4100$1x^2$x²
5101$x^2 + 1$x² + 1
81000$x^3$x³
1610000$x^4$x⁴
2110101$x^4 + x^2 + 1$x⁴ + x² + 1
  • 実用上の扱い: 実行時に多項式に変換する必要はなく、実際に $x$ を評価する必要もありません。置換テーブルの計算やシフト・XOR 演算で十分機能します。

有限体の加算

有限体における加算は、基礎となる多項式の加算によって決定されますが、係数は単一ビット(0 または 1)のみ許されるため、独特な性質を持ちます。

加算の具体例

  • 通常の加算: $1 + 2 = 1 + (x) = x + 1 \to$ 2 進法
    11
    $\to$ 3
  • 同項数の足し合わせ: $2 + 2 = x + x = 2x \equiv 0x \to$ 0
    • $2x = 0x$ は、係数が単一ビットの性質による「巻き戻し(wraparound)」現象です。

重要な結論:加算と XOR の同一性

  • GF(2^8) においては、加算、減算、XOR がすべて同じ演算になります。
    • $a + b = a \oplus b$
  • これは単一ビットごとの加算で進位ビットを捨てること(半加算)に相当し、回路設計上決して奇妙な挙動ではありません。

GF(2^4) における加算表の例

以下の表は、4 ビット(16 進数に対応)の有限体での加算を示しています(同値であり XOR 表でもあります)。

0123456789abcdef
00123456789abcdef
11032547698badcfe
223016745ab89efcd
332107654ba98fedc
445670123cdef89ab
554761032dcfe98ba
667452301efcdab89
776543210fedcba98
889abcdef01234567
998badcfe10325476
aab89efcd23016745
bba98fedc32107654
ccdef89ab45670123
ddcfe98ba54761032
eefcdab8967452301
ffedcba9876543210

注: スードク(数独)に似ていますが、逆元が存在するためには、各出力が各行および各列にちょうど一回ずつ現れる必要があります。


有限体の乗算

有限体における乗算は多項式の乗算と同じ原理ですが、次数 $n$ よりも高い多項式が生じないよう**削減(reduction)**する必要があります。

乗算の具体例と還元プロセス

  • 基本的な乗算: $2 \times 2 = x \times x = x^2 \to$ 2 進法
    100
    $\to$ 4
  • 次数超過の問題: $16 \times 16 = x^4 \times x^4 = x^8$ は GF(2^8) を超えてしまいます。
  • 削減多項式(Reducing Polynomial)の導入:
    • AES では、高次項を削減するために以下の多項式が用いられます: $$x^8 + x^4 + x^3 + x + 1 \quad (\text{16 進数表記:} \mathbf{0x11b})$$
    • 削減には、この多項式の倍数を引き去る(XOR する)操作を行います。

還元計算の例

元の多項式を減算(加算と同じ XOR)することで高次項を消去します:

x^8 - (x^8 + x^4 + x^3 + x + 1) = -(x^4 + x^3 + x + 1)
  • 各要素は加法逆元(自身)と等しいため、符号変化は無視されます。
  • 最終結果: $x^4 + x^3 + x + 1 \to$ 2 進法
    11011
    $\to$ 10 進数 27

注目すべき点: この還元処理により、偶数同士の積が奇数になることがあります。

削減演算による特性

  • 削減多項式の倍数を引き去るだけであり、数学構造そのものを変化させることはありません。
  • GF(2^8) を掛けた場合の 256 項ある乗算表(AES スタンダード)は、低位ビットで値が跳ね回る複雑なパターンを示します。

GF(2^4) の乗算表と削減多項式

GF(16) の例では、削減多項式 0x13 ($x^4 + x + 1$) が用いられます。

0123456789abcdef
00000000000000000
10123456789abcdef
202468ace3175b9fd
30365cfa9b8de7412
4048c37bf62ea51d9
505af72d8eb419c36
606cabd71539fe824
707e9f816da3425cb
8083b6e5dc4f7a291
909182b3a4d5c6f7e
a0a7de493f5821b6c
b0b5ea1f47c29d683
c0cb759e2a61df348
d0d941c852fb63ea7
e0ef1d32c97684ab5
f0fd2964b1ec3875a

実装例(C++)

以下のコードは、「農夫」的なビットごとの乗算とガロア加算を組み合わせ、最後に削減多項式による還元を行います。

// ビットごとの(「農夫」的)乗算、ガロア加算を使用
for (int bit = 3; bit >= 0; bit--) {
    if (b & (1 << bit))
        c = c ^ (a << bit);
}

// ガロア体へ還元(削減多項式の引き算)
// irr: 削減多項式 (例:0x13)
// high: 高ビットマスク (例:0x10)
int irr = 0x13; 
int high = 0x10; 

for (int bit = 3; bit >= 0; bit--) {
    if (c & (high << bit)) { // もし高次のビットが立っていれば
        c = c ^ (irr << bit); // ガロア「減算」で引き去る
    }
}

補足: GF(2^8) の乗算表は省略しますが、順方向の乗算は短いアルゴリズムで実行できます。しかし、非線形性が高いため除算は困難です。一般には逆元のテーブルを事前に作成して利用します。対数・逆対数の表も有効な手法です。


AES の演算

AES は、バイトからなる $4 \times 4$ のグリッドに対して以下の 4 つの演算を適用します。

  1. S ボックス(置換ボックス)
    • グリッド内の各バイトに対し、乗法逆元の計算とアフィン変換を行うことで置換します。
    • アフィン変換は、0/1 を掛ける加算と乗算の組み合わせです。
    • 「0 の問題」(慣例として $1/0 = 0$ と定義)を修正し、乗法逆元の連鎖を数学的に不可能にするように設計されています。
  2. ShiftRows(行シフト)
    • グリッド内の各バイトを水平方向にシフトします。
    • 第 $i$ 行は $i$ バイト分円形にシフトされます。
  3. MixColumns(列混合)
    • 各列に対して有限体における乗算と加算の行列演算を行います。
    • 用いられる行列は非特異であり、逆演算が存在します。
    • 「入力バイトが一つだけ変化すれば出力も必ず変化する」ように設計されており、拡散性を高めます。
  4. AddRoundKey(ラウンド鍵の加算)
    • 最後に、各バイトにラウンド鍵を加算します(GF(2^8) ではこれは XOR と同じ演算です)。

なぜ手間をかけるのか?(有限体の利点)

有限体上で作業することには、以下の大きな利点があります。

  • 数字は小さく保たれる
    • GF(2^8) 内の要素は常に 1 バイト です。乗算や除算を行ってもサイズが増えません。
  • 各演算に対して逆元が存在する
    • 復号化が可能になります。通常の $2^n$ を法とする単純な mod 演算(掛けると高次ビットが失われる)よりも優れています。
  • 数学的理論が確立されている
    • 歴史は 1830 年代まで遡ります。優れた混合関数を選出しやすく、新しい解析技法に対するリスクを低減できます。
  • 十分な演算があり、豊かに組み合わせられる
    • AES は「除算」「転置」「行列演算」などの多様な非可換・非線形な操作を組み合わせることで強固さを得ています。
    • 加算のみではシフト暗号、乗算のみでは線形暗号にしかなりませんが、有限体による多様な演算はこれを防ぎます。

参考資料: FIPS 197(AES 標準仕様)や Rijndael(AES)の原論文には、これらの設計意図に関する詳細な説明と例が含まれています。

同じ日のほかのニュース

一覧に戻る →

2026/10/20 6:08

Microsoft アカウントを持っていないので、RTX Spark ラップトップに Linux をインストールしようとしています

## Japanese Translation: 記事は、ASUS ProArt P16 H7607BA-SE033W において、カスタマイズされた Arch Linux ARM 環境が、NVIDIA AI ワークロードに特化して、ネイティブの Windows と同等かそれ以上(わずかに高速)のパフォーマンスを実現することを示しています。7-Zip コンプレッションや GIPS スコアなどのベンチマークタスクでは、全スレッド有効条件下において Linux は圧縮で約 5%、解压で約 3% の高速化を達成し、Windows ネイティブの結果と同等か上回る性能(例えば HP OmniBook Ultra 相当機での 157.084 GIPS vs 155.774 GIPS)を示しました。構築には、ハードウェア向けに拡張されたアップストリームの Archinstall 4.5 を用いた Arch Linux ARM が採用されており、「hid-asus」キーボードサポート、カスタムオーディオドライバー、フレームバッファマッピング用の ACPI オーバーライドなどのパッチが含まれます。ハードウェアパッケージは著者の鍵で署名され、入力はハッシュピン固定されて整合性が保証されています。システム構成では kernel 7.0.0-1022-nvidia と NVIDIA ドライバー 615.78.08、rootless Podman および CDI サポートを採用しており、統合されたメモリプールが約 116 GiB(Windows の分割領域に対し)と報告されています。表示能力としては、3840×2400 レゾリューションで 120 Hz が利用可能です。ローカル AI 推論テストでは、ARM64 コンテナ上で vLLM を用いて Qwen モデルを成功裏に実行し、混合クアンタ化および FP8 KVキャッシュを活用した効率的なモデルロード(約 68.2 GiB の重みと約 21.1 GiB の KVキャッシュを含む場合、約 16 分)および生成速度(約 30 トークン/秒)を実証しました。したがって、Linux は、強力な GPU カパビリティを得つつオープンソースの柔軟性を求めるプロフェッショナルユーザーにとって、大きな速度低下や安定性の妥協なく viable な選択肢であり、複雑な NVIDIA 構成上で先進的な AI ワークロードを展開するクリエイター向けの魅力的な代替手段を提供します。

2026/10/20 1:39

MiniMax M3.1 フラッシュ

## Japanese Translation: MiniMax が、複雑な「エージェント型(agentic)」タスク向けに設計された次世代 AI モデルの画期的な早期バージョンである M3.1 Flash を公式にローンチしました。このモデルは、AI にデジタル従業員のような形で多段階のワークフローを自律的に計画する能力を付与します。今回のリリースは、すでに匿名で 200 兆トークン以上を処理した実績に基づき、パフォーマンスとコスト効率における世代を超える飛躍を示しています。 新しいモデルは、前世代のバージョンに比べてオンライン推論速度が約3倍向上し、1秒あたり 200 トークン以上(中央値で 170 TPS 超)を生成します。また、「激しいスパース性(aggressive sparsity)」などの最適化効率技術を活用することで、エージェント型タスクのコストを 70% 削減しました。その優れた能力は、独立したベンチマークでの上位スコアにより検証されています:AutomationBench-AA ではリーディングモデルレベルのスコア、BankerToolBench(多段階計画および金融コンプライアンス)では 76.2 のスコア、DeepSWE v1.1(コード理解と機能開発)では 73.7% のスコアを達成し、OSWorld V2(61.7 スコア)と Agents' Last Exam(29.6 スコア)において中国国内のモデルの中で第 1 位にランクインしました。さらに、脆弱性の発見・検証に関する CyberGym で 82% のスコアを示すことでサイバーセキュリティ分野における強力なポテンシャルを有しており、コード監査や浸透テストでも堅牢な性能を発揮します。 MiniMax API、M Plan、および MiniMax Code を介して利用可能で、この即時ローンチは開発者と企業が、安全で自律的なソフトウェアシステムの構築に必要となる、大幅に安く高速なツールへのアクセスを提供します。完全なモデルウェイトの公開は、新しい「Pro」知的階層と併せて後日行われる予定です。フラット料金体系(1M トークンあたり)は、入力 $0.15、出力 $0.60、キャッシュ入力 $0.015 と設定されています(MiniMax-M3.1-Flash)。

2026/10/20 3:42

ロールバック操作は、士気向上まで続きます。

## Japanese Translation: PostgreSQL 19 は、ベータフェーズ開始直後に「REPACK CONCURRENTLY」を含む約 8〜10 の主要な機能を撤回しました。この変化は、ベータ期間後半に発見された重大なアーキテクチャ上の欠陥と多数のエッジケースによって引き起こされました。高度な自動化ツール(例:強化されたコードレビューやファージング)が、システムの複雑さや機能間相互作用(例:ドメインの組み合わせ、制約、パーティショニング、トリガーなど)により人手による検出が困難だった問題を浮き彫りにしました。これらの機能の多くは、現在の自動化分析機能が利用可能になる前の段階で開発されておりました。加えて、PostgreSQL 19 は 4 月から 8 月の間に「Vulnpocalypse(脆弱性の暴風)」に見舞われ、シニア開発者たちはベータウィンドウ内でのさらなるレビューやテストを優先することよりも、緊急のセキュリティ修正にリソースを割り当てることを決定しました。いくつかの問題はより長い期間の集中を必要としていた可能性がありますが、チームはリリーススケジュールを守りました。これらの機能は永久に廃棄されるものではなく、将来のリリースで洗練およびコミュニティからのフィードバックを受けた後に再導入される見込みです。PostgreSQL 20 は、未検証の主要な革新を導入するのではなく、すでにほぼ完成していたいくつかの機能を完了することに重点を置いたより慎重な戦略の下、間もなく公開を迎えています。

ギャロア有限体と先進暗号化標準(AES) | そっか~ニュース