1. 3

    While OP does not make it clear anywhere, it only applies to searching in settings.

    Background: https://code.visualstudio.com/blogs/2018/04/25/bing-settings-search

    Disable with "workbench.settings.enableNaturalLanguageSearch": false.

    1. 0

      While OP does not make it clear anywhere, it only applies to searching in settings.

      Maybe. Maybe not. How do you know for sure, have you checked? And if you have, how do you know it will always be that way?

      Personally I see no reason to trust this company at their word about anything given their long history of ignoring user’s privacy, and ignoring privacy settings, and immediately closing privacy related issues.

    1. 2

      Definitely not applicable to all use cases, but I realized at some point that I didn’t actually need a web UI for my personal git repositories, and have been much happier since I stopped trying to deploy them in favor of simply using ssh:// remotes.

      1. 1

        That’s true but it doesn’t make your code very accessible to outsiders and that seems to go against the spirit of free, open source code. True, it is possible to find the code still, but it makes it harder for someone to find.

      1. 6

        The word secure is somewhat meaningless without enough context. Also, HTTPS doesn’t immediately translate to secure and adding “not secure” to the url bar doesn’t achieve much either. AFAIR chrome still mistreats the “target = _blank” property…

        1. 15

          This is a common argument that I never understood the utility of. HTTPS is table stakes of online security, as there’s no security to be had if anyone on the network path can modify the origin contents.

          There’s plenty of actual research and roadmaps on indicators like Not Secure, and the eventual goal is indeed to mark the insecure option Not Secure instead of marking HTTPS as Secure. The web is a complex slow moving beast, but this is exactly a step in that direction!

          Anyway, if there’s one thing experience showed us is that trying to convey “context” on the security status of a TLS connection to users is a losing proposition.

          1. 4

            There’s plenty of actual research and roadmaps on indicators like Not Secure, and the eventual goal is indeed to mark the insecure option Not Secure instead of marking HTTPS as Secure. The web is a complex slow moving beast, but this is exactly a step in that direction!

            Not that I don’t believe you, but mind pointing me at this research?

            Anyway, if there’s one thing experience showed us is that trying to convey “context” on the security status of a TLS connection to users is a losing proposition.

            This is exactly my concern, it seems that sprinkling “security” hints to non-technical users usually leads to them making the wrong assumptions.

            1. 1

              I am focusing on a specific point in your post

              there’s no security to be had if anyone on the network path can modify the origin contents.

              This can be addressed by adding signatures rather than encrypting the whole page. There are useful applications such as page caching especially in low bandwidth situations which are defeated by encryption everywhere.

          1. 1

            After working in the space for a while, George Tankersley and I put together a list of projects that would use (even a little) money well towards Internet freedom and infrastructure.

            It comes with direct links, proportions and explanations: https://donating.tech

            1. 22

              Sigh, no please. Crypto means cryptography, not Internet money.

              1. 6

                If you use crypto implementations in the standard library you are pretty much back to square one, as they copy key material. https://github.com/golang/go/issues/21865

                1. 5

                  I share the longing for simpler (and more secure) access to simple text. Javascript off, a good content blocker, and HTTPS Everywhere in block mode helped, but I always wanted the option to just pass some domains through an Instapaper or Readability-like service. This seems to be an attempt at doing that!

                  However, the TLS security cost is just too high. The Go stack is good, but it’s a different beast from a browser one. No revocation, no CT, no HSTS, no HPKP, right off the top of my head. This is probably doable in an extension though, and there would be no such issue.

                  1. 1

                    Depends. If you’re using chrome, there’s no revocation. HSTS still works, it passes right through. HPKP is dead, though. But the interception is configurable, so you don’t have to push all traffic through it.

                    Or do what I do. Use a different browser (nonproxy) for important sites.

                  1. 2

                    GODEBUG=netdns=go should be enough as a mitigation for Go binaries: https://golang.org/pkg/net/#hdr-Name_Resolution

                    1. 1

                      Unless you actually need to use the system resolver, presumably.

                    1. 2

                      Here’s the Go API:

                      // Plaintext to be encrypted
                      pt := []byte("Hello, world!")
                      
                      // Nonce to encrypt it under
                      n := miscreant.GenerateNonce(c)
                      
                      // Associated data to authenticate along with the message
                      // (or nil if we don't care)
                      ad := nil
                      
                      // Create a destination buffer to hold the ciphertext. We need it to be the
                      // length of the plaintext plus `c.Overhead()` to hold the IV/tag
                      ct := make([]byte, len(pt) + c.Overhead())
                      
                      // Perform encryption by calling 'Seal'. The encrypted ciphertext will be
                      // written into the `ct` buffer
                      c.Seal(ct, n, pt, ad)
                      

                      That… still seems too complicated, I guess? I wouldn’t expect to have to compute the overhead myself, or wonder what the “associated data” is or should be.

                      1. 2

                        If you don’t compute the overhead you can’t provide the output slice and the function would have to allocate. Additional data can just be nil. Also, this matches cipher.AEAD.

                      1. 11

                        I think I’ll pass. I kind of like the ability to edit binaries when I feel like it. (Regardless of the legal status of enforcement of such measures.)

                        1. 7

                          You probably know, but this EULA only applies to their binaries you download from caddyserver.com. So you can totally pass on the build server at caddyserver.com, pretend it didn’t exist (like it doesn’t for 99% of open source projects), and carry on using Caddy, building your binaries, modifying them, and anything you like.

                          1. 12

                            I don’t know, man… Technically the EULA forbids trying to discover the source code, so once you download the binary version, you’re not allowed to go back and download the source. Maybe that’s not what they meant, but I think they should have picked their words with more care.

                            3.1 You SHALL NOT, and shall not allow any third party, to: (a) decompile, disassemble, or otherwise reverse engineer the Software or attempt to reconstruct or discover any source code, underlying ideas, algorithms, file formats or programming interfaces of the Software by any means whatsoever (except and only to the extent that applicable law prohibits or restricts reverse engineering restrictions);

                            1. 6

                              I’m so sure that’s not what they meant that I’ll ping them your comment. :)

                              (And I’ll eat my hat if it’s ever enforced or attempted to, but I see that’s not the point for you.)

                              1. 11

                                (This sounds like I’m really angry, but I’m not. Just kinda annoyed.)

                                Seems like only yesterday Equifax was caught trying to trick users into agreeing to arbitration. Of course, their excuse was that it was only boiler plate and never meant to be enforced, yada yada. Maybe people should read their shitty contract language before asking people to agree to it. Wouldn’t that be nice?

                                What does the EULA even accomplish? Anybody willing to pay $50/month for a web server isn’t going to be futzing around with IDA trying to edit the binary. The free crowd is going to build from source. “Please don’t remove the banner without paying.” would be just as effective, and far less dickish.

                                It’s like a pawn shop with giant iron bars and a revolving mantrap front door. It signals to me that their clients are generally murderous thieving rats, so maybe I’ll just move along.

                                1. 4

                                  They explicitly say that if you don’t like the header, you should compile it yourself.

                                  Well, we think our sponsors are pretty awesome. But we’re huge proponents of preserving and expanding individual freedom. If you object to any of our sponsors being named in an invisible response header on your personal website, you may freely compile Caddy from source without that header.

                                  The whole point of the sponsors header is to cover their free build service. If you don’t use that, you don’t need the header.

                                  1. 2

                                    Contract law can be complicated. I can put a table out on the sidewalk and give away free tacos, but if I get you to sign a contract that says “I will not eat Ted’s tacos” then you can’t have any tacos, even though there’s a sign that says “free tacos” right there on the table.

                        1. 8

                          You can just use target-cpu=native if you don’t want to figure out or hardcode your architecture.

                          1. 1

                            This is interesting! Anyone know if Go has any way to do something similar?

                            1. 0

                              https://dave.cheney.net/2013/10/12/how-to-use-conditional-compilation-with-the-go-build-tool

                              Through build tags. The standard library uses that a lot for system calls; I’m sure there’s optimizations for architectures somewhere in there as well

                              1. 5

                                Not really. All architecture optimizations in Go (except the ones controlled by GOARM) are activated at runtime. The idea is that binaries should run everywhere. Also, the compiler does not do auto-vectorization like LLVM.

                                1. 2

                                  To expand on this, go binaries can contain instructions that the current architecture does not support (like say AES acceleration). Support for those instructions is detected at runtime using CPUID. https://golang.org/src/crypto/internal/cipherhw/asm_amd64.s

                                  Works out reasonably well for core stdlib stuff that has been optimized like crazy like byte searching. Unfortunately it doesn’t really solve the problem of making arbitrary go source code leverage cpu features.

                            1. 10

                              For the same observation but accompanied by investigation instead of ranting, watch George Tankersley’s GopherCon 2017 lightning talk: https://www.youtube.com/watch?v=7y2LhWm04FU&list=PL2ntRZ1ySWBfhRZj3BDOrKdHzoafHsKHU&index=11

                              1. 4

                                To be fair, the article on lemire.me did not seem like ranting. And I’m a plush-gopher-on-my-desk fan of Go :-)

                              1. 5

                                The point is not that the interface is blocking but that streams are streams. You can’t rely on a non-blocking read interface to return chunks of data of any specific size. How you handle this is by adding a length field at the beginning, reading that, and then using ReadFull with that size.

                                This is why DNS over UDP (datagrams) doesn’t have a length field, while it does over TCP (stream).

                                1. 30

                                  Click. Scroll.

                                  If this is the first time you are visiting this website, a warning message will appear.

                                  Close tab.

                                  Leave a comment linking to Alice in Warningland.

                                  1. 1

                                    I’m guessing that, because of new free SSL services, that SSL is more widespread than ever.

                                    There are so many websites out there that want to use the extra trust that SSL provides, but they don’t have the same seriousness that a bank or Facebook has. Even on top of the fact that warnings are terrible, most websites do not deserve or want the seriousness that comes along with warnings.

                                    1. -3

                                      Yes the alternative is much better. Let these people whom we shall call “certificate authorities” tell us what can be trusted.

                                      After all, if we can’t trust the NSA, who can we trust?

                                      1. 4

                                        Yes the alternative is much better.

                                        Exactly.

                                    1. 3

                                      Hey all, author here. Happy to take any feedback, in particular “I tried and it didn’t work out of the box” stories. I will not tell you to RTFM.

                                      I recommend reading https://github.com/cloudflare/hellogopher#why for more insight.

                                      There’s also a gif demo https://twitter.com/FiloSottile/status/822745605806112768

                                      1. 2

                                        Looks really useful. I wish you had put the “why” allll the way at the top[0], because by the time I scrolled down a page or so and hit “IMPORT_PATH”, I gave up because I didn’t know why I wanted what it was doing and it seemed really complicated. I then read the “why” (because you linked to it in your comment) and got it. :)

                                        [0] It’s great that it has a “why” – far too many projects don’t explain why I want/need/should care about it.

                                      1. 7

                                        Blaming the developer is not my point, and the cryptography community is trying hard to advertise the better and appropriate tools, but as a reminder:

                                        If You’re Typing the Letters A-E-S Into Your Code You’re Doing It Wrong

                                        https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2009/july/if-youre-typing-the-letters-a-e-s-into-your-code-youre-doing-it-wrong/

                                        1. 3

                                          As an encryption-aware person (as in “I’m aware I want encryption, but aware how little I know about it”), I’ve been slowly bumping up the percentage of my life covered by such. This included recently upgrading my CPU specifically so that I could re-install my OS (GNU/Linux) with full-disk encryption (dm-crypt with LUKS).

                                          I upgraded my CPU because I was “aware” I wanted one that supported AES-NI.

                                          Your comment (and the attached article) leads me to ask some questions. You may not know the answers, but I would appreciate being educated by any of the fine Lobsters who read this:

                                          1. The default cipher for dm-crypt is aes-xts-plain64, presumably involving AES as it is in the name. Is it therefore a terrible idea per the article?
                                          2. If despite the name it is not AES, and the supporter ciphers (default or otherwise) for something like dm-crypt use a non-AES-based algorithm, are they then not actually benefiting from the AES-NI x86 extension?
                                          3. Am I mis-interpreting what AES-NI represents, and being that is simply a set of instructions, they can be used as primitives upon which useful acceleration for other, non-AES ciphers?
                                          4. Am I barking up the wrong tree entirely? Perhaps misunderstanding the failings of AES described in the article, and that it is acceptable/appropriate for disk encryption but not for the purposes in the article (i.e. authentication)?

                                          Any explanation or even just useful links to related reading is appreciated. I did about an hour of searching and reading before deciding to dump such a long list of questions here.

                                          1. 3

                                            The statement isn’t that you should not use AES, it is that you shouldn’t use it directly. It is OK to use AES if the only way it gets used is through something well-audited from crypto implementation point of view.

                                            1. 2

                                              Thanks for the clarification. I was indeed taking away the wrong lessons from my layman’s interpretation of the article.

                                        1. 1

                                          @filosottile: so, are you live streaming your attempts to solve them?

                                          1. 2

                                            Yeah, I think that’s happening! A schedule will come (on Twitter I guess) once I figure out exactly how bad I am at livestreaming ;)

                                            Also, about @stig’s question, Sean here is the author of the challenges and the very first question I asked was if he would be ok with the results being public, and he was super-positive.

                                            1. 1

                                              I thought you were not supposed to share your solutions to these? At least I’ve got vague memories of that being the reason I’ve kept my own (feeble) progress off GitHub.

                                              1. 1

                                                Yeah, I think that’s the case. There was some talk on twitter of him livestreaming. People were ready to donate money to a charity of choice for him to do it. I haven’t checked Twitter to see if it’s going to happen or not, though.

                                                1. 1

                                                  It is not entirely clear from this quote on their front page:

                                                  What Are The Rules?

                                                  There aren’t any! For several years, we ran these challenges over email, and asked participants not to share their results. The honor system worked beautifully! But now we’re ready to set aside the ceremony and just publish the challenges for everyone to work on.

                                                  I took the “set aside the ceremony” part to be referring to the quirky way the challenges were distributed, but perhaps they also mean that they no longer care if you share your results?

                                                  1. 2

                                                    One of the authors of the Cryptopal challenges was promoting him livestreaming, so I think it’s ok. :)

                                                    Edit: reference