[BACK]Return to innovations.html CVS log [TXT][DIR] Up to [local] / www

Annotation of www/innovations.html, Revision 1.67

1.1       schwarze    1: <!DOCTYPE html>
1.34      schwarze    2: <html lang="en">
1.1       schwarze    3: <head>
                      4: <meta charset="UTF-8"/>
1.33      tj          5: <title>OpenBSD: Innovations</title>
1.31      deraadt     6: <meta name="viewport" content="width=device-width, initial-scale=1">
                      7: <link rel="stylesheet" type="text/css" href="openbsd.css">
1.35      tb          8: <link rel="canonical" href="https://www.openbsd.org/innovations.html">
1.1       schwarze    9: </head>
                     10:
1.31      deraadt    11: <body bgcolor= "#ffffff" text= "#000000">
                     12:
                     13: <h2>
1.59      job        14:     <a href="index.html">
                     15:         <i><font color="#0000ff">Open</font></i><font color="#000084">BSD</font></a>
                     16:     <font color="#e00000">Innovations</font>
1.32      tj         17: </h2>
1.31      deraadt    18: <hr>
1.32      tj         19: <p>
1.59      job        20:     This is a list of software and ideas developed or maintained by the OpenBSD
                     21:     project, sorted in order of approximate introduction. Some of them are
                     22:     explained in detail in our <a href="events.html">research papers</a>.
                     23: </p>
1.32      tj         24: <hr>
1.1       schwarze   25:
1.59      job        26: <h3>Concepts</h3>
1.1       schwarze   27:
                     28: <ul>
1.59      job        29:     <li>
                     30:         <a href="https://man.openbsd.org/ipsec.4">ipsec(4)</a>:
                     31:         Started by John Ioannidis, Angelos D. Keromytis, Niels Provos, and
                     32:         Niklas Hallqvist, imported February 20, 1997.  OpenBSD was the first
                     33:         free operating system to provide an IPSec stack.
                     34:     </li>
                     35:     <li>
                     36:         <a href="https://man.openbsd.org/inet6.4">inet6(4)</a>:
                     37:         First complete integration and adoption of IPv6 led by
                     38:         "Itojun" (Dr. Junichiro Hagino) [WIDE/KAME], Craig Metz [NRL], and
                     39:         Angelos D. Keromytis starting Jan 6, 1999.
                     40:         Almost fully operational Jun 6, 1999 during the
                     41:         <a href="hackathons.html">first OpenBSD hackathon</a>.
                     42:         OpenBSD 2.7.
                     43:     </li>
                     44:     <li>
                     45:         <strong>Privilege separation</strong>:
                     46:         First implemented by
                     47:         <a href="http://www.citi.umich.edu/u/provos/ssh/privsep.html">Niels Provos</a>
                     48:         and Markus Friedl in OpenSSH in March 2002, released with OpenBSD 3.2.
                     49:         The concept is now used in many OpenBSD programs, for example
                     50:         <a href="https://man.openbsd.org/bgpd.8">bgpd(8)</a>,
                     51:         <a href="https://man.openbsd.org/dhclient.8">dhclient(8)</a>,
                     52:         <a href="https://man.openbsd.org/dhcpd.8">dhcpd(8)</a>,
                     53:         <a href="https://man.openbsd.org/dvmrpd.8">dvmrpd(8)</a>,
                     54:         <a href="https://man.openbsd.org/eigrpd.8">eigrpd(8)</a>,
                     55:         <a href="https://man.openbsd.org/file.1">file(1)</a>,
                     56:         <a href="https://man.openbsd.org/httpd.8">httpd(8)</a>,
                     57:         <a href="https://man.openbsd.org/iked.8">iked(8)</a>,
                     58:         <a href="https://man.openbsd.org/ldapd.8">ldapd(8)</a>,
                     59:         <a href="https://man.openbsd.org/ldpd.8">ldpd(8)</a>,
                     60:         <a href="https://man.openbsd.org/mountd.8">mountd(8)</a>,
                     61:         <a href="https://man.openbsd.org/npppd.8">npppd(8)</a>,
                     62:         <a href="https://man.openbsd.org/ntpd.8">ntpd(8)</a>,
                     63:         <a href="https://man.openbsd.org/ospfd.8">ospfd(8)</a>,
                     64:         <a href="https://man.openbsd.org/ospf6d.8">ospf6d(8)</a>,
                     65:         <a href="https://man.openbsd.org/pflogd.8">pflogd(8)</a>,
                     66:         <a href="https://man.openbsd.org/radiusd.8">radiusd(8)</a>,
1.67    ! schwarze   67:         <a href="https://man.openbsd.org/relayd.8">relayd(8)</a>,
1.59      job        68:         <a href="https://man.openbsd.org/ripd.8">ripd(8)</a>,
                     69:         <a href="https://man.openbsd.org/script.1">script(1)</a>,
                     70:         <a href="https://man.openbsd.org/smtpd.8">smtpd(8)</a>,
                     71:         <a href="https://man.openbsd.org/syslogd.8">syslogd(8)</a>,
                     72:         <a href="https://man.openbsd.org/tcpdump.8">tcpdump(8)</a>,
                     73:         <a href="https://man.openbsd.org/tmux.1">tmux(1)</a>,
                     74:         <a href="https://man.openbsd.org/xconsole.1">xconsole(1)</a>,
                     75:         <a href="https://man.openbsd.org/xdm.1">xdm(1)</a>,
                     76:         <a href="https://man.openbsd.org/Xserver.1">Xserver(1)</a>,
                     77:         <a href="https://man.openbsd.org/ypldap.8">ypldap(8)</a>,
                     78:         <a href="https://man.openbsd.org/pkg_add.1">pkg_add(1)</a>,
                     79:         etc.
                     80:     </li>
                     81:     <li>
                     82:         <strong>Privilege revocation</strong>:
                     83:         Related to the work on privilege separation, some programs were refactored
                     84:         to drop privileges while holding onto a tricky resource such as a raw socket,
                     85:         reserved port, or modification-locked bpf(4) descriptor,
                     86:         for example
                     87:         <a href="https://man.openbsd.org/ping.8">ping(8)</a>,
                     88:         <a href="https://man.openbsd.org/traceroute.8">traceroute(8)</a>,
                     89:         etc.
                     90:     </li>
                     91:     <li>
                     92:         <strong>Stack protector</strong>:
                     93:         Developed since 2001 as "propolice" by Hiroaki Etoh. Integrated, and
                     94:         implemented for additional hardware platforms, by Miod Vallat and Theo
                     95:         de Raadt.  OpenBSD 3.3 was the first operating system to enable it
                     96:         systemwide by default.
                     97:     </li>
                     98:     <li>
                     99:         <strong>W^X</strong>:
                    100:         First used for sparc, sparc64, alpha, and hppa in OpenBSD 3.3.
                    101:         Strictly enforced by default since OpenBSD 6.0: a program can only
                    102:         violate it if the executable is marked with <code>PT_OPENBSD_WXNEEDED</code>
                    103:         and it is located on a filesystem mounted with the <code>wxallowed</code>
                    104:         <a href="https://man.openbsd.org/mount.8">mount(8)</a> option.
                    105:     </li>
                    106:     <li>
                    107:         <strong>GOT and PLT protection</strong> by ld.so:
                    108:         first done as part of the W^X work in OpenBSD 3.3, by Dale Rahn and
                    109:         Theo de Raadt. The GOT and PLT regions are read-only outside of ld.so
                    110:         itself. Extended to the .init/.fini sections (constructors and
                    111:         destructors) in OpenBSD 3.4.
                    112:     </li>
                    113:     <li>
                    114:         <strong>ASLR</strong>:
                    115:         OpenBSD 3.4 was the first widely used operating system to
                    116:         provide it by default.
                    117:     </li>
                    118:     <li>
                    119:         <a href="https://man.openbsd.org/gcc-local.1">gcc-local(1)</a>
                    120:         __attribute__((__bounded__)) static analysis annotation
                    121:         and checking mechanism:
                    122:         Started by Anil Madhavapeddy on June 26, 2003
                    123:         and ported to GCC 4 by Nicholas Marriott.
                    124:         First released with OpenBSD 3.4.
                    125:     </li>
                    126:     <li>
                    127:         <a href="https://man.openbsd.org/malloc.3">malloc(3)</a>
                    128:         randomization implemented by Thierry Deval. Guard pages and randomized (delayed) free added by Ted Unangst.
                    129:         Reimplemented by <a href="papers/eurobsdcon2009/otto-malloc.pdf">Otto Moerbeek</a>
                    130:         for OpenBSD 4.4.
                    131:     </li>
                    132:     <li>
1.65      kurt      133:         <strong>Position-independent executables (PIE)</strong>:
1.59      job       134:         OpenBSD 5.3 was the first widely used operating system to enable it
                    135:         globally by default, on seven hardware platforms.
1.65      kurt      136:         Implemented in November 2008 by
                    137:         <a href="https://www.openbsd.org/papers/nycbsdcon08-pie/">Kurt Miller</a>
                    138:         and enabled by default by
                    139:         <a href="https://www.openbsd.org/papers/asiabsdcon2015-pie-slides.pdf">Pascal Stumpf</a>
                    140:         in August 2012.
1.59      job       141:     </li>
                    142:     <li>
                    143:         <strong>Random-data memory</strong>:
                    144:         the ability to specify that a variable should be initialized at load
                    145:         time with random byte values was implemented in OpenBSD 5.3 by Matthew
                    146:         Dempsky.
                    147:     </li>
                    148:     <li>
                    149:         <strong>Stack protector per shared object</strong>:
                    150:         using the random-data memory feature, each shared object was given its
                    151:         own stack protector cookie in OpenBSD 5.3 by Matthew Dempsky.
                    152:     </li>
                    153:     <li>
                    154:         <strong>Static-PIE</strong>:
                    155:         Position-independent static binaries for /bin, /sbin and ramdisks.
1.65      kurt      156:         Implemented for OpenBSD 5.7 by Kurt Miller and Mark Kettenis.
1.59      job       157:     </li>
                    158:     <li>
                    159:         <strong>SROP</strong>
                    160:         (<a href="https://man.openbsd.org/sigreturn.2">sigreturn(2)</a>
                    161:         oriented programming) mitigation: Researched by
                    162:         <a href="http://www.cs.vu.nl/~herbertb/papers/srop_sp14.pdf">Eric Bosman</a>
                    163:         and Herbert Bos in 2014, implemented by Theo de Raadt in May 2016,
                    164:         enabled by default since OpenBSD 6.0.
                    165:     </li>
                    166:     <li>
                    167:         <strong>Library order randomization</strong>:
                    168:         In <a href="https://man.openbsd.org/rc.8">rc(8)</a>, re-link
                    169:         <code>libc.so</code>, <code>libcrypto</code>, and <code>ld.so</code>
                    170:         on startup, placing the objects in a random order.
                    171:         Theo de Raadt and Robert Peichaer, May 2016,
                    172:         enabled by default since OpenBSD 6.0 and 6.2.
                    173:     </li>
                    174:     <li>
                    175:         Kernel-assisted lazy-binding for W^X safety in multi-threaded programs.
                    176:         A new syscall <a href="https://man.openbsd.org/kbind.2">kbind(2)</a>
                    177:         permits lazy-binding to be W^X safe in multi-threaded programs.
                    178:         Implemented for OpenBSD 5.9 by Philip Guenther in July 2015.
                    179:     </li>
                    180:     <li>
                    181:         Process layouts in memory tightened to remove execute permission from
                    182:         all segmented, non-instruction data and to remove write permission from
                    183:         data that is only modified during loading and relocation.
                    184:         By combining the RELRO (Read-Only after Relocation) design from the
                    185:         GNU project with the original ASLR work from OpenBSD 3.3 and
                    186:         strict lazy-binding work from OpenBSD 5.9, this is applied to not
                    187:         just a subset of programs and libraries but rather to all programs
                    188:         and libraries.
                    189:         Implemented for OpenBSD 6.1 by Philip Guenther in August 2016.
                    190:     </li>
                    191:     <li>
                    192:         Use of <strong>fork+exec in privilege separated programs</strong>. The
                    193:         strategy is to give each process a fresh &amp; unique address space for
                    194:         ASLR, stack protector -- as protection against address space discovery attacks.
                    195:         Implemented first by
                    196:         Damien Miller (<a href="https://man.openbsd.org/sshd.8">sshd(8)</a> 2004),
                    197:         Claudio Jeker (<a href="https://man.openbsd.org/bgpd.8">bgpd(8)</a>, 2015),
                    198:         Eric Faurot (<a href="https://man.openbsd.org/smtpd.8">smtpd(8)</a>, 2016),
                    199:         Rafael Zalamena (various, 2016), and others.
                    200:     </li>
                    201:     <li>
                    202:         <strong>trapsleds</strong>:
                    203:         Reduction of incidental NOP instructions/sequences in the instruction
                    204:         stream which could be useful potentially for ROP attack methods to
                    205:         innaccurately target gadgets. These NOP sequences are converted into
                    206:         trap sequences where possible. Todd Mortimer and Theo de Raadt, June
                    207:         2017.
                    208:     </li>
                    209:     <li>
                    210:         <strong>Kernel relinking at boot</strong>:
                    211:         the .o files of the kernel are relinked in random order from a
                    212:         link-kit, before every reboot. This provides substantial interior
                    213:         randomization in the kernel's text and data segments for layout and
                    214:         relative branches/calls.  Basically a unique address space for each
                    215:         kernel boot, similar to the userland fork+exec model described above
                    216:         but for the kernel.  Theo de Raadt, June 2017.
                    217:     </li>
1.61      deraadt   218:     <li>
                    219:        Rearranged i386/amd64 register allocator order in
                    220:        <a href="https://man.openbsd.org/clang.1">clang(1)</a>
                    221:        to reduce polymorphic RET instructions:
                    222:        Todd Mortimer, November 20, 2017.
                    223:     </li>
1.64      deraadt   224:     <li>
1.66      schwarze  225:        <b>MAP_STACK</b> addition to
1.64      deraadt   226:        <a href="https://man.openbsd.org/mmap.2">mmap(2)</a>
                    227:        allows opportunistic verification that the stack-register
                    228:        points at stack memory, therefore catching pivots to non-stack
                    229:        memory (sometimes used in ROP attacks).
                    230:        Theo de Raadt, April 12, 2018.
                    231:     </li>
1.17      mlarkin   232: </ul>
1.1       schwarze  233:
1.59      job       234: <h3>Functions</h3>
1.1       schwarze  235:
                    236: <ul>
1.59      job       237:     <li>
1.62      tj        238:         <a href="https://man.openbsd.org/issetugid.2">issetugid(2)</a>:
                    239:         Theo de Raadt, August 25, 1996, OpenBSD 2.0
                    240:     </li>
1.63      schwarze  241:     <li>
1.59      job       242:         <a href="https://man.openbsd.org/arc4random.3">arc4random(3)</a>:
                    243:         David Mazieres, December 28, 1996, OpenBSD 2.1
                    244:     </li>
                    245:     <li>
                    246:         <a href="https://man.openbsd.org/bcrypt.3">bcrypt(3)</a>:
                    247:         Implemented by <a href="https://www.usenix.org/legacy/events/usenix99/provos/provos_html/node1.html">Niels Provos and David Mazieres</a>
                    248:         Imported February 13, 1997 and first released with OpenBSD 2.1.
                    249:     </li>
                    250:     <li>
                    251:         <a href="https://man.openbsd.org/strlcpy.3">strlcpy(3)</a>,
                    252:         <a href="https://man.openbsd.org/strlcat.3">strlcat(3)</a>:
                    253:         Todd Miller and Theo de Raadt, July 1, 1998, OpenBSD 2.4
                    254:     </li>
                    255:     <li>
                    256:         <a href="https://man.openbsd.org/strtonum.3">strtonum(3)</a>:
                    257:         Ted Unangst, Todd Miller, and Theo de Raadt, May 3, 2004, OpenBSD 3.6
                    258:     </li>
                    259:     <li>
                    260:         <a href="https://man.openbsd.org/imsg_init.3">imsg</a>:
                    261:         Message passing API, written by Henning Brauer.
                    262:         In libutil since May 26, 2010, OpenBSD 4.8;
                    263:         used by various daemons before that.
                    264:     </li>
                    265:     <li>
                    266:         <a href="https://man.openbsd.org/timingsafe_bcmp.3">timingsafe_bcmp(3)</a>:
                    267:         Damien Miller, July 13, 2010, OpenBSD 4.9
                    268:     </li>
                    269:     <li>
                    270:         <a href="https://man.openbsd.org/explicit_bzero.3">explicit_bzero(3)</a>:
                    271:         Ted Unangst and Matthew Dempsky, January 22, 2014, OpenBSD 5.5
                    272:     </li>
                    273:     <li>
                    274:         <a href="https://man.openbsd.org/ohash_init.3">ohash</a>:
                    275:         Written and maintained by Marc Espie.
                    276:         In libutil since May 12, 2014, OpenBSD 5.6;
                    277:         used by make(1) and m4(1) before that.
                    278:     </li>
                    279:     <li>
                    280:         <a href="https://man.openbsd.org/asr_run.3">asr</a>:
                    281:         Replacement resolver written and maintained by Eric Faurot.
                    282:         Imported April 14, 2012; activated on March 26, 2014, OpenBSD 5.6.
                    283:     </li>
                    284:     <li>
                    285:         <a href="https://man.openbsd.org/reallocarray.3">reallocarray(3)</a>:
                    286:         Theo de Raadt and Ted Unangst, April 22, 2014, OpenBSD 5.6
                    287:     </li>
                    288:     <li>
                    289:         <a href="https://man.openbsd.org/getentropy.2">getentropy(2)</a>:
                    290:         Matthew Dempsky and Theo de Raadt, June 13, 2014, OpenBSD 5.6
                    291:     </li>
                    292:     <li>
                    293:         <a href="https://man.openbsd.org/sendsyslog.2">sendsyslog(2)</a>:
                    294:         Theo de Raadt, July 10, 2014, OpenBSD 5.6
                    295:     </li>
                    296:     <li>
                    297:         <a href="https://man.openbsd.org/timingsafe_memcmp.3">timingsafe_memcmp(3)</a>:
                    298:         Matthew Dempsky, July 13, 2014, OpenBSD 5.6
                    299:     </li>
                    300:     <li>
                    301:         <a href="https://man.openbsd.org/pledge.2">pledge(2)</a>:
                    302:         Theo de Raadt, July 19, 2015, OpenBSD 5.9
                    303:     </li>
                    304:     <li>
                    305:         <a href="https://man.openbsd.org/getpwnam_shadow.3">getpwnam_shadow(3)</a>,
                    306:         <a href="https://man.openbsd.org/getpwuid_shadow.3">getpwuid_shadow(3)</a>:
                    307:         Ted Unangst and Theo de Raadt, November 18, 2015, OpenBSD 5.9
                    308:     </li>
                    309:     <li>
                    310:         <a href="https://man.openbsd.org/recallocarray.3">recallocarray(3)</a>:
                    311:         Otto Moerbeek, Joel Sing and Theo de Raadt, March 6, 2017, OpenBSD 6.1
                    312:     </li>
                    313:     <li>
                    314:         <a href="https://man.openbsd.org/freezero.3">freezero(3)</a>:
                    315:         Otto Moerbeek, April 10, 2017, OpenBSD 6.2
1.60      deraadt   316:     </li>
1.16      deraadt   317: </ul>
                    318:
1.59      job       319:
                    320: <h3>Programs and subsystems</h3>
1.16      deraadt   321:
                    322: <ul>
1.59      job       323:     <li>
                    324:         <a href="https://man.openbsd.org/ypbind.8">ypbind(8)</a>,
                    325:         <a href="https://man.openbsd.org/ypset.8">ypset(8)</a>,
                    326:         <a href="https://man.openbsd.org/ypcat.1">ypcat(1)</a>,
                    327:         <a href="https://man.openbsd.org/ypmatch.1">ypmatch(1)</a>,
                    328:         <a href="https://man.openbsd.org/ypwhich.1">ypwhich(1)</a>,
                    329:         and libc support: Started by Theo de Raadt.
                    330:         Imported April 26, 1993 and first released with NetBSD 0.9.
                    331:     </li>
                    332:     <li>
                    333:         <a href="https://man.openbsd.org/ypserv.8">ypserv(8)</a>:
                    334:         Started by Mats O. Jansson in 1994.
                    335:         Imported October 23, 1995 and first released with OpenBSD 2.0.
                    336:     </li>
                    337:     <li>
                    338:         <a href="https://man.openbsd.org/mopd.8">mopd(8)</a>:
                    339:         Started by Mats O. Jansson in 1993.
                    340:         Imported September 21, 1996 and first released with OpenBSD 2.0.
                    341:     </li>
                    342:     <li>
                    343:         <a href="anoncvs.html">AnonCVS</a>:
                    344:         Designed and implemented by Chuck Cranor and Theo de Raadt in 1995
                    345:         (<a href="papers/anoncvs-paper.pdf">paper</a>,
                    346:         <a href="papers/anoncvs-slides.pdf">slides</a>)
                    347:     </li>
                    348:     <li>
                    349:         <a href="https://man.openbsd.org/aucat.1">aucat(1)</a>:
                    350:         Started by Kenneth Stailey.
                    351:         Imported January 2, 1997 and first released with OpenBSD 2.1.
                    352:         Now maintained by Alexandre Ratchov.
                    353:     </li>
                    354:     <li>
                    355:         <a href="https://www.openssh.com/">OpenSSH</a>
                    356:         including <a href="https://man.openbsd.org/ssh.1">ssh(1)</a>,
                    357:         <a href="https://man.openbsd.org/scp.1">scp(1)</a>,
                    358:         <a href="https://man.openbsd.org/sftp.1">sftp(1)</a>,
                    359:         <a href="https://man.openbsd.org/ssh-add.1">ssh-add(1)</a>,
                    360:         <a href="https://man.openbsd.org/ssh-agent.1">ssh-agent(1)</a>,
                    361:         <a href="https://man.openbsd.org/ssh-keygen.1">ssh-keygen(1)</a>,
                    362:         <a href="https://man.openbsd.org/sshd.8">sshd(8)</a>,
                    363:         <a href="https://man.openbsd.org/sftp-server.8">sftp-server(8)</a>:
                    364:         Started by Aaron Campbell, Bob Beck, Dug Song, Markus Friedl,
                    365:         Niels Provos, and Theo de Raadt
                    366:         as a fork of SSH 1.2.12 by Tatu Ylonen.
                    367:         Imported September 26, 1999 and first released with OpenBSD 2.6.
                    368:         Now maintained by Markus Friedl, Damien Miller, Darren Tucker, and
                    369:         Theo de Raadt.
                    370:     </li>
                    371:     <li>
                    372:         <a href="https://man.openbsd.org/mg.1">mg(1)</a>:
                    373:         Started by Dave Conroy in November 1986.
                    374:         Imported February 25, 2000 and first released with OpenBSD 2.7.
                    375:         Now maintained by Mark Lumsden.
                    376:     </li>
                    377:     <li>
                    378:         <a href="https://man.openbsd.org/m4.1">m4(1)</a>:
                    379:         Originally implemented by Ozan Yigit and Richard A. O'Keefe for 4.3BSD-Reno.
                    380:         Considerably extended and maintained by Marc Espie since 1999.
                    381:     </li>
                    382:     <li>
                    383:         <a href="https://man.openbsd.org/pf.4">pf(4)</a>,
                    384:         <a href="https://man.openbsd.org/pfctl.8">pfctl(8)</a>,
                    385:         <a href="https://man.openbsd.org/pflogd.8">pflogd(8)</a>,
                    386:         <a href="https://man.openbsd.org/authpf.8">authpf(8)</a>,
                    387:         <a href="https://man.openbsd.org/ftp-proxy.8">ftp-proxy(8)</a>:
                    388:         Started by Daniel Hartmeier as a replacement for the non-free ipf by
                    389:         Darren Reed. Imported June 24, 2001 and first released with OpenBSD
                    390:         3.0. Now maintained by Henning Brauer.
                    391:     </li>
                    392:     <li>
                    393:         <a href="https://man.openbsd.org/OpenBSD-5.9/systrace.4">systrace(4)</a>,
                    394:         <a href="https://man.openbsd.org/OpenBSD-5.9/systrace.1">systrace(1)</a>:
                    395:         Started by Niels Provos.
                    396:         Imported June 4, 2002 and first released with OpenBSD 3.2.
                    397:         Deleted after OpenBSD 5.9 because
                    398:         <a href="https://man.openbsd.org/pledge.2">pledge(2)</a> is even better.
                    399:     </li>
                    400:     <li>
                    401:         <a href="https://man.openbsd.org/spamd.8">spamd(8)</a>:
                    402:         Written by Bob Beck. Imported December 21, 2002 and first released with
                    403:         OpenBSD 3.3.
                    404:     </li>
                    405:     <li>
                    406:         <a href="https://man.openbsd.org/dc.1">dc(1)</a>:
                    407:         Written and maintained by Otto Moerbeek.
                    408:         Imported September 19, 2003 and first released with OpenBSD 3.5.
                    409:     </li>
                    410:     <li>
                    411:         <a href="https://man.openbsd.org/bc.1">bc(1)</a>:
                    412:         Written and maintained by Otto Moerbeek.
                    413:         Imported September 25, 2003 and first released with OpenBSD 3.5.
                    414:     </li>
                    415:     <li>
                    416:         <a href="https://man.openbsd.org/sensorsd.8">sensorsd(8)</a>:
                    417:         Started by Henning Brauer.
                    418:         Imported September 24, 2003 and first released with OpenBSD 3.5.
                    419:         Reworked by Constantine A. Murenin.
                    420:     </li>
                    421:     <li>
                    422:         <a href="https://man.openbsd.org/pkg_add.1">pkg_add(1)</a>:
                    423:         Written and maintained by Marc Espie.
                    424:         Imported October 16, 2003 and first released with OpenBSD 3.5.
                    425:     </li>
                    426:     <li>
                    427:         <a href="https://man.openbsd.org/carp.4">carp(4)</a>:
                    428:         Written by Mickey Shalayeff, Markus Friedl, Marco Pfatschbacher,
                    429:         and Ryan McBride.
                    430:         Imported October 17, 2003 and first released with OpenBSD 3.5.
                    431:     </li>
                    432:     <li>
                    433:         <a href="http://www.openbgpd.org/">OpenBGPD</a>
                    434:         including <a href="https://man.openbsd.org/bgpd.8">bgpd(8)</a>
                    435:         and <a href="https://man.openbsd.org/bgpctl.8">bgpctl(8)</a>:
                    436:         Written and maintained by Henning Brauer and Claudio Jeker,
                    437:         and also maintained by Peter Hessler.
                    438:         Imported December 17, 2003 and first released with OpenBSD 3.5.
                    439:     </li>
                    440:     <li>
                    441:         <a href="https://man.openbsd.org/dhclient.8">dhclient(8)</a>:
                    442:         Started by Ted Lemon and Elliot Poger in 1996.
                    443:         Imported January 18, 2004 and first released with OpenBSD 3.5.
                    444:         Reworked by Henning Brauer.
                    445:         Now maintained by Kenneth Westerback.
                    446:     </li>
                    447:     <li>
                    448:         <a href="https://man.openbsd.org/dhcpd.8">dhcpd(8)</a>:
                    449:         Started by Ted Lemon in 1995.
                    450:         Imported April 13, 2004 and first released with OpenBSD 3.6.
                    451:         Reworked by Henning Brauer.
                    452:         Now maintained by Kenneth Westerback.
                    453:     </li>
                    454:     <li>
                    455:         <a href="https://man.openbsd.org/hotplugd.8">hotplugd(8)</a>:
                    456:         Started by Alexander Yurchenko.
                    457:         Imported May 30, 2004 and first released with OpenBSD 3.6.
                    458:     </li>
                    459:     <li>
                    460:         <a href="http://www.openntpd.org/">OpenNTPD</a>
                    461:         including <a href="https://man.openbsd.org/ntpd.8">ntpd(8)</a>
                    462:         and <a href="https://man.openbsd.org/ntpctl.8">ntpctl(8)</a>:
                    463:         Written and maintained by Henning Brauer.
                    464:         Imported May 31, 2004 and first released with OpenBSD 3.6.
                    465:         Portable version maintained by Brent Cook.
                    466:     </li>
                    467:     <li>
                    468:         <a href="https://man.openbsd.org/dpb.1">dpb(1)</a>:
                    469:         Started by Nikolay Sturm on August 10, 2004; first available for OpenBSD 3.6.
                    470:         Rewritten and maintained by Marc Espie since August 20, 2010.
                    471:     </li>
                    472:     <li>
                    473:         <a href="https://man.openbsd.org/ospfd.8">ospfd(8)</a>,
                    474:         <a href="https://man.openbsd.org/ospfctl.8">ospfctl(8)</a>:
                    475:         Started by Esben Norby and Claudio Jeker.
                    476:         Imported January 28, 2005 and first released with OpenBSD 3.7.
                    477:     </li>
                    478:     <li>
                    479:         <a href="https://man.openbsd.org/ifstated.8">ifstated(8)</a>:
                    480:         Started by Marco Pfatschbacher and Ryan McBride.
                    481:         Imported January 23, 2004 and first released with OpenBSD 3.8.
                    482:     </li>
                    483:     <li>
                    484:         <a href="https://man.openbsd.org/bioctl.8">bioctl(8)</a>:
                    485:         Started by Marco Peereboom.
                    486:         Imported March 29, 2005 and first released with OpenBSD 3.8.
                    487:     </li>
                    488:     <li>
                    489:         <a href="https://man.openbsd.org/hostapd.8">hostapd(8)</a>:
                    490:         Written and maintained by Reyk Floeter.
                    491:         Imported May 26, 2005 and first released with OpenBSD 3.8.
                    492:     </li>
                    493:     <li>
                    494:         <a href="https://man.openbsd.org/watchdogd.8">watchdogd(8)</a>:
                    495:         Started by Marc Balmer.
                    496:         Imported August 8, 2005 and first released with OpenBSD 3.8.
                    497:     </li>
                    498:     <li>
                    499:         <a href="https://man.openbsd.org/sdiff.1">sdiff(1)</a>:
                    500:         Written by Ray Lai.
                    501:         Imported December 27, 2005 and first released with OpenBSD 3.9.
                    502:     </li>
                    503:     <li>
                    504:         <a href="https://man.openbsd.org/dvmrpd.8">dvmrpd(8)</a>,
                    505:         <a href="https://man.openbsd.org/dvmrpctl.8">dvmrpctl(8)</a>:
                    506:         Started by Esben Norby.
                    507:         Imported June 1, 2006 and first released with OpenBSD 4.0.
                    508:     </li>
                    509:     <li>
                    510:         <a href="https://man.openbsd.org/ripd.8">ripd(8)</a>,
                    511:         <a href="https://man.openbsd.org/ripctl.8">ripctl(8)</a>:
                    512:         Started by Michele Marchetto.
                    513:         Imported October 18, 2006 and first released with OpenBSD 4.1.
                    514:     </li>
                    515:     <li>
                    516:         <a href="https://man.openbsd.org/pkg-config.1">pkg-config(1)</a>:
                    517:         Started by Chris Kuethe and Marc Espie.
                    518:         Imported November 27, 2006 and first released with OpenBSD 4.1.
                    519:         Now maintained by Jasper Lievisse Adriaanse.
                    520:     </li>
                    521:     <li>
                    522:         <a href="https://man.openbsd.org/relayd.8">relayd(8)</a>
                    523:         with <a href="https://man.openbsd.org/relayctl.8">relayctl(8)</a>:
                    524:         Started by Pierre-Yves Ritschard and Reyk Floeter.
                    525:         Imported December 16, 2006 and first released with OpenBSD 4.1.
                    526:         Now maintained by Reyk Floeter and Sebastian Benoit.<br/>
                    527:     </li>
                    528:     <li>
                    529:         <a href="https://man.openbsd.org/cwm.1">cwm(1)</a>:
                    530:         Started by <a href="http://monkey.org/~marius/cwm/README">Marius
                    531:             Aamodt Eriksen</A> in 2004.
                    532:         Imported April 27, 2007 and first released with OpenBSD 4.2.
                    533:         Now maintained by Okan Demirmen.
                    534:         <a href="https://github.com/chneukirchen/cwm">Portable version</a>
                    535:         maintained by Leah Neukirchen.
                    536:     </li>
                    537:     <li>
                    538:         <a href="https://man.openbsd.org/ospf6d.8">ospf6d(8)</a>,
                    539:         <a href="https://man.openbsd.org/ospf6ctl.8">ospf6ctl(8)</a>:
                    540:         Started by Esben Norby and Claudio Jeker.
                    541:         Imported October 8, 2007 and first released with OpenBSD 4.2.
                    542:     </li>
                    543:     <li>
                    544:         <a href="https://man.openbsd.org/libtool.1">libtool(1)</a>:
                    545:         Written by Steven Mestdagh and Marc Espie.
                    546:         Imported October 28, 2007 and first available for OpenBSD 4.3.
                    547:         Now maintained by Marc Espie, Jasper Lievisse Adriaanse,
                    548:         and Antoine Jacoutot.
                    549:     </li>
                    550:     <li>
                    551:         <a href="https://man.openbsd.org/snmpd.8">snmpd(8)</a>,
                    552:         <a href="https://man.openbsd.org/snmpctl.8">snmpctl(8)</a>:
                    553:         Started by Reyk Floeter.
                    554:         Imported December 5, 2007 and first released with OpenBSD 4.3.
                    555:         Maintained by Reyk Floeter and Bret Lambert.
                    556:     </li>
                    557:     <li>
                    558:         <a href="https://man.openbsd.org/sysmerge.8">sysmerge(8)</a>:
                    559:         Written and maintained by Antoine Jacoutot,
                    560:         originally forked from mergemaster by Douglas Barton.
                    561:         Imported April 22, 2008, first released with OpenBSD 4.4.
                    562:     </li>
                    563:     <li>
                    564:         <a href="https://man.openbsd.org/ypldap.8">ypldap(8)</a>:
                    565:         Started by Pierre-Yves Ritschard.
                    566:         Imported June 26, 2008 and first released with OpenBSD 4.4.
                    567:     </li>
                    568:     <li>
                    569:         <a href="https://www.opensmtpd.org/">OpenSMTPD</a>
                    570:         including <a href="https://man.openbsd.org/smtpd.8">smtpd(8)</a>,
                    571:         <a href="https://man.openbsd.org/smtpctl.8">smtpctl(8)</a>,
                    572:         <a href="https://man.openbsd.org/makemap.8">makemap(8)</a>:
                    573:         Started by Gilles Chehade.
                    574:         Imported November 1, 2008 and first released with OpenBSD 4.6.
                    575:         Now maintained by Gilles Chehade and Eric Faurot.
                    576:     </li>
                    577:     <li>
                    578:         <a href="http://tmux.github.io/">tmux</a>,
                    579:         <a href="https://man.openbsd.org/tmux.1">tmux(1)</a>:
                    580:         Started in 2007 and maintained by Nicholas Marriott.
                    581:         Imported June 1, 2009, first released with OpenBSD 4.6.
                    582:     </li>
                    583:     <li>
                    584:         <a href="https://man.openbsd.org/ldpd.8">ldpd(8)</a>,
                    585:         <a href="https://man.openbsd.org/ldpctl.8">ldpctl(8)</a>:
                    586:         Started by Michele Marchetto.
                    587:         Imported June 1, 2009 and first released with OpenBSD 4.6.
                    588:         Now maintained by Claudio Jeker.
                    589:     </li>
                    590:     <li>
                    591:         <a href="http://mdocml.bsd.lv/">mandoc</a>
                    592:         including <a href="https://man.openbsd.org/mandoc.1">mandoc(1)</a>,
                    593:         <a href="https://man.openbsd.org/man.1">man(1)</a>,
                    594:         <a href="https://man.openbsd.org/apropos.1">apropos(1)</a>,
                    595:         <a href="https://man.openbsd.org/makewhatis.8">makewhatis(8)</a>,
1.67    ! schwarze  596:         <a href="https://man.openbsd.org/man.cgi.8">man.cgi(8)</a>:
1.59      job       597:         Started by Kristaps Dzonsons in November 2008.
                    598:         Imported April 6, 2009, first released with OpenBSD 4.8.
                    599:         Now maintained by Ingo Schwarze.
                    600:     </li>
                    601:     <li>
                    602:         <a href="https://man.openbsd.org/ldapd.8">ldapd(8)</a>,
                    603:         <a href="https://man.openbsd.org/ldapctl.8">ldapctl(8)</a>:
                    604:         Written by Martin Hedenfalk.
                    605:         Imported May 31, 2010 and first released with OpenBSD 4.8.
                    606:     </li>
                    607:     <li>
                    608:         <a href="http://www.openiked.org/">OpenIKED</a>
                    609:         including <a href="https://man.openbsd.org/iked.8">iked(8)</a>
                    610:         and <a href="https://man.openbsd.org/ikectl.8">ikectl(8)</a>:
                    611:         Started by Reyk Floeter.
                    612:         Imported June 3, 2010 and first released with OpenBSD 4.8.
                    613:         Now maintained by Reyk Floeter and Mike Belopuhov.
                    614:     </li>
                    615:     <li>
                    616:         <a href="https://man.openbsd.org/iscsid.8">iscsid(8)</a>,
                    617:         <a href="https://man.openbsd.org/iscsictl.8">iscsictl(8)</a>:
                    618:         Written and maintained by Claudio Jeker.
                    619:         Imported September 24, 2010 and first released with OpenBSD 4.9.
                    620:     </li>
                    621:     <li>
                    622:         <a href="https://man.openbsd.org/rc.d.8">rc.d(8)</a>,
                    623:         <a href="https://man.openbsd.org/rc.subr.8">rc.subr(8)</a>:
                    624:         Written and maintained by Robert Nagy and Antoine Jacoutot.
                    625:         Imported October 26, 2010 and first released with OpenBSD 4.9.
                    626:     </li>
                    627:     <li>
                    628:         <a href="https://man.openbsd.org/tftpd.8">tftpd(8)</a>:
                    629:         Written and maintained by David Gwynne.
                    630:         Imported March 2, 2012 and first released with OpenBSD 5.2.
                    631:     </li>
                    632:     <li>
                    633:         <a href="https://man.openbsd.org/npppd.8">npppd(8)</a>,
                    634:         <a href="https://man.openbsd.org/npppctl.8">npppctl(8)</a>:
                    635:         Started by Internet Initiative Japan Inc.
                    636:         Imported January 11, 2010, first released with OpenBSD 5.3.
                    637:         Maintained by YASUOKA Masahiko.
                    638:     </li>
                    639:     <li>
                    640:         <a href="https://man.openbsd.org/ldomd.8">ldomd(8)</a>,
                    641:         <a href="https://man.openbsd.org/ldomctl.8">ldomctl(8)</a>:
                    642:         Written and maintained by Mark Kettenis.
                    643:         Imported October 26, 2012 and first released with OpenBSD 5.3.
                    644:     </li>
                    645:     <li>
                    646:         <a href="https://man.openbsd.org/sndiod.8">sndiod(8)</a>:
                    647:         Written and maintained by Alexandre Ratchov.
                    648:         Imported November 23, 2012 and first released with OpenBSD 5.3.
                    649:     </li>
                    650:     <li>
                    651:         <a href="https://man.openbsd.org/cu.1">cu(1)</a>:
                    652:         Written and maintained by Nicholas Marriott.
                    653:         Imported July 10, 2012 and first released with OpenBSD 5.4.
                    654:     </li>
                    655:     <li>
                    656:         <a href="https://man.openbsd.org/identd.8">identd(8)</a>:
                    657:         Written and maintained by David Gwynne.
                    658:         Imported March 18, 2013 and first released with OpenBSD 5.4.
                    659:     </li>
                    660:     <li>
                    661:         <a href="https://man.openbsd.org/slowcgi.8">slowcgi(8)</a>:
                    662:         Written and maintained by Florian Obser.
                    663:         Imported May 23, 2013 and first released with OpenBSD 5.4.
                    664:     </li>
                    665:     <li>
                    666:         <a href="https://man.openbsd.org/signify.1">signify(1)</a>:
                    667:         Written and maintained by <a href="http://www.tedunangst.com/flak/post/signify">Ted Unangst</a>.
                    668:         Imported December 31, 2013 and first released with OpenBSD 5.5.
                    669:     </li>
                    670:     <li>
                    671:         <a href="https://man.openbsd.org/htpasswd.1">htpasswd(1)</a>:
                    672:         Written and maintained by Florian Obser.
                    673:         Imported March 17, 2014 and first released with OpenBSD 5.6.
                    674:     </li>
                    675:     <li>
                    676:         <a href="https://www.libressl.org/">LibreSSL</a>:
                    677:         Started by Ted Unangst, Bob Beck, Joel Sing, Miod Vallat, Philip Guenther,
                    678:         and Theo de Raadt on April 13, 2014, as a fork of OpenSSL 1.0.1g.
                    679:         First released with OpenBSD 5.6.
                    680:         Portable version maintained by Brent Cook.
                    681:     </li>
                    682:     <li>
                    683:         <a href="https://man.openbsd.org/httpd.8">httpd(8)</a>:
                    684:         Started by Reyk Floeter.
                    685:         Imported July 12, 2014 and first released with OpenBSD 5.6.
                    686:         Maintained by Reyk Floeter and Florian Obser.
                    687:     </li>
                    688:     <li>
                    689:         <a href="https://man.openbsd.org/rcctl.8">rcctl(8)</a>:
                    690:         Written and maintained by Antoine Jacoutot.
                    691:         Imported August 19, 2014 and first released with OpenBSD 5.7.
                    692:     </li>
                    693:     <li>
                    694:         <a href="https://man.openbsd.org/file.1">file(1)</a>:
                    695:         Rewritten from scratch and maintained by Nicholas Marriott.
                    696:         Imported April 24, 2015 and first released with OpenBSD 5.8.
                    697:     </li>
                    698:     <li>
                    699:         <a href="https://man.openbsd.org/doas.1">doas(1)</a>:
                    700:         Written and maintained by Ted Unangst.
                    701:         Imported July 16, 2015 and first released with OpenBSD 5.8.
                    702:     </li>
                    703:     <li>
                    704:         <a href="https://man.openbsd.org/radiusd.8">radiusd(8)</a>:
                    705:         Written and maintained by YASUOKA Masahiko.
                    706:         Imported July 21, 2015 and first released with OpenBSD 5.8.
                    707:     </li>
                    708:     <li>
                    709:         <a href="https://man.openbsd.org/eigrpd.8">eigrpd(8)</a>,
                    710:         <a href="https://man.openbsd.org/eigrpctl.8">eigrpctl(8)</a>:
                    711:         Written and maintained by Renato Westphal.
                    712:         Imported October 2, 2015 and first released with OpenBSD 5.9.
                    713:     </li>
                    714:     <li>
                    715:         <a href="https://man.openbsd.org/rebound.8">rebound(8)</a>:
                    716:         Written and maintained by Ted Unangst.
                    717:         Imported October 15, 2015 and first released with OpenBSD 5.9.
                    718:     </li>
                    719:     <li>
                    720:         <a href="https://man.openbsd.org/vmm.4">vmm(4)</a>,
                    721:         <a href="https://man.openbsd.org/vmd.8">vmd(8)</a>,
                    722:         <a href="https://man.openbsd.org/vmctl.8">vmctl(8)</a>:
                    723:         Written and maintained by Mike Larkin and Reyk Floeter.
                    724:         Imported November 13, 2015 and first released with OpenBSD 5.9.
                    725:     </li>
                    726:     <li>
                    727:         <a href="https://man.openbsd.org/pdisk.8">pdisk(8)</a>:
                    728:         Originally written by Eryk Vershen in 1996-1998,
                    729:         rewritten and maintained by Kenneth Westerback since January 11, 2016
                    730:         and first released with OpenBSD 5.9.
                    731:     </li>
                    732:     <li>
                    733:         <a href="https://man.openbsd.org/mknod.8">mknod(8)</a>:
                    734:         Original version from Version 6 AT&amp;T UNIX (1975),
                    735:         last rewritten by Marc Espie on March 5, 2016
                    736:         and first released with OpenBSD 6.0.
                    737:     </li>
                    738:     <li>
                    739:         <a href="https://man.openbsd.org/audioctl.1">audioctl(1)</a>:
                    740:         Originally written by Lennart Augustsson in 1997,
                    741:         rewritten and maintained by Alexandre Ratchov since June 21, 2016
                    742:         and first released with OpenBSD 6.0.
                    743:     </li>
                    744:     <li>
                    745:         <a href="https://man.openbsd.org/switchd.8">switchd(8)</a>,
                    746:         <a href="https://man.openbsd.org/switchctl.8">switchctl(8)</a>:
                    747:         Written and maintained by Reyk Floeter.
                    748:         Imported July 19, 2016; released with OpenBSD 6.1.
                    749:     </li>
                    750:     <li>
                    751:         <a href="https://man.openbsd.org/acme-client.1">acme-client(1)</a>:
                    752:         Written by Kristaps Dzonsons, imported August 31, 2016; released
                    753:         with OpenBSD 6.1.
                    754:     </li>
                    755:     <li>
                    756:         <a href="https://man.openbsd.org/syspatch.8">syspatch(8)</a>:
                    757:         Written and maintained by Antoine Jacoutot.
                    758:         Imported September 5, 2016; released with OpenBSD 6.1.
                    759:     </li>
                    760:     <li>
                    761:         <a href="https://man.openbsd.org/ping.8">ping(8)</a>:
                    762:         Restructured to include IPv6 functionality and maintained by Florian Obser.
                    763:         The separate
                    764:         <a href="https://man.openbsd.org/OpenBSD-6.0/ping6.8">ping6(8)</a>
                    765:         was superseded on September 17, 2016,
                    766:         and the new, combined version was released with OpenBSD 6.1.
                    767:     </li>
                    768:     <li>
                    769:         <a href="https://man.openbsd.org/xenodm.1">xenodm(1)</a>:
                    770:         Cleaned-up fork of
                    771:         <a href="https://man.openbsd.org/OpenBSD-6.0/xdm.1">xdm(1)</a>
                    772:         maintained by Matthieu Herrb.
                    773:         Imported October 23, 2016; released with OpenBSD 6.1.
                    774:     </li>
                    775:     <li>
                    776:         <a href="https://man.openbsd.org/ocspcheck.8">ocspcheck(8)</a>:
                    777:         Written and maintained by Bob Beck.
                    778:         Imported January 24, 2017; released with OpenBSD 6.1.
                    779:     </li>
                    780:     <li>
                    781:         <a href="https://man.openbsd.org/slaacd.8">slaacd(8)</a>:
                    782:         Written and maintained by Florian Obser.
                    783:         Imported March 18, 2017; released with OpenBSD 6.2.
1.66      schwarze  784:     </li>
                    785:     <li>
                    786:         <a href="https://man.openbsd.org/rad.8">rad(8)</a>:
                    787:         Written and maintained by Florian Obser.
                    788:         Imported July 10, 2018.
1.59      job       789:     </li>
1.1       schwarze  790: </ul>
                    791:
1.11      deraadt   792: <h3>Projects maintained by OpenBSD developers outside OpenBSD</h3>
1.1       schwarze  793:
                    794: <ul>
1.59      job       795:     <li>
                    796:         <a href="http://www.sudo.ws/">sudo</a>:
                    797:         Started by Bob Coggeshall and Cliff Spencer around 1980.
                    798:         Imported November 18, 1999, first released with OpenBSD 2.7.
                    799:         Now maintained by Todd Miller.
                    800:     </li>
                    801:     <li>
                    802:         <a href="http://bulabula.org/femail/">femail</a>:
                    803:         Written and maintained by Henning Brauer.
                    804:         Started in 2005, port available since September 22, 2005.
                    805:     </li>
                    806:     <li>
                    807:         <a href="http://www.midish.org/">midish</a>:
                    808:         Written and maintained by Alexandre Ratchov.
                    809:         Started in 2003, port available since November 4, 2005.
                    810:     </li>
                    811:     <li>
                    812:         <a href="https://github.com/nicm/fdm">fdm</a>:
                    813:         Written and maintained by Nicholas Marriott.
                    814:         Started in 2006, port available since January 18, 2007.
                    815:     </li>
                    816:     <li>
                    817:         <a href="https://github.com/ajacoutot/toad/">toad</a>:
                    818:         Written and maintained by Antoine Jacoutot.
                    819:         Started in 2013, port available since October 8, 2013.
                    820:     </li>
                    821:     <li>
                    822:         <a href="http://jasperla.github.io/portroach/">portroach</a>:
                    823:         Written and maintained by Jasper Lievisse Adriaanse,
                    824:         originally forked from FreeBSD's portscout.
                    825:         Started in 2014, port available since September 5, 2014.
                    826:     </li>
                    827:     <li>
                    828:         <a href="https://github.com/yasuoka/cvs2gitdump">cvs2gitdump</a>:
                    829:         Written and maintained by YASUOKA Masahiko.
                    830:         Started in 2012, port available since August 1, 2016.
                    831:     </li>
1.1       schwarze  832: </ul>
                    833:
                    834: </body>
                    835: </html>