平易な言語の基本暗号

こんにちは、Habr!



「データ暗号化」、「秘密暗号」、「暗号化保護」、「暗号化」などの単語やフレーズをよく耳にしますが、誰もがその意味を正確に理解しているわけではありません。 この投稿では、暗号化とは何かを理解し、基本暗号を検討して、ITから遠く離れた人でもこの現象の本質を理解できるようにします。



まず、用語を理解します。



暗号化は、 悪意のあるユーザーがこのメッセージを傍受してもデータを読み取れないようにする元のメッセージの変換です。 この変換は、特別な数学的および論理的アルゴリズムを使用して行われますが、その一部については以下で検討します。



実際、 元のメッセージは暗号化するものです。 典型的な例はテキストです。



暗号化されたメッセージは、暗号化プロセスに合格したメッセージです。



暗号は、メッセージを変換するアルゴリズム自体です。



キーは、暗号化または復号化の実行に基づいたコンポーネントです。



アルファベットは、元のメッセージおよび暗号化されたメッセージで使用可能なすべての文字のリストです。 数字、句読点、スペース、小文字と大文字などを含む



ほぼ同じ言語を話せるようになったので、単純な暗号を分析します。





最も簡単な暗号。 その本質は、アルファベットの上向きです。



たとえば、通常のラテンアルファベットと完全に一致するアルファベットがあります。



abcdefghijklmnopqrstu vwxyz
      
      





Atbash暗号を実装するには、単にそれを逆にします。 「A」は「Z」に、「B」は「Y」に、またはその逆になります。 出力では、次の図が表示されます。







そして今、私たちはソースアルファベットと暗号アルファベットに必要なメッセージを書きます



元の投稿:habrが大好き

暗号化:r olev szyi





ここにもう1つのパラメーターが追加されます-1から25までの数字の形式のプリミティブキー(ラテンアルファベットの場合)。 実際には、キーは4〜10です。



繰り返しますが、わかりやすくするために、ラテンアルファベットを使用してください



 abcdefghijklmnopqrstu vwxyz
      
      





そして、各文字をキーの値の数だけ右または左に移動します。



たとえば、キーは4で、右にシフトします。



元のアルファベット:abcdefghijklmnopqrstu vwxyz

暗号化:wxyzabcdefghijklmnopq rstuv



メッセージを書きます:



 hello world
      
      





暗号化して、次の一貫性のないテキストを取得します。



 dahhk sknhz
      
      







絶対的な暗号強度を備えた最も単純なバイナリベースの暗号。 キーの知識がなければ、それを解読することは不可能です(Claude Shannonにより証明)。



元のアルファベットはまだ同じラテン語です。



メッセージは個別の文字に分割され、各文字はバイナリ形式で表示されます。

暗号化の古典は、各文字に5桁のボードコードを提供します。 ASCIIテーブルの例を使用して、8ビット/文字でエンコードするためにこの暗号を変更しようとします。 各文字をバイナリコードの形式で表します。



画像



ここで、電子工学コースとXORとも呼ばれるXOR要素を思い出してください。



XORは信号(それぞれ0または1)を受信し、それらに対して論理演算を実行し、入力値に基づいて1つの信号を提供します。



すべての信号が互いに等しい場合(0-0または1-1または0-0-0など)、出力で0になります。

信号が等しくない場合(0-1または1-0または1-0-0など)、出力は1です。



メッセージを暗号化するために、暗号化用のテキストを入力します。キーは同じ長さです。 各文字をバイナリコードに変換し、式メッセージXORキーを実行します



例:



投稿:ロンドン

キー:SYSTEM



それらをバイナリコードに変換し、XORを実行します。



 01001100 01001111 01001110 01000100 01001111 01001110 01010011 01011001 01010011 01010100 01000101 01001101 _______________________________________________________ 00011111 00010110 00011101 00010000 00001010 00000011
      
      





この特定の例では、結果の文字の代わりに、空の場所のみが表示されます。これは、すべての文字が最初の32文字のサービス文字に含まれているためです。 ただし、結果を数値に変換すると、次の図が表示されます。



 31 22 29 16 10 3.
      
      





それは完全に一貫性のない数字のセットのように見えますが、私たちは何かを知っています。





暗号化の原理は、Caesarの暗号とほぼ同じです。 この場合にのみ、特定の位置数ではなく、コードワードだけアルファベットをシフトします。



たとえば、変更のためにキリル文字を使用します。



 
      
      





コードワードを作成します。 たとえば、Lukomorye。 繰り返し文字をすべて削除します。 出力では、「Lukomrier」という単語を取得します。



ここで、この単語をアルファベットの先頭に入力し、残りの文字は変更しません。



  
      
      





次に、メッセージを記録して暗号化します。



 "    "
      
      





次の読み取り不可能なナンセンスを取得します。



 "    "
      
      







従来のPlayfer暗号は、ラテンアルファベットの文字(iとjが1つのセルに書き込まれる)、コードワード、およびそれらのさらなる操作で満たされた5x5マトリックスを想定しています。



コードワードを「HELLO」にします。



まず、以前の暗号と同様に動作します。 繰り返しを削除し、アルファベットの先頭に単語を書きます。







今、任意のメッセージを受け取ります。 たとえば、「私はHABRとGITHUBが大好きです」。



私たちはそれをバイグラムに分解します。 スペースを含まない文字のペアに。



 IL OV EH AB RA ND GI TH UB.
      
      





メッセージの文字数が奇数である場合、またはバイグラムに2つの同一の文字(LLなど)が含まれている場合、記号Xは欠落または繰り返し文字に置き換えられます。



暗号化は、いくつかの簡単なルールに従って実行されます。



1)バイグラムのシンボルが同じ行のマトリックスにある場合-それらを1つ右にシフトします。 シンボルが行の最後だった場合-最初になります。



たとえば、EHはLEになります。







2)ダイグラム文字が同じ列にある場合、1文字下にシフトされます。 文字が列の一番下にあった場合、一番上の値を取ります。



たとえば、LXバイグラムがあれば、それはDLになります。



3)文字が行または列にない場合、長方形を作成します。ここで、文字は対角線の端です。 そして、コーナーを交換します。



たとえば、バイグラムRA。











これらのルールに従って、メッセージ全体を暗号化します。



 IL OV EH AB RA ND GI TH UB. KO HY LE HG EU MF BP QO QG
      
      





スペースを削除すると、次の暗号化されたメッセージが表示されます。



 KOHYLEHGEUMFBPQOQG
      
      





おめでとうございます この記事を読んだ後、少なくとも暗号化とは何かをおおまかに理解し、いくつかの原始暗号を使用する方法を知っているので、後で説明するより複雑な暗号の例を勉強することができます。



ご清聴ありがとうございました。



All Articles