Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    86393517

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

暗号化の紹介

暗号化は一般に、古典的な暗号化と現代の暗号化に分けることができます。

その中で、実用的な芸術としての古典的な暗号化は、多くの場合、デザイナーと敵の創造性とスキルに依存しており、元の暗号を明確に定義していません。主に次の側面が含まれています

シングルテーブル交換暗号化マルチテーブル交換暗号化奇妙な暗号化方法。一方、現代の暗号化は、20世紀後半に登場した多数の関連理論に由来し、現代の暗号化を体系的かつ厳密に学ぶことができる科学になりました。現代の暗号化は、単に次の側面に分けることができます

DES、AES、RC4で表される対称パスワード。非対称パスワードは、RSAおよび楕円曲線暗号化によって表されます。 MD5、SHA1、SHA512などで表されるHash。デジタル署名、RSA署名、Elgamal Signature、およびDSA Signatureで表されます。暗号化する主な方法は2つあります

ブロック暗号化ストリーム暗号化一般的に言えば、パスワードデザイナーの基本的なアイデアは、パスワードフレームワークを確保することです。

機密性の整合性の可用性は否定できず、最初の3つはCIAトリプルとも呼ばれます。

パスワードクラッカーの場合、通常、パスワードアルゴリズムを識別する方法を見つけてから、パスワードフレームワークのブルートフォースクラッキング方法または脆弱性を使用してクラックする必要があります。もちろん、対応する検出をバイパスするために、誤ったハッシュ値または署名を構築したい場合もあります。

一般的に言えば、攻撃者はパスワードシステムが壊れていることを知っていると仮定します。一般的に言えば、次の種類の攻撃があります。

攻撃タイプの説明該当するシナリオ:暗号文攻撃攻撃攻撃者のみがciphertextクラシックパスワードのみを既知のプレーンテキスト攻撃と対応する暗号化クラシックパスワード、対称的なパスワード、非対称パスワード、非対称パスワード、プラントテキスト攻撃は、対応する微細テキスト対称パスワードを取得することができます。非対称パスワードは、いくつかの暗号文を選択した後、プレーンテキスト非対称パスワードを取得できます。ここに推奨される資料がいくつかあります

Khan Academy Open Classは理解しやすい暗号化——一般的な暗号化技術の原則とアプリケーション

参照

ウィキペディアクリプトグラフィ

古典的なパスワードの紹介

シャノンの機密システムのコミュニケーション理論の公開前の暗号化は、古典的なクリプトグラフィーとして分類されます。最終分析では、古典的な暗号エンコーディングの2つの主要な方法、つまり置換と交換があります。

パスワードを交換

プレーンテキストの文字を再配置すると、文字自体は変更されていませんが、その位置は変わります。この方法でコンパイルされたパスワードは、交換パスワードと呼ばれます。パスワードを置き換える最も簡単な方法は、プレーンテキストのアルファベット順の順序を逆にしてから、それをciphertextとして固定長の文字グループにカットすることです。

- 列の順列暗号化:固定された長さm、つまり、行ごとのm文字、キーの制御下で特定の順序で列を交換する列、つまり、列の優先順位で読み取る、つまり、ciphertextが生成されます。復号化:逆プロセス。

- 定期的な順列は、ほぼ同じ列の順序ですが、追加および復号化する場合、列交換後に行ごとに下方に実行されます。

置換

パスワード置換は、プレーンテキストの文字を他の文字に置き換えることです。 -single-denote置換パスワードAからBへのマッピングを定義します:F:A→BF(A_I)=B_I=A_J \ J=I+K \ MOD N加算パスワードは、アルファベットの後のK番目の文字に置き換えられます。 K=3は、Caesarが使用する暗号化システムである有名なCaesarコードです。これは、シセロの戦いで重要な軍事情報を保護するために古代ローマ人の偉大なものです。これは、世界史における最初の有名なパスワードアプリケーションです。

cultip倍パスワードaとbは、n文字のあるアルファベットです。aからbへのマッピングを定義します:f:a→bf(a_i)=b_i=a_j \ j=ik \ mod n where :(n、k)=1。注:(n、k)=1のみが正しく解読できます。

cassidersパスワードの代わりにランダムに単語を選択し、内部の重複文字を削除し、マトリックスの最初の行に書き込み、この最初の行の文字をプレーンテキストアルファベットから削除し、残りの文字をマトリックスアルファベットに書き込みます。次に、列に従って文字を取り出して、暗号アルファベットを形成します。

-Multi-denotesはパスワードを単一デノットに置き換えますが、1つの理由は、単純なテキストレターが暗号テキストレターにのみ置き換えられることです。周波数分析は、解読に使用できます。したがって、より安全なマルチデノテッド置換パスワードが生成されます。つまり、複数の暗号文アルファベットが構築され、一連の置換テーブルが使用されて、キーの制御下でシーケンスのプレーンテキストメッセージのアルファベットシーケンスを置き換えます。

古典的な暗号化では、主に単一テーブルの代替パスワード、マルチテーブルの代替パスワード、およびその他の興味深いパスワードを紹介します。

古典的な暗号化では、デザイナーは主にメッセージの機密性を考慮しているため、関連するキーを持つ人のみが暗号テキストを復号化してメッセージのコンテンツを取得できず、メッセージの完全性と否定性を考慮しないことに言及する価値があります。

単一テーブル暗号化

[目的]

いくつかの一般的な暗号化方法

[環境]

Ubuntu

[ツール]

JPK

[原則]

シングルテーブル交換暗号化の

パスワードのシフト

すべての暗号化方法には、ほぼ1つの共通の特徴があります。したがって、通常、割れる方法は2つあります

キースペースが小さい場合、暗号文の長さが十分に長いときにブルートフォースの亀裂が使用されます。キースペースが十分に大きく、暗号文の長さが十分に短い場合、単語周波数分析が使用され、亀裂はより困難です。

シーザーコード

原理

暗号化されると、Caesar暗号は、単純なテキスト内の各文字を後方(または前方)に移動します。これは、暗号テキストとして固定数(移動ループ)のアルファベットにある順序で順に移動します。たとえば、オフセットがシフトしたままになった場合(復号化中のキーは3):

プレーンアルファベット:abcdefghijklmnopqrstuvwxyz

秘密のテキストアルファベット:defghijklmnopqrstuvwxyzabc

使用すると、暗号化業者は、プレーンテキストアルファベットで暗号化する必要があるメッセージ内の各文字の場所を探し、Cipherテキストアルファベットに対応する文字を書きます。復号化する必要がある人は、元のプレーンテキストを取得するために、以前に既知のキーに基づいて逆に動作します。例えば:

プレーンテキスト:クイックブラウンフォックスが怠zyな犬を飛び越えます

パスワード:WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ

オフセットに応じて、いくつかの特定のCAESARパスワード名があります。

オフセットは10です:avocat(a→k)オフセットは13:rot13です。 ROT13は独自の反転です。つまり、ROT13を復元するには、同じ暗号化アルゴリズムを使用してそれを取得できるため、同じ操作を再暗号化して解読できます。オフセットは-5:Cassis(k 6)です。オフセットは-6:カセット(k 7)です。さらに、キーベースのシーザー暗号があります。基本原則は、キーを使用してキーの各ビットを数値(通常はアルファベットの対応する順序で数値に変換)に変換し、この数値をキーとして使用して、プレーンテキストの各文字を暗号化することです。

atbash cipher

Caesarパスワードと同様に、パスワードをシフトするだけでなく、数字や特殊文字も扱うことです。 ASCIIコードテーブルは、一般的にシフトに使用されます。亀裂方法は、考えられる結果を得るためにすべての可能性を横断することでもあります。

原理

簡単なパスワードの交換

Atbash Cipherは、実際に以下に紹介する単純な交換パスワードの特別なケースと見なすことができます。アルファベットの最後の文字を使用して最初の文字を表し、最後から2番目の文字は2番目の文字を表します。ローマのアルファベットでは、次のように見えます。

プレーンテキスト:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

パスワード:Z Y X W V U T S R Q P O N M L K J I H G F E D C B A

原理

アフィンパスワード

シンプルな置換暗号を暗号化するときは、各プレーンテキストレターを一意で異なる文字に置き換えます。それとCAESARパスワードの違いは、パスワードのアルファベットの文字が単にシフトされているのではなく、完全に混乱しているため、CAESARパスワードよりもクラックするのが難しくなっていることです。例えば:

プレーンレター: abcdefghijklmnopqrstuvwxyz

キーレター: phqgiumeylnofdxjkrcvstzwb

aはpに対応し、dはHなどに対応します。

原理

[step]

アフィンパスワードの暗号化関数はe(x)=(ax+b)(modm)で、ここで

xは、プレーンテキストの特定のエンコードで取得された番号AとMを表します。エンコードシステムの文字の数です。復号化関数はd(x)=a − 1(x -b)(modm)で、a -1はzmグループのaの乗算逆要素です。

Caiserパスワード

atbash cipher

ここでは、Xman Summer Camp共有トーナメントの第1フェーズであるCrypto 100を紹介します。

プレーンテキスト:S0A6U3U1S0BV1A

キー:広東

オフセット:6,20,0,13,6,19,14,20

パスワード:Y0U6U3H1Y0UJ1U

割れた

キーのないCaesarのパスワードの場合、それをクラックする2つの基本的な方法があります。

26のオフセットのトラバーサルは、単語頻度を分析するための一般的な状況に適しており、暗号文が長い状況に適しています。その中で、最初の方法は間違いなく平易なテキストを取得できますが、2番目の方法では必ずしも正しい平易なテキストを取得するとは限りません。

キーベースのシーザー暗号の場合、対応するキーを知る必要があります。

この質問を例に挙げてください:広州は最初にオフセットに変換され、Aは0に変換され、他の文字はそれに応じてオフセットされ、最終的なオフセットは6、20、0、13、6、19、14、20です。文字のみが暗号化され、最初の文字sはキーの最初の文字sに対応するオフセットであるため、暗号化の後、プレーンテキストの2番目の文字Aはキーuに対応するオフセットを続けます。暗号化が完了した後、暗号文はプレーンテキストから取得でき、逆操作はciphertextから取得できます。

道具

一般的に、次のツールがあり、その中にはJPKがより一般的です。

JPK、キーを使用して復号化するためのオンライン復号化ツールキーCaesarパスワードなし

簡単なパスワードの交換

以下は、ローマアルファベットの対応するルールに基づいて暗号化されているため、理解できます。

プレーンテキスト:クイックブラウンフォックスが怠zyな犬を飛び越えます

パスワード:GSV JFRXP LOVEM ULC QFNKH LEVI GSV OZAB WLT

割れた

その重要な空間は十分に短く、暗号文が十分に長い場合、単語周波数分析によって解決できることがわかります。

アフィンパスワード

例では、次の例では、原則部分を使用して、パーツの対応するルールを置き換えて暗号化するだけです。

プレーンテキスト:クイックブラウンフォックスが怠zyな犬を飛び越えます

パスワード:cei jvaql hkdtf udz yvoxr dsik cei npbw gdm

復号化するとき、通常、それをdyする前に、各文字の対応するルールを知っています。

割れた

この暗号化方式は26!のすべてのキーの数になるため、ブルートフォースソリューションを使用することはほとんど不可能です。したがって、通常、単語周波数分析を使用します。

道具

単語周波数分析と亀裂ツール

[概要]

例として、次の関数e(x)=(5x+8)mod26を紹介します。暗号化された文字列はアフィン暗号です。ここでは、エンコーディングシステムとしてアルファベットの26文字を直接使用します

プレーンテキストAffinecipherx055813428157417y=5x+8833333487328184883432893ymod268772221218222517215暗号テキストIhhwvcswfrcp

復号化プロセスの場合、通常の復号化装置にはaとbがあります。原理部分の対応する説明によれば、A -1が21であるため、その復号化関数はD(x)=21(x -8)(mod26)であり、復号化は次のとおりであると計算できます。

ciphertext ihhwvcswfrcpy87722121822517215x=21(y-8)0-21-21294273-126210294-63189-126147xmod26055813428157417 plaintext efsiphe shows assitiphe show show show show shove exhingは

割れた

まず、アフィンパスワードで取得した暗号文は、2つの異なる文字で異なる必要があるため、最も一般的な特性も備えていることがわかります。暗号文の長さが十分に長い場合、周波数分析方法を使用して解決できます。

第二に、パスワードを攻撃する方法を検討することができます。 a=1の場合、アフィン暗号化はシーザー暗号化であることがわかります。一般的に言えば、アフィンパスワードを使用する場合、文字セットはすべてアルファベットを使用し、通常は26文字しか使用しておらず、合計26と26の相互に排他的な数字があります。

ϕ(26)=ϕ(2)×ϕ(13)=12 bのオフセットの可能性が計算され、可能な総キースペースサイズは

12×26=312一般的に言えば、このタイプのパスワードについては、平易なテキストを知っている場合にのみ攻撃する必要があります。以下は簡単な分析です。

このパスワードは、2つのパラメーターによって制御されます。それらのいずれかを知っていれば、他のパラメーターを簡単に迅速に列挙して答えを得ることができます。

ただし、ここで26文字であると仮定して、使用されている文字セットが既に使用されていることをすでに知っていると仮定します。別の復号化の方法があり、復号化するために2つの暗号化された文字Y1とY2を知る必要があります。それから私たちはまだ知ることができます

y1=(ax1+b)(mod26)y2=(ax2+b)(mod26)2つの方程式を減算すると、取得できます

y1 -y2=a(x1 -x2)(mod26)ここでy1、y2が知られています。暗号文に対応する2つの異なる文字x1とx2がわかっている場合、aとbを簡単に取得できます。

次のプログラムは、オペレーティングマシンのデスクトップ/ツール/twctf2016-super_express/directoryに保存されています

ここでは、例としてTWCTF 2016のsuper_expressを紹介します。簡単に与えられたソースコードをご覧ください

sysをインポートします

key='****検閲****************

flag='twctf {******検閲*********}'

Len(key)%2==1:の場合

印刷( 'キー長エラー')

sys.exit(1)

n=len(key)/2

暗号化=''

flag:のcの場合

c=ord(c)

a、b in zip(key [0:n]、key [n:2*n]):の場合

c=(ord(a) * c + ord(b))%251

暗号化+='%02x'%c

暗号化された印刷

フラグ内の各文字はn回暗号化されていますが、慎重に分析すると、それが見つかることがわかります。

C1=A1C+B1C2=A2C1+B2=A1A2C+A2B1C+B2=KC+D 2番目の行の導出によると、CNは実際には同じ形式であり、CN=XC+Yと見なされる可能性があります。

さらに、暗号テキストもタイトルに記載されており、暗号テキストのコンテンツは次のとおりです。

805eed80CBBCCB94C36413275780EC94A857DFEC8DA8CA94A8C313A8CCF9

また、いくつかの暗号文に対応するプレーンテキストでは、既知のプレーンテキスト攻撃方法を使用して攻撃することは簡単です。次のようにコードを使用します。ciphertextをテキストファイルとして保存し、暗号化された変更に変更します。暗号化されたディレクトリで次のコードを実行します

gmpyをインポートします

key='****検閲****************

flag='twctf {******検閲*********}'

f=open( 'necrypted'、 'r')

data=f.read()。ストリップ( '\ n')

暗号化=[int(data [i3360i + 2]、16)for i in range(0、len(data)、2)]

plaindelta=ord(flag [1]) - ord(flag [0])

cipherdalte=暗号化[1] - 暗号化[0]

a=gmpy.invert(plaindelta、251) * cipherdalte%251

b=(暗号化[0] -a * ord(flag [0]))%251

a_inv=gmpy.invert(a、251)

結果=''

暗号化:のCの場合

結果+=chr((c -b) * a_inv%251)

印刷結果

結果は次のとおりです(ファイルが配置されているディレクトリを右クリックし、ここから端子を開いて現在のディレクトリの端末を開き、次のように復号化プログラムを実行します)

シェル

twctf2016-super_express git:(マスター)python exploit.py

twctf {faster_than_shinkansen!}

多表現暗号化

このセクションの研究により、いくつかの一般的な暗号化方法と亀裂方法を学ぶことができます

原理

マルチテーブル置換暗号化の場合、暗号化された文字は元の周波数をほとんど維持しなくなるため、一般的にアルゴリズムを見つけることで対応する弱点を割ることができます。

ツール

PlayFairパスワード(PlayFair CipherまたはPlayFair Square)は、交換用パスワードです。 1854年にチャールズホイートストーンによって発明されました。基本的なアルゴリズムは次のとおりです。

英語の文字の文字列を選択し、繰り返される文字を削除し、残りの文字を5×5マトリックスに1つずつ追加し、A-Zの順に残りの英語の文字から残りのスペースを追加します。 qを削除するか、iとjを同じ単語として扱うことに注意してください。プレーンテキストを分割して、2つのグループに暗号化されます。グループ内の文字が同じ場合、グループの最初の文字にx(またはq)を追加して再編成します。 1つの単語が残っている場合は、Xを追加します。各グループに、マトリックス内の2つの文字がどこにあるかを確認します。 2文字に異なる行と列がある場合、マトリックス内の他の2文字を見つけます(最初の文字は行が優先されます)。これにより、これらの4文字は長方形の四隅になります。 2文字が並んでいる場合は、2文字の右に文字を持ちます(手紙が右端にある場合は、左端に手紙を取ります)。 2文字が同じ列にある場合は、2文字の下の文字を撮ります(文字が下部にある場合は、上記の文字を取ります)。新しく見つかった2文字は、元の2文字の暗号化の結果です。

鍵としてPlayFairの例を取ります、

P l a y f

I R e x m

b c d g h

K n o q s

T u v w z

暗号化されるメッセージは、木の切り株に金を隠すことです

こんにちは

取得します

bm od zb xd na be ku dm ui xm mo uv if if

原理

CAP4

ツール

Polybiusパスワードは、チェスボードパスワードとも呼ばれます。通常、特定のプレーンテキストで数字の組み合わせに暗号化され、一般的に使用されるパスワードリスト

123451ABCDE2FGHI/JK3LMNOP4QRSTU5VWXYZたとえば、単純なテキストこんにちは、暗号化後、23 15 31 31 34です。

別のパスワードリスト

adfgxabtalpddhozkfqfvsnggjcuxxmrewyここでの文字の順序は破壊されていることに注意してください。

d f g xの起源:

1918年、第一次世界大戦が終了しようとしたとき、フランス軍はドイツの電報を傍受し、電報のすべての単語は5文字のa、d、f、g、xから綴られたため、ADFGXパスワードと呼ばれました。 ADFGXパスワードは、1918年3月にドイツのフリッツネベル大佐によって発明されました。これは、Polybiusパスワードを組み合わせてパスワードを置き換えるデュアル暗号化スキームです。

たとえば、こんにちは、このテーブルの暗号化を使用することはDD XF AG DFです。

Vigenere Virginiaパスワード

Cryptool

原理

亀裂

バージニアパスワード(Vigenere)は、シーザーパスワードを使用してパスワードアルファベットを形成する暗号化アルゴリズムです。これは、マルチテーブルパスワードの単純な形式です。

维吉尼亚表格

これが例です

プレーンテキスト:グレートウォールに来てください

キー:暗号

まず、キーを埋めて、その長さがプレーンテキストの長さと同じになるようにします。

プレーンテキストComegreatwall Key Cryptoc、その後、テーブルを検索して暗号テキストを取得します

维吉尼亚加密

プレーンテキスト:グレートウォールに来てください

キー:暗号

パスワード:efkt zferrltzn

ツール

バージニア州のパスワードを含むすべてのマルチテーブルパスワードの解読は、文字頻度に基づいていますが、直接周波数分析は適用されません。これは、バージニア州のパスワードでは、文字が異なる暗号文に暗号化できるため、ここでは簡単な頻度分析が役に立たないためです。

バージニア州のパスワードを解読するための鍵は、そのキーがループで繰り返されることです。キーの長さがわかっている場合、暗号文は織り交ぜられたシーザーの暗号コードと見なすことができ、それぞれを個別に割ることができます。パスワードの長さについては、KassiskyテストとFriedmanテストを使用して取得できます。

Kassiskyの実験は、同じキー文字で暗号化される可能性があるため、暗号文に繰り返し表示される可能性があるという事実に基づいています。たとえば、プレーンテキストの異なる暗号は、キーABCDEFによって異なる暗号文に暗号化される場合があります。

キー:ABCDEF AB CDEFA BCD EFABCDEFABCD

プレーンテキスト:暗号は暗号化の略です

パスワード:csasxt it ukswt gqu gwyqvrkwaqjb

この時点で、プレーンテキストで繰り返される要素は、暗号テキストでは繰り返されません。ただし、キーが同じ場合、結果は(キーABCDを使用)になる可能性があります。

キー:ABCDAB CD ABCDA BCD ABCDABCD

プレーンテキスト:暗号は暗号化の略です

パスワード:CSASTP KV SIQUT GQU CSASTPIUAQJB

この時点で、Kassiskyテストは結果を生み出すことができます。この方法は、通常、より長い段落でより効果的です。通常、暗号文にはより繰り返しのセグメントがあります。次の暗号文を使用してキーの長さを解読できる場合:

パスワード:dyduxrmhtvdvnqdqnwduxrmhartjgwnqd

その中で、2つのdyduxrmhsの外観は18文字離れています。したがって、キーの長さは18の除数であると想定できます。つまり、長さは18、9、6、3、または2です。2つのNQDは20文字離れています。つまり、キーの長さは20、10、5、4、または2である必要があります。

より詳細なひび割れの原則に関しては、当面の間、あまり紹介することはありません。

nihilist

既知のキーPython Decrypts OnlineVigenèreCiphercap4未知のキーvigenèreciphercipher codebreakervigenereソルバーのPycipherライブラリ、十分ではありません。

原理

ヒル

ニヒリストのパスワードは、キーワードパスワードとしても知られています。例としてキーワードHelloWorldを使用してください。

まず、キーを使用してボードマトリックスを構築します(Polybiusパスワードと同様) - 新しい5×5マトリックスを作成します - 繰り返されることなくマトリックスに文字を順番に入力します - 残りをアルファベット順に埋める - 文字iとjは同等です

123451HELOW2RDABC3FGI/JKM4NPQST5UVXYZ暗号化プロセスリファレンスマトリックスM:

A -M [2,3] -23

T -M [4,5] -45

復号化プロセス用

参照マトリックスMを復号化する:

23 -m [2,3] -a

45 -m [4,5] -t

ciphertextの特性は次のとおりであることがわかります

純粋な数字には、偶数の偶発的な長さの1から5。

原理

3

ツール

のみが含まれています。ヒルパスワード(丘)は、アルファベット内の各文字の順序を対応する数字として使用します。 26.暗号化として使用されるマトリックス(つまり、キー)はZn26Z26Nでは可逆的でなければならないことに注意してください。そうしないと、デコードすることは不可能です。マトリックスの決定要因と26の共重力のみが可逆的です。これが例です

プレーンテキスト:行為

明の文化をマトリックスに入れてください。

⎡⎢⎣0219⎤⎥⎦[0219]キーは次のとおりです。

⎡⎢⎣6241131610201715⎤⎥⎦[6241131610201715]暗号化プロセスは次のとおりです。

⎡⎢⎣6241131610201715⎤⎥⎦⎡⎢⎣0219⎤⎥⎦α672222319⎤⎥⎦α15147⎤⎥⎦⎥⎦MOD26[6241131610201715] [0219]¹[67222319]するまった

パスワード:POH

cap4cryptool 010-1010ここでは、ISCC 2015 Base Decrypt 150を例として紹介します。タイトルはです

パスワード: