[0] https://github.com/mozilla/cargo-vet
[1] https://opensource.googleblog.com/2023/05/open-sourcing-our-...
771 karma · joined June 19, 2012
https://www.timmclean.net/
https://twitter.com/McLean0
[ my public key: https://keybase.io/timmclean; my proof: https://keybase.io/timmclean/sigs/3KHSzJ0uQlO-_Cr28YhnYsK9yIOfMTpXrEUuRbx4ed4 ]
[0] https://github.com/mozilla/cargo-vet
[1] https://opensource.googleblog.com/2023/05/open-sourcing-our-...
> The code in this repository is open-source under the Apache-2.0 license. The InternLM weights are fully open for academic research and also allow commercial use with written permission from the official team. For inquiries about commercial licenses and collaborations, please contact internlm@pjlab.org.cn.
Cryptohipsters (can I coin this term?) should take a look at Skein (a third-round SHA-3 candidate), BLAKE2 (the successor of a third-round SHA-3 candidate), and Keccak (the SHA-3 winner). These hash functions have undergone much more analysis. Notably, BLAKE2 is faster than MD5 in many cases, but without the security problems of MD5.
FRUITS=$(cat input.json | jq '.models | map(select(.title == "fruits")) | .[0]')
FRUIT_NAME_KEY=$(echo "$FRUITS" | jq '.fields | map(select(.name == "Name")) | .[0].key')
FARMERS=$(cat input.json | jq '.models | map(select(.title == "farmers")) | .[0]')
FARMER_NAME_KEY=$(echo "$FARMERS" | jq '.fields | map(select(.name == "Full name")) | .[0].key')
FARMER_FRUITS_KEY=$(echo "$FARMERS" | jq '.fields | map(select(.name == "Fruits")) | .[0].key')
BOB=$(echo "$FARMERS" | jq '.entities | map(select(.['$FARMER_NAME_KEY'] == "Bob, the farmer")) | .[0]')
BOB_FRUIT_IDS=$(echo "$BOB" | jq '.['$FARMER_FRUITS_KEY'] | .[]' -r)
for BOB_FRUIT_ID in "$BOB_FRUIT_IDS"; do
echo "$FRUITS" | jq '.entities | map(select(._id == "'$BOB_FRUIT_ID'")) | .[0] | .['$FRUIT_NAME_KEY']'
done
There's a bit of bash boilerplate, but honestly it was about what I would expect, given a structure with so many layers of indirection.Pain points:
* Switching between bash and jq's filtering language led me to use string interpolation with bash variables. Malicious inputs can probably exploit this (and it was just awkward anyway).
* A "select one" filter would be nice, instead of select + get first element.
[1] https://github.com/FedericoCeratto/owefs/blob/master/pycrypt...
> For production applications some AES variant or RC4 would be a better choice.
RC4 is not at all a good choice for new applications[1].
> SHA1
SHA-1 is broken (although not as badly as MD5). SHA-2 or SHA-3 should be preferred.
> 800-bit RSA
800 bits is alarmingly low. Browsers are currently upgrading from 1024-bit certificates[2].
[1] http://blog.cryptographyengineering.com/2013/03/attack-of-we...
[2] https://blog.mozilla.org/security/2014/09/08/phasing-out-cer...
I haven't had time to come back to it, so I'm very glad to see that other people are working on the idea!
We Canadians are proud of our universal health care, but our healthcare system faces difficult challenges. Our hospitals' staff use “enterprise”-quality software that is hostile to its users. Doctors often struggle with the software’s interfaces, and are unable to access the information that they need in a timely manner. Quality of care suffers.
KoNode is a small nonprofit software startup intent on fixing these problems. We’re building a series of open-source applications to “fill the gaps” in existing processes, and help medical staff provide better care.
Our team is ready to expand, and welcome a new developer with ninja-like coding skills and a passion for improving users' lives. A short-list of great perks of joining our team:
- Work from home, on your own full-time schedule. Freelance freedom!
- A team experienced with healthcare workflow & users’ needs.
- Regular in-person meetings at Toronto’s Centre for Social Innovation.
- Strong network of healthcare, business, and programming consultants.
- Happy, helpful team atmosphere. Driven to make an impact.
. . . and the goal we’re achieving together? Providing healthcare professionals (and beyond) with an accessible alternative to tedious, bulky, costly software. When an automated solution doesn’t yet exist... well, we make one happen. Simple.Sounding even better? Here’s a picture of KoNode on the technical side:
- Web (HTML/JS/CSS) + NodeJS (we use node-webkit, aka NW.js)
- Cutting-edge libraries including Lodash, Moment.js, React, and more.
- Modular design, piecing together apps using open-source and custom code.
- Collaborative version control and feature management on Git[Hub].
- Real-world testing & feedback with network of health professionals.
Team members must be able to meet in downtown Toronto periodically.Ready to apply? Contact us with your resume and portfolio at david@konode.ca
- I publish a JavaScript library under this scheme using a hash without collision resistance.
- Popular/important websites refer to my library as hashname://..., trusting that this refers to the version of the library that they audited.
- I can then create a new, malicious version of the library that has the same hash and use it to infect popular sites.
Allowing collisions breaks the immutability requirement, which impacts security in many important cases.
RIPEMD has a 256-bit variant, but it hasn't received enough scrutiny.
https://github.com/namshi/jose/commit/127b4415e66d89b1fcfb5a...
https://github.com/davedoesdev/python-jwt/commit/5ddb71b2ed5...
I think a better take away would be: "If you use scrypt, make sure you choose adequate security parameters. If you're already using bcrypt, there's no need to switch to scrypt."
Edit: the first paragraph of the scrypt paper actually brings up the fact that the problems of password storage and key derivation are equivalent:
Password-based key derivation functions are used for two primary purposes: First, to hash passwords so that an attacker who gains access to a password file does not immediately possess the passwords contained therewithin; and second, to generate cryptographic keys to be used for encrypting and/or authenticating data. While these two uses appear to be cryptologically quite different [...] they turn out to be effectively equivalent
With the help of Mathematica, one of us found some counterexamples to our conjectures. Fortunately, another one of us was using Maple and, when checking those supposed counterexamples, found that they were not counterexamples at all. After revising our algorithms from scratch, we concluded that either the computations performed with Mathematica or the computations performed with Maple had to be wrong. Things started to become clear when the colleague using Mathematica also found some “counterexamples” to the above-mentioned result of Karlin and Szego for the case in (1) and, even more dramatically, his algorithm yielded different outputs given the same inputs. Our conclusion was that Mathematica was computing incorrectly.