Keys

NOTE

My keys can also be found on Codeberg in order to check for discrepancies between the keys.

NOTE

I do not use, nor accept, PGP-based keys. PGP is a legacy cryptography suite which was created before cryptography was well-researched and well-understood. Using PGP in the modern world is dangerous and should be avoided. See Latacora's article, Filippo Valsorda's article, and Matthew Green's article on the matter.

Furthermore, PGP's most-commonly-used implementation, GPG, is comprised of a very-messy C-based codebase[0] which has a reputation for containing countless security vulnerabilities[1][2], and continues to do so. GPG cannot simply be patched out of its poor design; undoubtedly, security vulnerabilities will continue to emerge.

Users should consider replacing PGP-signing with OpenSSH-signing, and PGP-encryption with age-encryption. OpenSSH is developed by OpenBSD developers and is well-known for being cleanly-written and highly-secure despite being written in C. age is developed by the aforementioned Filippo Valsorda and is written in memory-safe Go.

CAUTION

Verification does not verify a person, only their devices, and can be defeated via coercion or other force.

File Encryption

age

In order to send me encrypted files, my age public-key(s) can be used.

Data encrypted with age public-keys outside of their validity periods will not be accepted.

Each age public-key is signed with a valid OpenSSH key at the time of their creation, allowing verification of the chain-of-trust.

My age public-keys and their signature-files can be downloaded via their ID-links in the table below.

My age keys are rotated on a 12-week basis.

ID Validity Start Validity End Type Quantum-resistant? Public Key

#1

(Sig)

2026-06-05

Current

X25519 + ML-KEM-768

Yes

age1pq1ukwtakemtdc5vc2nrsjz036rye9xgmdezlarh8vknss0nxy5xvctjmjrn8wv3vkrpg0amys9hs6c7tzvk2xg02aghz0g0ayc8hznsy3ug85ty2pz8zzj64pf59aryvrgykc9wp5u9z5nqjyly762pt5sk6h7nf8rdwsjzrr49na68rfed4h302hau4m92rrtf9ygxjy8pydssg3g8dfdxkam0j5nqrhnp9j5wmm3dp09f3cwjcmuveszek66yzz72sqmc2yg0mm88cgt9aq35u0cydnuawcgny53a463ws8entj6z9zdpdr4h4r5cusghd5nfn5fnqlcknqjq9rcz0w8tqfhhr3rm3z4cd9jmfkgmuv68pr530zt5f0rmvrq6laj70zsrr7xglgxckav7uzuk2pzjjy3skwxy5cvsmqezjq2gr5qz5gt02hdfty9lw6tnwszmwq57ykuyxwng60hxfe3ptr4eap8wf6ndg8kca92vj8hrtzh2p7fyughw3cp22vlv8ykpz3fpde4xuuxzwyv5e7ak55p6497l4qgy9hytrdlzts7gszk556r5ypfkex3cc95nshlxuvmhrq0qacp6656qhgag9pxjgdv9wztwzcy6gph47hl4nx2h9rmnqgz08pf2fxtr5f2s7hf3fxyza9as0g60stthxns8nudmda7p764j74zwlnq409z0qrlqwk8afzafm9ypl3s46kddpjx6eev8fxqaj6prtgnwf7zgk452rp03vmem33z8xwtep8c2lj02lyj6vg2j34pv0fn8kw948gjj9v9mm9r4gcewfh4gdmngzy2cpq7devjpuypd0ue8aktdj2uzkzgxa90dvnghpzupytz0znysw89zd59zq6umsytzz7gkenswytqz6w2ytz3t2mkplqgkmlpwq8v76d29jcchkrs49pvc5rjt09stkreh9t5vwsmjjy3q2eych8ft379n5r22zprj3vwc6vfwrx64ccfjpmfu5gn88wu55jyexazngsld6sz229yvudmcfj8dz9y9uusqravf4ycq27r0dx9qgapuxc98xq53vqv0q7yfy3r24c5vf787c5p5fk5dfsqg27zy54kzvn579rn0zg84760w0fn0sve6cc9hf96790nstmc9jh84d6282jqqsjhe648yrjqfxe2jvh38r9znrucjfpex8at9rzxqatae7tsy5u38cn8x2e7zx8dgp87kyatps2fwu85x8vvgen9095l3zraaudyq8q4r7sugg2fg95j65ealq6sr92rp4spgsgew3dphprf92ycf9w6tkvzglkr4xr2am932avrdt2c9k80zmtnmg9v349uwetp36z5najhvceqwe47mf2hhrwfk2cnrh0cxeyz6rxzw3cfp7yurzttddcswzmx9j50576xk4agf32ffwd79dtp5ghfzs7zrkfvnrc4xsrjsgx9msz37y24h7smnagj8c8mzchtqqd29hzmf9g6dur906wh308me3zffktmzhdv8p76qp6s8vg4f29ljau83m3nf6dcxcuvkgnskazljxt3urmcufvkgq8fw8wq8j6qxpns0tru7xtygj6fcmnrx7jrq629w43pec8czlcvv5gru7wlwwqyw65tlts5cax0jmsaku633gvfmuppwsggcefr89x68txegc4m74uquxh244phq4jt8vhug4m7w04zuv8fgfym4n66qksnvurw8tzqdkn8fyzltyxh79h902s978mxnpmff0fa2d7uxvqqdzdqeyatla388l654t9lgw5jrer9x6xg4xsvkhj4sxtws5z502j7lve2aw4yemhk0tq8k4k6kufcvg8y50lhmclcerpz0cadge7t89z222z97wk0ze9wpsgf2d65wed9ar39gxcs7tu9xeqqnym2y5a6ewnf

#0

(Sig)

2026-03-02

2026-06-05

X25519 + ML-KEM-768

Yes

age1pq1tsqzkdzrvvg0kyw3d3zu4ppc0p58suuex7nzza0ehw2dzy3up4vckdcnwxz9w5lw4dj2wzuydv49wv33ztcxtzr3r3meteamn0trlcqxgzerykt8q6k47wyr0ukxengm298kxptzjyncu7zw79az8wakd2makc7dkqpmvjjzqztu6r74hjv7e0hty3zh25zr0hpgnqh5t5ckvhygljkf77vvk7fkkkuc0kz85cjuxqhasjcsuycrh9gz4hxawgahhqnyxcu4d29tfk6tqhhtxpt45ys6xhyd3pe2078993yqve9ljxpu2w3wd2g69r98c9n75c4uv7sg3cdwymc2qkpuz4jekkcz894k523stqqqdg92e47jquph4n9lhqgra0r98wey3huhw37qzz0p6dvs044pen6z3dl657sz6axyk0qpq9v4zcvg07ctnqdukmrndpmdl52359s3c9gt0dmjku4zvjjy7duz8nrzvnutdnjwf0q3aufl2mmulkskc23jv9g40sa9ezpensuvuvfsdtp68qe0vze9leglm768tjtenr9yvm0xq7agjat3zg6z8k26epc7vhdp4vdf2ucj0xkrq4gq0tmng0thgh86vxacj5uk29re8xtp2znqgjw7ham9um46z2qeqc7vsek7c94cd5s092ynr54h4uxlnzqhgawafzc4lpz4hmwp08pdtrux6av6knq7gzfp3ynqx8ktqsv7c4938kagtnghyucns8pcs6n8wvx7nzp207uggkcnqm79kv6jk4vvmw9sv9cgd0uveqajz9xwss0sj9uszhcks7858xk9cthger96m2mxdqa9dkqcx23tddmz8qevt3raet7rvxgrv4j2vk76dgyspe6lpzftr5zgrk98h00jyp8lj9gkg5vr4gz4kf56rd7m02xkjca2xgv4amlj8z5q5sr52jju5lqmp3wgn8th9x5rwz0ngkrawfd0p7rc8j04x9zcjwjggcqtj79m88ccdmdrsvz4r3x8v3l7lsuaav4hsgpuqvfhkfdcjmrppkva8htjyepz0dsz0d4x5zc6tprn9j2gj4knngjhxamvztrjrd2fjxzuyp5vfet6w8cvlwqupx2z54fkn668k2ldj3rglqqehen2wppp9z0nq8fecscpngyz0x7pngrh80asv8trxc2euefkhvj4fm2h2qqd9cd9zfnrcwm4rpywved4alz9g4h0wz8f2cx685zuk9yejdemsxjvzkcqy72gqty02lwpy0dxcljzcxfpajl2y34ltpskyz8my3emzw3ljp6gvsfhtty86ad8h3g4gl62p9hg9qtvs5qe2t0fnsa9ngmsevuzjs4gn6jyagl5e0vk9zzpsd0x3pdekn9tgd85rcu4k7mmrd57jysauvv30kmpy95v5hwudgyge55x2l6ykzzfscmwqa3xh20yv2y5jdent0c3s0vtx792wsntzz58yzd4dt6vt0aqyh2g9d7ug0xperq2me6yr6mtgydxgv5zggz8njjhqs0k45th26ds33hwgfv66sruxw58evqahyedkx378vc9764nv4mgpnrcd2xpu544vkxxs3f2durhh4pa9pmp2aafz3tu9cwvf3x5gjhrjlg3ggr5565epgnhql7gvhjl39z3arx8gcut6faxrrpvwtmxzlr3geert73h2072ttke5xzfww0642t59c58a3mpsujgv3ueed6tmwd4wpxxg2c238pxtdsc9f6emgykfcqnnhcu2mq9trsk8g7l2pkvt4u0l4apfq8v894aryw8mffvjwu4df4e3h6x3jg8kwsc9jf6kd0gc58m7j6vsx9mf90dy2jlyca80wwnfxe48ax9mntpmdnc23azzs3g9cyx5hpj0kftaegjtpq75lcc5vd68mgtv4hqhgfuqjw9fsuvxe8v

File/Git Signing

OpenSSH

OpenSSH keys used to sign data outside of their validity periods should be classified as compromised. Only OpenSSH keys used within their validity periods should be trusted.

Each OpenSSH public-key is signed by the previous public-key, allowing verification of the chain-of-trust. My public-keys and their signature-files can be downloaded via their ID-links in the table below. It is strongly recommended that the entire chain be verified.

For information on how to perform OpenSSH-verification, my documentation regarding it can be consulted.

My base ALLOWED_SIGNERS-file can be used in lieu of an existing one, or its contents can be injected into another. My base ALLOWED_SIGNERS-file is signed with my latest OpenSSH public-key; the signature-file can be used to verify it.

My OpenSSH keys are rotated on an annual (52-week) basis, beginning from 2025-06-23 (key #3).

ID Validity Start Validity End Type Quantum-resistant? Public Key Fingerprint

#4

(Sig)

2026-06-22

Current

Ed25519

No

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFCJlhUEoYo24Vg224WPJNfgnZaFzCc3Pyi12eBwusjm
SHA256:VDNZwEeYF0XcZsYgE1RXcM1YfTA6Nrx7wD/z7ggswNs

#3

(Sig)

2025-06-23

2026-06-22

Ed25519

No

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHSJTj7ksjVys/nBy3H6Tn+AwJlzLG9RUAtNOBPAaEtj
SHA256:/O3c09/4f1lh4zrhFs2qvQEDda6dZbTwG9xEcj8OfWo

#2

(Sig)

2024-04-01

2025-06-23

Ed25519

No

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ7xGvfyArrAwOAzjnkPIWYmLzX4JAxjrqpzkDBMycQS
SHA256:K/a677+eHm7chi3X4s77BIpLTE9Vge1tsv+jUL5gI+Y

#1

(Sig)

2023-07-27

2024-04-01

Ed25519

No

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILHPGnrIg7dI7GUqA+lTztJSrn+7QyRceajqs4iaU8UG
SHA256:FtEVfx1CmTKMy40VwZvF4k+3TC+QhCWy+EmPRg50Nnc

#0

2023-01-01

2023-07-27

Ed25519

No

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINs8UH2hVmNSg0qKig/9ZQt07IuOHsorRfw1doEgMuJ8
SHA256:9Pl0nZ2UJacgm+IeEtLSZ4FOESgP1eKCtRflfPfdX9M
Sitemap