HN user

bwackwat

12 karma

https://bwackwat.com/

Posts0
Comments57
View on HN
No posts found.

It was remarkable to me that I could not think of a good example for you. Apparently I myself to not have any good C# to share even though I have worked with the language a lot.

Anyways, I suggest you use Visual Studio, use the code formatter, and stick to common good programming practices such as: using proper accessors (public, private, protected), don't duplicate code, name variables with style, document things that you think you'll be curious about later, and use git to keep track of your code.

I have been using symmetrically encrypted TCP servers and clients, which I have been developing in a C++ library.

I believe the standard is basically TLS 1.2 asymmetric encryption and then token-based authentication via username/password mechanisms. For example, most databases are securely accessible via external services using TLS.

Key distribution in my case (symmetric encryption,) is trivial, but securing or replacing those keys is non-trivial and I have yet to solve this problem.

Nonetheless, securing private or even public TLS keys is a seriously difficult problem as well.

This is a hilariously difficult question, and I think stuff4ben provided a great answer.

I'm going to start naming my web servers:

web-server-load-balancer

web-server-1

web-server-2

web-server-3

Ok so I guess the resulting lesson from Canada for me is that having a HASH or MAC for encrypted files is the most critical part of any secure system OP is interested in.

Furthermore, Canada, what about privately managed machines communicating via TCP and AES 256 CBC symmetrically encrypted messages? I also use a random salt and a transaction number.

Until now, I was thinking that successfully decrypted data would be safe. Is the case for TCP encrypted data the same? I need to have a MAC for each message and verify that between ACK's or something?

EDIT: Did some research: https://en.wikipedia.org/wiki/Authenticated_encryption

It looks like incorporating a MAC within or alongside the encrypted data is not as insecure or as complex as I was afraid.

Can both my TCP encryption and OP's file encryption problem by solved by just appending a HASH of the encrypted data to the end of the encrypted data (EtM), or appending a HASH of the plaintext data to the end of the plaintext data and then encrypting that (MtE)?

I agree that using the command line for this type of problem is going to be problematic.

I also see clearly how hashing the encrypted data before "storing it at this 3rd party" would allow you to verify CBC block modifications.

I guess I don't understand GPG well enough to see how it solves this problem better than AES CBC 256. Could you perchance provide a link? Or explain how GPG would take care of this?

Use AES 256 bit encryption. It looks like you found some openssl command line tools to do this, which appears fine. (I can't speak on the details of that particular tool.) Depending on your technology stack, there are probably a number of tools which can programmatically encrypt and decrypt files.

For example, I use CryptoPP for AES 256 bit encryption in C++.

Software engineering covers is an increasingly wide range of skills. For me, it has been critically important to realize the things which I love doing in this field, and the things which I am genuinely particularly good at.

Overall I might not necessarily "talented," but I certainly enjoy my side projects, have looked for jobs in different areas of work, and try not to shy away from my opinions.

Your comments are varied and it is difficult to fully understand your perspective. Nonetheless, I greatly recommend finding two things: the things you love about software engineering, and the things you believe you have done well within the field.

Capitalize on those things!

Do what inspires you! That likely implies you don't consider the opportunity costs; be ready to take risks and learn from your mistakes.

Try to reach milestones on any project. Personally, in this stage of my software engineering I almost always intend to ship projects with "production" quality to "production".

import os

os.urandom(24)

'\x17\x96e\x94]\xa0\xb8\x1e\x8b\xee\xdd\xe9\x91^\x9c\xda\x94\t\xe8S\xa1Oe_'

os.urandom(24).encode('hex')

'cd48e1c22de0961d5d1bfb14f8a66e006cfb1cfbf3f0c0f3'

Well it was a type of joke on describing the job with "sexy". The meaning is: don't get tricked. Job interviewers intentionally make the position/place/company appear and feel great, but the reality might not hold up to that. It's an expectation.

It sounds like the new city and the lowered salary of the job with "sexy" features is thus also a fine idea. Without more details it is purely up to your judgement on how "sexy" that job really is compared to the other.

Sexy.

"...sexy job and sexy product..."

Is that what your genitals or brains tell you? Trust your gut. My gut tells me that that particular insight will not run true. Higher pay in a place you are already comfortable is certainly... less risky.

For some an interesting job is worth everything; for others salary is worth everything.

How old are you? Do you have a family? Is moving easy? How badly do you need money, considering debt?