Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]David Buck
Java SE 8の主要な機能として、Lambda(クロージャ)とデフォルト・メソッド(従来ディフェンダー・メソッドもしくはエクステンション・メソッドと呼ばれていた)があります。クロージャを言語に追加することによってアプリケーションやライブラリに新たな表現の機会が与えられましたが、実際にはどのように実装すべきなのでしょうか。Lambdaはインナー・クラスによってシンプルでかつ文法的にコンパクトになるということは広く理解されていると思います。しかし、現実にはLambdaによる記述は、Invokedynamicを使った実装によって従来のJavaとは異なったものになっています。本セッションでLambdaについて、さらに深く理解してください。
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matchingharmonylab
公開URL:https://arxiv.org/pdf/2404.19174
出典:Guilherme Potje, Felipe Cadar, Andre Araujo, Renato Martins, Erickson R. ascimento: XFeat: Accelerated Features for Lightweight Image Matching, Proceedings of the 2024 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) (2023)
概要:リソース効率に優れた特徴点マッチングのための軽量なアーキテクチャ「XFeat(Accelerated Features)」を提案します。手法は、局所的な特徴点の検出、抽出、マッチングのための畳み込みニューラルネットワークの基本的な設計を再検討します。特に、リソースが限られたデバイス向けに迅速かつ堅牢なアルゴリズムが必要とされるため、解像度を可能な限り高く保ちながら、ネットワークのチャネル数を制限します。さらに、スパース下でのマッチングを選択できる設計となっており、ナビゲーションやARなどのアプリケーションに適しています。XFeatは、高速かつ同等以上の精度を実現し、一般的なラップトップのCPU上でリアルタイムで動作します。
セル生産方式におけるロボットの活用には様々な問題があるが,その一つとして 3 体以上の物体の組み立てが挙げられる.一般に,複数物体を同時に組み立てる際は,対象の部品をそれぞれロボットアームまたは治具でそれぞれ独立に保持することで組み立てを遂行すると考えられる.ただし,この方法ではロボットアームや治具を部品数と同じ数だけ必要とし,部品数が多いほどコスト面や設置スペースの関係で無駄が多くなる.この課題に対して音𣷓らは組み立て対象物に働く接触力等の解析により,治具等で固定されていない対象物が組み立て作業中に運動しにくい状態となる条件を求めた.すなわち,環境中の非把持対象物のロバスト性を考慮して,組み立て作業条件を検討している.本研究ではこの方策に基づいて,複数物体の組み立て作業を単腕マニピュレータで実行することを目的とする.このとき,対象物のロバスト性を考慮することで,仮組状態の複数物体を同時に扱う手法を提案する.作業対象としてパイプジョイントの組み立てを挙げ,簡易な道具を用いることで単腕マニピュレータで複数物体を同時に把持できることを示す.さらに,作業成功率の向上のために RGB-D カメラを用いた物体の位置検出に基づくロボット制御及び動作計画を実装する.
This paper discusses assembly operations using a single manipulator and a parallel gripper to simultaneously
grasp multiple objects and hold the group of temporarily assembled objects. Multiple robots and jigs generally operate
assembly tasks by constraining the target objects mechanically or geometrically to prevent them from moving. It is
necessary to analyze the physical interaction between the objects for such constraints to achieve the tasks with a single
gripper. In this paper, we focus on assembling pipe joints as an example and discuss constraining the motion of the
objects. Our demonstration shows that a simple tool can facilitate holding multiple objects with a single gripper.
7. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
本発表のモチベーション
「ツールをただ使うのではなく、
きちんと理解した上で使いたい」
※画像素材提供:アフロ
7
8. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
本発表のモチベーション
「ツールをただ使うのではなく、
きちんと理解した上で使いたい」
※画像素材提供:アフロ
8
どう使ったら危ないか
9. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
本発表のモチベーション
「ツールをただ使うのではなく、
きちんと理解した上で使いたい」
※画像素材提供:アフロ
Vault がどういった原理で動き、
内部で何をしているのか
ちゃんと整理できていますか?
9
10. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
本発表のモチベーション
「ツールをただ使うのではなく、
きちんと理解した上で使いたい」
※画像素材提供:アフロ
Vault の管理を
おざなりにしていませんか?
10
11. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
本日の登壇内容のゴール
ゴール:
• Vault の鍵管理機構をいくつかのデモによって詳細に
理解できる
• Vault をどう管理すべきかを改めて考えるきっかけに
つながる
ターゲット:
• これから Vault を使おうと考えている方
• 今 Vault を運用している方
11
12. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
内容に関して
本日お話すること:
• Vault に関する鍵に関して
• Vault が管理するデータの構造に関して
本日お話しないこと:
• Vault の各種機能の詳細
• 暗号化アルゴリズムの仕様・詳細
12
13. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
Agenda
▪ Vault 内外の鍵管理
▪ Encryption key の原理(デモ)
▪ Master key の原理(デモ)
▪ まとめ
13
14. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
Vault 内外の鍵管理
15. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
用語の整理
▪ 鍵
o データまたは鍵そのものの暗号化、復号に使用する
モノ
▪ シークレット
o Vault が管理するモノの総称
▪ 鍵管理
o 上記「鍵」を安全に保持するための方法
o システム(仕組み)、セキュリティポリシーなど
15
22. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
鍵管理責任の界面
運用者が責任を持つ
Master key Encryption key
encrypted
key shares
encrypted
Vault が責任を持つ
Vault 内外で鍵管理の責任は分かれている
22
23. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
鍵管理責任の界面:改
運用者が責任を持つ
Master key Encryption key
encrypted
key shares
encrypted
Vault が責任を持つ
Vault 内外で鍵管理の責任は分かれているが、Vault を実行する環境も運用者
の責任である
23
24. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
鍵管理は
運用者の責任が果たせないと崩壊していく
Vault の仕組みを知り、デモによって理解していきましょう
24
25. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
Encryption key
の原理
26. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
Keyring
Encryption key: Vault が管理するシークレットを暗号化・復号
する鍵
Encryption key はいくつかの鍵で構成される鍵束である
https://www.vaultproject.io/docs/concepts/seal#shamir-seals
Master key Encryption keyring
encrypted
Vault 内で管理される鍵
26
27. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
Term と activeTerm
Term: 1
Term: 2
Term: 3
Term: 4 ( activeTerm )
• keyring 内では暗号化に使う鍵を Term (個々の鍵につけられる
バージョン情報のようなもの)
• activeTerm はシークレットの暗号化の際に常に優先的に使われ
る鍵の Term を表す
https://github.com/hashicorp/vault/blob/v1.4.2/vault/keyring.go#L21-L25
https://github.com/hashicorp/vault/blob/v1.4.2/vault/keyring.go#L34-L39
Latest key
keyring
27
28. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
Term と activeTerm
Term: 1
Term: 2
Term: 3
Term: 4
• keyring 内の Term は rotate コマンドによって追加されていく
• 生成された鍵はインクリメンタルに Term が割り当てられ、そ
の鍵が activeTerm となる
Term: 5 ( activeTerm )
keyring
vault rotate
28
29. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
原理から考えると
Encryption key があればシークレットの復号可能
Master key Encryption keyring
encrypted
Storage Backend (encrypted)
29
30. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
原理から考えると
Encryption key があればシークレットの復号が可能なはず
30
Master key Encryption keyring
encrypted
31. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
なので、
少しだけ悪さをします
32. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
Demo:
暗号化されたシークレット
を復号してみる
33. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
復号に失敗した理由
34. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
Term とシークレット
• シークレットは Term をデータ構造に持っている
• 鍵が違うと当然復号もできない
Term: 4 ( activeTerm )Encrypted with:
Term: 3Encrypted with:
Term: 1Encrypted with:
34
35. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
ここまでのまとめ
• Encryption key は鍵束 ( keyring ) の構造である
• Encryption key は Vault が持つシークレットの暗号化、復
号に用いられる
• それぞれの鍵には Term という情報を持ち、常に新しい鍵
( activeTerm ) が使われる
• Encryption key が盗まれるとシークレットの復号が可能で
あるが、シークレット自身が知る Term の鍵でないと復号で
きないことを確認した
35
36. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
Master key の原理
37. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
もう一歩進んでみる
Master key Encryption keyring
encrypted
Master key があれば全てのシークレットの復号可能
37
38. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
もう一歩進んでみる
Master key Encryption keyring
encrypted
keyring (暗号化されている) もストレージに存在
=> Master key によって復号 => シークレットを復号
38
39. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
再び、
悪さをしてみる
40. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
前提条件の設定
key share がしきい値まで知られている
Master key Encryption key
encrypted
Vault 内で管理される鍵
key shares
encrypted
40
41. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
デモ内容解説
デバッグ用ツール( lldb )
でプロセスに attach する
Master key
実行中の Vault のメモリから Master key を取得
41
42. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
デモ内容解説
Master key を使い Encryption key ( keyring ) を復号
Master key
Encrypted keyring file
decrypt
42
43. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
デモ内容解説
Master key
Encryption key を使いデータを復号してみる
keyring
43
44. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
Demo2:
Vault から新鮮な
Master key を取ってみる
46. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
まとめ
47. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
Demo1,2 で果たされなかった責任
運用者が責任を持つ ❌
Master key Encryption key
encrypted
key shares
encrypted
Vault が責任を持つ
実行環境で様々な操作ができてしまうような環境であったこと、
key shares の管理問題
47
48. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
どのようにして守るか
例)
• 物理的、ネットワーク的に隔離さ
れた場所からのみオペレーション
可能とする
• 作業を最低でも2人で行う
Vault が管理するシークレットの機密性に伴って
アクセスを厳格にする
シークレットの機密性と、動作するプラットフォームを考慮し最適なセ
キュリティポリシーを策定(難しい)
48
49. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
まずやるべきは
Vault production hardening は必読
今回の発表からこうすべき理由はなぜなのか、といったこ
とがよりはっきりわかるかと思います
49
50. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
あなたの管理する Vault は大丈夫ですか?
見直すべきところはありませんか?
50
51. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
END
52. Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.
Reference
• https://github.com/hashicorp/vault
• https://medium.com/hashicorp-engineering/how-id-attack-your-hashicorp-
vault-and-how-you-can-prevent-me-system-hardening-ce151454e26b
• https://www.hashicorp.com/resources/building-a-repeatable-and-
hardened-vault-poc/
• https://www.vaultproject.io/docs/internals/security
• https://learn.hashicorp.com/vault/operations/production-hardening
52