- 
UkoeHB Meeting 2.5hr 
- 
UkoeHB 
- 
UkoeHB 1. greetings 
- 
UkoeHB hello 
- 
selsta hi 
- 
jberman[m] howdy 
- 
xmr-ack[m] hola 
- 
mj-xmr[m] Bonjour 
- 
Rucknium[m] Hi 
- 
cryptogrampy[m] hi 
- 
UkoeHB 2. updates, what is everyone working on? 
- 
UkoeHB me: more seraphis stuff (I implemented binned reference sets, next up are the 16/2 jamtis address index discussion/possible implementation, then discretized fees) 
- 
mj-xmr[m] a) I have made some progress with decoy sel. algo analysis and summarized both the results and the strategy here: 
- 
mj-xmr[m] 
- 
mj-xmr[m] In short: We'll be performing statistical analysis with Rucknium and jberman and I'm preparing it from the technical level. 
- 
mj-xmr[m] b) I had a great chat with ArticMine  and endor00 about the next (parallel) task of simulating the behavior of the system (fee and block size) in case of a sudden increase of transactions. I know how it all should work now. 
- 
Rucknium[m] Working on estimating the effect (if any) of minexmr's increase in its pool fee from 1.0% to 1.1% on April 1st. The most obvious statistical model, to me, is a test for a structural break in the time series. Input about that is welcome. I've started to collect the data using neptune's SQL tables.  
- 
Rucknium[m] I think this research question maybe a bit touchy. I am going to calculate the statistical power of the test. If the test cannot detect a fall (or rise) in minexmr's share of blocks of less than 1-2%, then I will probably just share the results here rather than on Reddit since I think it is hard for laypeople to distinguish between the two statements "There was no effect" and "The data and circumstances were such that no effect 
- 
Rucknium[m] could be detected". 
- 
jberman[m] added support for view tags to the block explorer + monero-lws, and helped out with monero-python (both on adding support for view tags [ty plowsof ] and on helping patch a vulnerability reported by kayabaNerve  that allows a sender to get a recipient to blindly trust an arbitrary amount in a tx)  
- 
UkoeHB thanks guys 
- 
UkoeHB 3. discuss larger jamtis address tags (and address indices) 
- 
UkoeHB Does anyone have comments/questions about it (other than me)? 
- 
Rucknium[m] Question: What is a MAC? 
- 
UkoeHB I came up with an adjusted CBC (chained block cipher) mode for blowfish that seems like it will work for non-block-size-multiple ciphertexts. 
- 
Rucknium[m] Also, is this related to the "probability of a collision" calculations you and I discussed a few months ago? 
- 
UkoeHB Rucknium[m]: when encrypting something, you can add a small piece of data at the end. When decrypting, if you re-create that end piece (the MAC), then there is a very high chance that decryption succeeded (i.e. the deciphered text isn't gibberish). 
- 
UkoeHB Typically MACs are like 16 bytes. In the case of jamtis address tags, the MAC just acts as a filter when deciphering (very similar to view tags). 
- 
UkoeHB Since it acts as a filter, it can be small (1-2 bytes). 
- 
UkoeHB If someone has a better name for the address tag MAC, I would be happy to accept it lol 
- 
UkoeHB Rucknium[m]: re: probability of a collision, can you remind me what that was about? 
- 
kayabaNerve jberman[m]: It was only for when it scans it itself, which likely wasn't happening, but definitely a crit patch :) 
- 
UkoeHB oh, the seraphis squashed enote hash? this is different 
- 
kayabaNerve Also, just to ensure my understanding is correct, MAC here is comparable to BTC's 6 character/4 byte Bech32 checksum, right? 
- 
UkoeHB kayabaNerve: in practice it's just some zero bits appended to the plaintext, and then you check if those bits are zero after deciphering 
- 
kayabaNerve I won't advocate for using a BCH code, as they're nifty yet literally no one bothers using them to detect where errors are and you're never supposed to auto correct anyways. 
- 
kayabaNerve Yeah. Bech32 uses a constant of... 1? And then Bech32m uses a constant which doesn't allow malleability via 0 padding 
- 
kayabaNerve So where is this being proposed as used? 
- 
UkoeHB 
- 
merope Afaik MACs are not for error correction, but to just detect decryption errors or tampering. Without a MAC, someone could manipulate the cyphertext and change the result 
- 
kayabaNerve Thanks 
- 
UkoeHB if you scroll up, I made a comment on monday summarizing the situation 
- 
jberman[m] @UkoeHB did you get to do more benchmarking/can you comment further on how it would impact scanning time? I'm not exactly clear on it from the comment/explanation. considering the MAC is larger, would we expect the increase in byte size to actually reduce scanning time? 
- 
UkoeHB jberman[m]: I will work on that today 
- 
UkoeHB increasing the size from 8 -> 18 will increase the blowfish ciphers from 1 to 3, but increasing the mac from 1 -> 2 bytes will reduce the cost of filter-failures by 1/256 (failures require at least one expensive EC op) 
- 
kayabaNerve Thanks for the details. This all makes sense to me. There's definitely no use case for BCH here (I assumed this was for addresses, not understanding the distinction of addess tags, sorry) 
- 
UkoeHB For today, the more important question is the address index size (7 bytes or 16 bytes). 
- 
UkoeHB right now we have 8-byte address indices (typically split into 4 byte address index and 4 byte account index) 
- 
selsta so increase from 8 to 16? or decrease to 7? 
- 
UkoeHB yes 
- 
UkoeHB the main goal of 16 bytes is robust random address generation 
- 
selsta i would check first if 16 bytes are even practical RAM wise 
- 
jberman[m] I like it. It does relate to collisions in that it enables you to randomly generate an address without worrying about a collision. Whereas today you either need to maintain state of provisioned subaddresses, or use integrated addresses. Maintaining state across wallets is not so simple in all circumstances and integrated addresses have a suite of downsides that have been discussed at length 
- 
selsta ok, if you want to use it like jberman[m] says it might make sehse 
- 
UkoeHB selsta: what do you mean by RAM? I would just use a uchar array (wallets can interpret the index as they want) 
- 
UkoeHB 16-byte indices is equivalent to baking the integrated address piece into addresses (adding 8 bytes) 
- 
selsta UkoeHB: i meant if someone generates all possible addresses, but that might not be necessary if someone wants to to just randomly generate addresses 
- 
UkoeHB imo all future wallets should primarily use random address generation (only the 'account'/'grouping' bits would be controlled) 
- 
selsta how would restore work in this case? 
- 
selsta currently they are generated sequentially and during restore there is a lookahead 
- 
UkoeHB 
- 
selsta yea, it's better if I stay out of this discussion lol 
- 
UkoeHB addresses would have an 'address tag' (ciphered address index), and on-chain outputs would have encrypted address tags 
- 
jberman[m] it avoids the need for a lookahead, allowing you to decrypt to know exactly which address was used 
- 
selsta i'm not fully up to date on the proposal 
- 
UkoeHB during scanning, you decrypt then decipher the address tag to get the index, then try to recreate the spend key 
- 
selsta that's a nice improvement compared to the lookahead 
- 
UkoeHB the address tag contains a mac so you don't spend a ton of time recreating test address keys 
- 
UkoeHB recreating spend keys* 
- 
UkoeHB the reason we are discussing a size change is because these address tags are stored on-chain (chain cost) 
- 
jberman[m] worth pointing out that 10 bytes per output would probably be more significant if the idea to have all tx's use 16 outputs was implemented:  monero-project/research-lab #96
- 
UkoeHB suppose so 
- 
gingeropolous to me it seems that encouraging users to use random addresses all the time (as opposed to address re-use) to prevent out-of-band associations is worth it (the blockchain cost), if the alternative is complex enough to lead to wallets not doing it 
- 
UkoeHB well the question is if you can still do random addresses with much smaller indices (5 bytes in a 7-byte index that has a 2-byte account index) 
- 
gingeropolous and im all for future-proofing when possible 
- 
jberman[m] some wallets can't even protect it (e.g. you have a wallet on 1 machine, same seed wallet a different machine, and these 2 wallets don't communicate with each other e.g. you use GUI on desktop and same seed in a mobile wallet) 
- 
UkoeHB There doesn’t seem to be any opposition in this meeting (if tevador were here, there might be more pushback). I will do performance tests comparing 7/1 vs 16/2 jamtis address tags. If 16/2 doesn’t have perf issues, then I will implement it fully. Then we can/should revisit this question in the future (or if anyone appears with objections). 
- 
UkoeHB We are getting to the end of the meeting. Any last minute questions/comments on any topic? 
- 
cryptogrampy[m] It's very nice for a point of sale view-only collection wallet to not know anything about which subaddress index the spend key/owner's wallet is on 
- 
cryptogrampy[m] Dealing with this right now with HotBox :) Can only use integrated addresses for now. 
- 
selsta I just wanted to talk about multisig audit shortly. 
- 
UkoeHB cryptogrampy[m]: do you think random generation would solve that? 
- 
UkoeHB selsta: ok 
- 
selsta I don't think we have to audit multisig before the hardfork, but we definitely have to audit it before Haveno launches. 
- 
UkoeHB No objection 
- 
selsta The problem is that there is no writeup of the cryptography and I don't think UkoeHB is interested in writing it down. 
- 
selsta Any ideas what / how we could solve that? 
- 
selsta Without writeup the auditors will probably waste a lot of time and maybe misunderstand something. 
- 
UkoeHB In other words, UkoeHB needs an intern lol 
- 
selsta UkoeHB: i can understand that working on Seraphis is way more exciting lol 
- 
UkoeHB It’s also a time commitment 
- 
cryptogrampy[m] UkoeHB: For the HotShop usecase, I would want to generateRandomSubaddress() (outputs a fairly collision proof subaddress) to use for collecting payment.  The payment collection device uses a primary and view key and has no contact with the spend key wallet.   The spend key wallet currently has no idea that subaddress at index 100000000 was used at the end of the day, but it sounds like the address tags will help with this? 
- 
UkoeHB cryptogrampy[m]: seems like it will help 
- 
selsta maybe luigi1111 is bored and wants to do an updated multisig writeup 
- 
Rucknium[m] Could coinstudent2048 help us? 
- 
UkoeHB Or would* since nothing is guaranteed 
- 
jberman[m] Was gonna tag coinstudent, also dangerousfreedom may be interested 
- 
selsta I'm sure we could get funding for whoever wants to do this. 
- 
jberman[m] <UkoeHB> "well the question is if you..." <- my math might be off here, but 50% probability of a collision is on the order of low billions of subaddresses generated? Hardening numbers to answer this would be nice, just gotta plug into the birthday problem 
- 
cryptogrampy[m] UkoeHB: This was somewhat discussed in github issue on integrated address deprecation, but I think the address tags could be the last nail in the coffin needed to get rid of integrated addresses 
- 
selsta Launching Haveno without audit could mean it's a matter of time until funds are stolen. At least with audit the chance is reduced. 
- 
Rucknium[m] I think MAGIC Monero Fund could pitch in some money to help the audit as well. The committee would need to approve the funds, of course. 
- 
selsta Rucknium[m]: I talked do sgp_ and he also suggested MAGIC, so that is something we can consider once we have a writeup of the cryptography. 
- 
Rucknium[m] I mean, MAGIC could fund the writeup itself, too. However, MAGIC would have to KYC the recipient of the funds. 
- 
selsta let's see if coinstudent2048[ or dangerousfreedom are interested first 
- 
mj-xmr[m] This sounds good, also because of the KYC requirement. Audits are more official and formal than the usual development. 
- 
mj-xmr[m] I mean KYC here won't hurt as much as it would for other efforts. 
- 
selsta ok, that's it from my side 
- 
UkoeHB Thanks selsta and thanks everyone for attending 
- 
gingeropolous now that its after hours... regarding "ermagerd viewkeys", is it possible to make view keys expire?  
- 
UkoeHB probably, but it would be pretty difficult/annoying 
- 
kayabaNerve MAGIC is supposed to fund audits and we've previously confirmed the Monero Fund would fund audits. 
- 
kayabaNerve Just to chime in a bit late. 
- 
kayabaNerve gingeropolous: Running the generic cryptography in my head quickly, yet premised on the current system, I believe only via shipping two keys in addresses with a time gate :/ 
- 
kayabaNerve Which I say as I think this is comparable to a similar problem I worked on regarding signing nonces which had that as the result...  
- 
Rucknium[m] Some criticism of Seraphis/JAMTIS view key capabilities: 
- 
Rucknium[m] 
- 
merope > So with Seraphis upgrade coming out 
- 
merope I think OP missed the fact that the next hardfork will not include Seraphis 
- 
merope Also a bunch of comments from "concerned citizens" who missed the whole discussion on which viewkey capabilities to implement 
- 
spacekitty420[m4 seemed like a stretch and highly speculative, that's not even sure if its gon be for next year or even if an other protocol might be chosen instead, like heck, tryptich was still being considered not long ago till limitations were found so it wasnt a possibility no more 
- 
spacekitty420[m4 the whole post also seems to assume CEX would still be the ones that would lead the market while, haveno (or penumbra) is not even out yet and there is no way of knowing just yet the impact it can have on minimizing the power of those enforced regulations on CEX and how it would affect XMR then 
- 
spacekitty420[m4 for bitcoin there's the bip 119 controversy that if implemented then guessing it could affect atomic swap with xmr since the btc outputs could directly be blacklisted and allow only whitelisted addresses from CEX from a protocol level 
- 
spacekitty420[m4 i cant see that happening with just the view keys with seraphis tbh, in a scenario where bip 119 is a thing and DEX is widely adopted on XMR then sure the xmr/btc is kinda fucked but the kyc-free fiat on/off ramp would be the one that matters imo so shouldnt really affect the fungibility by cex enforcing view keys or whatever due to dex being used instead 
- 
kayabaNerve 
- 
kayabaNerve Basically, this can already be done. We have key images and already generate proofs when exporting them. Theoretical tyrannical govt is going to theoretical tyranny. It has no impact on the benefit of this functionality 
- 
kayabaNerve The BIp119 controversy is over its functionality if it was done recursively, not it itself, with the note that funds can never leave the covenant. It'd effectively burn BTC from the supply and force colored coinage.  
- 
rbrunner Yeah, the way that Seraphis view key discussion went makes me wonder who discusses in good faith there, with some gaps in knowledge, and who wants to stir up drama 
- 
kayabaNerve Also, Seraphis does sep incoming/outgoing view, right? 
- 
kayabaNerve Someone suggested that and I commented I'm pretty sure it does, as it at least did in the discussions from months ago, yet I'm solely assuming that wasn't dropped for some reason 
- 
kayabaNerve *or at least have the option of separating them 
- 
rbrunner 
- 
merope Another point that I've noticed in OP's post: they ask "Are view keys really that necessary?" Which suggest to me that they do not know that view keys are a byproduct of the whole stealth address system to hide user wallets on the chain 
- 
merope (Writing that up as right now) 
- 
rbrunner Well, a single key CryptoNote like protocol would probably be possible in theory, no? With reduced flexibility of course, and looking quite differently. 
- 
merope Perhaps - but wouldn't it be pointless? The implication would be that the wallet address would necessarily be able to distinguish incoming transaction, so anyone with your wallet address would be able to scan the chain looking for your transactions. At that point, might as well stick with transparent addresses to simplify things 
- 
merope (right?) 
- 
kayabaNerve 
- 
rbrunner Er, the wallet address contains a public key, not a private key, so I don't think the address would reveal something :) 
- 
merope Looks like OP has cross-posted this topic in r/xmrtrader now that it has gotten a little traction. But I'm sure that's just a coincidence :) 
- 
kayabaNerve If the government demands view keys, they demand view keys. If you remove view keys, they demand private keys. If you... they demand access to your laptop. If you.. they... Monero cannot solve every problem. This is already an 'issue' in the current protocol, when it's not even an issue. It cannot be changed without completely rebuilding the entire cryptography of it and the government then just mandates spyware on all computers.  
- 
kayabaNerve The end. 
- 
dangerousfreedom 
- 
dangerousfreedom <selsta> "let's see if coinstudent2048..." <- It would be nice to further work with cryptography, I believe the tools that I am creating in Python could quickly prototype a multisig scheme or something that you guys are planning to implement. I am not an specialist in cryptography though, I have some knowledge but I am far from being 'reliable', I still have a lot to learn. But it is definetly one of my future goals. I 
- 
dangerousfreedom would be happy to work with coinstudent2048if he wants to do it. I believe I can find some more time to do the required tasks if they are not too hard and it would be good to work with someone as it is an audit task. 
- 
selsta dangerousfreedom: so basically the current multisig crypto design is spread over multiple documents and code comments 
- 
selsta the goal would be to have a single document that can be audited 
- 
selsta and then the code can be audited to see if it matches the design 
- 
selsta that's how I imagine it at least 
- 
UkoeHB I would definitely be involved in review/editing 
- 
UkoeHB We mostly just need someone to do the write-up (the leg work :p) 
- 
dangerousfreedom Ok, I see. So there is something working in C++ already and you would like these functions to be as simple and documented as possible in just one file? Well, if that is so, I believe I could do it. But you can send me and CoinStudent a message with more details 
- 
UkoeHB I don't think you'd need to write any code, just describe the algorithms 
- 
UkoeHB And explain different parts 
- 
dangerousfreedom Good! Then I believe I can do it. I'm trying to explain things in a nice way but I dont know if I am succeeding. You tell me (  moneroinflation.com/ring_signatures_mlsag ) ;) 
- 
UkoeHB dangerousfreedom: this looks good to me :)