Minetest logo

IRC log for #minetest-dev, 2024-09-04

| Channels | #minetest-dev index | Today | | Google Search | Plaintext

All times shown according to UTC.

Time Nick Message
00:09 v-rob joined #minetest-dev
00:26 [MatrxMT] <Zughy> MisterE: yes, just modified ronoaldo's scripts to suit my needs
00:33 v-rob joined #minetest-dev
00:36 v-rob joined #minetest-dev
01:17 v-rob joined #minetest-dev
01:29 v-rob joined #minetest-dev
01:38 v-rob joined #minetest-dev
02:51 Lupercus joined #minetest-dev
03:24 v-rob joined #minetest-dev
03:33 hwpplayer1 joined #minetest-dev
04:00 MTDiscord joined #minetest-dev
04:12 v-rob joined #minetest-dev
04:28 hwpplayer1 joined #minetest-dev
07:09 mtvisitor joined #minetest-dev
07:10 mtvisitor AncientMariner: hi, nice to meet you in this channel. 🤝
07:11 mtvisitor how long have you been playing for minetest game ? are you also engineer background ? 🤝☕
07:12 mtvisitor MTG: minetest_game.
07:19 hlqkj_ joined #minetest-dev
07:20 panwolfram_ joined #minetest-dev
07:22 fluxionary joined #minetest-dev
07:22 pmp-p joined #minetest-dev
07:30 cranez joined #minetest-dev
08:40 TenPlus1 joined #minetest-dev
08:41 TenPlus1 Hi folks
09:28 cranez joined #minetest-dev
09:29 cranez left #minetest-dev
09:41 mtvisitor joined #minetest-dev
09:45 mtvisitor left #minetest-dev
09:46 cranez joined #minetest-dev
10:45 Lupercus joined #minetest-dev
11:08 hwpplayer1 joined #minetest-dev
11:20 pgimeno "<red-001> I can't help but suspect mini-gmp was probably not written to be cryptographically sound when it comes to timing" - Indeed it wasn't. GMP (the full one, not the mini one) has _sec functions specifically for this purpose.
12:11 SpaceManiac joined #minetest-dev
12:20 grorp joined #minetest-dev
12:25 grorp planning to merge #15017, #15100, #15111, #15114 in 30 min
12:25 ShadowBot https://github.com/minetest/minetest/issues/15017 -- [no sq] TouchScreenGUI: Grid menu improvement + fix by grorp
12:25 ShadowBot https://github.com/minetest/minetest/issues/15100 -- TouchControls: Fix setUseCrosshair not being called by grorp
12:25 ShadowBot https://github.com/minetest/minetest/issues/15111 -- Remove no* prefixes from settingtypes possible flags by appgurueu
12:25 ShadowBot https://github.com/minetest/minetest/issues/15114 -- VoxelManipulator code cleanup by red-001
12:43 red-001 joined #minetest-dev
12:44 red-001 pgimeno: maybe full GMP should be a requirement then?
12:45 pgimeno in that case, these _sec functions (which tend to be much slower than their non-_sec variants) should be used
12:46 red-001 what a mess, I mean I suspect the issue as it stands is not exploitable in any meaningful way
12:47 red-001 but it's still not ideal
12:48 red-001 is there a aPAKE (or really just the zero knowledge password proof part, don't really need a key exchange) that uses primitives that are easier to get right?
12:50 red-001 OPAQUE seems popular but I don't know if it comes with the same implementation issues
12:51 red-001 and at a glace seems a lot more involved in general
12:55 pgimeno I'm looking, I can't find any mpz function ending with _sec other than mpz_powm_sec https://gmplib.org/manual/Integer-Exponentiation
12:56 pgimeno it seems that most side-channel resilient functions are implemented at the mpn level: https://gmplib.org/manual/Low_002dlevel-Functions
12:56 red-001 do you know what the implication are there? I don't know what the difference between mpz or mpn is
12:56 red-001 implications*
12:57 pgimeno mpn requires handling of pointers to raw limbs, mpz requires the mpz_t type
12:57 red-001 maybe the MPZ functions are already safe? or am I  too optimistic here
12:57 pgimeno mpn is the low-level interface that GMP uses under the hood
12:57 pgimeno yeah I think you're too optimistic :)
12:58 red-001 someone needs to be!
12:58 red-001 that seems like a rewrite of the whole implementation would be required
12:58 pgimeno it's not that hard to deal with mpn functions, you just need to be careful because there's no buffer overflow checking or similar
12:59 pgimeno yes, that's likely
12:59 pgimeno on the other hand, how exploitable is a side-channel kind of attack?
12:59 red-001 over network?
13:00 red-001 probably not exploitable but I'm not sure, PARASITE is a local attack
13:00 pgimeno that's the big question; side-channel attacks are typically performed in the CPU under attack
13:00 pgimeno is there a way to exploit it locally?
13:01 red-001 not currently, well not in any sane way
13:01 red-001 I think there's a risk if and when SSCSM is added
13:04 pgimeno I haven't thought about it and right now I have other priorities, sorry, so I'll pass on that question. I'm not sure if SSCSMs can actually exploit that, given the time at which they are executed.
13:04 red-001 I think they would need to be paused during password change operations and that might be enough?
13:05 red-001 it's not a major issue in any case
13:05 red-001 on a side note there's a rust crate for SRP. I find the warning that the implementation has never passed a security audit reassuring. Neither has the Minetest one but it doesn't have a warning label on it
13:06 red-001 "This crate has never received an independent third party audit for security and correctness." - https://docs.rs/srp/latest/srp/
13:06 MTDiscord <luatic> surely there are some libraries that have passed security audits though
13:07 red-001 openssl I presume has passed many
13:08 red-001 I don't know if any of those would have checked the SRP implementation
13:12 red-001 Wikipedia has a helpful list of SRP implementations that the deletionists will probably delete one day: https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol#Implementations
13:13 red-001 it's not very promising
13:51 SFENCE joined #minetest-dev
13:56 SFENCE joined #minetest-dev
13:59 SFENCE joined #minetest-dev
14:17 SFENCE joined #minetest-dev
14:22 SFENCE joined #minetest-dev
14:25 SFENCE joined #minetest-dev
14:39 SpaceMan1ac joined #minetest-dev
14:43 SpaceMan1ac joined #minetest-dev
14:49 SFENCE joined #minetest-dev
14:54 SpaceManiac joined #minetest-dev
14:57 Desour joined #minetest-dev
15:08 SFENCE joined #minetest-dev
15:19 SFENCE joined #minetest-dev
15:23 SFENCE joined #minetest-dev
15:38 SFENCE joined #minetest-dev
15:48 v-rob joined #minetest-dev
15:53 SFENCE joined #minetest-dev
16:21 SFENCE joined #minetest-dev
16:26 SFENCE joined #minetest-dev
16:28 SFENCE joined #minetest-dev
16:44 SFENCE joined #minetest-dev
16:47 SFENCE joined #minetest-dev
16:49 SFENCE joined #minetest-dev
16:57 SFENCE joined #minetest-dev
17:21 SFENCE joined #minetest-dev
17:26 SFENCE joined #minetest-dev
17:31 SFENCE joined #minetest-dev
17:56 SFENCE joined #minetest-dev
18:05 SFENCE joined #minetest-dev
18:07 SFENCE joined #minetest-dev
18:12 SFENCE joined #minetest-dev
18:19 v-rob joined #minetest-dev
18:23 MTDiscord <luatic> oof the memsets in srp.cpp might very well be optimized out, i think we need the same forced memset there as in the "don't store passwords in memory" PR
18:24 sfan5 memset_s
18:24 SFENCE memset_s is not avaliable everywhere.
18:26 SFENCE If #14196 will be reactivated as wanted, I can change memset in srp.c that PR.
18:26 ShadowBot https://github.com/minetest/minetest/issues/14196 -- Change the way how password is stored in C++ engine. by sfence
18:28 sfan5 are you sure that's true? json.h contains a reference to memset_s
18:28 SFENCE I was fighting with it when I was working on 14196.
18:30 MTDiscord <sfence> See https://github.com/minetest/minetest/blob/74520fb49661005ef1891ff76161332d54e62fdc/src/porting.cpp#L895-L908
18:30 SFENCE I have to do this like this, to make in compilable on all systems supported by Minetest.
18:37 Krock or implement the loop in assembly for x86, x86_64, armv7, armv7 and whatever else we support
18:40 SFENCE Btw it looks like json uses memset_s only if is configured to use secure memory.
18:43 SFENCE And I don't found that symbol in Minetest.app.
18:48 SFENCE Krock: using assembler is really crazy think. Different compilers, platforms.... there is no standart for it.
18:51 Desour cppreference also says one should use std::fill with volatile, or the other things SFENCE used, if memset_s in not available, btw.
18:52 Desour you could consider copying more at once with the volatile loop, i.e. use `volatile u64 *` as long as the size is >=8
18:53 Krock * as long size % 8 == 0
18:53 Krock unless you can be certain that there's unused padding bytes
18:57 Desour Krock: for data alignment, you'd need `(size_t)ptr & 7 == 0`. otherwise you could for example have an aligned array of size 8*n+1 for example, and you'd make it unaligned
18:58 Krock Desour: does that also hold true on 32-bit systems?
19:00 Desour idk, I think I misunderstood you. why would 32 bit systems make a difference?
19:00 Krock I'm not talking about the pointer alignment but the data length that you'd like to zero out
19:02 MTDiscord <luatic> no need to reinvent duff's device
19:03 Desour I said >=8 earlier, because I meant that you zero out a `volatile u64 *` until 8 bytes would be too big, then switch to `volatile u8 *`
19:05 sfan5 something something premature-optimization
19:05 Desour yes, that's what C++ is all about after all :D
19:06 SFENCE joined #minetest-dev
19:09 SFENCE Yes, it can be optimized. But if we used it only for one times erase password, and maybe some srp data after connection to server is done, it should not bring any interesting performance change.
19:11 MTDiscord <luatic> btw SFENCE i'd just do the porting::memset_s + converting memsets e.g. in srp.cpp to it in a separate commit if not PR, this is a much more manageable change and, if merged first, would also slightly simplify the password PR
19:14 SFENCE Ok, in case PR will be closed as unwanted, lets do it.
19:22 SFENCE joined #minetest-dev
19:24 SFENCE Lars: Maybe, it don't take much sense to do it in separate PR. In actuall implelemtation, SRP object is holded in memory until player disconnect from server. So it will be no big difference if you only add memset_s implementation.
19:25 SFENCE To make it effective, you will have to implement also part of my PR, where I keep only needed part of SRP object in memory.
19:28 SFENCE joined #minetest-dev
19:29 Sokomine joined #minetest-dev
19:32 v-rob joined #minetest-dev
20:31 Lupercus joined #minetest-dev
20:36 red-001 joined #minetest-dev
20:38 red-001 HACL* has a few more memset_s like functions it supports, libsodium supports like half a dozen
20:38 red-001 no real standard for it cause it's outside the C/C++ standard tbh
20:38 red-001 even if there is now a standard function
20:39 celeron55 the name of the game is, just write a wrapper which does its best on each platform
20:44 red-001 if only we lived in a perfect world were optimizing compilers were never taken further than wherever GCC was at in 2005
22:32 panwolfram joined #minetest-dev
23:05 Eragon joined #minetest-dev
23:10 Eragon joined #minetest-dev

| Channels | #minetest-dev index | Today | | Google Search | Plaintext