<div dir="ltr"><div class="gmail_default" style="font-family:monospace,monospace"><span style="font-size:12.8px">Thanks...</span><br style="font-size:12.8px"><br style="font-size:12.8px"><span style="font-size:12.8px">But, i can't update to openssl 1.1 yet, I have a lot of daemons and others dependencies using libssl.</span><br style="font-size:12.8px"><br style="font-size:12.8px"><span style="font-size:12.8px">If I update, i will need to recompile and maybe debug those daemons.</span><br style="font-size:12.8px"><br style="font-size:12.8px"><span style="font-size:12.8px">So, i will continue to use the changes I have made.</span><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-11-25 13:16 GMT-03:00 W.C.A. Wijngaards via Unbound-users <span dir="ltr"><<a href="mailto:unbound-users@unbound.net" target="_blank">unbound-users@unbound.net</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">-----BEGIN PGP SIGNED MESSAGE-----<br>
Hash: SHA256<br>
<br>
Hi Luiz,<br>
<br>
I have fixed that it uses less CPU.  It needs openssl 1.1, and sets<br>
the security level to 0, and then uses no encryption (that means, even<br>
less CPU than dh1024 was using) over the unix socket.  The changes are<br>
committed to the code repository.<br>
<br>
Best regards, Wouter<br>
<div><div class="h5"><br>
On 10/11/16 05:02, Luiz Fernando Softov via Unbound-users wrote:<br>
> ​​ Hi all.<br>
><br>
> I have a custom daemon ​ in C​ , that connect to unbound (remove<br>
> control) ​​ and get stats ​​ , using stat_noreset.<br>
><br>
> ​Using this I can create real ​-​ time stats, in interface, like ​<br>
> ​<a href="http://prntscr.com/d5cecc" rel="noreferrer" target="_blank">http://prntscr.com/d5cecc</a> ​<br>
><br>
> ​So, a fter unbound 1.5.8 (eg: 1.5.9, 1.5.10) ​, using calls like<br>
> unbound-control does,​ the use of CPU increase significantly.<br>
><br>
> And, it's increase de CPU of both daemons unbound and my daemon.<br>
><br>
> ​I was thinking this is because SSL. Because I was using 1.0.1,<br>
> and unbound in ports (freebrs), force to install openssl 1.0.2.<br>
><br>
> ​But, s ince I'm in loopback (localhost), ​and, ​ I'm using<br>
><br>
> ​ control-use-cert: no ​<br>
><br>
> ​I think this problem was introduced after the version i was using<br>
> before (1.5.3).​<br>
><br>
><br>
> After some research, ​reinstall​ openSSL ​ (this is hard, because i<br>
> need to recompile a lot of daemons after this)​ , ​ my daemon (of<br>
> course), use another machine, etc. ​ ​ I found ​ this​ :<br>
><br>
> - ​ [bugzilla: 770 ] - ​F​ ix Small subgroup attack on DH used in<br>
> unix pipe on localhost if unbound ​ ​ control uses a unix local<br>
> named pipe.<br>
><br>
> So, i get the source of 1.5.10, and make some changes to do like<br>
> before, in 1.5.8.<br>
><br>
> I put back in daemon/remote.c the get_dh1024() ​ function ​ ​(​<br>
> With some changes, if/else like in source of 1.5.10 ​)​ .<br>
><br>
> Then, is work well, the cpu is 0%, with the daemon calling<br>
> stat_noreset each second.<br>
><br>
> You can try this, calling unbound-anchor stats_noreset, more than<br>
> you call, more the CPU get high.<br>
><br>
> This change ​, in ​ bugzilla 770 ​,​ is really necessary? ​<br>
><br>
><br>
> I also ready the last comment.<br>
><br>
> ​- ​ This is not a security issue.  The control socket is intended<br>
> to be protected only by Unix file and directory permissions.  The<br>
> only reason why the connection is encrypted is that there is no<br>
> clean separation in the code and adding support for an unencrypted<br>
> control connection would have required a huge amount of<br>
> refactoring.<br>
><br>
> Since this is not a secure issue, and this can increase CPU without<br>
> need.<br>
><br>
> The daemon and unbound are in the same machine, in a custom<br>
> release, where the user can't have access, and can't do anything.<br>
><br>
><br>
> Maybe a change in unbound, to get a new unbound.conf, to not use<br>
> SSL at all (i know this is hard to be done) or make it to consume<br>
> less CPU, alternates to use between 1024 or 2048. This is the first<br>
> time I am reading unbound source, and I not know much about<br>
> libssl.<br>
><br>
> But, in this case, i need a way to chose between security and<br>
> performance.<br>
><br>
> ​ps, I also recommend to do a if before calling SSL_CTX_set_tmp_dh<br>
> ​, to check if get_dh is called right.​<br>
><br>
><br>
> ​ ​ ​ dh = ​ get_dh1024(); ​​<br>
><br>
> ​​ if (dh == NULL) {<br>
><br>
> ​ log_crypto_err("Failed to get DH params");<br>
><br>
> ​ daemon_remote_delete(rc); return NULL; ​​ }<br>
><br>
> ​ if(!SSL_CTX_set_tmp_dh(rc-><wbr>ctx, dh)) {​<br>
><br>
><br>
><br>
><br>
><br>
> ​​<br>
><br>
><br>
><br>
><br>
<br>
</div></div>-----BEGIN PGP SIGNATURE-----<br>
Version: GnuPG v2<br>
<br>
iQIcBAEBCAAGBQJYOGPhAAoJEJ9vHC<wbr>1+BF+NJ88P/<wbr>3MKnqe0gOs9FLSNpiiHiLR9<br>
Amyts5HNAHp5MuaRGISuuDMFtBTBzG<wbr>7Hin0fIFYZpTpmHow03MwiE4VBVsQy<wbr>sDR2<br>
nurBOoL2h7r0lwowh0oJxYLnOVdqHk<wbr>JgSFmTxdeGV2tPctC0Tm8p49bQA1J0<wbr>UOBM<br>
BzfJpd+VbCMz1UR+OUCeEf5RdfNK6+<wbr>ZG0bofLch1xqH2JyFRZWsY0e/<wbr>ZfuCMBCj0<br>
BZ0WMbv8gKr1rIpojUtt70gJCths6p<wbr>8gRa0wmhpAaLf5WVln2KbfBaUvA3ZB<wbr>IFE6<br>
R21xUqMyZJFDtb6uLKR7oE0FU5p5UH<wbr>BloCqCFgJsxcLrfpRVOnGCilzFuKww<wbr>7p+K<br>
TwE1aGQGjotdRy1SGFBqJx+<wbr>zfMCvMMmTYG2lafwCILeJXxVwkzB9T<wbr>L53t905j0+z<br>
dpjlz79wAYQ6WoO7B8zBxh+<wbr>qTWNHm436Lltdy2goehoVnwcKA6DcK<wbr>Np/U+2KQCIm<br>
JVaI0I7Bbb9fMEkVgORxpArDiDnQah<wbr>0H/AEE2v7NRp87+J/68/mcRpSf2/<wbr>lXtwPr<br>
GWxNItQcx7BhPhm4N1n5xj5/<wbr>HITjg5Kprq+RfQewfbi+<wbr>tyoAR5oBjUu5cotagnfA<br>
Yfv3+<wbr>p0DO5Rrign9ZPQWKorGw3TuasPVi2/<wbr>2QtsezuQFy4mCiTKed1t0z0TtXDjh<br>
nN3X+k7f1YRy0Zs5Z0v4<br>
=CZum<br>
-----END PGP SIGNATURE-----<br>
</blockquote></div><br></div>