Suche senden
Hochladen
SHA-256を学ぼうとする
•
0 gefällt mir
•
2,435 views
Takeru Ujinawa
Folgen
SHA-256のアルゴリズムを読み解く上でのファーストステップ SHAってなんやねん!って思ってる段階で見て貰うのがちょうど良いのかも。 5分間のLT資料
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 14
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
SQL Server Performance Tuning Essentials
SQL Server Performance Tuning Essentials
Masaki Hirose
きっと今すぐ使えるハッシュの基礎知識
きっと今すぐ使えるハッシュの基礎知識
Ryo Sasaki
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話
KEISUKE KONISHI
ソフトウェアテスト入門
ソフトウェアテスト入門
Preferred Networks
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
Shuichi Tsutsumi
Webアプリでパスワード保護はどこまでやればいいか
Webアプリでパスワード保護はどこまでやればいいか
Hiroshi Tokumaru
ヤフー発のメッセージキュー「Pulsar」のご紹介
ヤフー発のメッセージキュー「Pulsar」のご紹介
Yahoo!デベロッパーネットワーク
OpenID Connect のビジネスチャンス
OpenID Connect のビジネスチャンス
OpenID Foundation Japan
Weitere ähnliche Inhalte
Was ist angesagt?
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
SKYDISCのIoTを支えるテクノロジー
SKYDISCのIoTを支えるテクノロジー
Yuji Otani
0からわかるAlfresco
0からわかるAlfresco
MoritakaSoma
C#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
信之 岩永
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!デベロッパーネットワーク
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
Ninja Testing at Toteka03
Ninja Testing at Toteka03
Nakajima Shigeru
動的コンテンツをオリジンとしたCloudFrontを構築してみた
動的コンテンツをオリジンとしたCloudFrontを構築してみた
Taiki Kawamura
DevSecOpsのユースケースとDevSecOpsがもたらす未来(20191126)
DevSecOpsのユースケースとDevSecOpsがもたらす未来(20191126)
Masanori KAMAYAMA
ゼロから始めるサブスク生活
ゼロから始めるサブスク生活
KLab Inc. / Tech
高速にコンテナを起動できるイメージフォーマット
高速にコンテナを起動できるイメージフォーマット
Akihiro Suda
Ewaの見方‗it部門マネジメント向け v2
Ewaの見方‗it部門マネジメント向け v2
Shiroh Kinoshita
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
Masayuki Ozawa
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
Amazon Web Services Japan
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
Toru Makabe
キーボード自作のススメ
キーボード自作のススメ
Retrieva inc.
新人研修資料 向き合うエンジニア
新人研修資料 向き合うエンジニア
akira6592
Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介
Hiroyuki Wada
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
ota42y
データベース入門
データベース入門
拓 小林
Was ist angesagt?
(20)
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
SKYDISCのIoTを支えるテクノロジー
SKYDISCのIoTを支えるテクノロジー
0からわかるAlfresco
0からわかるAlfresco
C#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
Ninja Testing at Toteka03
Ninja Testing at Toteka03
動的コンテンツをオリジンとしたCloudFrontを構築してみた
動的コンテンツをオリジンとしたCloudFrontを構築してみた
DevSecOpsのユースケースとDevSecOpsがもたらす未来(20191126)
DevSecOpsのユースケースとDevSecOpsがもたらす未来(20191126)
ゼロから始めるサブスク生活
ゼロから始めるサブスク生活
高速にコンテナを起動できるイメージフォーマット
高速にコンテナを起動できるイメージフォーマット
Ewaの見方‗it部門マネジメント向け v2
Ewaの見方‗it部門マネジメント向け v2
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
キーボード自作のススメ
キーボード自作のススメ
新人研修資料 向き合うエンジニア
新人研修資料 向き合うエンジニア
Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
データベース入門
データベース入門
Andere mochten auch
『OpenID ConnectとSCIMのエンタープライズ実装ガイドライン』解説
『OpenID ConnectとSCIMのエンタープライズ実装ガイドライン』解説
Takashi Yahata
SSL入門
SSL入門
Takeru Ujinawa
Yahoo! JAPANのOpenID Certified Mark取得について
Yahoo! JAPANのOpenID Certified Mark取得について
Masaru Kurahayashi
エンタープライズITにおけるSCIM利用ガイドライン by NEC桑田雅彦様
エンタープライズITにおけるSCIM利用ガイドライン by NEC桑田雅彦様
OpenID Foundation Japan
Etherpad-lite導入
Etherpad-lite導入
Takeru Ujinawa
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
Takashi Yahata
110728 Trust Framework - Shingo Yamanaka
110728 Trust Framework - Shingo Yamanaka
OpenID Foundation Japan
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
Masaru Kurahayashi
Andere mochten auch
(8)
『OpenID ConnectとSCIMのエンタープライズ実装ガイドライン』解説
『OpenID ConnectとSCIMのエンタープライズ実装ガイドライン』解説
SSL入門
SSL入門
Yahoo! JAPANのOpenID Certified Mark取得について
Yahoo! JAPANのOpenID Certified Mark取得について
エンタープライズITにおけるSCIM利用ガイドライン by NEC桑田雅彦様
エンタープライズITにおけるSCIM利用ガイドライン by NEC桑田雅彦様
Etherpad-lite導入
Etherpad-lite導入
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
110728 Trust Framework - Shingo Yamanaka
110728 Trust Framework - Shingo Yamanaka
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
Mehr von Takeru Ujinawa
Twitter API で学ぶ OAuth
Twitter API で学ぶ OAuth
Takeru Ujinawa
Chrome ExtensionでSelf-Issued OpenID Provider
Chrome ExtensionでSelf-Issued OpenID Provider
Takeru Ujinawa
CTFを楽しむやで
CTFを楽しむやで
Takeru Ujinawa
SES
SES
Takeru Ujinawa
AWS SQS
AWS SQS
Takeru Ujinawa
AWS KMSと鍵の話
AWS KMSと鍵の話
Takeru Ujinawa
Cognito User Pool
Cognito User Pool
Takeru Ujinawa
Mehr von Takeru Ujinawa
(7)
Twitter API で学ぶ OAuth
Twitter API で学ぶ OAuth
Chrome ExtensionでSelf-Issued OpenID Provider
Chrome ExtensionでSelf-Issued OpenID Provider
CTFを楽しむやで
CTFを楽しむやで
SES
SES
AWS SQS
AWS SQS
AWS KMSと鍵の話
AWS KMSと鍵の話
Cognito User Pool
Cognito User Pool
Kürzlich hochgeladen
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
Tetsuya Nihonmatsu
【修士論文】代替出勤者の選定業務における依頼順決定方法に関する研究 千坂知也
【修士論文】代替出勤者の選定業務における依頼順決定方法に関する研究 千坂知也
harmonylab
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
Shumpei Kishi
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
arts yokohama
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
ssuser539845
Summary of "ChatDoctor: A Medical Chat Model Fine-Tuned on a Large Language M...
Summary of "ChatDoctor: A Medical Chat Model Fine-Tuned on a Large Language M...
yoshidakids7
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
Sadao Tokuyama
2024 04 minnanoito
2024 04 minnanoito
arts yokohama
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
arts yokohama
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
ssuser370dd7
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
Matsushita Laboratory
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
2024 03 CTEA
2024 03 CTEA
arts yokohama
Kürzlich hochgeladen
(13)
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
【修士論文】代替出勤者の選定業務における依頼順決定方法に関する研究 千坂知也
【修士論文】代替出勤者の選定業務における依頼順決定方法に関する研究 千坂知也
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
Summary of "ChatDoctor: A Medical Chat Model Fine-Tuned on a Large Language M...
Summary of "ChatDoctor: A Medical Chat Model Fine-Tuned on a Large Language M...
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
2024 04 minnanoito
2024 04 minnanoito
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
2024 03 CTEA
2024 03 CTEA
SHA-256を学ぼうとする
1.
SHA-256 を学ぼうとする (Secure Hash
Algorithm) uji52 2016/09/07
2.
uji52 自己紹介 • uji52 • age:
27 • region: Hikone->Kyoto->Yokohama • My favorite • ハッシュ関数 • SHA-256 (他をほとんど知らない気がする) • 調味料 • わさび • 塩コショウ 2
3.
SHA-256を紐解くぜ! 数学の勉強も好きやしおもろいかも 3
4.
と思ったけど 思ったより難解やった… ので、概要のご説明的な内容です 4
5.
SHAとは(1) • NIST(National Institute
of Standard and Technology) • アメリカ国立標準技術研究所 • すっごいいろいろやってるところ • 物理学から化学から情報まで様々 • 暗号化技術等の選定、標準化等も • AES(Advanced Encryption Standard) • 暗号化方式 • SHA(Secure Hash Algorithm) • ハッシュアルゴリズム 5
6.
SHAとは(2) 6 SHA登場(現在はSHA-0)とも呼ばれるFIPS 1801993年 SHA-1登場FIPS PUB
180-11995年 (案外昔からあるんやな〜) 2001年 変形verいくつか登場(SHA-224、SHA-256、SHA-384、SHA-512) 2012年 更にいくつかの変形ver登場SHA-512/224、SHA-512/256 合わせて SHA-2と 呼ばれるFIPS PUB 180-2 2012年 SHA-3のアルゴリズムが決定 2015年 SHA-3の正式版リリースFIPS PUB 202
7.
実際にハッシュ化しよう 7 $ irb irb(main):001:0> require
'digest/sha2' => true irb(main):002:0> Digest::SHA256.hexdigest "uji52" => “7730a0175eb494861993a5fdc899b393415f0def92ffd5130abee366dfa15348" irb(main):003:0> Digest::SHA256.hexdigest "uji53" => "0c47f8156e7b256efee86cc135451def80b4c544af16e24af81b2548009e37b8" irb(main):004:0> Digest::SHA256.hexdigest "" => "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" ←Rubyをインタプリタで起動するで(するやで、は封印) ←SHA-2を使う宣言 ←”uji52”をSHA-256 ←”uji53”をSHA-256 ←空文字列をSHA-256 ほんの少しの変更でガラッと変わる 空文字でもしっかりハッシュ化してくれる
8.
ハッシュしても危険やで 8 詳しい人なら 答えを知ってれば問題は分かる 0c47f8156e7b256e fee86cc135451def 80b4c544af16e24a f81b2548009e37b8 uji52を SHA-256した 値やな 問題 中央アメリカのパナマと 陸上で国境を接している 南アメリカの国はどこでしょう? 答え コロンビア ハッシュ化した値を 沢山知っていたら元の値も分かる ↑悪フザケ レインボーテーブルとか
9.
ハッシュ化する上で大事なこと • ハッシュ化するときに工夫するで • salt
(salt and pepper) • ハッシュ化する前に元の値に味付け(塩)して途中にも味付け(胡椒) • ストレッチング • 複数回ハッシュ化することで計算量を上げちゃおう • アルゴリズムは被らないことが大事 • 第一原像計算困難性 • 与えられるハッシュ値になる元値探し • 第一原像計算困難性 • 与えられる元値と同じハッシュ値になる元値探し • 衝突困難性 • ハッシュ値が同じになっちゃうペア探し 9 hが与えられて h=hash(m)になるm探し m1が与えられて hash(m1)=hash(m2)になるm2探し hash(m1)=hash(m2)になるペア探し
10.
それでは SHA-256ハッシュ関数を 紐解いていきましょう 10
11.
SHA-256の大まかな流れ 11 入力データ 分割入力データ[0] 分割入力データ[1] 分割入力データ[2] 64Byte毎に分割 64Byte ハッシュ値 分割入力データ[i]←計算 まだある? i == n ある ない 完成したハッシュ値 ←長さ足りひんかったら もちろんpadding 興味あったところ 256bit
12.
SHA-256に使う値 12 分割入力データ[0]ハッシュ値 256bit 分割ハッシュ値[0] 分割ハッシュ値[1] 8分割 分割ハッシュ値[7] 32bit 分割入力データ[0][0] 分割入力データ[0][1] 分割入力データ[0][15] 4Byte 64Byte 16分割 4倍に増やす 分割入力データ[0][0] 分割入力データ[0][1] 分割入力データ[0][63]4倍に増やす部分 分割データ[0][n]をD(n)と呼ぶとすると D[16]〜D[63]を下記方法で作る D(n) = D(n
- 2) + D(n - 7) + D(n - 15) + D(n - 16)
13.
SHA-256でやってること 13 428a2f98 71374491 b5c0fbcf
e9b5dba5 3956c25b 59f111f1 923f82a4 ab1c5ed5 d807aa98 12835b01 243185be 550c7dc3 72be5d74 80deb1fe 9bdc06a7 c19bf174 e49b69c1 efbe4786 0fc19dc6 240ca1cc 2de92c6f 4a7484aa 5cb0a9dc 76f988da 983e5152 a831c66d b00327c8 bf597fc7 c6e00bf3 d5a79147 06ca6351 14292967 27b70a85 2e1b2138 4d2c6dfc 53380d13 650a7354 766a0abb 81c2c92e 92722c85 a2bfe8a1 a81a664b c24b8b70 c76c51a3 d192e819 d6990624 f40e3585 106aa070 19a4c116 1e376c08 2748774c 34b0bcb5 391c0cb3 4ed8aa4a 5b9cca4f 682e6ff3 748f82ee 78a5636f 84c87814 8cc70208 90befffa a4506ceb bef9a3f7 c67178f2 32bitのハッシュ値 x 8 入力値を元に生成された4Byteの値 x 64 定数k 8桁の16進数 x 64 これらの値をビットシフトとXORして ハッシュ値を作ってるみたいです。 時間の都合上この辺りで割愛 (諦め) ←これの4つめと8つめをハッシュしてローテーションしていく(それを64回) ↑←この2つがハッシュするためのXOR素材
14.
まとめ • 思ったより奥が深い • 全体に何らかのビット演算って話かと… •
パディング処理も凝ってる… • 分割処理も凝ってる… (ハッシュアルゴリズムを簡単に考えすぎてた) 14
Jetzt herunterladen