HN user

babawere

1,603 karma
Posts129
Comments54
View on HN
github.com 3mo ago

Show HN: Keeper – embedded secret store for Go (help me break it)

babawere
64pts33
www.reddit.com 7y ago

Why Reverse Tabnabbing Matters (An Example on Reddit)

babawere
16pts0
chain.com 9y ago

Digitize currency with Chain Core

babawere
2pts0
github.com 9y ago

Create your own image mosaic.

babawere
2pts0
about.gitlab.com 9y ago

Moving to Bare Metal

babawere
2pts0
docs.google.com 11y ago

Go 1.5 concurrent garbage collector pacing

babawere
1pts0
news.ycombinator.com 11y ago

Is PrivDog another Superfish

babawere
25pts15
www.reddit.com 11y ago

-int16(-32768) == -32768?

babawere
1pts0
www.youtube.com 11y ago

Write in Go (Fall 2014)

babawere
4pts0
php.net 11y ago

PHP 5.6.1 released

babawere
1pts0
stackoverflow.com 11y ago

What is the difference between while (true) vs. while (\true)?

babawere
3pts0
github.com 12y ago

Go Image Filtering Toolkit

babawere
4pts0
php.net 12y ago

PHP 5.5.12 release

babawere
1pts0
gist.githubusercontent.com 12y ago

Tptacek's Review of "Practical Cryptography With Go"

babawere
284pts250
www.php.net 12y ago

PHP 5.5.11 is released

babawere
1pts0
docs.google.com 12y ago

Proposal to add tables (two-dimensional slices) to go

babawere
1pts0
en.wikipedia.org 12y ago

Fallacies of Distributed Computing

babawere
2pts0
groups.google.com 12y ago

Go 1.3 will remove Windows 2000 support

babawere
3pts0
news.php.net 12y ago

Immediate availability of PHP 5.5.10

babawere
2pts0
www.connectify.me 12y ago

Taking Google’s QUIC For a Test Drive (2013)

babawere
26pts11
talks.golang.org 12y ago

Toward Go 1.3

babawere
257pts257
talks.golang.org 12y ago

The Research Problems of Implementing Go

babawere
4pts9
github.com 12y ago

Show HN: ASCII Table Writer Tool in Golang

babawere
1pts0
gobot.io 12y ago

Go Powered Robotics

babawere
1pts0
fosdem.org 12y ago

FOSDEM 2014 – First videos are online

babawere
78pts13
www.quora.com 12y ago

Zynga: What went wrong at Zynga?

babawere
2pts0
php.net 12y ago

PHP 5.5.9 is ready for download

babawere
1pts0
corte.si 12y ago

How I Learned to Stop Worrying and Love Golang

babawere
2pts0
docs.google.com 12y ago

Go channels on steroids

babawere
3pts0
www.polydaic.com 12y ago

Polydaic Web – Golang vs Node.js: The Showdown

babawere
1pts0

Both, honestly. Fun and production intent. But `production` here is very specific, embedded in a single Go binary, a single *.db not a CLI tool (the cli you see there is just for inspection) for developer or CI.

The problem fnox solves is great, unified access to secrets across dev, CI, prod with cloud backends. That's a different layer of the stack.

Keeper solves a lower-level problem: you have a Go process (a load balancer, a control plane, a daemon) that needs to store secrets inside its own database not in a separate file, not in a cloud vault, not in env vars. Secrets that need per bucket isolation, audit trails, and crash-safe rotation.

Here is my thinking :

- fnox = how your CLI and deploy scripts get secrets

- Keeper = how your running binary stores secrets at rest

Different problems, Could I build Keeper on top of fnox? Probably. But then I'd have a file on disk with secrets that fnox manages which is exactly the problem I wanted to eliminate.

Thanks for sharing this. secret looks really well thought out, the three-layer key hierarchy is impressive. And using `age` is a solid choice. once considered it.

Different trade-offs though, Keeper is library first embedded. secret does per version keys with symlink switching - nice, Keeper does per-bucket DEK isolation + audit chains. Both solve "encrypted local storage" but for different workflows.

I'll definitely be looking through your code for ideas

Thanks for the look. On the verification hash, you're right, SHA256 would work there. Argon2id was overkill, I agree 100%.

The crash-safe WAL is the part I'm most nervous about too. That's exactly why I posted this. I want eyes on the rotation logic specifically.

And yeah, single bbolt db is a limitation. I could have used pebble or any other, but trade-off for simplicity (a single *.db). A true WAL will need external file. The storage is pluggable though also open to improvement.

Still very young.

Honestly… the initial use case is to hide certs from the file system and secrets from the environment. However, this can be extended.

The primary issue has been not being able to manage an encrypted storage system… the main goal is to have something that can be audited, not just secured.

yes 100% ... embeded

Go is boring 12 years ago

I think you are evaluating 'go' based on feature set rather than the amount of friction a developer experience when using it to develop a good product.

C++ is fantastic but I personally experience far less friction when working with 'go' for most of my task.

Toward Go 1.3 12 years ago

Its as been a research project for a very very very long time now ...

1. Non-standard base64 and 2. Definitely Compressed ... by guess would be snappy compression 3. Possibility of serialization using protocol buffer 4. not sure if such information would be encrypted after such a server failure