<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Cryptography on Unigiri</title>
    <link>https://unigiri.gitlab.io/tags/cryptography/</link>
    <description>Recent content in Cryptography on Unigiri</description>
    <image>
      <title>Unigiri</title>
      <url>https://unigiri.gitlab.io/images/unigiri.png</url>
      <link>https://unigiri.gitlab.io/images/unigiri.png</link>
    </image>
    <generator>Hugo</generator>
    <language>ja-JP</language>
    <lastBuildDate>Fri, 06 Dec 2024 23:13:01 +0900</lastBuildDate>
    <atom:link href="https://unigiri.gitlab.io/tags/cryptography/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>暗号について語る記事</title>
      <link>https://unigiri.gitlab.io/posts/i-love-cryptography/</link>
      <pubDate>Fri, 06 Dec 2024 23:13:01 +0900</pubDate>
      <guid>https://unigiri.gitlab.io/posts/i-love-cryptography/</guid>
      <description>&lt;h2 id=&#34;はじめに&#34;&gt;はじめに&lt;/h2&gt;
&lt;p&gt;こんにちは。うにぎりです。&lt;/p&gt;
&lt;p&gt;これは&lt;a href=&#34;https://adventar.org/calendars/9950&#34;&gt;卓ゲ箪笥 Advent Calendar 2024&lt;/a&gt;の7日目の記事ですが、内容はボードゲームやTRPGに関係ありません。&lt;br&gt;
&lt;a href=&#34;https://unigiri.gitlab.io/notes/my-favorite-songs/&#34;&gt;去年&lt;/a&gt;のような、好きなことを喋る記事です。&lt;br&gt;
今年は暗号について好き放題喋ります。&lt;/p&gt;
&lt;p&gt;日程枠が1つだけ空いているので適当な記事で埋めようというモチベーション故に、推敲はほぼしないし口語で書きますしファクトチェックはしません。&lt;br&gt;
なんか同じ研究室の人が酒飲みながら適当言っとるわくらいの気持ちで読んでいただけると嬉しいです。&lt;/p&gt;
&lt;h2 id=&#34;前提&#34;&gt;前提&lt;/h2&gt;
&lt;h3 id=&#34;暗号とは&#34;&gt;暗号とは&lt;/h3&gt;
&lt;p&gt;まずは言葉の定義から始めましょう。定義は重要。&lt;br&gt;
暗号とは文章をいい感じに読みにくくする手法の事です。&lt;/p&gt;
&lt;p&gt;不特定多数に読まれたくない文章等がある時、大きく分けて2種類の対策方法があります。&lt;br&gt;
ステガノグラフィーとクリプトグラフィーです。&lt;/p&gt;
&lt;p&gt;ステガノグラフィーは、文章の存在を隠す手法です。&lt;br&gt;
みかん果汁で紙に文字を書いた後に乾かすと、一見何も書いてない紙に見えるのに火で炙ると文字が浮かび上がる的なやつです。&lt;/p&gt;
&lt;p&gt;クリプトグラフィーは、文章をそのままでは読めないようにする手法です。&lt;br&gt;
読めないようにした文章自体が存在することは不特定多数に知られてしまいますが、読むためにはその文章を読める形に戻す方法を知っている必要があります。&lt;br&gt;
元の文章を平文、読めないようにした文章を暗号文、読めないように加工する処理を暗号化、元の文章に戻す処理を復号と呼びます。&lt;br&gt;
また、復号方法を知らない第三者が暗号文を平文に戻そうとすることを解読、そのような事をする第三者を攻撃者とこの記事では呼ぶことにします。&lt;/p&gt;
&lt;p&gt;日本語で暗号と呼ばれているやつはクリプトグラフィーです。&lt;/p&gt;
&lt;p&gt;余談ですが、暗号文から平文に戻せないようなものは暗号ではありません。&lt;br&gt;
つまり、ハッシュ値は暗号文ではないということです。ハッシュとは何かは後で書きます。&lt;/p&gt;
&lt;h3 id=&#34;暗号の種類&#34;&gt;暗号の種類&lt;/h3&gt;
&lt;p&gt;暗号も大きく分けて2種類あります。&lt;br&gt;
コードとサイファーです。&lt;/p&gt;
&lt;p&gt;コードは、ある文章等を別の言い方で表現したものです。&lt;br&gt;
我奇襲に成功せりをトラトラトラと言い換えたり、飲食業でお手洗いに行くのを4番と言い換えたりするやつです。&lt;/p&gt;
&lt;p&gt;サイファーは、平文の内容に関わらず一定の手法で読みにくくしたものです。&lt;br&gt;
コードはあらかじめ取り決めた情報以外は表現できませんが、サイファーなら色々な情報を表現できます。&lt;br&gt;
ちょっと例が難しいのですが、「あ」を1、「い」を2、「う」を3という風に順番に数字を割り当てるというルールを作っておくと、「あいうえお」や「こんにちは」などの色々な文章を数字で表現できるみたいな感じです。&lt;/p&gt;
&lt;p&gt;この記事では基本的にサイファーを扱います。&lt;/p&gt;
&lt;h2 id=&#34;いくつかの暗号の紹介&#34;&gt;いくつかの暗号の紹介&lt;/h2&gt;
&lt;h3 id=&#34;シーザー暗号&#34;&gt;シーザー暗号&lt;/h3&gt;
&lt;p&gt;必要な言葉の定義が終わったので、そろそろ実際の暗号手法について喋ります。&lt;br&gt;
シンプルなものから始めます。&lt;/p&gt;
&lt;p&gt;手法がシンプルで古くから存在し、とても有名なのはシーザー暗号です。&lt;br&gt;
カエサル暗号やシフト暗号とも呼ばれたり、英語だとROTと呼ばれたりします。&lt;/p&gt;
&lt;p&gt;やり方はシンプルで、各文字をN文字分ずらします。&lt;br&gt;
仮に1文字分後ろにずらすケースで説明すると、aを1つ後ろにずらしてbに、bを同様にずらしてcに、cを同様に&amp;hellip;という処理をします。&lt;br&gt;
平文が &lt;code&gt;abcde&lt;/code&gt; の場合は暗号文は &lt;code&gt;bcdef&lt;/code&gt; になり、 &lt;code&gt;Hello, I&#39;m Unigiri. Glad to have you here.&lt;/code&gt; は &lt;code&gt;Ifmmp, J&#39;n Vojhjsj. Hmbe up ibwf zpv ifsf.&lt;/code&gt; になります。長文になるとだいぶ暗号文っぽく見えますね。&lt;/p&gt;
&lt;p&gt;この手法の弱点としては、頻度分析と全探索に弱い点です。&lt;/p&gt;
&lt;p&gt;シーザー暗号では、ある文字は常に特定の文字に変換されます。1文字後ろにずらすケースでは &lt;code&gt;a&lt;/code&gt; は常に &lt;code&gt;b&lt;/code&gt; になります。&lt;br&gt;
つまり、例として平文中に &lt;code&gt;a&lt;/code&gt; が20回登場する場合、暗号文中に &lt;code&gt;b&lt;/code&gt; が必ず20回登場します。&lt;br&gt;
各言語にはたくさん使われがちな文字というものがあるので、この文字がたくさん登場しているということはおそらく元々はこの文字で&amp;hellip;みたいな感じで推測しながら解読できます。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
