web-dev-qa-db-ja.com

巨大なテキストファイルでパスワードを見つけるのは簡単ですか。

私のパスワードはPASSWORD1 10MBの乱雑なテキストファイルがあります。パスワードをテキストの2つの部分(>と<の間)で非表示にして、自分で見つけられるようにしています。次に、2つのパーツを組み合わせ、1つをキーボードで追加します。セキュリティの専門家がそれを見つけるのは簡単ですか?

Ä)e÷>Word<Æ­iW+¯S¥\«…%‹&Ìâœê–f0ãídá¾Ûùvÿ²
åŒëР8ïÙtFJÍÕ9"Å¡”HŸuîP‚†ÃLjaãæôZÚ4ÊGhsg&87&
ᮊmŲ„Ç“wcD~MÚ««B­qeBY>PASS<ÒJÕþ3c§Jhew

したがって、2つのパーツを取得し、それらを配置する順序を確認して、1、PASSWORD1を追加できます。 10MBのファイルに30文字の長さのパスワードを隠すことの安全性。誰かがそれを理解できますか?ブルートフォースクラックできますか?

私は例を追加します、私はヒントを与えません、パスワードは何ですか?

rV\}c¸š;íâN_qy£ÆŠû]c½ìkŒCKg{ÅS¬#ˆ!“Iè§éÛJÏówgÓˆ†ü¤ªÔ#
¡<çX=áVøì4}©,5ÇÜëŸMž" ìɺQZl’~?ùÓ“lÙ+³zyä¸Ê¯Z×LË­UÃì²Rÿ•
Ï.väÐõG6¼S'ÿ{JZ/ûrŒÇ,æÁ|ŠhþqQ×^Á¼rIn€ýtUµûH›ï•³Õ{YJÒØPÕ{
7ušÆ“ð"$‡ÆnZhµ©TÿL@MÖ¤)¯"Œ×¹ &Ыˆ.ÛÖõsªsoäÜh9É"1Mw˜ÚV
xÁeÇr‘"¯J§’+§I¿câ§n(ú¥!Ɖã•gr`rÅE[•7Z^<„íl÷æ¶"¬s®ûBõ*|
E{3áÛØÓU—%ÀÂùÉhs5IDWá@ûÀSGâœ9u-Êwª(BÜÅ3mâ̛YÑ á~N‘~¥¼ªž(
DÀ¯¿æ'ãV˜F¦ÝjBî\{`nÂFhUêÖc›B¿Æ¿O òl*£HÒmQ&#÷‰1¸?ŸÇ ¯óà
1ur4sÚø±–îuÛ´n*Oã](¿™e/ì)b¤ëZòW%Ë@uf„á1xã?VTe*ã»]µªëÑ&d
<Kk³-õ®+П5ÃmaŸ2s\Ö©þAxllÖÚõj[kñ;6ÊT‚ΔnŒ!e }è[ê•ŒÒSÖ
yÓ'Ë0îè/õTjfØ,úÍ„•u?NTÅG'Ðt!Xp‚¸ú“9áAÝ»»Ø{ ›Ç¬T[ѺmM¡ƒ²ÿV
ÈÉsÅLÀ©ä¢I_’©>ÔÒT·žÇüyúÀBå½Õ¾÷é'Í¥’¡|¼ªú%²9° ŒU¿Uzè¯ÑÔÕ
¶œUÉÅësl]úÃl^ßNž÷éwÙì('ä‡/!yGF4‘”â“Z†^MfÿhYç&çhåxŠ}€X
´ˆøHYKå:żf,Ò¤%uí;óÌ?®ÁùE%ÄãDp.Edñ†ÂXÙiÚŒÒ)ГKƒp;ﲋ6f
qiª{@3;ïØýnN¶î¼SkÒŸ‡‹£92’K•˜ûÚ‹$ü²t³â‡zðŠ‰ev[Òòìϼºˆ
gT÷Ÿè»A*É무C£VšØ·¹'vRôûì7ZgÀ`{){Þ‡mËŽ¨Ä!*|ÔŒSlÅ´'áãÀì.
ã’S·ÔüE»q4Ô#ÜòëÛFhì˜9À\­àÄhé¡êhr.‡AJ;a3ørJJPÀ]½Ø²ýäUXnu

私は賢くなろうとしているのではなく、専門家がそれを見つける方法を理解したいだけです。お時間をありがとうございました!

大まかな数字は誰にも教えられないと思います。

7
Peter

暗号解読者はおそらくこれを手作業で行うでしょう。

  • これはテキストファイルです。
  • すべての印刷可能な文字。
  • 頻度分析は2 * '<'2 * '>'を示します。これはすべての平文に当てはまりますが、他のすべての文字頻度は変化します。これはおそらく何か興味深いことが起こっていることを意味します。

私はあなたのパスワードスキームを理解するのに1時間もかからないと思います。複数のテキストファイルがある場合は、大幅に速くなります。

15
lynks

>と<の間なので、自分で見つけることができます

まあ、それだけです。 「隠蔽方法」が何であれ、それを見つける方法を覚えておく必要があります。したがって、パスワードは、最終的にキーボードで入力する一連の文字ではありません。あなたの本当のパスワードは、あなたが頭の中で覚えている「秘密の慣習」であり、メソッドです: 「>」と「<」で囲まれた2つの文字列を見つけ、それらを連結し、「1」を追加します。攻撃者が行う必要があるのは、その方法を見つけることです。

そのような方法はどの程度秘密にできるでしょうか?まあ、それほどではありません。まず、インターネットで公開しました。第二に、あなたはそれを定期的に適用し、あなたのopen-the-file-search-for-'>'は shoulder surfers に対して非常によく見えます。特に、パスワードの要素はプレーンビューで表示されます。最後に、あなたの隠蔽方法はバイアスを導入します:ランダムなバイトでいっぱいの10 MBファイルでは、平均で各バイト値が約40千回必要です(256の可能なバイト値があるため) );ただし、メソッドを明確にするために、ファイルからすべての '>'を削除する必要があります。ただし、パスワードの2つの半分をマークし続ける2つを除きます(そうしないと、rightパスワードの要素)。攻撃者は単純に、各バイト値がファイルに出現する回数を数えます(その意味のない名前はfrequency analysis);彼は、各バイト値が(予想どおり)約40000回出現することを発見しますが、 '>'と '<'はそれぞれ2回しか出現しません。これらの2バイトの値が「特別」であり、パスワードの非表示場所に関連付けられていることを、彼は問題なく理解できます...

パスワードがどれだけ秘密であるかを知らないことは、すでに大きな問題です。セキュリティ分析のほとんどは、物事を数値化することに関するものです。しかし、あなたの場合、あなたのパスワードはまったく秘密ではないと定性的に述べることができます。

12
Thomas Pornin

あなたが持っている弱点は、周波数分析に関連しています。あなたは10,485,760バイトを持っています、そしてこれは8ビットのグリフのように見えるので、それらは与えられた文字の平均40,960のインスタンスであると期待するでしょう。

10mbとその区切り文字が与えられた場合、これが私の周波数分析です。

    (000): 41332
    (001): 41363
    (002): 41272
    (003): 41180
    (004): 41416
    (005): 41357
    (006): 41263
    (007): 41224
    (008): 41233
    (009): 41427
    (010): 41538
    (011): 41179
    (012): 40937
(013): 41020
    (014): 41294
    (015): 41406
    (016): 41410
    (017): 41312
    (018): 40820
    (019): 41534
    (020): 40948
    (021): 41375
    (022): 41410
    (023): 41616
    (024): 41239
    (025): 40966
    (026): 41097
    (027): 41114
    (028): 41554
    (029): 41097
    (030): 41037
    (031): 41123
    (032): 41139
!   (033): 41184
"   (034): 41348
#   (035): 41328
$   (036): 41330
%   (037): 41653
&   (038): 41415
'   (039): 41253
(   (040): 41223
)   (041): 41119
*   (042): 41355
+   (043): 41439
,   (044): 41047
-   (045): 41169
.   (046): 41441
/   (047): 40835
0   (048): 41377
1   (049): 41607
2   (050): 41185
3   (051): 41044
4   (052): 41223
5   (053): 41399
6   (054): 41020
7   (055): 41276
8   (056): 41278
9   (057): 41072
:   (058): 40885
;   (059): 41354
<   (060): 2
=   (061): 41513
>   (062): 2
?   (063): 41168
@   (064): 41226
A   (065): 41236
B   (066): 40838
C   (067): 41400
D   (068): 41560
E   (069): 41387
F   (070): 41329
G   (071): 41131
H   (072): 41295
I   (073): 41371
J   (074): 41565
K   (075): 41204
L   (076): 41512
M   (077): 41517
N   (078): 41819
O   (079): 41302
P   (080): 41128
Q   (081): 41258
R   (082): 41166
S   (083): 41002
T   (084): 41166
U   (085): 40740
V   (086): 41226
W   (087): 41483
X   (088): 41554
Y   (089): 41376
Z   (090): 41283
[   (091): 41404
\   (092): 41154
]   (093): 41547
^   (094): 41092
_   (095): 41145
`   (096): 41284
a   (097): 41440
b   (098): 41397
c   (099): 41729
d   (100): 41207
e   (101): 41492
f   (102): 40711
g   (103): 40949
h   (104): 41336
i   (105): 41464
j   (106): 41441
k   (107): 41375
l   (108): 41017
m   (109): 41080
n   (110): 41041
o   (111): 41113
p   (112): 41347
q   (113): 41003
r   (114): 41083
s   (115): 41719
t   (116): 41459
u   (117): 41338
v   (118): 41014
w   (119): 41035
x   (120): 41566
y   (121): 41246
z   (122): 41426
{   (123): 41132
|   (124): 41368
}   (125): 41431
~   (126): 41177
    (127): 41429
Ä   (128): 41449
Å   (129): 41384
Ç   (130): 41041
É   (131): 41363
Ñ   (132): 41438
Ö   (133): 41263
Ü   (134): 41240
á   (135): 40954
à   (136): 41169
â   (137): 41143
ä   (138): 41461
ã   (139): 41320
å   (140): 41336
ç   (141): 41353
é   (142): 41319
è   (143): 41419
ê   (144): 41430
ë   (145): 41632
í   (146): 41265
ì   (147): 41613
î   (148): 41197
ï   (149): 41418
ñ   (150): 41477
ó   (151): 41341
ò   (152): 40975
ô   (153): 40873
ö   (154): 41295
õ   (155): 41432
ú   (156): 41112
ù   (157): 41749
û   (158): 40802
ü   (159): 41439
†   (160): 41297
°   (161): 41003
¢   (162): 41062
£   (163): 41188
§   (164): 41579
•   (165): 41333
¶   (166): 41430
ß   (167): 41130
®   (168): 41405
©   (169): 40966
™   (170): 41260
´   (171): 41392
¨   (172): 41353
≠   (173): 41433
Æ   (174): 41548
Ø   (175): 41541
∞   (176): 40993
±   (177): 41166
≤   (178): 41786
≥   (179): 41179
¥   (180): 41178
µ   (181): 41251
∂   (182): 41261
∑   (183): 40697
∏   (184): 41346
π   (185): 41587
∫   (186): 41109
ª   (187): 41323
º   (188): 41517
Ω   (189): 41382
æ   (190): 41203
ø   (191): 41117
¿   (192): 41184
¡   (193): 41223
¬   (194): 41115
√   (195): 41029
ƒ   (196): 41640
≈   (197): 41496
∆   (198): 41551
«   (199): 41577
»   (200): 41391
…   (201): 41080
    (202): 40931
À   (203): 41386
à  (204): 40966
Õ   (205): 41638
Œ   (206): 41309
œ   (207): 41443
–   (208): 41417
—   (209): 41309
“   (210): 41242
”   (211): 41030
‘   (212): 41526
’   (213): 41225
÷   (214): 41410
◊   (215): 41262
ÿ   (216): 41181
Ÿ   (217): 41443
⁄   (218): 41013
€   (219): 41743
‹   (220): 41436
›   (221): 40906
fi   (222): 40784
fl   (223): 41082
‡   (224): 41470
·   (225): 41368
‚   (226): 41204
„   (227): 41648
‰   (228): 41050
   (229): 41504
Ê   (230): 41010
Á   (231): 41477
Ë   (232): 41477
È   (233): 41510
Í   (234): 41383
Î   (235): 41544
Ï   (236): 41505
Ì   (237): 41451
Ó   (238): 41159
Ô   (239): 41469
   (240): 41191
Ò   (241): 41305
Ú   (242): 41349
Û   (243): 40778
Ù   (244): 41280
ı   (245): 41400
ˆ   (246): 41496
˜   (247): 41219
¯   (248): 41188
˘   (249): 40921
˙   (250): 41230
˚   (251): 41245
¸   (252): 41175
˝   (253): 41288
˛   (254): 41495
ˇ   (255): 41249
6
Jeff Ferland

このようなことはしないでください。それは車輪を再発明し、それを三角形にしています。最初に、誰かがスキームを理解してそれを破るのは簡単です。次に、彼らが本当に怠惰であっても、かなり全体のエントロピーと比較すると、ファイル全体でランダムに試すことができる可能性は非常に限られています。短いパスワード。 Keepassのような暗号化キーストアを使用すると、パスワードが1つのマスターパスワードで暗号化され、記憶しやすくなります。

5
AJ Henderson

私はこのスキームに疑いの最大の利益を与えるつもりです。これが私の考えですが、一番下に結論があります:

本当にランダムに選択された、10,000,000個の7ビット文字を含むファイルがあります。つまり、平均して128文字ごとにすべての文字が表示されます。このサイズを以下のブロックと呼びます。

また、「N番目のブロックの開始後の 'Q'の後に「Y番目の '>」で開始し、10番目の文字で終了する」という行に沿ってキーを指定すると仮定します。覚えやすいでしょう。つまり、パスワードは実際にはランダムに決定され、最初は不明です。このようにランダムに選択された10文字のパスワードは、実際にはかなり強力です。それは70ビットのランダム性です。

最初の問題は、128文字のブロックごとに、特定の文字がそのブロックに表示されない可能性が約36%あることです。これは、追加のブロックを追加すると増加するため、「Q」が2つのブロックに連続して表示されない確率は約13%であり、「Q」が10つのブロックに表示されない確率は0.003%です。行。つまり、10個のブロックの27351セットのうち1つだけに「Q」がありません。しかし、私たちはたくさんのデータを持っています!このファイルには78125個のブロックがあるため、平均して、10 MBファイルに「Q」のない3つのそのような10ブロックの領域が見つかると予想されます。あなたが大きな数を扱っているとき、物事は奇妙になります。

これは、N番目のブロックの開始後の最初のQを見つけるためにかなりの方法を検索する必要がある場合があることを意味します。可能性は低いですが、これまで見てきたように、巨大なファイルには3つの場所があり、およそ1 KBのテキストを(手動で)1つの「Q」を検索する必要があります。最初のQだけではなくN番目の「>」が必要だと考えると、状況はすぐに複雑になります。 Qについて1 KBを検索し、最初の「>」を見つけるためにさらに1 KBを検索する必要がある場合があります。

これは、実際には、特定の文字のペアが必要な順序と番号でそこにあることを保証できないため、パスワードがファイルの最後の150 KBに含まれないことがわかっていることを意味します。

また、キーサイズを計算できることも意味します。ファイルでパスワードを見つけるには、開始ブロック、最初の文字、先にカウントする2番目の文字の数、2番目の文字、およびストップ文字の5つの情報が必要です。

これを一連の数字と文字として指定できます:[ 7685, 'Q', 6, '>' ]は、7685番目のブロックの「Q」の後にある「6番目の「>」から読み取りを開始する」を意味します。

開始点として選択できるおおよそ78000ブロックがあるので、その値には16ビットから17ビットのランダム性があります。 0から78000までの任意の数値を指定できます。文字の場合、2つの位置に128個の選択肢があり、それぞれ7ビットのランダム性、または合計14ビットです。 2番目の数字はトリッキーです。各文字を見つけるために少なくとも1 KBをカウントすることが合理的に期待できるため、ここでは64未満の値を選択することがおそらく安全です。これは、ランダム性のわず​​か6ビットです。つまり、総計では、キーには(16桁+ 14 + 6)ビットのランダム性、つまり36桁のビットがあります。長さを変える場合は、さらに数ビットを追加できます。ささいなことではありませんが、典型的な現代のホームコンピューターは、数日ですべての可能な組み合わせを実行できます。

しかし、他の人が指摘しているように、これはすべて大部分は無関係です。ファイル自体には、10,000,000の可能な開始点しかない。つまり、キースペースは実際にはキー自体よりも大幅に小さく、実際には23ビット程度のランダム性しかありません。これが実際に意味することは、ファイル内の各開始位置は16,000の異なるキーで参照でき、実際には、開始位置の記憶はそのキー構造の記憶よりもはるかに簡単です。小さいブロックを使用すると、可能な組み合わせはさらに少なくなります。

結論:ええ、他の人が言ったように、これは悪い考えです。既知の強力なパスワードを使用して、既知の強力な暗号化プログラムを使用します。この複雑なスキームよりもはるかに強力な保護を提供する、覚えやすいパスワードを思い付くことができ、実証済みのテスト済み暗号化アルゴリズムのメリットを享受できます。

3
Devin R

ブルートフォース攻撃はそのように機能しません。推測されるパスワードのワードリストが提供され、ブルートフォーサーツール/ソフトウェア(ジョンライパー)が1つずつ順番に回転して正しいものが見つかる、辞書攻撃を意味していると思います。乱雑なテキストでは、乱雑なテキストが多すぎて読み込めない可能性があるため、パスワード解読ツールでアルファベットを見つける方法はわかりません。ただし、通常、テキストを解析したり、バイナリファイルデータをテキストに抽出したりするテキストパーサーがあります。あなたの質問への答えはYESです。

代替案私が提案する安全な代替案は、SHA-256以上などの強力な暗号化アルゴリズムを使用して機密情報を常に保存することです。

2
user20996

willがメソッドに対して代わりに使用されるという実際の攻撃の分析ではなく、総当たりの分析を主張しているように見えるので、これは(おそらく多少欠陥のある)エンベロープの裏側です。総当たりの計算。 Kerckhoffsの原理 に従って、攻撃者はあなたの方法を知っているが、その方法が依存するあなたの秘密のどれも知らないと想定します。

10 MBのファイルがあります。誰かが10,485,760バイトと言った。私はそれで行きます。したがって、パスワードの2つの異なる部分に対して1,000万個の開始位置がある場合、109,951,162,777,600の可能な開始位置のペアが得られるように平方します。これで、30文字のパスワードが設定されたので、最初のセグメントの可能な長さごとに30を掛けます。

したがって、3,298,534,883,328,000のパスワードを試す必要があります。

2012年に戻った単なる趣味家は、パスワードを解読するための 1秒間に350億のパスワード推測 レートを達成しました。お金、犯罪組織、または政府組織のためにこれを行う専用のハッカーは、確かにより速い速度を達成できます。では、ファイルからパスワードを推測するのにどのくらい時間がかかりますか?

3,298,534,883,328,000/350,000,000,000 = 9424秒、つまり3時間弱で、試行錯誤をしているわけではない人からのものです。

そうです、そうしないでください。

「でも、覚えている部分もあります!」と抗議するかもしれません。

さて、あなたの記憶された部分の例は「1」または「123test」だったので、私はそれがクラッカー辞書または変換ルールの上位10,000個程度のパスワードに表示されると思います。それはおそらく多くの困難を追加しません。

そして、あなたはファイルのブルートフォースの組み合わせを誰も実行しないという私たちの抗議を無視することを選択したので、ダムを使用するのではなく、数秒でそれを見つける「スマート」な方法で攻撃します力ずくの方法、それから私は同様にあなたの記憶された部分が追加するかもしれないセキュリティの断片を無視することを選びます。

1
Ben

独自の暗号化スキームを作成しようとしないでください。最も研究されたアルゴリズムのいくつかは失敗しました。あなたの暗号化方法は周波数分析に失敗します。あなたが言ったことに基づいて:あなたはあなたのパスワードを2つの部分に分けます。暗号化された暗号は、4回出現するすべての文字を分析し、そこから総当たりする必要があります。たとえば、「¬」文字が4回出現することがわかります。私はそれを破るより良い方法があると確信しています。パスワードをより多くの部分に分割したとしても、それは頻度分析を少しだけ増やすことを意味するだけです。ここで何を達成しようとしているのか理解できません。

1
marcwho