1

パーマリンクでデータベースIDを難読化するために私がやろうとしていることは次のとおりです。

1) ID と長い秘密鍵のXOR

2)可逆的な方法で、XOR された整数のビットを少しスクランブル(回転、反転、反転) します。

3) Base 62は、結果の整数を、すべての英数字 (A-Za-z0-9) のシーケンスをスクランブルした独自の秘密でエンコードします。

Base 62 エンコーディングを Base 10 に変換するのはどれくらい難しいでしょうか?

また、プロセス全体をリバース エンジニアリングするのはどのくらい難しいですか? (明らかに、ソースまたはコンパイル済みコードのピークをとることはありません) 「XOR のみ」が基本的な分析の影響をかなり受けやすいことはわかっています。

編集:結果の長さは 8 ~ 9 文字を超えてはなりません。3DES と AES は非常に長い暗号化テキストを生成するようであり、URL では実際には使用できません。

結果の文字列は次のようになります。

In [2]: for i in range(1, 11):
    print code(i)
   ...:     
9fYgiSHq
MdKx0tZu
vjd0Dipm
6dDakK9x
Ph7DYBzp
sfRUFaRt
jkmg0hl
dBbX9nHk4
ifqBZwLW
WdaQE630

ご覧のとおり、1 は 2 のようには見えないため、これは ID の難読化にうまく機能しているようです。

4

2 に答える 2

2

攻撃者が入力をいじることができる場合、熟練した攻撃者がデータを「復号化」するのは簡単です。現代の暗号システムの重要な特性は、システムに欠けている「なだれ効果」です。基本的に、出力のすべてのビットが入力のすべてのビットに接続されていることを意味します。

システムの攻撃者が、たとえば、id = 1000 が出力 "AAAAAA" を生成し、id=1001 が "ABAAA" を生成し、id=1002 が "ACAAA" を生成することを確認できる場合、アルゴリズムは簡単に逆にすることができ、値は取得したキーの。


とはいえ、この質問はhttps://security.stackexchange.com/またはhttps://crypto.stackexchange.com/に適しています。

于 2013-02-22T15:10:02.837 に答える
2

独自の暗号化を開発しようとする人に対する標準的なアドバイスは、「しない」です。上級者向けのアドバイスは、Bruce Schneier のアマチュア暗号設計者へのメモを読んだ後は読まないことです。

ID を難読化する必要があるのはあなたが最初ではないので、すでに利用可能な方法があります。@CodesInChaos は上記の良い方法を提案しました。最初にそれを試して、ニーズを満たしているかどうかを確認してください。

于 2013-02-22T16:19:23.637 に答える