-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

Here's the summary of the previous IRC meeting.

- ---

COMMUNITY MEETING

Place: #openvpn-devel on irc.freenode.net
List-Post: openvpn-devel@lists.sourceforge.net
Date: Monday 29th Dec 2014
Time: 20:00 CET (19:00 UTC)

Planned meeting topics for this meeting were on this page:

<https://community.openvpn.net/openvpn/wiki/Topics-2014-12-29>

Next meeting has not been scheduled but will be on the same weekday and
time. Your local meeting time is easy to check from services such as

<http://www.timeanddate.com/worldclock>

SUMMARY

cron2, jamesyonan, mattock. plaisthos, segoon and syzzer participated
in this meeting.

- ---

Discussed the "​Add Mac OS X keychain support" patch:

<http://thread.gmane.org/gmane.network.openvpn.devel/9320>

Agreed that it's best to keep this functionality outside OpenVPN core.
In practice this means integrating the functionality with the de facto
OpenVPN GUI for MacOS X, Tunnelblick. Segoon, the patch author, will
take a stab it this new approach.

.--

Briefly discussed the "Make OpenVPN set routes on Windows Vista and
later" patchset:

<http://thread.gmane.org/gmane.network.openvpn.devel/9237>

This topic could not be covered in depth as d12fk was not present. It
was decided to revisit this topic later when d12fk is present and when
the changes have been reviewed in more depth (in two weeks or so).
Mattock will provide experimental Windows installers with this
patchset after the code has passed initial review.

- ---

Discussed the "Openvpn with cryptodev on FreeBSD does not work" patch:

<https://community.openvpn.net/openvpn/ticket/480>

The patch can't be included as-is, because it will break existing
OpenVPN configurations. Syzzer will try to find a cleaner solution to
the problem.

- ---

Full chatlog is attached.

- --
Samuli Seppänen
Community Manager
OpenVPN Technologies, Inc

irc freenode net: mattock

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iEYEARECAAYFAlShvjQACgkQwp2X7RmNIqOpNACfR70gFBY3FkZbB2Lp9RVj6ZFi
CDYAnj/sgP09PvoUJdf8GIO7bS4YiIQa
=NJ7D
-----END PGP SIGNATURE-----
(20.50.39) segoon: hi, I'm Vasily Kulikov, the author of OS X keychain patch
(20.51.30) syzzer: segoon: hi!
(20.53.14) mattock: hi segoon!
(20.53.51) mattock: is d12fk here today?
(20.54.24) mattock: I don't know if James will be present, but he has not 
responded to my emails
(20.54.29) mattock: he might be on vacation
(21.00.58) mattock: ok, meeting time
(21.01.01) mattock: who is here?
(21.01.13) ***syzzer reporting in
(21.02.04) syzzer: haven't seen dazo for a while, he's not even in the channel?
(21.02.05) cron2: yo
(21.02.08) mattock: hi cron2!
(21.02.17) mattock: d12fk?
(21.03.38) cron2: haven't seen him in a while
(21.03.53) syzzer: plaisthos: we need you for osx stuff!
(21.05.37) mattock: no word from James, so I suppose he's not coming
(21.05.43) mattock: I'll shoot him an email just in case
(21.08.05) mattock: sent
(21.09.28) mattock: I think the current attendees are what we'll get today
(21.09.33) mattock: shall we start?
(21.09.41) jamesyonan [~jamesy...@c-67-166-32-18.hsd1.co.comcast.net] è entrato 
nella stanza.
(21.09.41) modalità (+o jamesyonan) da ChanServ
(21.09.59) cron2: hi james :)
(21.10.08) jamesyonan: hi cron2
(21.10.11) syzzer: I'll poke plaisthos on whatsapp, but I think we can start in 
the mean while
(21.10.29) mattock: hi james!
(21.10.35) mattock: let's begin
(21.10.42) mattock: ok, so today's agenda: 
https://community.openvpn.net/openvpn/wiki/Topics-2014-12-29
(21.10.43) vpnHelper: Title: Topics-2014-12-29 – OpenVPN Community (at 
community.openvpn.net)
(21.11.12) plaisthos: syzzer: YEAH i HAVE TIME
(21.11.18) mattock: first topic is segoon's patch: 
​http://thread.gmane.org/gmane.network.openvpn.devel/9320/focus=9346 ("Add Mac 
OS X keychain support")
(21.11.20) vpnHelper: Title: Gmane Loom (at thread.gmane.org)
(21.11.23) mattock: plaisthos: :)
(21.11.23) plaisthos: sorry for caps
(21.11.41) mattock: plaisthos: I thought you got annoyed about being pulled to 
the meeting :P
(21.11.48) syzzer: oh, nvm :p
(21.12.17) mattock: jamesyonan: doesn't OpenVPN Connect have OS X keychain 
support?
(21.12.58) jamesyonan: yes it does, but it's implemented by the Connect 
management interface client
(21.13.12) mattock: any thoughts on segoon's approach in general?
(21.13.27) jamesyonan: overall the patch seems okay
(21.14.04) plaisthos: I unfortenately had not really time to look into it yet 
in detail
(21.14.25) mattock: the patch is pretty big, but only seems to add stuff, not 
touch existing things
(21.14.31) mattock: mostly
(21.14.52) syzzer: in general I'd say this should preferably be implemented 
outside of the openvpn core, but since we already have windows in there too we 
might move those out later on if we really want that
(21.15.27) segoon: the number of changes to the old code is limited to "if 
(keychain arg is set) { ... }"
(21.15.45) cron2: there are a few bits in there that look unrelated, like the 
patch to compat.h
(21.16.58) jamesyonan: I think the more modern thinking about keychain support 
is to have the keychain ops be implemented outside the core in the app-level 
process (like a UI) that is controlling the OpenVPN daemon
(21.17.47) jamesyonan: because then the user can use their own user-level 
keychain, rather than having to use the keychain that is accessible to the 
OpenVPN daemon which is probably running in root/admin context
(21.19.32) segoon: jamesyonan: OpenVPN under Tunnelblick is started under root, 
but it has an access to the user's keychain
(21.20.05) segoon: fwiw, I ported the patch to the current OpenVPN version by 
the Yandex company request, they use the patched OpenVPN under Tunnelblick
(21.21.06) jamesyonan: does Tunnelblick run OpenVPN as root?
(21.21.10) plaisthos: yes
(21.21.24) syzzer: (I never used tunnelblick, so maybe I'm asking the obvious 
here) tunnelblick itself has no support for the key chain?
(21.21.34) plaisthos: no unfortenately not
(21.21.59) jamesyonan: but how does OpenVPN, running as root, know which user's 
keychain to use?
(21.22.00) mattock: I believe tunnelblick is the de facto OpenVPN GUI for OS 
X... there's the Viscosity thing, but that one is proprietary
(21.22.51) plaisthos: yeah. Tunnelblick calls the openvpn binary as root and 
does the management+other paramter stuff
(21.22.51) jamesyonan: or does it require that certs/keys be in the system 
keychain?
(21.23.00) plaisthos: like the windows version
(21.23.11) segoon: syzzer: the thing is that private key can be configured 
non-exportable, so openvpn calls Keychain API each time to decrypt the data, it 
would be problematic if implemented in Tunnelblick
(21.23.33) plaisthos: segoon: not that would worke fine
(21.23.35) jamesyonan: no, that's not how it works
(21.23.46) syzzer: segoon: I don't think so, the management interface has the 
'rsa_sign' command to request a new sigature
(21.23.55) jamesyonan: RSA offload only requires one call per TLS negotiation
(21.24.34) jamesyonan: so having the RSA sign operation run in a different 
process has negligible impact on performance
(21.24.42) plaisthos: the situation is similar to android where an application 
also does not get access to the private key 
(21.24.58) segoon: ok, probably it is not that hard to do, nevermind
(21.25.51) syzzer: segoon: did you have contact with the tunnelblick guys? they 
might be very interested in your code too
(21.26.47) cron2: I'm not sure I understand what the patch does - does it 
offload RSA signing, or does it just request the key+cert from the store, and 
do everything locally?
(21.27.04) segoon: syzzer: I was emailed by "Jonathan K. Bullard" 
<jkbull...@gmail.com>, he asked what specific code parts are related to TB, 
I've answered him and that's all, I haven't heard him since that time 
(21.28.12) segoon: cron2: please look at signData() -- it doesn't request the 
key, it uses SecKeyRawSign()
(21.28.50) mattock: segoon: jkbullard is the correct guy to contact... he's 
usually pretty responsive
(21.28.56) jamesyonan: right, so it's offloading the signing
(21.29.40) cron2: well, tls_ctx_load_keychain() claims "/* Load Certificate and 
Private Key */"
(21.30.16) segoon: jamesyonan: as to the keychain selection: on my testing 
machine the specific cert+key are in login keychain, not in system one
(21.30.48) jamesyonan: doesn't the management interface support RSA signing 
offload so that tunnelblick could do the signing in the context of the end 
user, so that the user's keychain would be used?
(21.31.28) segoon: jamesyonan: I cannot answer this question, I haven't looked 
at the Tunnelblick code
(21.31.48) jamesyonan: segoon: but how does OpenVPN daemon running as root know 
which user's login keychain to use?
(21.32.50) segoon: cron2: the "private key" part is about requesting the 
identity handle, it doesn't explicitly copies priv_key contents
(21.33.00) segoon: probably the comment is misleading
(21.33.21) cron2: yep, some more explanatory comments for people unfamiliar 
with the keychain stuff would be welcome
(21.33.28) plaisthos: with the management interface approach you would have to 
read user certificate+ca certifcate and put that into the config file
(21.35.33) segoon: plaisthos: and what about the private key (which might be 
not extractable)?
(21.35.51) plaisthos: segoon: you get the callback via management interface
(21.36.55) plaisthos: 
https://github.com/OpenVPN/openvpn/blob/master/doc/management-notes.txt
(21.36.56) vpnHelper: Title: openvpn/management-notes.txt at master · 
OpenVPN/openvpn · GitHub (at github.com)
(21.36.59) plaisthos: under rsa-sig
(21.37.17) plaisthos: basically you replace --key with 
--management-external-key 
(21.37.37) plaisthos: and get BASE64 data you have to sign 
(21.40.23) segoon: so that's about moving all keychain stuff out of the main 
OpenVPN process to a helper process that only signs the data
(21.40.31) segoon: this process can be run even under another user
(21.40.36) plaisthos: yeah
(21.40.55) segoon: and it can be started/stopped via config hooks
(21.40.57) plaisthos: the process which opens the management connection
(21.42.42) segoon: I'm trying to find cons of this solution compared to the 
current implementation..
(21.43.25) syzzer: well, the con is that it would mean there's more work to 
do...
(21.43.45) segoon: the code will be a bit bigger due to management send/receive 
code, but all code is executed outside of the main openvpn process
(21.44.32) plaisthos: OpenVPN for Android has this implemented
(21.44.39) segoon: is it possible to include such helper into the official 
openvpn distro, if implemented? 
(21.45.01) cron2: well, the "helper" would have to go into the Gui that talks 
to the management interface anyway (single-user API)
(21.45.15) cron2: like Tunnelblick
(21.45.24) syzzer: segoon: actually, I think it would be very nice to have a 
simple helper that does just that in contrib/
(21.45.28) plaisthos: if you want to look an existing implementation
(21.46.38) segoon: the main goal of Yandex here is to push the keychain stuff 
to upstream to stop supporting it themselves (IOW, myself)
(21.46.46) plaisthos: it is also not unrealistic to have somehting like a 
plugin or external command that can do the same as the management-key
(21.46.49) syzzer: if we have a reference implementation testing becomes easier 
and it can be used by people who want osx keychain support, but do not 
need/want a gui
(21.46.57) segoon: if it is accepted by Tunnelblick instead of OpenVPN it is OK 
too, I think
(21.48.02) syzzer: and from that perspective, you probably achieve better 
support if it gets integrated into tunnelblick, since those guys have shorter 
lines to the osx users
(21.48.10) cron2: from my perspective as, well, call it "core maintainer", 
having all OS specific bits in an OS-specific application makes the bits *I* 
get to maintain easier to manage
(21.48.32) syzzer: segoon: yes, just integrated into tunnelblick would be fine 
too
(21.48.50) cron2: (and what syzzer said - if something in OSX changes, the 
Tunnelblick guys would be the ones to hear about it first)
(21.50.09) segoon: from the technical POV I like the idea of the helper out of 
the main openvpn process, from the social POV tunnelblick upstream'ing looks 
good too
(21.50.35) cron2: a helper / plugin would also be interesting.  No idea if the 
plugin interface can do it today
(21.50.35) segoon: however, I'm not sure whether keychain is supposed to work 
from the terminal without GUI like Tunnelblick
(21.50.50) segoon: *is supposed by Yandex
(21.51.45) segoon: cron2: what do you mean by "plugin" interface?  Is it a yet 
another interface?
(21.51.51) plaisthos: segoon: yeah :)
(21.52.07) plaisthos: plugins can be called at/for certain events
(21.52.22) segoon: looking into 
https://github.com/OpenVPN/openvpn/blob/master/doc/README.plugins...
(21.52.24) plaisthos: they are basically library with some functions that are 
called 
(21.52.24) cron2: segoon: welcome to the wonderful world of OpenVPN 
extensibility :-)
(21.52.38) segoon: :-)
(21.53.19) plaisthos: we would "simply" add a --key-plugin option 
(21.53.34) cron2: (but as far as I can see in README.plugins, we don't support 
the RSA stuff)
(21.53.45) plaisthos: and add a tls_rsa_sign function in the plugin interface
(21.53.55) cron2: that :)
(21.54.54) syzzer: *but* plugins run as the same user as the openvpn daemon, 
which is less favourable in this case I think
(21.54.58) segoon: are plugins run in the main openvpn process? 
(21.55.10) syzzer: segoon: yes
(21.55.35) segoon: so it is worse than via management interface 
(21.55.52) syzzer: yes, I think management interface is better in this case
(21.56.23) plaisthos: yeah we don't win much %) 
(21.56.54) mattock: are slowly moving towards a consensus on what needs to be 
done? :)
(21.57.10) segoon: Qs about management interface:
(21.57.42) segoon: 1) the only secure local communication channel among the 
supported is unix socket, isn't it?
(21.58.30) syzzer: plaisthos might know better, but I think so yes
(21.58.55) plaisthos: well yes
(21.59.11) plaisthos: you can also bind to 127.0.0.1 and do tcp
(21.59.28) plaisthos: and can do user+pass authentication to the mgm interface
(21.59.41) plaisthos: which is cleartext but that does not matter on localhost
(22.00.06) segoon: re: user+pass -- understood
(22.00.41) segoon: 2) the client connects to openvpn's server socket, registers 
on rsa-sign event and then should wait for the server's rsa-sign request, right?
(22.00.53) plaisthos: I don't know if tunnelblick uses the management interface 
at the moment 
(22.00.56) plaisthos: segoon: yes
(22.01.19) plaisthos: you can have only one client connected the interface at 
the time iirc
(22.01.38) segoon: i think it can be implemented with config file changes like 
'management', 'management-external-key', 'pre-up', etc.
(22.01.58) segoon: AFAICS, no actions from Tunnelblick are needed 
(22.02.19) plaisthos: segoon: tunnelblick might already use the management 
interface
(22.02.25) mattock: I would guess so
(22.02.32) plaisthos: just do a ps aux when openvpn is running
(22.02.44) segoon: plaisthos: ah, do you mean that it connects to the 
management interface and I cannot do it again?
(22.02.54) plaisthos: iirc tunnelblick adds a ton of options to openvpn via 
command line
(22.03.00) plaisthos: segoon: yes
(22.03.52) plaisthos: pretty sure it does 
(22.04.10) segoon: no, 'ps aux | grep openvpn | grep mana' shows nothing
(22.04.18) plaisthos: Acutally thinking about it, since it displays traffic 
statistics which you only get via management interface
(22.04.26) segoon: oh, wait
(22.06.38) segoon: nevermind, have problems with Mac :) rebooting
(22.07.08) segoon: is it possible to setup management interface for >1 client?
(22.07.10) plaisthos: I am at the moment at my windows pc but I can get my Mac 
out to check
(22.07.37) plaisthos: hm 
(22.07.47) plaisthos: I don't think so
(22.07.49) cron2: segoon: no
(22.08.01) plaisthos: but I would have to look at the code again
(22.08.56) segoon: plaisthos: can you check it on your Mac, please?
(22.09.48) plaisthos: lets see if I have a working Tunnelblick installation
(22.11.27) segoon: ok, I checked it -- it does use --management
(22.12.05) plaisthos: my tunntelblick crashes with sigsev
(22.12.05) segoon: so management is not an option, at least with TunnelBlick
(22.12.09) syzzer: so that would mean integrating the keychain code into 
tunnelblick itself
(22.12.36) plaisthos: or do a tunnel to your program porxy
(22.12.43) plaisthos: in tunnelblick
(22.13.51) syzzer: plaisthos: i guess you could, but that sounds a bit hacky. 
do you think that would be easier than integrating into tunnelblick itself?
(22.14.22) plaisthos: syzzer: if you want to have the functionaitaliy without 
tunnelblick
(22.14.29) segoon: plaisthos: sorry, I don't understand your proxy idea
(22.14.43) segoon: proxy/tunnel
(22.15.09) plaisthos: segoon: when tunnelblick gets a a rsa_sign it sends it to 
your program instead of cyring and knowing what to do :)
(22.16.02) segoon: as I completely don't know TB's internals I cannot say how 
extensible it is
(22.16.29) segoon: OK, I should look at TB's way of --management handling
(22.16.39) segoon: am I right that the patch for openvpn is NACK for now?
(22.16.39) plaisthos: be warned
(22.16.48) plaisthos: building tunntelblick is hellish
(22.17.33) cron2: segoon: yeah, sort of "we like the feature, but it might be 
better done in Tunnelblick"-NAK
(22.17.47) syzzer: segoon: I think, but as far is I'm concerned just "for now", 
as the a solution outside of the openvpn core looks as a beter option
(22.19.54) segoon: OK, I'll look at TB.  If I'll need openvpn-devel feedback 
again, how should I ping you guys?
(22.20.03) plaisthos: yes 
(22.20.09) cron2: here, or on the list
(22.20.16) plaisthos: if you have question to all the rsa-sign stuff just ping 
me
(22.20.16) cron2: Jonathan Bullard also reads openvpn-devel list
(22.20.33) segoon: oh, mailing list, I forgot about it :-)
(22.20.48) mattock: :)
(22.20.54) mattock: next topic?
(22.21.10) segoon: okay, thanks guys!
(22.21.41) syzzer: segoon: thank you too!
(22.21.44) mattock: you're welcome!
(22.22.12) mattock: next topic would be "​Make OpenVPN set routes on Windows 
Vista and later", i.e. the interactive service from d12fk
(22.22.20) syzzer: mattock: no, d12fk, so towards the cryptodev patch than?
(22.22.28) syzzer: *then
(22.22.34) mattock: has anyone reviewed the d12fk's code?
(22.22.50) cron2: not me, sorry
(22.23.00) syzzer: I started out a bit, but definitely not done
(22.23.16) mattock: once the code has seen some review I can generate special 
Windows installers based on it
(22.23.24) mattock: for testing
(22.24.02) syzzer: it's on my list to look into it a bit more
(22.24.15) mattock: anyhow, let's talk about this when d12fk is here... and 
hopefully some of you has had time to review the code by then
(22.24.26) mattock: maybe retry two weeks from now?
(22.24.40) cron2: mattock: yes.  But we can cover cryptodev (BSD)
(22.24.46) mattock: definitely
(22.24.48) mattock: "Openvpn with cryptodev on FreeBSD does not work"
(22.24.53) mattock: https://community.openvpn.net/openvpn/ticket/480
(22.24.55) vpnHelper: Title: #480 ([PATCH] Openvpn with crytpodev on FreeBSD 
does not work) – OpenVPN Community (at community.openvpn.net)
(22.25.09) mattock: so "looks innocent, but could break things"
(22.25.12) syzzer: yes, so, I looked into this a bit
(22.25.26) plaisthos: yes
(22.25.56) plaisthos: like how I broke certain obscure chroot configuration 
with init reordering
(22.26.00) cron2: the patch, simple as it is, doesn't sound good to me if it 
has side-effects
(22.26.08) syzzer: the thing is, because the patch pulls the daemon() call 
forward, some stuff won't work like it used to
(22.26.14) cron2: this, yes
(22.26.33) syzzer: for example, if you have relative paths in your config file
(22.26.35) cron2: so can we just move the cryptodev init after daemon()?  I 
haven't checked where that is actually initialized
(22.27.17) syzzer: if that is possible, that would be the preferred solution
(22.27.44) syzzer: I just assumed the cryptodev would be automatically 
initialized when we init openssl
(22.28.01) ***cron2 has no idea
(22.28.48) syzzer: I don't know either, I don't use freebsd...
(22.29.12) cron2: I do, but "man cryptodev" doesn't particularily help here 
("it will provide crypto primitives")
(22.29.57) plaisthos: isn't cryptodev for hw crypto acclerators?
(22.29.58) syzzer: yeah, sounds like openssl opens /dev/crypto, openvpn forks, 
pid changes, /dev/crypto refuses to answer to the new pid
(22.30.09) cron2: plaisthos: yes
(22.30.21) syzzer: plaisthos: yes, including stuff like aes-ni iirc
(22.30.29) cron2:      The crypto driver provides a device-independent 
framework to support
(22.30.29) cron2:      cryptographic operations in the kernel.  The cryptodev 
driver provides
(22.30.32) cron2:      userland applications access to this support through the 
/dev/crypto
(22.30.34) cron2:      device.  This node primarily operates in an ioctl(2) 
based model, permit-
(22.30.37) cron2:      ting a variety of applications to query device 
capabilities, submit
(22.30.39) plaisthos: (which is stupid for aes-ni)
(22.30.40) cron2:      transactions, and get results.
(22.31.17) segoon ha abbandonato la stanza (quit: Quit: WeeChat 0.3.7).
(22.31.21) cron2: so - can we easily move just openssl init to "after daemon()"?
(22.32.16) plaisthos: yeah
(22.32.16) syzzer: cron2: don't think so, we currently load certs etc there
(22.32.27) plaisthos: see syzzer
(22.32.38) syzzer: and the problem is those paths no longer work after daemon()
(22.32.39) cron2: oh
(22.33.32) syzzer: but I have to dig a bit deeper, I just wanted to hear your 
thought on whether it's bad if relative patch no longer work when using 
--daemon without --cd
(22.33.32) jamesyonan ha abbandonato la stanza (quit: Ping timeout: 244 
seconds).
(22.33.50) cron2: this will break user configs, so "yes"
(22.34.52) cron2: I see inside possibly_become_daemon() a pkcs11_forkFixup ();
(22.34.59) syzzer: ok, in that case it's a NAK for now, I'll look into it a bit 
more
(22.35.10) cron2: maybe there is an openssl_forkFixup()?
(22.35.19) syzzer: yeah, some magic inside pkcs11-helper (I didn't really look 
into it more)
(22.38.53) cron2: mmh, googling suggests that there is cryptodev for linux, and 
openssl can talk to it
(22.41.18) syzzer: I doing multiple things at the same time now, will look into 
it later
(22.41.41) mattock: ok, meeting concluded?
(22.42.16) cron2: plaisthos: when you have time, could you look at my bikesheds?
(22.43.04) mattock: meeting concluded, sending out the summary
(22.43.07) mattock: :)
(22.43.12) cron2: g'night
(22.43.20) syzzer: ok, good :)

Attachment: openvpn_irc_meeting_chatlog_2014-12-29.txt.sig
Description: PGP signature

Reply via email to