[{"data":1,"prerenderedAt":166},["ShallowReactive",2],{"maker-FiloSottile":3},[4,35,59,84,104,127,147],{"id":5,"name":6,"line":7,"ai":8,"cat":9,"year":10,"points":11,"comments":12,"rec":13,"s":14,"top":15,"kw":16,"maker":22,"domain":23,"tier":24,"attempts":25,"strip":26,"url":27,"mix":28,"praise":32,"objection":33,"sub":34},10004678,"whoami.filippo.io","My SSH server knows who you are",false,"security_privacy",2015,836,245,"mixed",-0.13,1,[17,18,19,20,21],"ssh","public keys","github keys","privacy","ssh-agent forwarding","FiloSottile","blog.filippo.io","legend",0,"4000055511522313103403054335531141222122","https:\u002F\u002Fblog.filippo.io\u002Fssh-whoami-filippo-io\u002F",[29,30,15,31],20,48,33,"Clever, elegant demonstration of an overlooked SSH privacy issue","Public keys are meant to be public, so no real harm","ssh identity demo",{"id":36,"name":37,"line":38,"ai":8,"cat":39,"year":40,"points":41,"comments":42,"rec":13,"s":43,"top":15,"kw":44,"maker":22,"domain":23,"tier":24,"attempts":25,"strip":50,"url":51,"mix":52,"praise":56,"objection":57,"sub":58},18842218,"Mkcert","Valid HTTPS certificates for localhost","dev_tools",2019,839,115,-0.05,[45,46,47,48,49],"https","localhost","tls certificate","local ca","development","1131102130000013013314300015050300005534","https:\u002F\u002Fblog.filippo.io\u002Fmkcert-valid-https-certificates-for-localhost\u002F",[53,54,25,55],8,18,13,"Useful for testing HTTPS locally, e.g. OAuth and WebRTC work","Storing the CA private key user-readable weakens the trust boundary","certificate generator",{"id":60,"name":61,"line":62,"ai":8,"cat":9,"year":63,"points":64,"comments":65,"rec":66,"s":43,"top":67,"kw":68,"maker":22,"domain":74,"tier":75,"attempts":25,"strip":76,"url":77,"mix":78,"praise":81,"objection":82,"sub":83},23130053,"Yubikey-agent","an easy to use Go ssh-agent for YubiKeys",2020,152,52,"curious",14,[69,70,71,72,73],"yubikey","ssh agent","piv","hardware key","gpg","github.com","notable","0000000000000000033530100000030313000000","https:\u002F\u002Fgithub.com\u002FFiloSottile\u002Fyubikey-agent",[15,79,15,80],6,2,"Native OpenSSH FIDO keys are convenient and simple to set up","Native OpenSSH FIDO keys lack effective PIN protection","hardware security key ssh agent",{"id":85,"name":86,"line":87,"ai":8,"cat":9,"year":88,"points":89,"comments":90,"rec":66,"s":91,"top":80,"kw":92,"maker":22,"domain":74,"tier":24,"attempts":25,"strip":97,"url":98,"mix":99,"praise":102,"objection":103,"sub":93},28435613,"Age 1.0","Simple, modern and secure file encryption",2021,494,88,0.14,[93,94,95,96],"file encryption","gpg alternative","command line encryption","age encryption","3335330035331333505555133000311035435030","https:\u002F\u002Fgithub.com\u002FFiloSottile\u002Fage\u002Freleases\u002Ftag\u002Fv1.0.0",[55,100,101,53],30,3,"Simple CLI that composes well with UNIX pipes","Provides confidentiality but not integrity, so tampered files are not detected before output",{"id":105,"name":106,"line":107,"ai":8,"cat":108,"year":109,"points":110,"comments":111,"rec":66,"s":112,"top":79,"kw":113,"maker":22,"domain":118,"tier":24,"attempts":25,"strip":119,"url":120,"mix":121,"praise":124,"objection":125,"sub":126},39214743,"filippo.io\u002Fmlkem768","Post-Quantum Cryptography for the Go Ecosystem","languages",2024,315,97,0.02,[114,115,116,117],"post-quantum cryptography","go","ml-kem","key exchange","words.filippo.io","0000000000000353333033013351110002354355","https:\u002F\u002Fwords.filippo.io\u002Fdispatches\u002Fmlkem768\u002F",[53,122,15,123],17,7,"Implementation written to avoid secret-dependent code paths","Pure Go may be vulnerable to timing and power side channels","cryptography library",{"id":128,"name":129,"line":130,"ai":8,"cat":131,"year":109,"points":132,"comments":25,"rec":133,"s":134,"top":135,"kw":136,"maker":22,"domain":118,"tier":142,"attempts":25,"strip":143,"url":144,"mix":145,"praise":-1,"objection":-1,"sub":146},42351160,"frood","An Immutable Alpine Linux NAS with No Rootfs","infrastructure",16,"quiet",null,60,[137,138,139,140,141],"immutable linux","alpine linux","nas","network attached storage","rootfs","shown","","https:\u002F\u002Fwords.filippo.io\u002Fdispatches\u002Ffrood\u002F",[25,25,25,25],"self-hosted nas",{"id":148,"name":149,"line":150,"ai":8,"cat":131,"year":151,"points":152,"comments":101,"rec":133,"s":134,"top":153,"kw":154,"maker":22,"domain":74,"tier":75,"attempts":25,"strip":160,"url":161,"mix":162,"praise":163,"objection":164,"sub":165},45694032,"sandboxed-step","Run a GitHub Actions step in a gVisor sandbox",2025,85,22,[155,156,157,158,159],"github actions","gvisor","sandbox","ci security","untrusted code","055","https:\u002F\u002Fgithub.com\u002Fgeomys\u002Fsandboxed-step",[80,25,25,25],"Clean and easy way to use gVisor isolation for GitHub","GitHub Actions read-only steps still get cache write tokens, enabling cache poisoning","ci sandboxing",1793991207611]