Skip to content

Commit 42ccdc7

Browse files
committed
feat: rewrite old release posts for more information
1 parent f951566 commit 42ccdc7

15 files changed

+2650
-314
lines changed

_posts/2018-08-20-rnp-010-released.adoc

Lines changed: 163 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -5,76 +5,204 @@ date: 2018-08-20 20:37:38 +0700
55
categories: release
66
authors:
77
- name: Ronald Tse
8+
9+
social_links:
10+
- https://github.com/ronaldtse
11+
- name: Nickolay Olshevsky
812
913
social_links:
1014
- https://github.com/ni4
1115
excerpt: >-
12-
After a year since it stemmed off NetPGP, the OpenPGP library
13-
shares little code in common with its ancestor.
14-
Enjoy new features, better performance, and better
15-
compatibility with other implementations.
16+
RNP has evolved into a powerful, modern OpenPGP library with
17+
significant improvements in features, performance, and compatibility.
18+
This release marks a major milestone in RNP's development,
19+
delivering a robust and versatile cryptographic solution.
1620
redirect_from:
1721
- /blog/08-20-2018/rnp-010-released/
1822
---
1923

2024
:cpp: C++
2125

26+
== What is RNP?
27+
2228
Meet RNP, an https://datatracker.ietf.org/doc/html/rfc4880[RFC 4880]-compliant
23-
OpenPGP library written in {cpp}.
29+
OpenPGP library written in {cpp}. As a modern implementation of the OpenPGP standard,
30+
RNP provides a robust foundation for secure communications and data protection.
31+
32+
=== Origins and development
33+
34+
RNP was born at https://www.ribose.com[Ribose] and is continuously maintained under
35+
its initiative. While it originally stemmed from NetPGP, RNP has evolved significantly
36+
through a year of active development, resulting in a complete transformation of the
37+
codebase.
38+
39+
=== Key improvements
40+
41+
The development team has:
42+
43+
* Thoroughly rewritten legacy code for modern systems
44+
* Resolved compatibility issues with GnuPG and other OpenPGP implementations
45+
* Enhanced performance across all operations
46+
* Added support for cutting-edge cryptographic features
47+
* Maintained strict RFC 4880 compliance
48+
49+
=== Licensing benefits
50+
51+
RNP stands out with its http://opensource.org/licenses/BSD-3-Clause[BSD 3-clause license],
52+
offering unique advantages for both academic and commercial projects:
2453

25-
RNP was born at Ribose and is continuously maintained under its initiative.
54+
* Intentionally non-copyleft to enable broad integration options
2655

27-
Originally stemmed from NetPGP, it now shares little in common with its
28-
ancestor after a year of active development. A thorough rewrite of legacy code,
29-
resolving compatibility issues with GnuPG and other implementations,
30-
with improved performance and added cutting-edge features.
56+
* Compatible with https://opensource.org/licenses/GPL-3.0[GPL],
57+
https://opensource.org/licenses/MPL-2.0[MPL],
58+
https://opensource.org/licenses/MIT[MIT], and most other open-source licenses
3159

32-
RNP also differs from other implementations -- it is offered under a
33-
http://opensource.org/licenses/BSD-3-Clause[BSD 3-clause license],
34-
which means it is compatible for embedded distribution within GPL,
35-
MPL, MIT and most other open-source licenses, as well as being
36-
included in commercial binary distributions.
60+
* Suitable for commercial binary distributions
3761

38-
Feel free to use RNP in your software!
62+
* Flexible embedding options in academic research and proprietary software
63+
64+
* No reciprocal licensing requirements unlike copyleft licenses
65+
66+
Whether you're developing research software, an open-source tool, or a
67+
commercial application, RNP provides a reliable, well-maintained OpenPGP
68+
implementation that you can freely integrate into your software without
69+
licensing constraints.
3970

4071

4172
== Getting started with RNP
4273

43-
If you are deploying OpenPGP in a Ruby-based application,
44-
there are bindings
74+
RNP is both a library for direct integration into applications and a set of
75+
command-line tools. You can use it in several ways:
76+
77+
=== As a library
78+
79+
If you are developing a Ruby application, there are official bindings
4580
(see https://www.rubydoc.info/github/rnpgp/ruby-rnp[ruby-rnp RubyDocs]).
4681

47-
Since RNP written in {cpp}, you can call it from Objective-C code,
48-
or with `ctypes` under Python.
82+
Since RNP is written in {cpp}, you can also integrate it directly into:
83+
84+
* C/C++ applications
85+
* Objective-C code
86+
* Python applications using `ctypes`
4987

50-
The RNP binaries `rnp` and `rnpkeys` can be installed via https://brew.sh[Homebrew]
51-
or YUM,
52-
with Debian packages coming next.
53-
You can use the binaries similarly to GnuPG's command-line tools
88+
=== As command-line tools
89+
90+
The CLI tools `rnp` and `rnpkeys` can be installed via:
91+
92+
* https://brew.sh[Homebrew] on macOS
93+
* YUM on RPM-based Linux distributions
94+
* Debian packages (coming soon)
95+
96+
These tools provide similar functionality to GnuPG's command-line interface
5497
(see supported flags and use cases in the https://github.com/rnpgp/rnp[README]).
5598

5699

57100
== Why RNP?
101+
=== True library architecture
102+
103+
RNP is designed as a proper library from the ground up, unlike GnuPG/GPGME which
104+
historically developed as a monolithic application (see
105+
https://news.ycombinator.com/item?id=5180217[GnuPG is not a library (2013)]).
106+
107+
This architectural choice means you can easily integrate RNP into your
108+
applications without wrestling with process management or complex IPC
109+
mechanisms. The library provides clean APIs that allow direct integration at the
110+
code level.
111+
112+
=== Extensive language support
113+
114+
While RNP's core is written in {cpp}, it offers seamless integration across
115+
multiple programming languages. Official
116+
https://www.rubydoc.info/github/rnpgp/ruby-rnp[Ruby bindings] are available and
117+
actively maintained. Python and Go bindings are under development, making RNP
118+
accessible to a wider range of developers. Thanks to its {cpp} foundation, you
119+
can also integrate RNP into any environment that supports native code calling
120+
conventions.
121+
122+
=== Optimized memory management
123+
124+
Built with modern {cpp}, RNP implements efficient memory management that
125+
maintains a constant memory footprint even when processing large amounts of
126+
data. This makes it particularly suitable for environments with memory
127+
constraints or when handling large encrypted files. The implementation follows
128+
best practices for secure memory handling of cryptographic material.
129+
130+
=== Comprehensive cipher support
131+
132+
RNP stands out with its extensive cryptographic algorithm support, including
133+
unique implementation of the SM algorithm family - making it one of
134+
the few OpenPGP implementations suitable for deployment in mainland China. The
135+
SM series (including SM2, SM3, and SM4) meets Chinese national standards for
136+
cryptographic algorithms, opening opportunities for applications that need to
137+
comply with Chinese regulatory requirements.
138+
139+
=== Active development and innovation
140+
141+
The project maintains an active development cycle, focusing on implementing
142+
cutting-edge cryptographic features while ensuring backwards compatibility.
143+
Regular updates bring performance improvements, security enhancements, and
144+
support for new standards as they emerge. The development team actively engages
145+
with the community and responds to security considerations in the evolving
146+
cryptographic landscape.
147+
148+
149+
== Algorithm support in RNP
150+
151+
RNP provides comprehensive support for various cryptographic algorithms, ensuring compatibility with different security requirements and standards.
152+
153+
=== Symmetric encryption
154+
155+
RNP implements a wide range of symmetric encryption algorithms, offering different security levels and performance characteristics:
156+
157+
* https://en.wikipedia.org/wiki/International_Data_Encryption_Algorithm[IDEA] - A block cipher that was once used in early versions of PGP
158+
* https://en.wikipedia.org/wiki/Triple_DES[Triple DES] - A triple-application of the DES cipher, providing additional security over single DES
159+
* https://en.wikipedia.org/wiki/CAST-128[CAST5] - A block cipher offering good performance and security for legacy systems
160+
* https://en.wikipedia.org/wiki/Blowfish_(cipher)[Blowfish] - A fast block cipher suitable for environments with limited resources
161+
* https://en.wikipedia.org/wiki/Advanced_Encryption_Standard[AES] variants (128, 192, 256-bit) - The current industry standard for symmetric encryption
162+
* https://en.wikipedia.org/wiki/Twofish[Twofish] - A highly secure alternative to AES, offering excellent performance
163+
* https://en.wikipedia.org/wiki/Camellia_(cipher)[Camellia] variants (128, 192, 256-bit) - A cipher widely used in Japan and compatible with many international standards
164+
* https://en.wikipedia.org/wiki/SM4_(cipher)[SM4] - The Chinese national standard block cipher, essential for applications requiring Chinese regulatory compliance
165+
166+
=== Symmetric encryption modes
167+
168+
RNP supports multiple encryption modes that provide different security properties:
58169

59-
* It is a proper library, in contrast to GnuPG/GPGME (see https://news.ycombinator.com/item?id=5180217[GnuPG is not a library (2013)]).
170+
* CFB (Cipher Feedback) - A traditional mode that converts block ciphers into stream ciphers
171+
* AEAD-EAX - An authenticated encryption mode providing both confidentiality and authenticity
172+
* AEAD-OCB - A high-performance authenticated encryption mode offering parallel processing capabilities
60173

61-
* Ruby bindings are available with Python & Go bindings in the works, and you can use it wherever you can call {cpp} code.
174+
=== Hash functions
62175

63-
* Implemented in {cpp} and offers constant memory footprint with large amounts of data.
176+
RNP implements various cryptographic hash functions for different use cases:
64177

65-
* It offers comprehensive cipher support, including (uniquely) the SM algorithm family -- a desirable feature if you deploy cryptography in mainland Chinese market.
178+
* MD5 - While cryptographically broken, maintained for legacy compatibility
179+
* SHA1 - Maintained for backwards compatibility with older systems
180+
* https://en.wikipedia.org/wiki/RIPEMD[RIPEMD160] - A hash function developed in Europe as an open alternative
181+
* SHA-2 family (SHA-224, SHA-256, SHA-384, SHA-512) - The current industry standard hash functions providing different security levels
182+
* https://en.wikipedia.org/wiki/SM3_(hash_function)[SM3] - The Chinese national standard hash function, required for Chinese market compliance
66183

67-
* Active development and focused on adding cutting-edge features.
184+
=== Asymmetric cryptography
68185

186+
RNP supports a comprehensive set of public-key algorithms:
69187

70-
== Which algorithms does RNP support?
188+
* https://en.wikipedia.org/wiki/RSA_(cryptosystem)[RSA] - The widely-used public-key cryptosystem for encryption and digital signatures
189+
* https://en.wikipedia.org/wiki/ElGamal_encryption[ElGamal] - An asymmetric algorithm particularly useful for encryption operations
190+
* https://en.wikipedia.org/wiki/Digital_Signature_Algorithm[DSA] - The Digital Signature Algorithm, including support for key sizes beyond 1024 bits (DSA2)
191+
* https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm[ECDSA]/ECDH - Elliptic curve cryptography offering strong security with shorter key lengths
192+
* https://en.wikipedia.org/wiki/EdDSA[EdDSA] - Modern elliptic curve signatures providing high security and performance
193+
* https://en.wikipedia.org/wiki/SM2_(cryptography)[SM2] - The Chinese national standard for public-key cryptography, essential for Chinese market compliance
71194

72-
The following ciphers, encryption modes and hash functions are supported:
73195

74-
* Symmetric: IDEA, Triple DES, CAST5, Blowfish, AES-128, AES-192, AES-256, Twofish, Camellia-128, Camellia-192, Camellia-256, SM4
196+
== Summary
75197

76-
* Symmetric encryption modes: CFB, AEAD-EAX, AEAD-OCB
198+
RNP stands out as a unique solution in the OpenPGP ecosystem by combining:
77199

78-
* Hash: MD5, SHA1, RIPEMD160, SHA-256, SHA-384, SHA-512, SHA-224, SM3
200+
* True library architecture enabling direct integration without IPC overhead
201+
* High-performance implementation in modern {cpp}
202+
* BSD 3-clause license allowing both open-source and commercial use
203+
* Comprehensive algorithm support including Chinese SM standards
204+
* Active development with regular updates and security improvements
79205

80-
* Asymmetric: RSA, ElGamal, DSA, so-called DSA2 (i.e. DSA with keys larger then 1024 bits), ECDSA/ECDH (with some subset of curves which later on will be expanded), EdDSA, SM2.
206+
Whether you're building an open-source tool or a commercial application, RNP
207+
offers a reliable, high-performance OpenPGP implementation that seamlessly
208+
integrates into your software stack.

0 commit comments

Comments
 (0)