Define the per-project category and difficulty at the template level,
instead of manually tagging the project pages. While doing this, prefix
the tags with "category:" and "difficulty:" to make them easier to
understand.

[[!template id=project
title="Implement RFC 6056: 'Recommendations for Transport-Protocol Port Randomization'"
contact="""
[tech-net](mailto:tech-net@NetBSD.org)
"""
mentors="""
[Alistair G. Crooks](mailto:agc@NetBSD.org)
"""
category="kernel"
difficulty="easy"
duration="3 months"
description="""
When using connect(2) to connect the client end of a socket, the system will choose the next number of the socket for you. Having an easily guessed port number can allow various attacks to take place. Choosing the next port number at random, whilst not perfect, gives more protection against these attacks.
[RFC 6056](http://www.rfc-editor.org/rfc/rfc6056.txt) gives an excellent overview of the algorithms in use when "randomising source ports", giving examples from FreeBSD, OpenBSD and Linux.
This project has a number of goals:
* Evaluate and prioritise the algorithms in RFC 6056.
* Implement the algorithms in RFC 6056, and make it possible to choose between them with sysctl.
"""
]]
[[!tag gsoc]]