1つの間違いについて

たぶん私は間違っているかもしれませんが、いくつかのエラーはそれらが発生したプロジェクトと同じくらい興味深いものであるという意見を固く守ります。 長い間参加したプロジェクトについてお話したいと思います。 暗号化ツールの正しい使用が、暗号化の残りの部分から意味を奪う脆弱性につながったように思われるという事実。



すぐに私は、自分自身を暗号化の分野の資格のある専門家とは見なしていないと言います。 暗号化アルゴリズムを扱っていたのは、状況によって他に選択肢がなかったときです。 もちろん、この問題にもっと精通した人がこれらの作品に携わった方が良いと思いますが、たまたまそれらに対処しなければならなかったのです。 いずれにせよ、私の話が面白いものになることを願っています。



この話は90年代半ばに起こりました。 私はKAIの4年生で、 PM学科でパートタイムで働いていました。 私は研究所の数人の従業員と一緒に、地元のろうそく工場の1つについてFoxBaseで何かを書いたことを覚えています。 この部門での仕事は、私が常に目を光らせていたという事実に貢献し、ある瞬間、暗号を扱うハードウェアの開発に関連する新しいプロジェクトに参加するように申し出られました。 もちろん、私は同意しました。



もちろん、すべてがそれほど単純ではありませんでした。
私は仕事を与えられました。 彼らは開発されたデバイスについて詳細に話し、今後の展示会のためにその説明を準備するように頼みました。 研究所での仕事の1晩(私はもちろん自宅にコンピューターを持っていませんでした)、アセンブラーを挿入したTurbo Pascalで、 EGAビデオ効果、Line and Fillで描かれたテキストと写真の束で「プレゼンテーション」を準備しました。 ami。 雇用主になる可能性のある人は、私が示した勤勉さに少し驚いており、私の雇用の問題は前向きに解決されました。



私たちのグループは、資格のある暗号学者、電子技術者、プログラマーのペアで構成されていました。 私は、若い専門家として、 HALに従事していました。 特別なことは何もありません。C++と少しのx86アセンブリ。 その後、私たちはグループ全体として、 タタールスタン共和国の RCIで非常にうまく採用されました。



弊社製品の1つは次のとおりです(リムーバブルキー付きISAカード):







主な目的であるガンマストリーミング暗号化に加えて、高品質の擬似乱数ジェネレーターとしても使用できます。 このデバイスの主な機能は、ソフトウェアブックマークを使用してキーデータを傍受できないことでした。



すべてが次のように接続されました。







キーの内部には、通常のROMキーがありました。







ROMから特定のアドレスで暗号化を実行すると、16バイトのキーがデバイスに(1行で)読み込まれ、その後、このキーとランダム同期送信に基づいて、暗号化に使用されるガンマが生成されました。 キー自体はPCに送信されませんでした。



行ごとではなく、バイトごとに(各バイトの選択を制御する)ROMからキーを選択し、あらゆる種類の順列を使用すると、より多くのキーを取得できるという考えを誰が持っていたかは覚えていません(私にとっては可能性があります)。 それは本当にひどい考えでした。 静かに、そしていつの間にか、ハードウェアとソフトウェアの複合体のアーキテクチャに穴が開いたため、キーのROM全体の内容をプログラムで読み取ることができました。



詳細
キーをバイトごとにダウンロードする機能を備えたROMの内容を取得するのは非常に簡単です。 たとえば、キーのアドレス空間の任意のバイトの値を決定するには、同じアドレスからダウンロードされた16バイトで構成されるキーを生成するだけで十分です。 次に、このキーで、事前に選択されたシーケンス(たとえば、ゼロのシーケンス)を暗号化する必要があります。



キーをダウンロードするこの方法では、可能なオプションが256個しかないため、暗号化結果テーブルを事前に作成できます。 この表から、キーがどの特定のバイトで構成されているかを簡単に判断できます。 同様に、ゆっくりですが確実に、ハードウェアキーの残りの内容をすべて読み取ることができます。



幸いなことに、この脆弱性は時間通りに気付き修正されましたが、いくつかのデバイスをやり直す必要がありました。



この短い記事では、読者に暗号に関する問題に対する軽薄な態度から警告したいと思います。 暗号化は潜行性であり、脆弱性は予想以上に簡単に発生する可能性があります。 ただし、この記事で行われているように、「非専門家」が暗号の使用を放棄することはお勧めしません。



上記のようなエラーの検出には、タスクに対する経験と最大限の注意のみが役立ちます。 そして、あなたがこの方向で仕事をしなければ、経験はどこからでももたらされます。




All Articles