記事ディレクトリ
1. 暗号化の概要
------暗号化の主な目的は、情報の存在ではなく、情報の意味を隠すことです。これが暗号化とステガノグラフィーの重要な違いです。
------暗号技術の開発は、大まかに 3 つの段階を経て行われます。
- 古典的な暗号化段階 (1949 年以前) では、初期のデータ暗号化テクノロジは比較的単純で、複雑性が低く、セキュリティも低く、そのほとんどは芸術的な特徴を持つワード パズルでした。産業革命の到来と第二次世界大戦の勃発により、データ暗号化技術は画期的な発展を遂げました。より複雑な暗号化アルゴリズムや機械的な暗号化装置がいくつか登場しています。
- 近代暗号段階(1949年~1975年)では、この時期にコンピュータの誕生により、暗号化技術が機械式の時代から電子式の時代へと高度化しました。これにより、複雑な計算のための暗号化技術が可能となり、暗号化アルゴリズムの複雑さと安全性も大幅に向上します。
- 現代暗号段階 (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编码
1)ASCII编码
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)前面补0把6位二进制补充成8位
00 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 進数]: