掲示板に戻る
No:645 タイトル:GEAR戦士撫子 新Part640 お名前:プロフェッサー圧縮 投稿日:2025/03/05 08:12:04 単表示 返信

そして暗号化の本体ですが。

かつては3DESという方式が使われていました。

DESとはData Encryption Standardの略で、1976年にアメリカ政府が公式の暗号方式として採用したものです。

DES単体では暗号鍵が短すぎるため速攻で突破されたため、3回暗号化して強化しています。


          ◇          ◇          ◇


何故これまでのように全く新しい暗号にしなかったか? と言いますと・・・・・・

DESが簡単に突破されると判明するまで20年ほど掛かっており、その間に普及しすぎてしまったからです。

ブロック暗号であるDESは当初難攻不落と思われており、新しい暗号技術を積極的に研究開発しようという機運がなかったことも不幸だったと言えます。

幸いDH法などで暗号鍵を生み出すこと自体は至極簡単にできるようになりましたので、複数の鍵で暗号化してお茶を濁したという訳です。


          ◇          ◇          ◇


こんな場当たりでも20年近く延命できた辺り、なんだかんだで優秀な暗号方式ではありました。

しかし技術の進歩は恐ろしいもので・・・・・・

3DESでも簡単に突破できることが明らかになってきました。


          ◇          ◇          ◇


ということで新たに募集・採用されたのがAESです。

Advanced Encryption Standardの略であり、その名の通り次世代の暗号方式です。

相変わらずブロック暗号ではありますが、より念入りなものとなっています。
  • No:646 タイトル:GEAR戦士撫子 新Part641 お名前:プロフェッサー圧縮 投稿日:2025/03/12 08:12:12 単表示 返信

    まず暗号鍵を所定の長さまで拡張します。

    AESの暗号鍵の長さは3種類あり、英数字にしてそれぞれ16文字、24文字、32文字となっています。

    つい最近まで16文字の規格が使われていましたが、近年安全性が怪しくなってきたので32文字が主流となっています。


              ◇          ◇          ◇


    よくある8文字の暗号鍵(パスワード)の場合、これを4倍しなければなりませんが・・・・・・

    これまでのように単純な繰り返しで水増しするのではなく、もっと複雑な演算を行うようです。

    具体的には1文字目と8文字目を合成して9文字目とする、のような捻りを加えたものとなっています。


              ◇          ◇          ◇


    こうして規定の32文字の暗号鍵を作った後、実際の暗号化を始めます。

    まず平文を32文字のブロックに区切り、更にそれを4x4の図に起こします。

    実際に中で図を描いているのではなく、縦横二次元の16パズルのように扱う訳です。

    以降の暗号化はこの単位で行われます。


              ◇          ◇          ◇


    ブロックに対する暗号化は以下の4種類全てが行われます。

    1.SubBytes
    2.ShiftRows
    3.MixColumns
    4.AddRoundKey

    これらは全て違う暗号化方式であり、これだけでもいかに偏執的か理解ろうというものです。

    それでは各方式を順番に見ていきましょう。
  • No:647 タイトル:GEAR戦士撫子 新Part642 お名前:プロフェッサー圧縮 投稿日:2025/03/19 08:11:50 単表示 返信

    まずは1.SubBytesから。

    これは由緒正しい換字法です。

    AESで使う暗号表はS-BOXといい、8ビットの一対一変換表となっています。

    8ビットで表現できる値は0-255なので、256個の変換表です。

    この暗号表は固定となっています。

    他の変換が3種も後に控えてますので、利便性を取った形になります。


              ◇          ◇          ◇


    次は2.ShiftRowsを行います。

    これはブロックの4x4表を上から順にローテートする処理です。

    但しローテートは2行目から始まり、1行目は何もしません。

    更に3行目と4行目ではローテート量が違い、

    2行目:右に1つ
    3行目:右に2つ
    4行目:右に3つ

    となっています。


              ◇          ◇          ◇


    次に3.MixColumnsを行います。

    これは列単位にする特殊な演算で、逆の手順を踏めば元に戻せるようになっています。

    まあ暗号は復号ではなければならないので、ある意味当然ではあります。

    正直この手順要らなくないですかと思わないこともないのですが・・・・・・

    多分数学的な意味があるのでしょう。多分きっとMaybe.


              ◇          ◇          ◇


    最後に4.AddRoundKeyを行います。

    これは最初に作った32文字単位の暗号鍵と演算をし、暗号鍵がないと解けないようにします。

    ブロックの数だけこの4処理を繰り返し、最後のプロックは1.2.4.の処理だけをして締めます。

    これがAES暗号方式です。

  • No:648 タイトル:GEAR戦士撫子 新Part643 お名前:プロフェッサー圧縮 投稿日:2025/03/26 08:11:50 単表示 返信

    とまあ、このように。

    AES暗号はもう見るからに大変そうな処理を行っています。

    さしものコンピュータも、真っ当にやっていたらかなり時間がかかります。

    人間? ほほほほほほ馬鹿言っちゃいけませんわ。

    手紙程度でも何日かかるか知れたものではありませんわね。


              ◇          ◇          ◇


    実際のところAES暗号登場当時は、かなり重かったようです。

    3DES暗号も危険性が叫ばれながらも、まだまだ突破事例が少なかった時代です。

    なので暫くの間は両者併存と言いますか・・・・・・

    マシンパワーが余っている贅沢者か、最新鋭に目がないマニアか。

    はたまた重要機密を扱う場合などに限られて使われていました。


              ◇          ◇          ◇


    その状況が変わり始めたのは、やはり技術の進歩でした。

    Advanced Encryption Standard New Instructions,AES-NI と呼ばれる暗号化専用演算装置が実装されたのです。


              ◇          ◇          ◇


    この頃になると、四則演算だけではなく平方根等の様々な演算を行う装置が外付けされるようになっていました。

    外付けと言っても別にコンピュータ筐体の外にある訳ではなく、同じ部品の中に同居しているのですが。

    四則演算機とは別のユニットになっていて、特別な拡張演算を行う時はそっちに投げて結果が戻ってきたら処理を続行するという、一種の外注みたいな構造になっています。

    そのような仕組みは結構前からあるようで、今回もその構造に則った形になります。
  • No:649 タイトル:GEAR戦士撫子 新Part644 お名前:プロフェッサー圧縮 投稿日:2025/04/02 08:11:55 単表示 返信

    そして肝心の効果はと言いますと・・・・・・

    環境によって勿論違いますが、概ね5倍から10倍近くまで上がるようです。

    流石は専用装置といったところでしょうか?


              ◇          ◇          ◇


    もっともループも含めて何もかもやってくれる訳ではないようで。

    先に述べた4つの暗号化と幾つかの周辺処理を肩代わりしてくれるもののようです。

    とは言っても、地道に演算していくより圧倒的に速いのは見ての通りとなります。


              ◇          ◇          ◇


    ちなみに。

    最近のCPUはこの他にも様々な専用装置が内蔵されているとのこと。

    先程ちょっと触れた小数演算ですとか、一気に複数の演算が行えるSIMDとか。

    変わったところでは、動画作成補助なんかもあるようです。


              ◇          ◇          ◇


    しかしまあ。

    ノイマン型として演算のやり方を簡素化し、その恩恵で爆発的な進化と普及をしてきたコンピュータですが。

    ここに来て汎用ではなく専用に出戻りつつあるのは興味深いですわね。

    物事の進化なんて揺り戻しの連続の反復横飛びなんですかね?

    或いは何かで三拍子で元に戻るワルツに例えていたのがありましたが、結構真理かもしれません。
  • No:650 タイトル:GEAR戦士撫子 新Part645 お名前:プロフェッサー圧縮 投稿日:2025/04/09 08:19:53 単表示 返信

    但し、です。

    高速に暗号復号化が出来るということは、当てずっぽう攻撃も高速で行えることであり。

    即ちそれは、暗号解読側にとっても有利ということなのです。


              ◇          ◇          ◇


    無論闇雲にやったところで、出てきた平文が正しいかどうかは原理的にはわかりません。

    しかしながら。

    一見ちゃんとした文に見え、かつ元の平文と似ても似つかない文になるなどほぼ有り得ないと言って過言ではありません。

    何故ならば・・・・・・

    実は暗号化に使われる暗号表の内、文章に使われる文字はごく一部に過ぎないからです。


              ◇          ◇          ◇


    今更ではありすが、この話はコンピューターデータなことが前提の上で話します。

    コンピュータはENIACの昔は二進数10桁、デジタルコンピュータの時代では基本的に二進数8桁を一単位として扱います。

    ごく一部を除いて今時は8桁(8ビット)が大半ですので、以後そのように扱います。


              ◇          ◇          ◇


    さて、その前提に立った上で。

    わたくし達が扱う文字は、8ビットまたはその倍数で表される数値と一対一で対応して定義されます。

    これを符号化と言います。
  • No:651 タイトル:GEAR戦士撫子 新Part646 お名前:プロフェッサー圧縮 投稿日:2025/04/16 08:12:46 単表示 返信

    8ビット=1バイトで表現できる数値は0から255の256個で、そこにアルファベットなり数字なりを当て嵌めていきます。

    例えばAには65が割り当てられており、1なら49です。

    ちなみに大文字小文字は別の文字なのでaは97です。

    この割当は1963年に制定されたASCII(American Standard Code for Information Interchange)によって定義されて以来、後発の規格にも脈々と受け継がれています。


              ◇          ◇          ◇


    さて。

    英文で使われる文字は0から9までの数字10文字+アルファベット26文字×大文字小文字2種=52文字に加え、空白スペース・四則演算などの記号類を入れても約80文字弱しかありません。

    ASCIIは7ビット用に制定されたので8ビットの半分の定義ですが、であってもおよそ6割強しか占めてないことになります。

    実は表示文字以外の定義もされているのですが・・・・・・

    暗号化の世界においては表示できない文字などノイズに過ぎないのです。


              ◇          ◇          ◇


    つまりどういうことかと言いますと。

    当てずっぽうの復号化はこのノイズによって、意味の有りそうな文になる可能性が半分近く減っていることを意味します。

    それだけ聞くと解読側の不利要素に聞こえますが・・・・・・

    実のところこれは福音とも呼べる特性なのです。


              ◇          ◇          ◇


    要するに。

    解読側は本物の平文を欲しているのであって「それっぽい文」を求めている訳ではありません。

    むしろ邪魔とさえ言えます。

    なので。

    一発で解読失敗とわかる文字化け(表示文字以外はおかしなコードが表示される場合がほとんど)は、偽の解読成功糠喜びを防ぐという意味で重要なのです。
  • No:652 タイトル:GEAR戦士撫子 新Part647 お名前:プロフェッサー圧縮 投稿日:2025/04/23 08:12:27 単表示 返信

    ではもっと文字の多い日本語はと言いますと・・・・・・

    ちょっと一言では表せない複雑な事情があったりするのです。


              ◇          ◇          ◇


    まずわたくし達小学生──────なんですかその目は──────おほん。

    わたくし達小学生が習う漢字だけでも1000文字強あります。

    1バイトで表現できる数は256ですから圧倒的に足りません。

    ビット数だけで言えば11ビット=2048種あれば一応足りますが・・・・・・

    そんな半端なことをしても何一ついいことはありません。

    なので日本語を表現する規格としては2バイト=65536からとなります。


              ◇          ◇          ◇


    実を言いますと。

    コンピュータ上で定義されている日本語文字コードは漢字全てを網羅していません

    ですので本当はこれでも足りないのですが・・・・・・

    諸々事情がありまして、一部のみとなっています。


              ◇          ◇          ◇


    一部のみと言っても普段遣い出来ないようではお話になりません。

    ですので日常会話に必要な分は登録されています。

    これは初期に出版物で使えるように工業規格を定めたものが元となっています。
  • No:653 タイトル:GEAR戦士撫子 新Part648 お名前:プロフェッサー圧縮 投稿日:2025/04/30 08:12:08 単表示 返信

    もっと大本を辿ると戦後の混乱で余計なことしようとした輩と文化人達が、すわ大戦の続きは文化戦争かとばかりにやり合ってたらしいのですが・・・・・・

    わたくし当然生まれておりませんし、身近な者達も流石に当時を知る者はおりません。

    なので真相は正直よくわからないのですが。

    ただ色々伝聞を耳にする限り、相当ヤバい状況だったようです。


              ◇          ◇          ◇


    まあそんなこんな紆余曲折あーだこーだの挙句の果てに常用漢字が制定されました。

    その前身として当用漢字なるものもあったらしいのですが・・・・・・

    どうも曰く付きらしく、面従腹背の如く例外作りまくってたらしいので規格としてはどうなのと言った感じです。

    本当はこれ以外認めないことにしたかったらしいのですが・・・・・・まあ現実的じゃありませんでしたわね。


              ◇          ◇          ◇


    とまあ壮絶かつ数十年に渡る殴り合いの果てに生まれた常用漢字は「ガイドライン! あくまでガイドラインだから!」と規格としては最初から白旗上げているような状態から始まりました。

    文字数も多少増えたとはいえ、たかが1945文字では人名地名はおろか専門用語も網羅できませんので残当ではあります。

    もっとも普段遣いするにはまあまあ十分でしたので、意義がないかと言われればあった、が正解でしょう。


              ◇          ◇          ◇


    しかし印刷をはじめとする漢字を扱う工業製品が、今後爆発的に増えることは火を見るより明らかでした。

    ですのでガイドラインだから! で逃げてばかりもいられません。

    という訳で工業規格としての漢字表が作成される運びとなりました。

    JIS C 6226。

    後にJIS X 0208として日本の漢字コードの礎になった工業規格です。
  • No:654 タイトル:GEAR戦士撫子 新Part649 お名前:プロフェッサー圧縮 投稿日:2025/05/07 08:12:18 単表示 返信

    このJIS X 0208は先の常用漢字に加えて住所氏名等で使われる漢字含めた7000文字弱が対象となっています。

    ざっくり常用漢字に相当するの部分は第一水準漢字と呼ばれ、それ以外のまあまあ使われている漢字を第二水準漢字としています。

    これで普通に使う分には問題ないとされていましたが・・・・・・

    どっこい世の中そんなに甘くはなかったのです。


              ◇          ◇          ◇


    まず真っ先に困ったのがギリシャ文字がないことです。

    別にそんなの要らなくない? と思われるかもしれませんが・・・・・・

    ギリシャ文字とはαとかΩのことなので使えないとなると大分困ります。


              ◇          ◇          ◇


    それとダイアクリティカルマークと呼ばれる特殊文字もありませんでした。

    聞き慣れない単語でなんぞこれ? と思われるでしょうが・・・・・・

    端的に言うと発音記号です。

    aの上に¨が乗っているアレです。

    つまり英和辞典等を印刷するのにないと困る訳です。


              ◇          ◇          ◇


    そのような各所からの不満を受け、JIS X 0208は数回の改定を受け・・・・・・

    2000年1月20日にJIS X 213となりました。

    これもそう間を置かずに改定され、JIS X 213:2004となり。

    以降暫くはこれが基準となります。