ネットワーク セキュリティ上級学習レッスン 19 - CTF 暗号化


1. 暗号化の概要

------暗号化の主な目的は、情報の存在ではなく、情報の意味を隠すことです。これが暗号化とステガノグラフィーの重要な違いです。

------暗号技術の開発は、大まかに 3 つの段階を経て行われます。

  1. 古典的な暗号化段階 (1949 年以前) では、初期のデータ暗号化テクノロジは比較的単純で、複雑性が低く、セキュリティも低く、そのほとんどは芸術的な特徴を持つワード パズルでした。産業革命の到来と第二次世界大戦の勃発により、データ暗号化技術は画期的な発展を遂げました。より複雑な暗号化アルゴリズムや機械的な暗号化装置がいくつか登場しています。
  2. 近代暗号段階(1949年~1975年)では、この時期にコンピュータの誕生により、暗号化技術が機械式の時代から電子式の時代へと高度化しました。これにより、複雑な計算のための暗号化技術が可能となり、暗号化アルゴリズムの複雑さと安全性も大幅に向上します。
  3. 現代暗号段階 (1976 年から現在) では、アメリカの暗号専門家ディフィーとヘルマンが 1976 年に公開鍵暗号の概念を提案しました。これは現代暗号の主要な発明であり、暗号に新しい方向性をもたらしました。

2. パスワード設計の基本的な目標

  • 機密性: 送信中または保存中にデータが盗まれないようにする
  • 完全性: データが送信中または保存中に改ざんされたり損傷されたりしないことを保証します。
  • 可用性: 必要なときに正当なユーザーがデータにアクセスまたは使用できることを保証します。
  • 認証: データのソースと信頼性を保証する
  • 否認防止: 送信者が送信されたデータを拒否できず、データの出所と信頼性を証明できることを保証します。

前三者称为信息安全的CIA三要素


3. 従来のパスワード

1. モールス信号

------モールス符号は、短いパルス (ドット) と長いパルス (ダッシュ) の組み合わせを使用して文字、数字、句読点を表すことによって情報を送信するために使用される符号化システムです。モールス信号はもともと電信通信に使用されていましたが、無線通信、救難信号などの状況によっては今でも使用されています。

------モールス信号は、ドット (・) とダッシュ (—) という 2 つの基本的な信号単位を使用します。この 2 つのユニットを組み合わせることで、異なる文字、数字、句読点を表現できます。

パターンパスワードテーブルの
文字:
ここに画像の説明を挿入します

番号:
ここに画像の説明を挿入します

句読点:
ここに画像の説明を挿入します

英語以外の文字:
ここに画像の説明を挿入します

特殊記号:
ここに画像の説明を挿入します

CTFトピックの表示

ここに画像の説明を挿入します
この質問には 1 と 0 しかありません。このとき、0 はドット (・)、1 はダッシュ (—) と比較できます。

2.転置パスワード

1) フェンスのパスワード

------レールフェンス暗号は、暗号化する平文を N 個のグループに分割し、各グループの最初の文字、各グループの 2 番目の文字...各グループの N 番目の文字を結合します (最後のグループは N では足りない場合があります)。 ) 文字の組み合わせ、そして最後にそれらをすべて連結して暗号文を取得します

  • 方法 1:
    ------ペアでグループ化(フェンスの数ごとにグループ化)し、各グループの最初のビットを取り出してパート 1 に結合し、2 番目のビットを取り出してパート 2 に結合し、その後、パート 1 とパート 2 を結合します。組み合わせた。
    ここに画像の説明を挿入します

  • 方法 2: (方法 1 の復号化方法を暗号化方法として使用します)
    ------10 人のキャラクターが 2 つのグループに分けられ、相互に散りばめられます。
    暗号文:hrelldlioswmoe
    復号された平文:helloworldisme
    復号方法は以下のとおりです。
    ここに画像の説明を挿入します

2) シーザー暗号

------平文中の各文字を暗号文のアルファベット順に一定数だけ後方(または前方)に移動(巡回移動)するシフト暗号です。シーザー暗号は英語のみを暗号化できます。
暗号化テキスト: iodj{ehoor zrua} 3 桁シフト 平文
: flag{hello word}

3) Quluパスワード

------キーは事前に合意する必要があります(曲線パス)
ここに画像の説明を挿入します

  • 例:
    平文: flag{y0u_are_p1g@} (行または列 3)
    暗号文 (2 種類あります):
    • 3 桁目としてリストされます: }ey{r@gaga_1pulf0_
      ここに画像の説明を挿入します

    • 動作 3 桁:}1e_yal{urp@g_a0gf
      ここに画像の説明を挿入します

4) コラムシフト暗号

------列シフト暗号 (Columnar Transposition Cipher) は、比較的シンプルで実装が容易な転置暗号であり、単純なルールを使用して平文をスクランブルして暗号文に混合します。

  • 例:
    平文: 素早い茶色のキツネが怠惰な犬を飛び越える
    キー:
    ここに画像の説明を挿入します
    uCryptotext: qoury inpho Tkool hbxva uwmtd cfseg erjez

3. パスワードを交換する

1) シフトパスワード

------シーザー暗号と似ていますが、シフト暗号では文字だけでなく数字や特殊文字も処理できる点が異なり、シフトには ASCII コード テーブルがよく使用されます。クラッキング手法は、可能な結果を​​得るためにあらゆる可能性を検討することでもあります。

2) 簡単なパスワードの置き換え

------各平文文字を、一意に対応する個別の文字に置き換えます。シーザー暗号との違いは、暗号のアルファベットの文字が単純なシフトではなく、完全に混沌としており、そのためシーザー暗号よりも解読が困難であるということです。この暗号化方式のキーの数は 26! であり、解読はほぼ不可能です。

  • たとえば、
    ここに画像の説明を挿入します
    a は p に対応し、b は h に対応します。
    ここに画像の説明を挿入します

3) Etbash コード

------逆アルファベット順
暗号文: gsv jfrxp yildm ulc qfnkh levi gsv ozab wlt
平文: 素早い茶色のキツネが怠惰な犬を飛び越える

4) チェッカーボードのパスワード Polybius

ここに画像の説明を挿入します

  • 例:
    平文 HELLO、暗号化後は
    23 15 31 31 34

5) ヴィジェネール・バージニア州のパスワード

------一連のシーザー暗号を使用して暗号アルファベットを形成する暗号化アルゴリズム。多アルファベット暗号の単純な形式です。
ここに画像の説明を挿入します

  • 例:
    プレーン テキスト: グレートウォール
    キー: 暗号化
    • 暗号化プロセス:
      平文と同じ長さのキーを入力し、テーブルを
      ここに画像の説明を挿入します
      検索して暗号文を取得します。暗号文: efkt zfgrrltzn
      ここに画像の説明を挿入します

6) ベーコンコード

------Bacon 暗号は、2 つの暗号文文字 (a と b) のみを含む単純な置換暗号であり、平文の各文字は a と b から構成される長さ 5 の文字列に置き換えられます。

  • 暗号文文字は他の 2 文字から選択することもできます。
  • この種の暗号文がすべて 2 文字で構成されている場合、それがベーコンの暗号である可能性があると推測できます。
  • オンライン復号化 Web サイト: https://tool.bugku.com/peigen/

従来のベーコン暗号表:平文iとj、uとvに対応する暗号文は同じ。
ここに画像の説明を挿入します

26 文字すべてを含むように Bacon 暗号テーブルを拡張しました。
ここに画像の説明を挿入します

7) 豚小屋のパスワード

パスワードテーブルは次のとおりです。
ここに画像の説明を挿入します

8) キーボードのパスワード

コンピュータキーボードの
ここに画像の説明を挿入します
平文: 35 16 13
暗号文: bye


4. エンコードとデコード - ASCII エンコード

  • 最初の部分は次のとおりです。 ASCII 非印刷制御文字 (ASCII コード表の 0 ~ 31 を参照)。
  • 2 番目の部分は、CTF で一般的に使用される変換である ASCII 印刷文字です。
  • 3 番目の部分は次のとおりです: 拡張 ASCII 印刷文字

ここに画像の説明を挿入します
ここに画像の説明を挿入します

Python を直接使用して ASCII コードを確認することもできます。
ここに画像の説明を挿入します


5. コーデックベースファミリー

------Base64、base32、base16 はそれぞれ、8 ビット バイトをエンコードして 6 ビット、5 ビット、4 ビットに変換できます。16、32、および 64 はそれぞれ、エンコードに使用される文字の数を示します。

------Base64 は、テキスト データが通常処理される状況で、バイナリ データを表現、送信、保存するためによく使用されます。MIME 電子メール、MIME 経由の電子メール、XML での複雑なデータの保存が含まれます。

Base64エンコーディングテーブル:
ここに画像の説明を挿入します

Base32エンコーディングテーブル:
ここに画像の説明を挿入します

Base16エンコーディングテーブル:
ここに画像の説明を挿入します

1. コーディング原理

------Base64 エンコードでは、3 つの 8 ビット バイトを 4 つの 6 ビット バイトに変換し、6 ビットの前に 2 つの 0 を追加して 8 ビット バイトを形成する必要があります。6 ビット バイナリ 2 で表現できる最大数は、 6 乗は 64 なので、文字数は 64 個になります (= 記号はエンコードされた文字ではなく、埋め込み文字です)。

2.Base64エンコード処理

明文 ——> ASCII编码 ——> 每个编码转化为8位二进制 ——> 再把二进制每6位来进行分组 ——> 前面补0把6位二进制补充成8位,方便计算机存储 ——> 把二进制转换位数字 ——> 按照Base64编码表转换成对应的字符

------まず、平文の ASCII コード比較表を参照して、各文字に対応する ASCII コードを見つけ、それを 8 ビットのバイナリに変換し、最後に、変換されたバイナリを 6 ビットのグループにグループ化し、そうでない場合は 0 を埋めます。十分な量を入力し、最後に 6 ビット バイナリを変換します。桁数は 6 と 8 の倍数でなければなりません (桁数には補足の 0 を追加する必要があります)。6 と 8 の桁数が足りない場合は、"= を使用します。 1 つの「=」は 6 桁を占めます。その後 10 進数に変換され、最終的な 10 進数の結果が Base64 エンコード テーブルに従って変換されます。

例:

对youi进行Base64编码

1ASCII编码
y:121
o:111
u:117
i:105


2)每个编码转化为8位二进制
bin(121)=01111001
bin(111)= 01101111
bin(117)= 01111010
bin(105)= 01101001
01111001 01101111 01111010 01101001


3)二进制每6位来进行分组
011110
010110
111101
111010
011010
010000
=
=
最后一组只有01两位,不够6位,就需要在后面补0,补足6位,变成010000。
并且这里就一共只有36位,只能整除6,不能整除8,
这时候就需要后面补等于号“=”(一个等于号“=”占6位),
这里需要补2个等于号“=4)前面补06位二进制补充成800 011110
00 010110
00 111101
00 111010
00 011010
00 010000
=
=


5)把二进制转换位数字
00 011110   32
00 010110   22
00 111101   61
00 111010   53
00 011010   26
00 010000   16
  =
  =


6)按照Base64编码表转换成对应的字符
00 011110   32   e
00 010110   22   W
00 111101   61   9
00 111010   53   1
00 011010   26   a
00 010000   16   Q
  =
  =

这样得到最后的加密密文是eW91aQ==

------同様に、Base32 と Base16 の暗号化方式は似ていますが、Base32 は 5 桁に分割され、合計桁数が同時に 8 と 5 の倍数である必要があるのに対し、Base16 は 4 桁に分割される点が異なります。桁数、合計桁数は同時に 8 と 4 である必要があります。


6. その他のエンコードとデコード

1.ShellCodeエンコーディング

ASCII エンコーディング、特徴は\x次で始まります。

  • 例:
    ソーステキスト: 素早い茶色のキツネが怠惰な犬を飛び越える

エンコード後:
#!shell
\x54\x68\x65\x7f\x71\x75\x69\x63\x6b\x7f\x62\x72\x6f\x77\x6e\x7f\x66\x6f\x78\x7f\x6a\x75 \x6d\x70\x73\x7f\x6f\x76\x65\x72\x7f\x74\x68\x65\x7f\x6c\x61\x7a\x79\x7f\x64\x6f\x67

2. Quoted-printable エンコーディング

------= で始まることを特徴とする MultiPurpose Internet Mail Extensions (MIME) の実装。
ここに画像の説明を挿入します

3. URLエンコード

------URL エンコードはパーセント エンコードとも呼ばれ、Uniform Resource Locator (URL) エンコード方式です。URL アドレス (Web サイトのアドレスと呼ばれることが多い) は、一般的に使用される数字を指定します。文字は直接使用でき、特殊ユーザー文字の別のバッチも直接使用できます (/、:@ など)。その他の文字はすべて使用する必要があります。 %xx エンコーディングを通じて処理されます。今ではこれが標準になっており、基本的にすべてのプログラミング言語がこのエンコーディングを採用しています。特征是%开头

  • 例:
    ソーステキスト: 素早い茶色のキツネが怠惰な犬を飛び越える
    エンコード後: %54%68%65%20%71%75%69%63%6b%20%62%72%6f%77%6e% 20% 66%6f%78%20%6a%75%6d%70%73%20%6f%76%65%72%20%74%68%65%20%6c%61%7a%79%20% 64% 6f%67

4. Unicodeエンコーディング

------Unicode は、国際組織によって開発された文字セットで、世界中のすべてのテキストと記号に対応できます。

  • Unicode エンコードには、次の 4 つのエンコード方法があります。
    ソース テキスト:
    • &#x [16 進数]:
    • [10 進数]:
    • \U [16進数]: \U0054\U0068\U0065
    • \U+ [16 進数]: \U+0054\U+0068\U+0065

5. HTML エンティティのエンコーディング

ここに画像の説明を挿入します

6. ウサギのコーディング

特点:Rabbit加密开头部分通常为U2FsdGVkX1。
------暗号文の特徴は Base64 と似ていますが、明らかな違いは、暗号文に + が多く含まれることと、/

  • 例:
    • キー暗号化を行わない平文の I Love You は次
      のとおりです: U2FsdGVkX1/ouFei55jKdzY1fWNS4jxHVNf/AfKWjnBrOGY=


    • キーなしで暗号化した後の平文 I Love You 521 は次のとおりです: U2FsdGVkX19DvuEo5PvBA8TuLrM2t+EZBvUkzlAa


    • キー 666 を持つ平文 I Love You 521と暗号化された暗号文は次のとおりです: U2FsdGVkX18w6vxXxux/ivRVwo3xMzTxmUyk7cHz


7. 最新の暗号化 - 対称暗号化

------1976 年以前は、すべての暗号化方式で対称暗号化アルゴリズムが使用されていました。つまり、暗号化と復号化には同じ一連のルールが使用されていました。たとえば、A はキー A を使用して暗号化し、暗号文を B に渡しますが、B は依然としてキー A を使用して復号化します。A から B への送信中にキー A が漏洩した場合、またはキー A がいくつかの既知の暗号文と平文に基づいて推定された場合、A と B の間の通信には秘密がなくなります。

------対称暗号は、次の特徴を持つ一般的な暗号化アルゴリズムです。

  • 単一キー: 対称暗号は、暗号化操作と復号化操作に同じキーを使用します。送信者と受信者は事前に同意し、同じキーを共有する必要があります。
  • 高速な暗号化速度: 対称暗号アルゴリズムは通常、暗号化および復号化の速度が速いため、大量のデータの暗号化および復号化操作に適しています。
  • シンプルな実装: 対称暗号化の実装は比較的シンプルで、必要なコンピューティング リソースは少なくなります。
  • 高い暗号化と復号化の効率: 対称暗号は暗号化と復号化に同じキーを使用するため、キーの配布と管理が不要で、追加のオーバーヘッドが削減されます。
  • 短い鍵の長さ: 対称暗号の鍵の長さは通常短く、通常は数十から数百ビットです。

1、DES

------DES: データ暗号化標準、DES は、56 ビット キーを使用してデータを暗号化する対称暗号化アルゴリズムです。キーの長さが短いため、安全性が十分ではないと考えられ、徐々により強力なアルゴリズムに置き換えられてきました。

------64 ビットの平文は 56 ビットのキーで 64 ビットに暗号化され、7 ビットごとにチェック ビットがあるため、7 ビットと 1 つのチェック デジットで 8 ビットになります。

------それぞれの 64 ビットはパケットと呼ばれます。

------長さが増加した後、それが繰り返される (繰り返し) 方法をパターンと呼びます。

  • 暗号化プロセス
    ここに画像の説明を挿入します

  • 復号化プロセス
    ここに画像の説明を挿入します

2、3DES

------3DES (Triple Data Encryption Standard): 3DES は DES の拡張バージョンで、DES アルゴリズムの 2 倍または 3 倍を使用してデータを暗号化します。より高いレベルのセキュリティが提供されますが、速度は遅くなります。

3、AES

------AES (Advanced Encryption Standard) は、現在最も一般的に使用されている対称暗号化アルゴリズムの 1 つで、DES の置き換えに使用されます。128 ビット、192 ビット、および 256 ビットのキーをサポートし、より高いセキュリティとより高速な暗号化速度を提供します。

4、RC4

------RC4 (Rivest Cipher 4) は、キーと平文データを一度に XOR して暗号文を生成するストリーム暗号アルゴリズムです。以前は広く使用されていましたが、セキュリティ上の脆弱性のため、現在は使用が推奨されていません


8. 最新の暗号化 - 非対称暗号化

------A は公開鍵 A を使用して暗号化し、その暗号文を B に渡し、B は秘密鍵 B を使用して復号化して平文を取得します。公開鍵はネットワーク上で送信され、秘密鍵はBのみが所有しネットワーク上には送信されないため、公開鍵Aがわかっても復号することはできません。コミュニケーションについても同様です。秘密鍵が漏洩しない限り安全に通信できる非対称暗号アルゴリズムです。

------非対称暗号には次の特徴があります。

  • キーの対称性: 非対称暗号アルゴリズムの場合、暗号化と復号化に使用されるキーは異なります。公開キーはデータの暗号化に使用され、秘密キーはデータの復号化に使用されます。このようなキー ペアには重要な特徴があります。つまり、公開キーから秘密キーを推定できないということです。
  • キーの配布: 非対称暗号では、公開キーは他の人に自由に配布できますが、秘密キーは秘密に保たれ、キーの所有者のみがアクセスできる必要があります。これにより、公開キーは広く公開されますが、秘密キーはキー所有者とともに安全に保管するだけで済みます。
  • デジタル署名: 非対称暗号アルゴリズムを使用して、デジタル署名を生成および検証することもできます。データの送信者は自分の秘密キーを使用してデータに署名でき、受信者は送信者の公開キーを使用して署名の有効性を検証できます。
  • より長いキーの長さ: 対称暗号アルゴリズムと比較して、非対称暗号アルゴリズムは通常、数百から数千ビットの範囲のより長いキー長を使用します。

1、RSA

------公钥和私钥RSA アルゴリズムは 2 つのキーで構成されます

------RSA アルゴリズムがなければ、現在のオンライン世界にはセキュリティがなくなり、現在のオンライン取引は不可能になります。よく知られている ssh プロトコルも RSA 暗号化アルゴリズムに基づいており、通信が確実に暗号化されます。

  • 暗号化:
    暗号文 = 平文 ^ E mod N
    公開鍵 (N, E)

  • 復号化:
    平文 = 暗号文 ^ D mod N
    秘密鍵 (N, D)

  • 仮定: 公開鍵 (N, E) = (231,17)、秘密鍵 (N, D) = (231,113)、平文 123。
    暗号文 = 123^17 mod 231 =51
    平文 = 51^113 mod 231 =123

暗号化プロセス

随机找两个质数 P 和 Q ——> 算出N的值(N = P * Q),并转化为二进制 ——> 计算 N 的欧拉函数 φ(N) ——> 选取公钥E ——> 算私钥D

1)随机找两个质数 PQP = 67Q = 71

2)算出N的值并转化为二进制
乘积 N = P * Q = 4757 ,转化为二进为 1001010010101
这里为 13 位,实际使用中的算法是往往是 1024 位 或 2048 位,
位数越长,算法越难被破解。取的PQ 越大,越安全。

3)计算 N 的欧拉函数 φ(N)   
φ(N) = φ(P * Q)= φ(P - 1)φ(Q - 1) = (P - 1)(Q - 1) =66 * 70 = 4620

4)选取公钥E
1 < E <φ(N)E能不是φ(N)的因子数(随机取),
这里1 < E <4620,我们选E =101

5)算私钥DD x E)mod φ(N) = 1,也就是(D x E/ φ(N) = y …… 1
这里就是:(D x 101)mod 4620= 1,选取D=1601

2、DH

------DH (Diffie-Hellman) は、キーを共有せずに共有キーをネゴシエートするために 2 つの当事者が使用するキー交換プロトコルです。離散対数問題に基づいた暗号化アルゴリズムです。

3、ECC

------ECC (楕円曲線暗号) は、楕円曲線の離散対数問題を利用して、他の非対称暗号アルゴリズムと同等のセキュリティを提供しますが、より短いキー長を使用します。ECC は、その効率性と強力なセキュリティにより、モバイル デバイスやモノのインターネットで広く使用されています。

4、DSA

------DSA (デジタル署名アルゴリズム) は、デジタル署名の生成と検証に使用される非対称暗号アルゴリズムです。これは離散対数問題に基づいており、SHA ファミリのハッシュ関数と組み合わせてよく使用されます。

5、エルガマル

------ElGamal は、暗号化と署名スキームを含む、離散対数問題に基づく非対称暗号アルゴリズムです。暗号化速度は比較的遅いですが、一部の特定のアプリケーションで広く使用されています。


9. 要約アルゴリズム

1、MD5

------MD5 (メッセージ ダイジェスト アルゴリズム 5) は、中国語名がメッセージ ダイジェスト アルゴリズム 5 であり、メッセージの整合性を保護するためにコンピューター セキュリティの分野で広く使用されているハッシュ関数です。

------一般的に使用されるダイジェスト アルゴリズム (またはフィンガープリント アルゴリズム) として、MD5 には次の重要な特徴があります。

  • 任意の長さの情報を入力し、出力長は固定: MD5 は任意の長さの情報を入力でき、出力は 128 ビット (ビット) の固定長バイナリ データです。
  • 高速な演算速度: MD5 の演算は、AND、OR、NOT、ディスプレースメントなどのすべて 32 ビットのビット演算であるため、演算速度が速く、CPU 時間をほとんど消費しません。
  • 不可逆: MD5 ハッシュ結果によれば、元のデータは計算できません (辞書を参照する以外)。
  • 衝突: 元データとその MD5 ハッシュ結果は 1 対 1 に対応しておらず、複数の元データの MD5 結果が同じになる可能性があります。

因此,MD5 不再被认为是安全的哈希算法,不适合用于加密或保护通信。

2、SHA-1

------SHA-1 (セキュア ハッシュ アルゴリズム 1) は 160 ビット (20 バイト) のダイジェストを生成し、ファイルの整合性検証にも一般的に使用されます。ただし、SHA-1 は衝突攻撃に対する脆弱性があるため、段階的に廃止されています。

3、SHA-256

------SHA-256 (セキュア ハッシュ アルゴリズム 256 ビット) は SHA-2 シリーズのメンバーであり、256 ビット (32 バイト) のダイジェストを生成します。SHA-256 とその派生アルゴリズム (SHA-384、SHA-512 など) は広く使用されており、情報セキュリティの分野で一般的に使用されるダイジェスト アルゴリズムの 1 つです。

4、SHA-3

------SHA-3 は Keccak アルゴリズムと呼ばれ、ハッシュ関数のファミリーでもあります。SHA-2 と比較すると、SHA-3 は構造とアルゴリズムが異なり、より優れたセキュリティとパフォーマンスを提供します。

5、リペメド

------RIPEMD (RACE Integrity Primitives Evaluation Message Digest) は、ヨーロッパの CRYPTREC プロジェクトのダイジェスト標準候補の 1 つです。RIPEMD-160 は、ビットコインやその他の暗号通貨で広く使用されています。


10. 便利な復号化ウェブサイト

www.hiencode.com


おすすめ

転載: blog.csdn.net/p36273/article/details/132916767