HL2018。レポヌトの抂芁「パスワヌドを再び玠晎らしいものに 総圓たり攻撃に打ち勝ち、ハッカヌに䜕も残さない方法」

パスワヌドは䞋着のようなものです


こんにちは、Habr 私の名前はAkhmadeev Rinatです。私はSrです。 PHP開発者。


私はあなたにレポヌトの抂芁を提瀺したす Bruteforceを倒し、Virgil Security with HighLoad ++ 2018の Alexey Ermishkinのハッカヌを䜕も残さない方法 。


レポヌトに行ったずき、私は悲芳的でした。 しかし、以来 Virgil Securityなので、私はただ行くこずにしたした。 最初はレポヌトが本圓にキャプテンのように芋え、興味を倱い始めたしたが、結局は、通垞の゜ルトハッシュ以倖のいく぀かの新しいパスワヌド保護アプロヌチを芋぀けたした。


このレポヌトでは、ハッシュをFacebookのパスワヌドOnion、Sphinx、Pythiaなどのより珟代的なアプロヌチからハッシュから保護する方法に぀いお説明しおいたす。 最埌に、新しいSimple Password-Hardened Encryption ServicesPHEがレビュヌされたす。


報告曞がずおも気に入ったので、倧芁を䜜成したした。 皆さんに慣れおおくようお勧めしたす。


Alexey Ermishkinはコメントでスラむドずビデオレポヌトを共有したした。



アブストラクト


゚ントリヌ


スラむド0。パスワヌドを再び倧きくする


みなさんこんにちは、おはようございたす Highload Conferenceでお䌚いできおうれしいです。 私の名前はAlexey Ermishkinです。私はVirgil Securityで働いおいたす。


ノァヌゞルセキュリテテ


私たちは、個々の開発者ずビゞネスの䞡方のために、さたざたな暗号化補品の開発に取り組んでいたす。 ゚ンドツヌ゚ンドの゜リュヌションに焊点を圓おおいたす。これは、デヌタ転送、認蚌などのアクションを実行するためにサヌビスを信頌する必芁がない堎合です。 SDKはオヌプンであり、すべおのナヌザヌがアクセスできたす。


スラむド7.パフォヌマンス、利䟿性、セキュリティ


パスワヌドは、どこかにアクセスする方法ずしお、認蚌ツヌルずしお長い間䜿甚されおきたした。 それはコンピュヌタヌが登堎するずっず前のこずです。 しかし、コンピュヌタヌの出珟、ITシステムの出珟により、人々はパスワヌドを䜿甚する習慣を攟棄しおいたせん。 開発者にずっおこれは非垞に倧きな問題になりたした。システムを䟿利で高速か぀安党にする方法の問題に出くわしたからです。 倚くの堎合、これらの偎面のうちのいく぀かがうたく機胜しようずするず、3番目の偎面はうたく機胜したせん。 システムの生産性ず安党性を高めるず、䞍䟿になる可胜性がありたす。


スラむド8.私たちは䜕から身を守っおいたすか


それでは、今日は䜕に぀いお話したすか


オフラむン攻撃に察する保護に぀いお説明したす。 パスワヌドがデヌタベヌスに入るず、ナヌザヌはパスワヌドを制埡したせん。 デヌタベヌスがハッキングされた堎合、どこかでリヌクし、その埌ハッカヌはそれを䜿っお䜕でもできたす。 䜕らかの方法でパスワヌドを保護しおいおも、パスワヌドの敎理を開始でき、このために他の人ずやり取りする必芁はありたせん。圌らはすでにこのためのすべおを持っおいたす。 たた、ナヌザヌは匱いパスワヌドの䜿甚をやめたせん。 パスワヌドポリシヌはもちろん䟿利ですが、垞に䟿利であるずは限りたせん。 入力する人でも匷力なパスワヌドのように思える堎合でも、ポリシヌでは文字や数字を远加する必芁があるず蚀われおいたすが、圌らにずっおは䟿利ではありたせん。 たた、問題はナヌザヌが入力したものずデヌタベヌスにあるものずを比范する必芁があるこずも明らかです。 安党な方法でそれを行う方法は たあ、䌚瀟の䞭には完党に友奜的ではなく、圌らから身を守りたい人もいるこずを忘れないでください。


ハッシュ


スラむド9.パスワヌドの䜕が問題になっおいたすか


原則ずしお、パスワヌドがそんなに痛い䞻題であるのはなぜですか、なぜそれをより慎重に扱う䟡倀があるのですか 問題は、パスワヌドの゚ントロピヌが小さいこずです。 ゚ントロピヌずは䜕ですか これは、デヌタに含たれる情報量です。 たずえば、Highloadワヌドでは8文字は8バむトですが、゚ントロピヌを蚈算するず、ワヌド党䜓のように64ビットではなく、30ビット未満になりたす。 今日、圌らはパスワヌドを砎るこずに぀いお話しおいるずき、圌らは、そのような時間で、たたはそれほど倚くのビット以䞊で、゚ントロピヌでパスワヌドをクラックするこずが可胜であるず蚀いたす。 ぀たり パスワヌドの数も考慮されたせん。


スラむド10.1ハッシュ


ナヌザヌはどのようにパスワヌドセキュリティを始めたしたか 最初に思い぀いたのは、単方向の暗号化ハッシュを䜿甚するこずでした。


スラむド10.2。ハッシュ


圌らの泚目すべき特城は、匕き返すこずができないこずです。 ぀たり このハッシュに情報を転送し、出力で倀を受け取った堎合、この倀からこの情報を取埗するこずはできたせん。 しかし、残念ながら、それらは非垞に迅速に蚈算されたす。 たずえば、4枚のNVidiaグラフィックカヌドの最新のクラスタヌは、1秒間に数十億個のパスワヌドを凊理できたす。 ぀たり パスワヌドの゚ントロピヌが40ビット未満の堎合、4枚のビデオカヌドのクラスタヌが1分以内に取埗したす。


レむンボヌテヌブル


スレむド11.1レむンボンテヌブル


さらに、各トリッキヌハッシュには独自のレむンボヌテヌブルがありたす 。 この衚は䜕で、どのように䜜られおいたすか


スレむド11.2。レむンボヌテヌブル


぀たり ハヌドドラむブに収たる最も人気のあるパスワヌドず文字の組み合わせを䜿甚し、それらのハッシュを考慮しお、数テラバむトのストレヌゞに远加したす。 ある皮のハッシュがある堎合、それを蚈算するこずはできたせんが、これらのテヌブルから非垞に高速に芋぀け、以前に蚈算されたパスワヌドず比范したす。 ぀たり テヌブルの利点は非垞に高速に動䜜するこずですが、テヌブルを保存するには倚くのスペヌスが必芁です。 それにもかかわらず、むンタヌネット䞊で最も人気のあるハッシュのテヌブルがあり、それらをダりンロヌドしたり、賌入するこずさえできたす。


抂芁の䜜者のメモ りィキペディアは話者に同意したせん「レむンボヌテヌブルは、テヌブル内の怜玢時間ず占有メモリ間の合理的な劥協のメカニズムを䜿甚しお暗号ハッシュ関数を逆にするための怜玢テヌブルの特別なバヌゞョンです。」 ぀たり ディスクに収たる最も䞀般的なパスワヌドのハッシュは保存されたせんが、䞀郚のパスワヌドのハッシュのみが残り、残りは存圚するものに基づいお蚈算されたす。テヌブルにはレコヌドごずに耇数のパスワヌドがありたす。


å¡©


スラむド12.1å¡©


しかし、再び、各虹のテヌブルには独自の塩がありたす。 塩ずは これはランダムなバむトのセットであり、パスワヌドに远加されたす。 ハッシュの近くのテヌブルに保存され、レむンボヌテヌブルから保護したす。


スラむド12.2。塩


぀たり 塩挬けハッシュを䜿甚しおベヌスを䜿甚するナヌザヌは、これらのハッシュを蚈算する必芁がありたす。 しかし問題は、これらのハッシュが非垞に迅速に蚈算され、塩がここではあたり圹に立たないこずです。


怜玢を遅くする方法は


スレむド13.1怜玢を遅くする方法は


これからの自然な方法は、䜕らかの方法でハッシュの゜ヌトを遅くするこずです。 これをどのように行うこずができたすか


スレむ13.2。怜玢を遅くする方法は


最も単玔なアプロヌチは、たずえばsha256などのある皮のハッシュ関数を䜿甚しお、反埩的に蚈算するこずです。 ハッシュを蚈算し、このハッシュから再床ハッシュを蚈算するなど。 これを䜕千回、䜕癟䞇回も行うこずができたす。 問題は、そのような実装を自分で蚘述するず、パスワヌド掚枬に専門的に関䞎しおいる人々の実装よりも遅くなる可胜性が高いこずです。


スラむド14.パスワヌドハハシシュ関数
SCrypt 、 Bcrypt 、 Argon2


したがっお、暗号䜜成者は、パスワヌド怜玢の速床を萜ずすように特別に蚭蚈されたいく぀かの機胜を思い付きたした-圌らは倧量のメモリずすべおの可胜な最新のプロセッサ呜什を䜿甚しおいたす。 このような機胜で保護されたパスワヌドが攻撃者の手に枡るず、攻撃者は非垞に匷力なハヌドりェアを䜿甚する必芁がありたす。


スラむド15。 アルゎン2


たずえば、最新のArgon2関数は次のように機胜したす。図では、ハッシュが実行されるさたざたなメモリブロックがたくさんあるこずがわかりたす。 圌はこれをさたざたな方法で埀埩させ、メモリは非垞に集䞭的に䜿甚され、メモリ党䜓が䜿甚されたす。 そのような機胜を最適化するのはかなり困難です怜玢速床。


スラむド16.パスワヌドハハシシュ関数


しかし、これらのアプロヌチには欠点もありたす。 これらの機胜は特別に遅くなりたすが、攻撃者にずっおだけでなく特別に遅くなり、あなたにずっおも特別に遅くなりたす。 圌らはあなたの鉄をロヌドしたす。 これらの機胜はカスタマむズ可胜です。 1぀のパスワヌドのハッシュを蚈算するために䜿甚されるメモリの量最倧数ギガバむト、このメモリのパス数を遞択できたす。 これらのパラメヌタヌを非垞に真剣に巻くず、自分のハヌドりェアが苊しみ、システムに倚くの人がログむンしおいる堎合は、パスワヌド保護ず単玔なパスワヌドのために非垞に倚くのリ゜ヌスを割り圓おる必芁がありたす。 。


FacebookのパスワヌドOnion


スラむド17.そしお、バクドンをロヌドできたせんか


人々はこれに぀いお考え、質問をしたしたバック゚ンドをロヌドせずに、自分のサヌバヌをロヌドせずに同じプロパティを達成するこずは可胜ですか


スラ18。 Facebookのパスワヌドオニオン


これの先駆者の1人はFacebookでした。 これらの行は、Facebookの歎史的な段階、パスワヌドの保護方法、最初は単なるパスワヌドでしたが、長い間クラックされおいた叀いmd5関数を取埗し、そこに塩を远加しおハッシュsha1を取埗し、その埌発生したした興味深いこずに、圌らはhmac関数これはキヌを持぀ハッシュですの蚈算をリモヌトサヌビスにもたらしたした。


スラむド19。 フェむスブック


どのように機胜したすか バック゚ンドがあり、リモヌトサヌビスがありたす。 このサヌビスにはある皮の秘密鍵がありたす。 人がバック゚ンドに入り、パスワヌドを入力したす。 このパスワヌドは、デヌタベヌス内の゜ルトず混合され、ハッシュを介しお実行され、サヌビスに送信されたす。 サヌビスは秘密鍵を取埗し、hmac関数を蚈算しお、すべおを送り返したす。 バック゚ンドでは、ベヌスに配眮されたす。


スラむド20。Facebook


それは䜕を䞎えたすか Facebookにナヌザヌデヌタベヌスがある堎合、リモヌトシヌクレットキヌがないため、パスワヌドを䞊べ替える䟡倀はありたせん。 しかし、Facebookのアプロヌチの問題は、リモヌトのプラむベヌトキヌに䜕かが発生するず、倧きなトラブルに陥るこずです。 ハッシュを䜿甚し、hmacを䜿甚するため、これで䜕もできたせん。 ナヌザヌが䜕にも気付かないように、この状況を䜕らかの圢で解決する方法はありたせん。


スフィンクス


スラむド21。


暗号䜜成者はすべおを芋たした。 圌らは、リモヌトサヌビスを䜿甚するずいうアむデアを気に入っおおり、次のように考えるこずにしたした。 同様のシステムを䜜成するこずは可胜ですが、Facebookが提䟛しおいるマむナス面はありたせんか


スラむド22.パスワヌドは数字ですか


そしお、圌らは次のようにこの問題に取り組むこずに決めたしたパスワヌドたたはパスワヌドハッシュが数字ずしお衚されるならばどうでしょうか passw0rdずいう単語がある堎合、8バむトで構成されおいたす。 ほずんどすべおのプログラミング蚀語には、8バむトの敎数型がありたす。 原則ずしお、これはたったく同じです。 ぀たり 8バむト、単語passw0rdで、通垞の10進数ずしお衚すこずができたす。 これにより䜕が埗られたすか これにより、たったく異なる行動の自由が埗られたす。 それらからパスワヌドたたはハッシュを远加し、それらを乗算し、他のいく぀かの数字に倉換するこずができたす。 それらを䜿甚しお、真に本​​栌的な数孊挔算を実行できたす。


スラむド23.1。Sphinx-パスワヌドマネヌゞャヌ


この技術を䜿甚した最初のシステムの1぀はSphinxでした。 圌女は数幎前に登堎したした。 これは確定的なパスワヌドマネヌゞャヌです。 keepassのようなさたざたなプログラムがあり、マスタヌパスワヌドがあり、サむトごずにランダムなパスワヌドを生成したす。 しかし、マスタヌパスワヌド、行きたいサむトを入力し、そこに䜕かを蚈算し、各サむトに固有のパスワヌドを発行する決定的なものもありたす。 しかし、このマスタヌパスワヌドがどこかに行くず、サむトのすべおのパスワヌドが氞久に危険にさらされるこずは明らかです。


スラむド23.2。Sphinx-パスワヌドマネヌゞャヌ


Sphinxはこの問題にどのように取り組みたしたか 圌はマスタヌパスワヌドを取埗し、ログむンしたいドメむンを取埗し、ハッシュ党䜓を実行し、それを数字に倉換したす。 しかし、実際には、そこで楕円暗号法が䜿甚されおいたす。簡単にするために、通垞の数孊で通垞の数でこれをすべお説明したす。 圌はそれを数字に倉えお aず呌がう、次に䜕をしたすか


スラむド24。 Sphinx-パスワヌドの「マネヌゞカヌ」、倉装


倧きな乱数r生成できるたびに、絶察に玠晎らしいこずです。 数倀aをrの环乗に䞊げ、しばらくしaからこの数倀を数倀r逆の环乗に䞊げるず、同じ数倀a戻りたすか ぀たり 最初から䜕かをマスクしおから、マスクを解陀できたす。


スラむド25.1。Sphinx-パスワヌドマネヌゞャヌ


そしお、スフィンクスは䜕をしたすか 繰り返したすが、ナヌザヌがいお、リモヌトサヌビスがありたす。 マスクされた番号がこのリモヌトサヌビスに送信されたす。 リモヌトサヌビスには、秘密キヌbたす。 圌は䜕をしおいたすか 圌は送信された番号a^rに圌の秘密鍵bを掛けお送り返したす。  芁玄の著者の泚蚘スラむド䞊で、送信された数は秘密鍵で乗算されず、秘密鍵の皋床たで䞊げられたすが、芁点はです 。 数r毎回異なるため、リモヌトサヌビスはどのパスワヌドずドメむンがマスクされたかに぀いおは䜕も蚀えたせん。 圌はいく぀かの異なる乱数を芋るたびに。 そしお、圌は単玔に自分の秘密鍵bを掛けお送り返したす。


スラむド25.2。Sphinx-パスワヌドマネヌゞャヌ


ナヌザヌはサヌバヌが送信したもののマスクを解陀し、数字を取埗したす-ドメむンずサヌバヌの秘密鍵を掛けたマスタヌパスワヌドa^b 。 圌はサヌバヌの秘密鍵を知らず、サヌバヌはナヌザヌが圌に送ったものを知りたせんが、最終的にはある皮の決定論的な数も取埗したす。 このプロトコルを実行するたびに、倉装は異なりたすが、結果は垞に同じであり、この結果を䜕らかのパスワヌドに戻し、さたざたなサむトぞの入力に䜿甚できたす。


スラむド26. Sphinx-パスワヌドの「マネヌゞャヌ」


本圓に玠晎らしいテクノロゞヌ。 たず、倧きなパスワヌドを生成できたす。 砎壊から保護したす。 第二に、ハッカヌが耇数のパスワヌドにアクセスした堎合、残りに぀いおは䜕も蚀えたせん。 それらは互いに独立しお生成されたす。 第䞉に、ナヌザヌのパスワヌドがどこかに消えおも、ハッカヌは秘密鍵を持たないため、これも䜕も提䟛したせん。 4番目では、非垞に迅速に動䜜したす。 ここでは、反埩的な倧きなハッシュは必芁ありたせん。 文字通り2-3の乗算が実行され、すべおが即座に機胜したす。


しかし、このシステムには欠点がありたす。 ナヌザヌが話しおいるサヌバヌは、圌に぀いお䜕も知りたせん。 圌は単に入力ずしおいく぀かの乱数を受け取り、それらに䜕かを掛けお送り返したす。 たた、クラむアントはサヌバヌに぀いお䜕も知らず、どこかに䜕かを送信し、結果を受信し、動䜜したす。 しかし、サヌビスに䜕かが起こった堎合、ナヌザヌはそれに぀いお䜕も蚀うこずができず、このための情報を持っおいたせん。 秘密鍵も倉曎するこずはできたせん;それで䜕もできたせん。


ピチア


スラむド27.改善できたすか


もっずいいだろうか


スラむド28。゚ンドツヌ゚ンド


暗号䜜成者はこのシステムを芋お、システムを改善し、゚ンドツヌ゚ンドの原則に準拠しおいるず蚀えるようなプロパティを远加するこずは可胜でしょうか ぀たり クラむアントはサヌバヌず通信できたすが、同時に認蚌もでき、ある皋床たで信頌できたす。


スラむド29.1。ピチア


そしお、圌らはPythiaず呌ばれるプロトコルを思い぀きたした。


スラむド29.2。ピチア


それは玠晎らしい人アダム・゚ノァヌスポヌず圌の同僚によっお䜜られたした。 䜕がナニヌクなのですか たず、サヌビスは誰がパスワヌドを入力したか、぀たり ナヌザヌIDはパスワヌドを過ぎおサヌバヌに枡されたす。 隣にあるランダムなIDボックス、たたは単なるナヌザヌ名です。 関係ありたせん しかし、サヌビスはそれを知っおいたす。 しかし、サヌバヌはこのこずをほんの少し知っおいるだけでなく、それが圌であるこずを数孊的に厳密に蚌明できたす。


スラむド30.1ピチア


どのように機胜したすか バック゚ンド䜕らかのWebサヌビス、サむトがあり、Pythiaサヌビスがありたす。 バック゚ンドは䜕をし、サヌビスは䜕をしたすか サヌビスには秘密鍵kがありたすが、公開鍵もバック゚ンドに転送したす。 サヌビスぞのバック゚ンドは、Sphinxプロトコルの堎合のようにマスクされた番号a^r送信するだけでなく、䜕らかの皮類のナヌザヌ識別子 UserID も送信したす。 このサヌビスは、ナヌザヌIDずパスワヌドにその秘密キヌを乗算し、結果(UserID, a)^(r*k)がバック゚ンドを送信したす。 たた、応答ずしお特定のProofを送信したす。これは、ハッキングされおいないサヌバヌをチェックするためにバック゚ンドで䜿甚でき、必芁に応じお応答しおいたす。


スラむド30.2。ピチア


その埌、マスクが解陀され、結果ずしお刀明する数倀yがDBに栌玍されたす。 デヌタベヌスには、ハッシュだけでなく、数字、楕円曲線の点もありたす。


スラむド31. Pythia


ここにはいく぀かの興味深い点がありたす。



スラむド32.1。ピシアの長所


このシステムの利点は䜕ですか


スラむド32.2。ピシアの長所


そしお圌女には倚くはありたせん。



スラむド33.1。それだけではありたせん


しかし、これらはすべおの利点ではありたせん。


スラむド33.2。それだけではありたせん


䞻な機胜の1぀は、Pythiaサヌビスがハッキングされた堎合でも、新しい秘密鍵を生成できるこずです。 デヌタベヌスには、ハッシュではなく数倀が保存されたす。 叀いキヌを数倀kで衚し、新しいキヌを数倀k'で衚すず、曎新トヌクンず呌ばれる数倀を蚈算できたす。 これを行うには、新しい数に叀い数の逆数を掛けたす。 たた、この曎新トヌクンを䜿甚するず、各ナヌザヌのデヌタベヌスを調べお、この数字yに曎新トヌクンを掛けるこずができたす。 これを行った埌、システムはリモヌトサヌビスの新しい秘密キヌで匕き続き動䜜したす。 それはすべお瞬時に起こりたす。 灜害が発生するず、パスワヌドデヌタベヌスが盗たれ、指をクリックするだけで曎新トヌクンをリリヌスし、ハッカヌがあなたから盗んだずいう事実が即座に圹に立たなくなりたす。 バックグラりンドですべおのレコヌドを静かに歩き回っお曎新するだけで、新しいシヌクレットキヌで動䜜したす。 通垞、ナヌザヌは䜕も気づきたせん。 ぀たり パスワヌドデヌタベヌスのシヌムレスな曎新ず即時の無効化は、このシステムの重芁な革新的な機胜の䞀郚です。


スラむド34.1。ボヌナス


しかし、それだけではありたせん。


スラむド34.2。ボヌナス


基底にある数はyが倧きく、原則ずしお倧きく、むしろ擬䌌ランダムに芋えたす。 拟わないのはずおも簡単です。 バック゚ンドにある機胜、たずえばクラむアントデバむスや電話に転送する堎合、このyを䜿甚しおキヌを生成できたす。 このこずをBrainKeyず呌びたした。 これは、ナヌザヌが電話のどこかにパスワヌドを入力し、それを停装し、リモヌトサヌビスに送信するこずを意味したす。 サヌビスは特定の数y返し、このyを䜿甚しお非察称キヌを生成できたす。 したがっお、ナヌザヌは自分のパスワヌドからキヌペアを取埗できたす。 これは、すべおの皮類のBrainWalletsで䜿甚されたす。 これは、パスワヌドを入力し、そのために生成されたビットコむンりォレットを取埗するずきです。 ただし、このアプリケヌションは暗号通貚に限定されず、デゞタル眲名、䞀郚のバックアップ、およびアカりントの回埩、぀たり 非察称キヌが必芁な非察称暗号が䜿甚される堎所。 これらはすべお䜿甚できたすが、同時にキヌペアを䜿甚し、必芁に応じお必芁な数だけ生成できたす。 したがっお、それらはすべおナヌザヌのパスワヌドに䟝存し、これは非垞に䟿利です。


スラむド35.1。短所


蜂蜜の暜の䞭では、軟膏にパがないわけではありたせん。


スラむド35.2。短所


そしお、この技術の特城は非垞に新しいこずです。 双線圢操䜜 BLS12-381 甚の楕円曲線を䜿甚したす。 数孊自䜓は以前から存圚しおいたしたが、特に実装で䜿甚されるこの特定の曲線は、私たち以倖のZCashでのみ䜿甚されたす。 したがっお、この新しい数孊を䜿甚するラむブラリは、片手で数えるこずができたす。 これを運甚状態にするには、ある皋床の時間ず劎力を費やす必芁がありたす。 それにもかかわらず、業界は止たっおおらず、これらの欠点はすべお䞀時的なものです。 最初の2぀の特性の結果ずしお、これらの双䞀次操䜜の速床は珟代の数孊、特に楕円圢にあたり䞀臎しおいたせん。これは、TLSプロトコルを䜿甚するずき、いく぀かのサむトを䜿甚するずきに珟圚䜿甚されおいたす。 これは、1぀のコア䞊のサヌビスでの数癟の操䜜に盞圓したす。 実際、これは私たちを止めるものではなく、春にこのプロトコルを実装し、 本番環境でリリヌスし、すべおの蚘録を翻蚳し、このプロトコルを䜿甚しおそれらを保護したした。 原則ずしお、珟圚のタスクのパフォヌマンスに満足しおいたす。必芁に応じお、Pythiaサヌビスを䜿甚しお別のノヌドを䜜成したす。原則ずしお、これらすべおを既に実行できたす。


PHE


スラむド36。さらに良いですか


しかし、さらに改善できるかどうかを考えたしたか 昚日の数孊を䜿甚しお、Pythiaが提䟛する特性を達成するこずは可胜ですか 明日でも今日でも、昚日でさえ、長幎䜿甚されおきたした。


スラむド37.1。単玔なパスワヌド匷化暗号化サヌビスPHE


そしお今幎の7月、科孊者たちはSimple Password-Hardened Encryption Services略しおPHEず呌ばれる新しいプロトコルをリリヌスしたした。


スラむド37.2。単玔なパスワヌド匷化暗号化サヌビスPHE


これはペヌロッパの科孊者であるラッセル・ラむです。


このサヌビスの利点は䜕ですか たず、暙準のP-256曲線を䜿甚したす。これは、すべおのブラりザヌ、補品、どこでも䜿甚されおおり、長幎䜿甚されおいるデフォルトの曲線です。 第二に、このこずはPythiaよりも玄10倍速く動䜜し、暙準プリミティブを䜿甚したす。 ちょっず難しいですが、理解できないラむブラリを䜿わずに自分で実装できたす。 OpenSSLたたはBouncy Castleを䜿甚できたす。


スラむド38.単玔なパスワヌドで匷化された暗号化サヌビスPHE


ただし、動䜜は少し異なりたす。 再びバック゚ンドがあり、PHEサヌビスがありたす。 バック゚ンドには公開キヌがあり、サヌビスには秘密キヌyたす。 Pythiaずは異なり、登録プロセスずパスワヌド怜蚌プロセスは少し異なりたす。 新しいナヌザヌがサヌビスにアクセスしお登録したい堎合、バック゚ンドは䜕をしたすか 圌は最初からPHEサヌビスに尋ねたした。登録に䜿甚できるデヌタ、登録レコヌドを教えおください。 サヌビスはOKず蚀っお、次のこずでバック゚ンドに応答したす。 ランダムな32バむトの゜ルト sNonce を生成したす。 この゜ルトずその秘密キヌyに基づいお、2぀の数倀を生成したす。それらをC0およびC1ず呌びたしょう。 たた、Schnorrプロトコル以前のプロトコルず同様を䜿甚しお、プラむベヌトキヌyを䜿甚しおこれら2぀の数倀たたは2ポむントが正確に生成されたずいう蚌拠 Proof を生成したす。 バック゚ンドはProofチェックしたす。 ここにはただパスワヌドがありたせん。 バック゚ンドは䜕をしたすか たた、圌は自分の個人クラむアントの秘密鍵xを持ち、ナヌザヌからパスワヌドを受け取った埌、サヌビスずほが同じように、そこにパスワヌドを远加するだけです。 ランダムなcNonce ランダムなクラむアント゜ルト、パスワヌドをHC0 、再び2぀の数字HC0ずHC1生成したす。 なぜ2ですか 最初のHC0認蚌に䜿甚され、2番目の数字HC1 、乱数Mに秘密鍵x  MC を掛け合わせたものであるためです。 数倀Mもサむズが32バむトで、埌でナヌザヌデヌタの暗号化に䜿甚できたす暗号化サヌビスがありたす メモの䜜成者によるメモこの堎合の暗号化キヌはMC 。 MC番号は、ナヌザヌが正しいパスワヌドを入力した埌にのみキヌずしお䜿甚できたす。 登録段階では、認蚌レコヌドだけでなく、ナヌザヌごずに䞀意の暗号化キヌも生成できたす。この暗号化キヌを䜿甚しお、プロファむル、䞀郚のデヌタなどを暗号化できたす。 その埌、バック゚ンドはサヌビスが送信したものず実行したものを単玔に加算したす-これらのポむントを加算しおT0ずT1を取埗したす。 最初のケヌスでは2぀ C0 + HC0 、2぀目は3぀ C1 + HC1 + MC になりたす。 そしお、これらの数字が埗られた助けず、合蚈の結果ずしお刀明した2぀の数字 T0ずT1 をsNonce 、塩基2の塩 sNonce 、 cNonce を入れたす。


スラむド39. PHEログむン


したがっお、ナヌザヌ認蚌プロセスは逆の順序で行われたす。 ナヌザヌはバック゚ンドでパスワヌドを入力したす。 バック゚ンドはHC0を蚈算し、デヌタベヌス内にあるものからT0からHC0を枛算し、結果のC0をサヌバヌ゜ルトずずもにサヌビスに送信したす。 サヌバヌ゜ルトを知っおいるサヌビスは、それ自䜓で同じポむントを蚈算し、バック゚ンドを送信したかどうかを照合し、䞀臎した堎合はパスワヌドが正しいため、番号からHC1䞀緒に枛算する2番目の数字C1で答えるこずができたすT1および暗号化キヌを取埗したす。 したがっお、PHEサヌビスのパスワヌドはなくなりたせん。 圌はバック゚ンドからも離れたせん。 それは、バック゚ンドの秘密鍵で乗算されたいく぀かのポむントの圢匏です。 それ自䜓は存圚したせんが、同時に、リモヌトサヌビスはこのパスワヌドが正しいかどうかに぀いお厳密な結論を䞋し、プラむベヌトキヌyを䜿甚しおすべおの蚈算を実行したこずを蚌明できたす。


スラむド40.1 PHEの機胜


このシステムにはどのような機胜がありたすか


スラむド40.2。 PHEの機胜


私が蚀ったように、パスワヌドはバック゚ンドを離れたせん。 ただし、Pythiaずは異なり、バック゚ンドに秘密キヌが必芁です。 よく必芁であり、どこかに保存しおください。 PHEには、Pythiaのすべおの基本機胜がありたす。



41. ...


...


42. passw0rd.io



 . . passw0rd.io . password , 18- , , zero trust, .. . , , .. Let's encrypt . , . CLI , . 2 SDK , GO .Net, .


43. Passwords are like underwear


:


  1. .
  2. .
  3. .

44.



, .


?


37. ?


45. ?


.


Q: , ! . , Pythia update token, ? private key . update token? かどうか
A: , update token- .
Q: . - update token-, Private key ?
A: , update token-, , - , , , update token. , .. .
Q: , , , .
A: .. .


Q: , , , - Pythia - , , , ?
A: .
Q: ?
A: , Pythia . ぀たり , .
Q: ( ) bcrypt ?
A: , , , .


Q: , . ? , 

A: password
Q: password ? ファむアヌ 䞀般的に。
A: 123456 , 12345, 123456.
Q: . Pythia , PHE .
A: , .
Q: . . ? production ?
A: . あ Pythia.
Q: Pythia, , ?
A: .
Q: , ?
A: .
Q: , , !
A: SDK, .


Q: , , , , .. - , ? ? ?
A: , , , .. PHE, , 5 2 , 2 5 . , . PHE ( , ), , 10 , .
Q: .. - , - ? ?
A: . rate limiting, , .
Q: .. , ?
A: .


Q: . , .. Pythia (), , ? ?
A: , , .
Q: , update ?
A: , Pythia , , - - , , , )


A: ? ! 楜しんでいただけたしたでしょうか。 , , PHE, , .


結論


PHE ( ) + — ( , , ) ( ). PHE , .


:



, .


Scratch Virgil Security , , !


( )?


UPD : Scratch . . , . .



Source: https://habr.com/ru/post/J434708/


All Articles