]> Cypherpunks.ru repositories - gogost.git/blob - www.texi
PKA key distribution is over
[gogost.git] / www.texi
1 \input texinfo
2 @documentencoding UTF-8
3 @settitle GoGOST
4
5 @copying
6 Copyright @copyright{} 2015-2018 @email{stargrave@@stargrave.org, Sergey Matveev}
7 @end copying
8
9 @node Top
10 @top GoGOST
11
12 Pure Go GOST cryptographic functions library.
13 GOST is GOvernment STandard of Russian Federation (and Soviet Union).
14 It is
15 @url{https://www.gnu.org/philosophy/pragmatic.html, copylefted}
16 @url{https://www.gnu.org/philosophy/free-sw.html, free software}:
17 licenced under @url{https://www.gnu.org/licenses/gpl-3.0.html, GPLv3+}.
18 You can read about GOST algorithms @url{http://gost.cypherpunks.ru/, more}.
19
20 Currently supported algorithms are:
21
22 @itemize
23 @item GOST 28147-89 (@url{https://tools.ietf.org/html/rfc5830.html, RFC 5830})
24     block cipher with ECB, CNT (CTR), CFB, MAC,
25     CBC (@url{https://tools.ietf.org/html/rfc4357.html, RFC 4357})
26     modes of operation
27 @item various 28147-89-related S-boxes included
28 @item GOST R 34.11-94 hash function
29     (@url{https://tools.ietf.org/html/rfc5831.html, RFC 5831})
30 @item GOST R 34.11-2012 Стрибог (Streebog) hash function
31     (@url{https://tools.ietf.org/html/rfc6986.html, RFC 6986})
32 @item GOST R 34.10-2001
33     (@url{https://tools.ietf.org/html/rfc5832.html, RFC 5832})
34     public key signature function
35 @item GOST R 34.10-2012
36     (@url{https://tools.ietf.org/html/rfc7091.html, RFC 7091})
37     public key signature function
38 @item various 34.10 curve parameters included
39 @item VKO GOST R 34.10-2001 key agreement function
40     (@url{https://tools.ietf.org/html/rfc4357.html, RFC 4357})
41 @item VKO GOST R 34.10-2012 key agreement function
42     (@url{https://tools.ietf.org/html/rfc7836.html, RFC 7836})
43 @item GOST R 34.12-2015 128-bit block cipher Кузнечик (Kuznechik)
44     (@url{https://tools.ietf.org/html/rfc7801.html, RFC 7801})
45 @item GOST R 34.13-2015 padding methods
46 @end itemize
47
48 Please send questions, bug reports and patches to
49 @url{https://lists.cypherpunks.ru/mailman/listinfo/gost, gost}
50 mailing list. Announcements also go to this mailing list.
51
52 @insertcopying
53
54 @node News
55 @unnumbered News
56
57 @table @strong
58
59 @item 2.0
60     @itemize
61     @item 34.11-2012 is split on two different modules:
62         @code{gost34112012256} and @code{gost34112012512}
63     @item 34.11-94's digest is reversed. Now it is compatible with TC26's
64       HMAC and PBKDF2 test vectors
65     @item @code{gogost-streebog} is split to @code{streebog256} and
66         @code{streebog512} correspondingly by analogy with sha* utilities
67     @item added VKO 34.10-2012 support with corresponding test vectors
68     @item @code{gost3410.DigestSizeX} is renamed to
69         @code{gost3410.ModeX} because it is not related to digest size,
70         but parameters and key sizes
71     @item KEK functions take @code{big.Int} UKM value. Use @code{NewUKM}
72         to unmarshal raw binary UKM
73     @end itemize
74
75 @item 1.1
76     @itemize
77     @item gogost-streebog is able to use either 256 or 512 bits digest size
78     @item 34.13-2015 padding methods
79     @item 28147-89 CBC mode of operation
80     @end itemize
81
82 @end table
83
84 @node Download
85 @unnumbered Download
86
87 Preferable way is to download tarball with the signature from
88 website and, for example, run tests with benchmarks:
89
90 @verbatim
91 % wget http://gogost.cypherpunks.ru/gogost-1.1.tar.xz
92 % wget http://gogost.cypherpunks.ru/gogost-1.1.tar.xz.sig
93 % gpg --verify gogost-1.1.tar.xz.sig gogost-1.1.tar.xz
94 % xz -d < gogost-1.1.tar.xz | tar xf -
95 % make -C gogost-1.1 all bench
96 % echo hello world | ./gogost-1.1/streebog256
97 f72018189a5cfb803dbe1f2149cf554c40093d8e7f81c21e08ac5bcd09d9934d
98 @end verbatim
99
100 And then you can include its source code in your project for example
101 like this:
102
103 @verbatim
104 % mkdir -p myproj/src
105 % export GOPATH=$PWD/myproj
106 % cd myproj/src
107 % cat > main.go <<EOF
108 package main
109
110 import (
111     "encoding/hex"
112     "fmt"
113
114     "cypherpunks.ru/gogost/gost34112012256"
115 )
116
117 func main() {
118     h := gost34112012256.New()
119     h.Write([]byte("hello world"))
120     fmt.Println(hex.EncodeToString(h.Sum(nil)))
121 }
122 EOF
123 % cp -r ../../gogost-1.1/src/cypherpunks.ru .
124 % go run main.go
125 c600fd9dd049cf8abd2f5b32e840d2cb0e41ea44de1c155dcd88dc84fe58a855
126 @end verbatim
127
128 @multitable {XXXXX} {XXXX KiB} {link sign} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}
129 @headitem Version @tab Size @tab Tarball @tab SHA256 checksum @tab Streebog-256 checksum
130
131 @item 2.0 @tab 39 KiB
132 @tab @url{gogost-2.0.tar.xz, link} @url{gogost-2.0.tar.xz.sig, sign}
133 @tab @code{28E8C15C 0EC5CC2A 47A8CCDA DF9EADB5 E46970AA FB7FAAF3 AA250FFC 79CE57F7}
134 @tab @code{e2858b9c1e7834663838c44b9b9ebbd1f37e5b85ceba5698b6fb5d180e071710}
135
136 @item 1.2 @tab 34 KiB
137 @tab @url{gogost-1.2.tar.xz, link} @url{gogost-1.2.tar.xz.sig, sign}
138 @tab @code{B894D0E4 923F0361 8A33A360 65AE860F FCFAF8F5 42A82D71 EA0A0BA7 7BC99093}
139 @tab @code{fc6d3533e28d356398877674b6ee18954581c7f46832a5cf994ae243ab00ddf5}
140
141 @item 1.1 @tab 33 KiB
142 @tab @url{gogost-1.1.tar.xz, link} @url{gogost-1.1.tar.xz.sig, sign}
143 @tab @code{26D37912 6FE220C1 C0381835 DEFFDC4B BDCDC394 15D6E9C1 F8A5A302 04F9452B}
144 @tab @code{313fa58c2c030dd5acd20b524842bd2d4ec7403fcfca2a4a238ddc187c3ef0df}
145
146 @end multitable
147
148 You @strong{have to} verify downloaded tarballs integrity and
149 authenticity to be sure that you retrieved trusted and untampered
150 software. @url{https://www.gnupg.org/, The GNU Privacy Guard} is used
151 for that purpose.
152
153 For the very first time it is necessary to get signing public key and
154 import it. It is provided below, but you should check alternative
155 resources.
156
157 @verbatim
158 pub   rsa2048/0x82343436696FC85A 2016-09-13 [SC]
159       CEBD 1282 2C46 9C02 A81A  0467 8234 3436 696F C85A
160 uid   GoGOST releases <gogost at cypherpunks dot ru>
161 @end verbatim
162
163 @itemize
164
165 @item @url{https://lists.cypherpunks.ru/mailman/listinfo/gost, gost} maillist
166
167 @item
168 @verbatim
169 % gpg --keyserver hkp://keys.gnupg.net/ --recv-keys 0x82343436696FC85A
170 % gpg --auto-key-locate dane --locate-keys gogost at cypherpunks dot ru
171 % gpg --auto-key-locate wkd --locate-keys gogost at cypherpunks dot ru
172 @end verbatim
173
174 @item
175 @verbatiminclude PUBKEY.asc
176
177 @end itemize
178
179 You can obtain development source code by cloning
180 @url{http://git-scm.com/, Git}
181 @url{https://git.cypherpunks.ru/cgit.cgi/gogost.git/}.
182
183 @bye