RCMP commissioner warns IT failures will have 'catastrophic' consequences - <AUTHOR> http://www.cbc.ca/news/politics/rcmp-it-commissioner-safety-1.3998221 <comment><USER2> Added context. This is what happens when you take 6000+ staff from 40+ departments and create one large centralized IT department with little to no up front planning. An absolute meat grinder. Everything is on life-support until the fire is so large that you have a near national incident and then it becomes top priority. Cycle repeat.

Here's another example for CBSA: [http://www.cbc.ca/beta/news/politics/shared- services-canada-...](http://www.cbc.ca/beta/news/politics/shared-services- canada-cbsa-report-1.3786286)

Here's another example for DND: [http://www.cbc.ca/beta/news/politics/shared- services-canada-...](http://www.cbc.ca/beta/news/politics/shared-services- canada-data-military-1.3472794)

<comment><USER3> More context: The RCMP had a reputation long before shared services was a thing. For decades they never adapted their recruitment and training, continuing policies that drove tech-savvy individuals away from the force. (Google around. In recent years they've dramatically lowered recruitment standards to bring in younger blood. You don't even need to be Canadian any more.) The result is a force that seems to never get along with technology. Phones and radios just never seem to work properly.

I've taught more than a few cops (IT law / forensics) and have attended many lectures by RCMP officers claiming to be tech "experts". They aren't. The RCMP live in a very tight knowledge bubble.

<comment><USER4> For reference: The Vancouver police department recently hired 16 out of 2500 applicants. This is even with a large number of baby boomers retiring. You pretty much need a 4 year degree from a good school to be hired, they are quite selective. Whereas the RCMP will take almost any reasonably fit, under age 35 person with a high school degree and clean criminal record check.

Joining the RCMP is a crap shoot because you have no control over where you will be posted after finishing the academy. It could be 8 years of purgatory in Moose Jaw.

<comment><USER5> I'm laughing pretty hard at your last comment. Around here, there are much worse places to be posted than Moose Jaw. Rural isolation (entire RMs with populations of 200 people) plus significant substance abuse and domestic violence problems.

The point still stands though. Joining the RCMP is likely going to result in you going somewhere no one wants to be for a few years, because anyone with seniority transfers away as soon as possible.

</comment></comment></comment></comment><comment><USER6> For those like me who are unfamiliar with what RCMP is - it's the Canadian police. The article is about the Canadian police commissioner raising concerns about the quality of IT support provided to them

<comment><USER7> RCMP (Royal Canadian Mounted Police) are a pretty unique police service. Depending on the area of the country they can operate as everything from federal law enforcement right down to local police services. In many rural places they operate as all levels of law enforcement all at once, something you wouldn't find in the US. The vast territory and mandate they cover makes for some unique challenges.

<comment><USER8> Cities and communities can also contract the RCMP instead of managing their own police forces.

</comment></comment></comment><comment><USER9> I worked on contract at this department and was declined a contract renewal when I was reprimanded for identifying a DOCUMENTED zero-day in of our scripts that managed some lofty systems. I was also reprimanded by the same manager for suggesting configuration management tools since he couldn't bill out the build time for that service vs. my time building each machine by hand.

The whole place is a disaster waiting to happen.

<comment><USER10> It's been happening for quite a while now. This is hardly the first critique of Shared Services Canada.

</comment></comment><comment><USER11> I've heard of similar issues with the pay system where people haven't been paid in months and needed urgent pay issued, or others who received extra money and were then asked to pay it back.

I can only imagine how hard it must be for the government to pull off modernization. It's the poster-child definition of "big slow bureaucracy" and it's asked to pull off high complexity feats at large scale, with little, uncompetitive money to offer to recruits (in comparison to the private sector), while juggling with politics and policies that make you buy IBM and Microsoft.

Pretty happy I don't work in this. Yet, I'd join a "shock troop" if the government was to pull off a Digital Service kind of thing with acceptable pay, although the idea of working in all that big government crap makes me feel a bit sick inside.

<comment><USER12> > It's the poster-child definition of "big slow bureaucracy" and it's asked to > pull off high complexity feats at large scale, with little, uncompetitive > money to offer to recruits (in comparison to the private sector)

If you have good reasons why you cannot offer so much money, there are still options available to attract smart people for the job: Just give them a lot more intellectual freedom to do "the right thing" (instead of having to implement political compromises) and give them the authority to be really allowed to do so. Also not every smart person who can, say, program really well "is a startup guy". There are people who prefer a "more safe, plannable career" \- here public service has something to offer. Also it might be a good idea to have the job at still attractive places that have a very low cost of living: What is interesting is "salary minus cost of living". So these jobs can still enable a higher standard of living than, say in SF or NY, while paying much less.

TLDR: There are lots of other ways to attract smart people if you have serious reasons why you cannot offer so much money. But you have to be willing.

<comment><USER13> _Just give them a lot more intellectual freedom to do "the right thing" (instead of having to implement political compromises) and give them the authority to be really allowed to do so_

That's exactly the one thing that working in the public service CAN'T provide you. If you screw up, you and everyone in the chain of responsibility right up to the people who directly report to your ministry's cabinet member have their necks on the line; public service employees typically enjoy very posh pensions and no one is looking to lose that by getting sacked.

I think we incentivize public service employees to do _the safe thing_ rather than _the right thing_ when those two things are not the same. Losing a public service pension is a terrible cost for failure, and I don't think we equivalently reward the success-side of risk for these people.

It would be interesting to know what government could accomplish if the public service gave compensation that was more in line with the private sector.

<comment><USER12> > That's exactly the one thing that working in the public service CAN'T > provide you.

Counterexample: In Germany university professors are part of the public service. They (as probably every tenured university professor nearly anywhere worldwide) _do_ have lots of freedom in the research they do etc.

</comment></comment></comment></comment><comment><USER14> Hah, I always thought it might not be the greatest idea to put all the IT for a government in one bureaucratic fiefdom...

But they pay their support invoices for software on time and don't blink at the prices, so that's something.

</comment><comment><USER15> Do they still use horses in any non-ceremonial role? Are they still called Mounties?

<comment><USER5> I upvoted you because I feel it's a legitimate question. One thing I've found in my various experiences with the RCMP is that they generally seem to take a lot of pride in their work and role. The ceremonial events involving the horses and red uniforms are pretty impressive.

This, I think, spills over into their day-to-day work too. I've been pulled over for traffic offenses and have only experienced the utmost professionalism. All very "matter of fact" with no bullshit. Road-side stop checks for impaired driving have gone very smoothly. I called once to report a collision I had with a deer and she ribbed me a little: "when did the accident occur?" "around 9pm" "great, thank you. I've got you all written up here for hunting without a license and hunting after dark. Do you have a pen handy for writing down the file number?" And recently I was at a remote beach and found a woman who had clearly ingested a substance of some kind and was pretty messed up. We talked and she was alone and a long way from home. RCMP dispatch handled it well, and 10 minutes later the officer handling the case called me back to ask for more specific directions and to thank me for taking the time to help her keep people safe.

Do they have an impeccable record? No. But in general they are vastly different than the police forces generally covered in the media.</comment></comment>


NSA Finds 1 Email From Snowden Raising Question - <AUTHOR> http://abcnews.go.com/Technology/wireStory/nsa-finds-emails-snowden-wrongdoing-23916855

<comment><AUTHOR> It's standard operating procedure with the White House, no matter who is President, to try to discredit opponents. This is the core of the Plame affair - calls to friendly journalists to plant stories in the press, revealing classified information that suits their purpose.

</comment><comment><USER2> I don't believe we can trust the NSA's comment regarding "the only communication from Snowden it[NSA] could find". I highly doubt if they found evidence to support Snowden bringing up issues internally, that they would release that information.</comment>


World Wide Web Contact Lenses Possible - <AUTHOR> http://chronicle.com/campusViewpointArticle/Contact-Lenses-With-Circuits/88/

<comment><AUTHOR> I want to order two of these, where can I get them?</comment>


Ask HN: Will Rust be as popular as Go or C++? - <AUTHOR> Will Rust continue to remain as a niche language that sometimes people choose as an alternative for C++ or Go, or will it see a rise in adaption soon? <comment><USER2> I don't see why it wouldn't become as popular as Go, which is still a pretty niche language despite the Silicon Valley and HN hype.

C++ is an entire other beast. Asking whether a language will be as popular as "Go or C++" is like asking whether it'll be as popular as "Julia or Java".

C++ is one of the top 5, maybe one of the top 2 languages that existing software is built in. For about 15 (maybe even 20) years before Java matured, and then another 5-10 before C# became the default for new Windows projects, it was by leaps and bounds the most common language for building desktop and enterprise software. There are still billions of lines of C++ code in production and being maintained, possibly trillions. Not to mention new projects still being begun using it.

FWIW, I personally think Rust has a better chance of becoming the next C++ than Go does, but who can really predict the future anyway?

</comment><comment><USER3> I sincerely hope not. The last thing we need is another down-in-the-weeds language for bit twiddling.

Moore's law is practically dead now, so most of the newer CPU-bound algorithms start off using GPUs (where you're stuck with GLSL), then move on to custom chips (like Google's tensor units for ML, or Bitmain's ASICs for bitcoin mining).

If we're headed back to the mainframe architecture of putting the inner-loop stuff in hardware, then this is a wonderful time to start doing more with higher-level languages.

Even as things stand, Java and some Lisps are as fast a C for many applications, and they take care of the memory issues just as well as Rust does, but without the effort or cognitive overhead that Rust requires.

<comment><USER4> > The last thing we need is another down-in-the-weeds language for bit > twiddling.

I disagree. Currently, the best programming language for "bit twiddling" is C, and throughout the years C has essentially remained the same language that was developed four decades ago. In spite of C remaining one of the most popular programming languages in history, the language could be improved.

Graydon Hoare and the good people at Mozilla Research have decided to put in the legwork themselves and pick up the slack. They managed to do a commendable job, and the quality of their work is being increasingly recognized. The reason is quite clear: the whole world was eagerly looking for "another down- in-the-weeds language for bit twiddling" that helped circumvent the lack of progress imposed on the C programming language. Rust does just that and more.

</comment></comment><comment><USER5> I would like to be a believer in a "C replacement" which is safer, but I see people struggling to do simple things in Rust and am skeptical.

<comment><USER6> Definitely true. The "angel's advocate" way of putting it is that C lets you write code relatively quickly that _appears_ to work but is actually undefined behavior in subtle cases that are difficult to test. Though for someone learning the language and mostly coding small examples, "correct in all cases" might not matter very much, and it can feel super frustrating.</comment></comment>


Help HN: How do I stop my start-up from being bullied?  - <AUTHOR>

After 6 months, I launched a startup called Freelancer.fm, which is a freelance aggregator platform, syndicating projects from the top freelancing sites and filtering data based on advanced searches.
After going live, the site built quick momentum. With that came both pros and cons. The CEO of Freelancer.com, Matt Barrie, called me directly and threatened to sue me for breach of trademark infringement if I didn't change my name. Furthermore, he removed the feed from our site, resulting in less projects being posted on the platform. Asshole.
When I first started working on this project, I was under the assumption that dictionary words cannot be trademarked in the industry they serve a purpose for. I then transferred all the files to the new and worse name, Searchfreelancejobs.com. It's pretty lengthy, however the name Freelancer.fm was a gem, and we had all our users trusting the brand.
What do you guys think I should do? Lose users and let them know we had a name transition? Get a trademark attorney to fight the case with Freelancer.fm? Any advice is welcome. I'm sure I'm not the first and certainly not the last. <comment><USER2> Their CEO is not the asshole in this situation; your assumption about dictionary words is not correct. You're using their brand, their logo, and their listings; to call you instead of suing you immediately was a kindness.

<comment><USER3> May be more bluster than kindness, whether they realize it or not:

[http://tess2.uspto.gov/bin/showfield?f=doc&state=4806:155yzh...](http://tess2.uspto.gov/bin/showfield?f=doc&state=4806:155yzh.2.8)

You can probably point an IP lawyer at the registered trademark and get a quick opinion on your options.

</comment></comment><comment><USER4> Consult a lawyer.

If you believe that keeping your existing name is worth something to your startup, put that money where your mouth is and pay a professional.

<comment><AUTHOR> Whether I'm right or wrong, Matt has millions of dollars for litigation. The law isn't about who's right, it's about the resources you have to stand in the fight.

<comment><USER5> Actually, the law is somewhat about who is right. If he has a trademark for name that covers your space and you use the exact same name, then (IANAL) it sounds like he's correct. But you should spend some time and money to consult a lawyer. My guess is they would tell you that you don't have a case.

<comment><AUTHOR> Thanks for your input. I'll try to consult one.

</comment></comment></comment></comment><comment><USER6> Do not do what Amy's Baking Company did to their bullies.

Okay, in all seriousness... this was just posted the other day (might have been yesterday?) and though humorous, can be applied to what you're going through: [http://abovethelaw.com/2013/06/how-to-write-a-great- response...](http://abovethelaw.com/2013/06/how-to-write-a-great-response-to- a-cease-and-desist-letter/)

Now, I am not a lawyer, but I believe you could potentially change your brand name to "Freelancer F___ M___" and plug some words that pair with .fm. Example: "Freelancer For Me" comes to mind.

Also, the spiteful side of me says to proxy the feed from freelancer.com to your platform, but that's just me.

<comment><AUTHOR> Joshmn: Thanks for chiming in. If I change the title of the site to "Freelancer For Me" for example, will it be enough to win a case like this?

<comment><USER7> So.. am I missing something here?

You are a new startup. You are operating a closely related product to a large power player in the same business by choosing a nearly identical name. Now you are suggesting their data is so important to you that you are going to technically circumvent their block, potentially adding more legal liability, and use their service anyway? And calling them "assholes" in a public forum forum?

Does that seem at all sustainable to you?

</comment></comment></comment><comment><USER8> Surely this can't come as a surprise to you.

You started a business in the same industry as freelancer.com, leveraged off their service and have an almost identical name; how did you think they would respond?</comment>


FCC may regulate Internet lines days before Christmas - <AUTHOR> http://thehill.com/blogs/hillicon-valley/technology/130197-fcc-may-regulate-internet-lines-days-before-christmas <comment><USER2> Finally!</comment>


The Anthropocene Is a Joke - <AUTHOR> https://www.theatlantic.com/science/archive/2019/08/arrogance-anthropocene/595795/ <comment><USER2> Well, that was an interesting article. Flawed, but interesting.

It's not clear how the Earth will end up, since human population reduction looks unlikely barring catastrophe - intentional or otherwise.

However, I think humans will very quickly (< 100 years) spread throughout the solar system, and eventually into the Oort cloud. At some point, sooner or later, humans will also become an interstellar species.

Human artifacts may or may not always be visible on the Earth, but they'll be easily visible on the Moon until it gets eaten by the Sun.

On that note, it's worth mentioning that life on Earth is roughly 4/5 of the way along its timeline. Earth will become unbearably hot in well under a billion years, regardless of human contribution, due to increasing solar luminosity...

<comment><USER3> We've kicked at dominoes and they're toppling. If we can't clamp the temperature on a non-geological timescale, we're gonna face consequences. Add to that, industrial farming practices are bad for soil and groundwater.

So we can look forward to a world full of dry, barren farms going into a hot spell. Heat of summers is getting lethal in places; expect to see more of that. I'd say human population reduction looks extremely likely, due to the ongoing climate catastrophe.

This may be our filter. Maybe we'll live on. Maybe a science-literate subset of us will live on. But devastation seems much more likely than sustainable colonization of space.

<comment><USER2> >But devastation seems much more likely than sustainable colonization of space.

Those aren't mutually exclusive outcomes...

At any rate, I think global warming is overrated as a threat. Market forces will soon greatly reduce CO2 production - it mostly depends on how quickly China and India can be weaned off of coal.

The other big issue is having a worldwide massive nuclear buildout so we have reliable, zero-carbon energy to back up unreliable "renewables". Eventually, it might be fusion, which will also produce plenty of radioactive waste. (None of the current designs are aneutronic.)

Regardless, permanent human colonization of the Moon is relatively easy, and the technological gains there should make asteroid mining feasible. At that point, there'll be so much money to be made that there'll be an explosion into space.

</comment></comment></comment><comment><USER4> Something that has occured to me in the past whilst thinking about this is that given the miniscule evidence our species and civilisation will leave in the geological record, can we really be sure that no other short-lived civilizations have existed previous to homo sapiens?

<comment><USER5> If it was biological in nature, then we wouldn't know. That's a thought that can keep me up at night. Imagine an entire civilization based on wood?

<comment><USER4> I think that even our current civilization, if it stopped today, would be pretty easy to miss in the geological record 200 million years from now.

But imagine if civilization had ended 500 years ago, or even a thousand. There would be absolutely nothing to show for it in a couple hundred million years time.

<comment><USER2> > But imagine if civilization had ended 500 years ago, or even a thousand. > There would be absolutely nothing to show for it in a couple hundred million > years time.

I think some stone artifacts (cities, pyramids, roads) would still be identifiable in some cases. Excavation would be needed, of course.

Similarly, some of our concrete, glass and non-ferrous metal construction should survive a long, long time.</comment></comment></comment></comment>


John Romero's Principles for Programmers - <AUTHOR> https://github.com/anttiviljami/romero-programming-principles <comment><USER2> Principle 6 Fix Bugs Immediately

As soon as you see a bug, you fix it. Do not continue on.

I never understood the idea that you blast through code then go back and fix it later. Later never happened.</comment>


Is your developer recruiting process just stroking your company ego? - <AUTHOR> http://fourlightyears.blogspot.com/2014/12/is-your-poor-developer-recruiting.html

<comment><USER2> A particular gripe I have is that I've never claimed to be a Computer Scientist. I'm a Software Engineer. While conceptually related, the two are quite different disciplines. There are schools that offer both kinds of degrees.

More or less a Computer Scientist figures out how it could be done, while a Software Engineer actually does it.

Computer Science doesn't typically concern itself with edge cases or error conditions such as running out of filesystem space. But Software Engineers quite definitely do.

If you're looking for work yourself, I'm building a list of links directly to employer "Jobs" or "Careers" pages at:

[http://www.warplife.com/jobs/computer/](http://www.warplife.com/jobs/computer/)

Most of that page has empty placeholder links. So far I've got real content for the Telecommuting section, as well as Portland, Beaverton, Hillsboro, Lake Oswego, Tigard and Wilsonville in Oregon, and Seattle, Vancouver and Camas in Washington State.

(Vancouver WA != Vancouver BC. We were here first!)

If you have any specific requests for where you'd like to work, let me know and I will make a priority of posting the links I already have recorded, but not yet posted; I'll also research links for your location.

While I agree that it's hard for high-tech employers to find qualified candidates, I don't really believe that there is a shortage, as many companies claim. Rather, I assert that it's difficult for candidates to find the companies that are hiring. That's a problem I hope to solve.

If you'd like your company listed, mail a link to your company's homepage, as well as its Careers or Jobs page, and Contact page if any, to firstname.lastname@example.com

There is no charge for this service nor will there ever be.</comment>


Building Searchable Encrypted Databases with PHP and SQL - <AUTHOR> https://paragonie.com/blog/2017/05/building-searchable-encrypted-databases-with-php-and-sql <comment><USER2> Can someone explain why it's not simple to brute force the hash in the blind index? Since SSNs only have 9 digits, that's a billion possibilities. Is this just a hash that's too slow to iterate over the billion? Is each row salted differently?

Edit: I'm asking because I don't know, not because I'm saying it's possible.

Edit2: Also, it appears there was a pattern to SSN issuance prior to 2011, so the problem space may be far short of a billion. No numbers start with 00 for example. Also, there's a listing of numbers not ever issued[1], and a table of "highest assigned"[2]. Since SSN's issued after 2011 are children now, they can be safely skipped, as they aren't as interesting for fraud. Also, if the State of residence is cleartext, you can search that space first if you assume a large number of people live in their birth state.

[1][https://www.ssa.gov/employer/stateweb.htm](https://www.ssa.gov/employer/stateweb.htm)

[2][https://www.ssa.gov/employer/ssnvhighgroup.htm](https://www.ssa.gov/employer/ssnvhighgroup.htm)

<comment><USER3> HMAC is a keyed hash which renders simple brute force attacks ineffective unless the attacker is also able to compromise the key.

Even without the key the system is still vulnerable to frequency analysis. For example if it were used to store passwords an simple sort and count would reveal accounts that have common passwords which could then be brute forced using lists of the most common passwords found on the internet. The suggestion of using blind indexes for searching on partial values (i.e. the first letter of a name) would increase the vulnerability.

Even if the attacker doesn't have access to the key if the application is fast enough he may be able to brute force it by passing every possible value and seeing how it encrypts if the search space is small enough (i.e. common passwords).

Secure key storage is always a challenge and the suggestion that the key is stored on the application server instead of the database has some practical problems. The key in many cases will end up being duplicated in code repositories or build scripts which increases your vulnerability to internal attackers. A better system stored half the key on the database server and the other half on the application server which are then XOR'd to get the encryption keys which can reduce the number of potential internal attackers that could recover the plaintext.

Also when recovering from an attack in many cases it may be difficult or impossible to know how many systems were compromised. Without the ability to prove that both the data and the key weren't compromised in an attack an auditor may require that you operate on the assumption that the data was compromised with associated requirements for notification and penalties.

Banks long ago solved the problem of secure key storage with the use of hardware security modules (HSMs) where the key is stored and used on a secure, tamper proof device. This turned the problem of secure key storage into a problem of physical security which the banks were already good at rather than digital security. Where is my key? My key is right here.

These modules are now becoming more commonly used in the ecommerce space (AWS now provides them, for example) but they are still fairly difficult to work with. Some shops will used hardened/audited servers that run encryption/decryption micro-services instead.

<comment><AUTHOR> > Even without the key the system is still vulnerable to frequency analysis. > For example if it were used to store passwords an simple sort and count > would reveal accounts that have common passwords which could then be brute > forced using lists of the most common passwords found on the internet.

I would hope, very strongly, that nobody would _encrypt_ passwords, but instead, hash them: [https://paragonie.com/blog/2016/02/how-safely-store- password...](https://paragonie.com/blog/2016/02/how-safely-store-password- in-2016)

</comment></comment></comment><comment><USER4> I disagree with the dishonorable mention as you've only considered the naive case which you can build upon to avoid the issues mentioned. Consider a design where everything is AES-256 encrypted in the application and the database just receives an encrypted binary. You can build an in-memory cache for situations where you need to search sensitive information (first name, last name, ssn) by using a tokenizer and using a technology like Erlang term storage. It will be eventually consistent which should be fine for our use case since that type of information does not change that often and the cache recompute can be done asynchronously.

From a security standpoint you don't change the threat model for the application. If someone gets unauthorized access to the server you are already screwed since your application can get access to the plain text data in order to serve requests.

If you threw away that computation for every request I would agree that it is wasteful but we don't need to do that if we rethink the role of the database in our application.

<comment><AUTHOR> > I disagree with the dishonorable mention as you've only considered the naive > case which you can build upon to avoid the issues mentioned. Consider a > design where everything is AES-256 encrypted in the application and the > database just receives an encrypted binary. You can build an in-memory cache > for situations where you need to search sensitive information (first name, > last name, ssn) by using a tokenizer and using a technology like Erlang term > storage. It will be eventually consistent which should be fine for our use > case since that type of information does not change that often and the cache > recompute can be done asynchronously.

[https://tonyarcieri.com/all-the-crypto-code-youve-ever- writt...](https://tonyarcieri.com/all-the-crypto-code-youve-ever-written-is- probably-broken)

[https://blog.filippo.io/the-ecb-penguin/](https://blog.filippo.io/the-ecb- penguin/)

There are defensible positions for which ECB mode is acceptable. I wouldn't classify the scenario you described as one of them.

> If someone gets unauthorized access to the server you are already screwed > since your application can get access to the plain text data in order to > serve requests.

If someone gets unauthorized access to the _webserver_ , yes, it's game over.

If someone gets unauthorized access to the _database server_ , and it's a separate machine from the _webserver_ , then your analysis here isn't applicable.

That's the threat model alluded to in the beginning of the article, but if it's not _your_ threat model, then you may reach different conclusions about the best way to protect data. (You may not even use encryption, for example.)

</comment></comment><comment><USER5> If I understand this correctly, you basically store HMAC or password hash as a separate field and index on it? That may work for SSNs (which are unique), but it won't work for other things you commonly need to encrypt, such as personally identifiable data (in healthcare scenarios).

If you (for example) encrypt first names of people (or any other data point that is not unique per entry) using this scheme, then HMAC will reveal all the rows that have the same first name. You can then use frequency analysis to determine with high probablity what the encrypted names are.

<comment><AUTHOR> > If you (for example) encrypt first names of people (or any other data point > that is not unique per entry) using this scheme, then HMAC will reveal all > the rows that have the same first name. You can then use frequency analysis > to determine with high probablity what the encrypted names are.

This is where things get difficult to explain, because most health care programs are going to care about compliance first and foremost. So with that in mind:

1\. You probably don't need to encrypt their first name to be e.g. HIPAA compliant, but...

2\. Using a very short Bloom filter increases the odds of false positive collisions. Combine this with Argon2 and aggressive rate limiting, and now you've frustrated frequency analysis and chosen plaintext attacks greatly.

Given the threat model that we've given (database is not the same machine as the webserver, and the database server is what gets compromised), I can't see a better solution.

</comment></comment><comment><USER6> How is this different than CryptDB?

[https://css.csail.mit.edu/cryptdb/](https://css.csail.mit.edu/cryptdb/)

<comment><AUTHOR> From what /r/crypto says, they leak metadata to the database server.

[https://www.reddit.com/r/crypto/comments/6e5jjz/building_sea...](https://www.reddit.com/r/crypto/comments/6e5jjz/building_searchable_encrypted_databases_with_php/di8n26v/?context=2)

</comment></comment><comment><USER7> I know this is a I'm going quest and for that reason it annoys me when i see my companies competitors say they encrypt all their users searchable data and I know what they are really doing is using Amazon disk level encryption that's not really helpful if your live database gets dumped.

</comment><comment><USER8> Here's a (naive) ruby implementation. [https://gist.github.com/kakoni/399e5324611db9f89806172124549...](https://gist.github.com/kakoni/399e5324611db9f89806172124549aa7)

</comment><comment><USER9> I agree that the HMAC approach is better but a proper deterministic encryption would work just fine, wouldn't it? You're comparing your method with ECB mode which is a bit unfair.

<comment><AUTHOR> What are some constructions you'd consider "fair"?

<comment><USER9> AEAD cipher with nonce generated from plaintext? That would have equivalent security properties except for being needlessly complicated?

<comment><AUTHOR> So you mean something like this?

        $nonce = sodium_crypto_generichash($message, '', 24);
        $ciphertext = $nonce . sodium_crypto_aead_xchacha20poly1305_ietf_encrypt(
            $message,
            $nonce,
            $nonce,
            $key
        );

That solves the literal search problem, but none of the others.

However, in my experience[1], when it comes to deterministic encryption, most PHP developers will use ECB mode, or CBC mode with a NULL IV.

[1]: [https://meta.stackoverflow.com/q/293930/2224584](https://meta.stackoverflow.com/q/293930/2224584)

</comment></comment></comment></comment><comment><USER10> Why not just use AES-SIV instead of separate encrypted and HMAC fields?

<comment><AUTHOR> The practical reason: [https://3v4l.org/LEar1](https://3v4l.org/LEar1) (No SIV in that list.) It's also not present in libsodium or ( _shudder_ ) mcrypt.

What property are you hoping to extract out of AES-SIV in particular? (And would AEZ, HS1-SIV, AES-SIV-GCM, etc. solve your problem?)

From what I understand, SIV mode still uses a nonce, but it doesn't explode if you reuse it for different messages. Are you aiming for nonce-less encryption?

The end goal that was being worked towards in the article (Argon2-derived Bloom filters for partial searching) is a little more useful than nonce-less encryption.

<comment><USER10> I was specifically after a deterministic encryption scheme that would allow for exact-match comparisons and whose deployment was fairly foolproof (so a non-expert couldn't screw it up too badly), which AES-SIV appears to provide nicely. Another benefit in my case is that I'm using a NoSQL database where separating the encrypted value from its indexed value is not always practical, so having a single value that serves both purposes is highly desirable.

I'm not familiar with the other schemes you mentioned, but the practical reason for using AES-SIV is the converse of yours for not using it: there's an implementation for JavaScript. :) It's unlikely there are implementations for the other schemes you listed.

I agree that the Bloom filters are a nice natural outcome of your approach, though it would also be possible to combine AES-SIV for primary encryption with a truncated HMAC for partial match Bloom filters.

<comment><AUTHOR> Here's the killer feature of my approach: Each filter has its own HMAC/Argon2 key, so it becomes less useful for what I like to call crossword puzzle attacks. (I hope that's easier to understand than a wordy explanation of how such an attack would work.)

</comment></comment></comment></comment><comment><USER11> yay PHP/SQL (stack I work with, well MySQL)</comment>


IPhone-to-iPad development: How's the timing going to work out? - <AUTHOR> http://www.marco.org/366130089

<comment><USER2> Options 1 and 2 are the result of appearing at a prominent position in the app store being largely based the less than optimal way apps gain the prominent position. Apple needs to find a better way to make the good apps more easily findable to avoid what amounts to a landrush in the app store. Whenever anyone is thinking "I can get by without doing a good job and I _need_ to rush through something", it doesn't lead to a good experience, for consumers or for developers. Let's hope the nice/good guys don't finish last.

</comment><comment><USER3> My customers are already asking for it.

</comment><comment><USER4> A fourth option is to submit the app in advance, but release it to the store at a later time. On release date of the iPad, get one, drive home, test your app, and if it's running well enough, put it online in the store.

<comment><USER5> That's only an option if it's a separate iPad app. I guess a lot (most?) iPad apps, especially just after launch, will be existing iPhone apps with some UI tweaks. You can't take an update offline in the appstore without completely removing your app (you can only have one version).

</comment></comment><comment><USER6> Is the approval process still taking weeks? I thought things had improved in that department after all the complaints...

<comment><USER7> I got a tiny app approved just last week. Total time from submission to acceptance: 33 hours. That's _far_ less than I've seen on the previous three. Luck, or improvement, I'm not sure...

<comment><USER8> I saw a review time that quick for an app I submitted as well. I think they've done a pretty thorough job of improving the developer experience in iTunes Connect.

</comment></comment></comment><comment><USER9> I've got a sheet music app for the iPhone (almost done) that really would be much more killer on the iPad: <http://www.wonderwarp.com/opus>

</comment><comment><USER10> Option 4: Be Electronic Arts.

As seen in the Engadget photo leak, some developers already have devices that are bolted to tables. So there will be some apps but from the big names only.

</comment><comment><USER11> isn't there a simulator?

<comment><USER12> Yes there is, but of course is just a simulator, which may behave differently.</comment></comment>