Can IT spy on you through anti-virus when using VPN? I got a laptop from university and my account is on their corporate domain, so I log in with my university credentials. The anti-virus is Sophos Endpoint Security and Control and was installed by the IT department. I recently saw that there's a feature called "Web Control" which is enabled. I can't disable this as my "Current user rights" are set to "Sophos user", so I guess this is part of a server and managed directly by IT, rather than being a standalone anti-virus. I'm using MullvadVPN, and wondered, whether IT can monitor all my traffic through this "Web control", or would they just see connections to Mullvad servers?

Yes, Web Control doesn't care whether you're using a direct connection, a VPN, or a proxy server. If you want to do something and you're worried about your university seeing logs, then you better use a personal computer. You can pretty safely assume that everything you do on their laptop is available for them to scrutinize.


Where and how to create secret on embedded Linux system? I'm using OpenSSL on an embedded Intel Edison (Atom Platform) running an Yocto Linux. I want to store passwords with OpenSSL on the device, but I don't know after which rules I should create the passphase.

The device is a prototype for a series of devices. So the passphrase has to be created individually and automatically. What is the best strategy? Perhaps using a secret combination of hardware constants?

The most secure way is to use a Trusted Platform Module. This is specific hardware made for storing keys and doing cryptographic operations. This is secure even against sophisticated attackers with physical access (e.g. the FBI), but you need specific hardware which will cost more.

Without this, attackers may just read the key from memory. In that case you may want to come up with a solution that when an attacker compromises one device he does not compromise all devices, as would be the case for example with WPA-PSKs derived from the SSID.

Another post that goes into this is Storing a secure key in an embedded device's memory.


Malware Analysis for Internet of Things Malware How do we do malware analysis for Non-Windows based datasets? In the Internet of Things, a good percentage of devices are neither windows based, nor Linux nor Mac nor Android. They are sensor and actuators perhaps in RIOT and other Operating systems meant for non x86/x64 platforms.

How to analyze this malware and are there datasets open for IoT Malware?

Does the CPU architecture of the resident device influence the malware analysis in the test environment? more so the embedded such ARM architectures

Generally, for malware analysis, there are 2 different approaches. Security Developers try to hunt malware according to their static and dynamic features. As I know all of the IoT malware analysis techniques are using static features and they are based on the OPCODEs generated by the malware.
The other approach is based on dynamic features of the malwares. Dynamic features are the behavioral characteristics of the softwares when they are running. For example api calls or permission requests of the software. Generally to investigate the dynamic features you may need to run the malware in a secure environment like sandbox. However; as i know there is no the dynamic feature based approach for IoT ecosystem.
Lastly, yes, there is only one IoT malware dataset based on ARM architecture.


How do big companies ensure that other people don't register a new top level domain with their name? For example today there are ".codes", ".farm" and ".vaijes" newly available.
How do big companies like google, facebook, twitter, .. keep sure that they are the first who register their name on the new domain? Is there any contract they have with the domain registrar?

The "big companies" would work with the Trademark Clearinghouse which exists for exactly this purpose. It gives trademark owners earlier ("sunrise") access to new domains and alerts them when someone tries to register a domain matching their trademark. See also the ICANN page on this topic.


Anti-DoS WebSockets Best Practices What are the best practices for thwarting DoS attacks for a WebSocket server?

Is there a comprehensive site or document that can be referenced?

These days it's near impossible to thwart a traffic based DoS without some kind of hefty physical firewall in the network. However, if you're talking about other forms of DoS then there are a few things you can do to help.

Use asynchronous/non-blocking sockets. A malicious user could open up any number of connections to your sockets consuming all of your available threads. (Slowloris Vulnerability)
Control how many request-per-second a user can submit to ensure they aren't flooding your socket
Ensure the user cannot make the server perform anything too resource intensive


DMZ for outbound connections From a design perspective, is it a good idea to put servers that need to perform outbound connections to internet in a separate DMZ?

These servers would be servers like web filters, WSUS servers, etc.

It isn't unheard of. I have setup many that way. It depends on how sensitive your systems are.

I like that you said "from a design perspective". Part of security is good design, whether something "theoretically shouldn't happen" doesn't make it impossible. Hacking happens. Layering and segregation is one way to introduce choke points, as well as make firewalls easier to audit, and finally, to protect against human error and misconfiguration.

DMZ is not only for inbound services. Extremely sensitive systems also restrict outbound Internet access, so if you have a separate group of servers that need outbound access, you
d want to put them on a separate DMZ to segregate them rather than mixing ACLs and potentially exposing your private network.  At minimum, consider separate VLANs.

Many sensitive financial, medical, telecom and government systems are on private networks that are not NATed or routable to the outside whatsoever. Some have front-end application servers on a DMZ that have firewall rules that allow punching through from the DMZ -> Private, but some don't even have that much.


What is the difference between SSL and X.509 Certificates? I used openssl to create a X.509 certificate but I don't quite understand the relationship between a X.509 and a SSL certificate. Are they the same? Is a SSL certificate just a X.509 certificate that is used for SSL?

SSL is by far the largest use of X.509 certificates, many people use the terms interchangeably. They're not the same however; a "SSL Certificate" is a X.509 Certificate with Extended Key Usage: Server Authentication (1.3.6.1.5.5.7.3.1).

Other "common" types of X.509 certs are Client Authentication (1.3.6.1.5.5.7.3.2), Code Signing (1.3.6.1.5.5.7.3.3), and a handful of others are used for various encryption and authentication schemes.


when is it safe to click through an SSL warning message? How does a user know if it's safe to click through scary browser warnings about SSL certificates?

Ideally, a user should never need to click through these warning messages, but sometimes honest websites run by honest, but not clueful, people will have a broken certificate.

SSL serves three purposes (I'll use a snail-mail analogy to illustrate):

Keep the communication secret: prevent the mailman from reading your letters.
Verify that the communication is unaltered: prevent the mailman from altering your letters.
Verify the identity of the sender: prevent someone else from sending you letters under a false name.

Note that points 1 and 2 are worthless unless 3 is intact: if someone else can impersonate the originator of a message, then encrypting it does nothing but prevent yet another attacker from hacking your already-compromised communication. If you click through an unverified or untrusted certificate, this is what you are risking - the communication will still be encrypted, but the server you're talking to may not be legit.

That said, there are a few situations where it is relatively safe to click through the warning:

When you're not sending or receiving any confidential data, such as passwords or credit card details; note that cookies containing session IDs etc. are also confidential, so you shouldn't do this when you plan to use anything that requires logging in. Also, consider that a bad certificate can be a sign of malicious activity, so you should be extra careful when this happens.
When you can verify the identity of the server through other means:

when the server is on the same local area network (behind the same router / firewall), and the server IP has been obtained through a trusted DNS or a local hosts file;
when you can check the certificate's (SHA-1 or other) fingerprint through a different channel (e.g. logging into the server and checking it there): as seen from the client, it must match the known certificate as installed on the server.
The connection could still be hijacked, but doing this from outside the network is only possible if the firewall / router is compromised (and when that happens, you have other things to worry about).

TL;DR: Unless you know exactly what is going on, my advice is to not click through but rather properly resolve the issue.


Comparison and difference between CAs While doing some Google searches, I learnt that there are a lot of different Certification Authorities like the Windows role named "Active Directory Certificate Services", the OpenSSL library or the EJBCA software.

I would like to know the differences between them knowing that they all issues certificates and act as a certification authority if I'm not wrong?

Do they work differently? Are they all compliant with X.509 for example?

First off, let's be careful about language, when you talk about a public CA like Entrust, or Verisign, or Digicert, yes there is some software involved for actually creating and managing the certificates, but you're really talking about the people. These companies are trusted CAs not because of the software they use, but because their network admins take security seriously, because their verification specialists are meticulous about checking records before issuing a cert to a new organization (at least for EV certs). So at least 80% of what is means to be a CA is about the humans.

Right, now that that's out of the way, let's talk about the software.

You are talking about software tools to manage a Public Key Infrastructure. To be a CA, you only need 3 things in software:

A public key / private key pair.
A self-signed certificate for that key pair.
A software tool that can sign certificate signing requests (.csrs) with that key pair.

The other 80% is policies around how you manage the data, and how much background checking you do before actually signing a .csr. The difference between different PKI software is how many bells and whistles you get.

OpenSSL is just a command-line tool for doing crypto operations. Generally speaking, it's a bare-bones command-line tool: you put a file in, it gives a file back. What you do with those files is up to you.

openssl ca -cert ca.crt -keyfile ca.key -in infile.csr -out outfile.crt

It will fully support the X.509 standard, plus some basic services for issuing CRLs, responding to OCSP, etc, but the configuration and management will be pretty hand-on.

Something like EJBCA, Active Directory Certificate Services, or Entrust Authority Security Manager (shameless plug!) are a full-blown PKI management systems that run as live webservers, responding to requests, managing their own database, and storing the CA's private keys in a networked Hardware Security Module device. In particular, they come with nice web-based management interfaces (see screenshots below), they can do automated certificate management operations through the CMP protocol, they automatically publish Certificate Revocation Lists (CRLs) every couple of hours about all the certificates they have ever issued, they respond to online revocation checks (OCSP) - ie "hey CA, is cert #23488817 still good?" -, EJBCA and Entrust Security Manager can be used by governments to issue electronic passports, Microsoft's Active Directory Certificate Services and Entrust Security Manager (I'm not sure about EJBCA) have client software that runs on the client's desktop or laptop that will talk to the CA and automatically update the certificate when it's getting close to expiring, and a whole bunch more. See EJBCA's full feature list

TL;DR: OpenSSL technically contains everything you need to run and manage a CA, but it is fairly bare-bones, requiring you to do a fair amount manually on the command-line. I can't imagine managing a PKI of more than about 5 certs with OpenSSL. The fancier PKI products offer convenience by automating as much as possible and providing fancy web-based management UIs. They are designed for systems where you are managing millions of users - think of the public root CAs that issue the SSL certs for the whole internet, or that manage email S/MIME certs for a large government department, or that manage the certificates in a nation's passports. I would guess that 70% - 80% of the CAs in the world with more than 1 million users are running one of the three PKI softwares that I've mentioned here - Microsoft ADCS, EJBCA, or Entrust SM.

(source: ejbca.org)

(source: ejbca.org)


Can a brute force attack be certainly prevented on a unix/linux shell? I've been getting kind of curious about computer security.

I know brute force has been discussed a fair bit on Stack, but I want to elaborate a bit by asking, "Is it possible to /certainly/ stop brute force attempts?"

Yes, it is possible to slow down an attack in various ways, but if an attacker is perfectly okay with waiting a few years, this will not be sufficient.

Logical puzzles are a popular tactic, however I was considering this and it seems a human could solve and store all the answers to the puzzle database (given enough time). The data could be changed periodically but this can in turn be dealt with by a human and possibly AI scripts as well.

Logging failed attempts seems like a good counter measure as well, but of course this doesn't necessarily do anything, especially if the attacker routes through a tor node and does not care if the administrator is aware they are trying to break the password.

Finally, the only guaranteed solution seems to be frequent changing of passwords. To me, this seems analogous to the "infinite monkey theorem", wherein, if the attacker 'gets lucky' once in 10 years, the password has still been broken.

This is not an exhaustive list of counter measures and does not even begin to touch on any number of brute force methods such as dictionary attacks or whatnot.

What I'm asking is, "Is there a way to be certain your password can't be broken by brute force?"

For the sake of this example, lets say we're talking about a linux/unix shell because this seems to be less covered.

Let's start with making sure we have a clear understanding of what 'brute forcing' is. A brute-force attack is when an adversary attempts to guess every single combination of characters, starting at one length, and increasing the length by one until the password is cracked. e.g. 1, 2, ... a, b, ... 11, 12, ... 1a, 1b, ... aa, ab, ... etc. Depending on the charset used, it can take a relatively short time to guess all possible key spaces (mixalpha), or relatively a much, much longer time to guess all possible key spaces (mixalpha-numeric-all-space). The important thing to take away here is that the adversary is simply guessing (and getting wrong) a very large number of passwords. Now..

"For the sake of this example, lets say we're talking about a linux/unix shell because this seems to be less covered."
If the adversary has local access and the harddrive is not encrypted, the password hashes can be recovered without logging in. If the harddrive is encrypted, then your main defense from password guessing attacks is configuring failed-attempt lockouts and increase the delay time after a password fails validation. From here I will be referring to an adversary that has already broken into your system, stolen your password hashes and salts from /etc/shadow, and is attempting to crack them.

"Is there a way to be certain your password can't be broken by brute force?"
No.

If the adversary is able to recover your password hashes/salts, they can begin bruteforcing the hashes on their own hardware, and you will have absolutely zero control over this.

If you are instead referring to an adversary who does not yet have access to your computer, but is trying to bruteforce your SSH login, then yes, using a firewall/IPS will prevent virtually all bruteforce attempts. Simply logging the failed logins is not enough, but using a tool that bans offending IPs (like Fail2Ban) will make attempts at guessing a quality password infeasible.

"Logging failed attempts seems like a good counter measure as well, but of course this doesn't necessarily do anything, especially if the attacker routes through a tor node and does not care if the administrator is aware they are trying to break the password."

Ok, back to remote attacks, presumably against SSH?

"...especially if the attacker routes through a tor node..."

Tor publicly lists all of their exit nodes. Ban them all.

"...and does not care if the administrator is aware they are trying to break the password."

As long as your firewall/IDS is configured properly, it doesn't matter how many different proxy servers the adversary has available to them, it would take an insurmountable amount of time and proxies to bruteforce any quality password.

"Yes, it is possible to slow down an attack in various ways, but if an attacker is perfectly okay with waiting a few years, this will not be sufficient."

Most flavors of linux hash their passwords with SHA-256. If your adversary is capable of one trillion guesses/second (as quoted by Edward Snowden a few years ago.), and you had a twelve character mixedalpha-numeric password, it would take 104 thousand years to bruteforce the little over 3 sextillion (3,279,156,381,453,603,300,000) possible password combinations. Unless you are using a password with dictionary words or common patterns of numbers and/or letters, you do not have to worry about wordlist/rules-based attacks, which in reality is the far more common and successful way of cracking passwords. This doesn't even begin to take into account the additional time spent on every connection if this was a bruteforce against a non-firewalled SSH server.

"Logical puzzles are a popular tactic, however I was considering this and it seems a human could solve and store all the answers to the puzzle database (given enough time). The data could be changed periodically but this can in turn be dealt with by a human and possibly AI scripts as well."

I don't exactly know what you mean here, but if a human can solve a puzzle, a computer can be taught to solve it in immensely less time.


Understanding CSRF vulnerability in Web Application? I want to understand what is CSRF vulnerability. I use authorization system in my web application and found CSRF.

What should we do to solve it?

Actually I want to create simulation for this vulnerability but I don't understand perfectly.

I suggest that you read the OWASP references on this topic, including:

Cross-Site Request Forgery (CSRF)
Cross-Site Request Forgery (CSRF) Prevention Cheat Sheet
Testing for CSRF (OWASP-SM-005)
Reviewing code for Cross-Site Request Forgery issues

as well as the following resources:

OWASP Top 10 for .NET developers part 5: Cross-Site Request Forgery (CSRF)
OWASP Top 10 Deeper Dive – A5: Cross-Site Request Forgery (CSRF)

In general, if you have questions about web security and secure web development, a good starting point is to look at what resources OWASP has available.


If I'm currently on a website and disable my VPN, is my ISP or the web server immediately aware of the change or does a page refresh have to occur? For example:
I'm browsing my favorite website with my favorite VPN enabled.
I disable my VPN while I'm still on a page of the website. I haven't clicked any links yet, I haven't went back to the previous page, I'm just on the page, touching nothing. At this point, are the web server and ISP now aware of this change? Or does a page refresh / new request have to occur?

If I had to guess, it would be no, because it would be theoretically the same thing as viewing the webpage and disconnecting your internet completely. Am I on the right track?

In the early days of the web, webpages were mostly static and there would be no communication between your computer and the web server unless you were actively loading a page. Today, that is no longer true. It it extremely common for webpages to maintain active connections to provide features like live updates. When you see a new email appear in Gmail without refreshing, or when you see an incoming chat message, those features are powered by active connections. This very page is likely using them to alert you to new answers. It is also common to try to automatically restore these connections when there is a network interruption.

Even if the webpage doesn't have any features that would benefit from live updates, it is possible that there are still connections established for analytics and advertising purposes.

To be safe, you should assume that when you disconnect from VPN, any pages you have open can immediately pick up on the change.


How can I better protect my LAN from Internet Hackers My computer is connected to my Netgear router which is also the switch for my network, this in turn is connected to my cable modem which is just a bridging device.

My router is blocking scans and fragmentation attacks but I believe its processor and RAM is getting hammered doing so because my LAN speed is very slow both wired and wireless and on multiple machines.

Would adding a hardware firewall between my ISP bridge and my Router help or is there a better solution to dealing with these attacks?

Placing a second firewall in front of your current one would offload some of the processing of scans/probes/attacks and free up CPU cycles on your Netgear router/switch/AP. Just get another Netgear and configure the two devices to talk to each other.

BUT, I do not have high hopes that this will accomplish what you seek. It is unlikely that your Netgear is so overwhelmed that it cannot properly handle legitimate traffic. Look to see what the actual problem might be. Too many machines communicating at once? Line noise/interference? Infected machines sending bot traffic?

Set up Wireshark on one of your wired machines and on a wireless machine and see what is going on on the line.


What is the best way to analyze results of a technical security assessment? I want to conduct a technical security assessment on my company's client computers with focus on Windows 10.

So far, my idea is to execute several Powershell scripts on the clients and gather the results into one central point. For example, the Powershell scripts should analyze the current version of antivirus signatures, list the installed software or the local users.

In the end, I want to answer questions like "which clients have old versions of antivirus databases?", "which clients have unauthorised software installed?", "which clients have unauthorised local users?" etc. Also, I want to see trends, so I want to store the log files time-dependent.

What is the best way to analyze such log files? Do I need something like a Log Management tool or is it too much of a good thing? Or is there even existing software for that purpose?
How would you try to solve the problem?

It sounds to me like you want to do is a vulnerability scan. I know Nessus has the functionality to discern if virus definitions are out of date:

  Nessus will generate a finding if the scan target has an Anti-Virus agent deployed with the virus detection rules out of date. We've often received feature requests asking us to allow customers to set a grace period (in days) to avoid generating this alert. Such a preference was added this week under the heading 'Antivirus Software Check':

Source: https://www.tenable.com/blog/keeping-anti-virus-in-check

I'm not advocating for or against Nessus as a vulnerability scanner, but this sounds like what you're searching for.

The powershell idea is good in theory, but pretty bad in practice. How can you be sure every workstation you're managing runs the script and reports successfully?


Is HTML5/JavaScript more secure than Flash/Java, as the browser becomes more like an OS? I have been asked to post this here:

I want to focus on the security of the end-user in these two different scenarios:

1) Pre HTML 5 where the applications and so on lived in plug ins outside the browser sandbox by way of Flash and Java installed and enabled.

2) Post HTML 5 and applications being moved into the browser sandbox so      you no longer need to breach the browser environment to get at this data and applications, and hooks into system hardware like cameras and so on given directly to the browser by way of HTML and JS accessible hooks built into the browser it's self.

I’m not talking about server-side security. Nor the core OS that may run the browser environment. I am referring to User Data and as the Browser becomes the OS as far as the user is concerned what they care about being safe from attack.

There is a big cry that FLASH is unsecure (and it is), and that HTML 5 is better (but will it stay that way?). As we move all the data and applications into the browsers, and add the hooks to let the web pages Java Script control hardware in the same way Flash and Java were used will that hold true? Or will the addition of these features create similar breached of privet data and loss of control of applications stored in the browser, possibly even allow remote hack of the browser as an OS setup?

While these breaches could in theory be limited to the browser level, as the Browser in effect become OS like to the end user: would the average end user distinguish those attacks from what we see now with Flash and Java? Or would they likely be perceived as the same to the average end user?

Your question is broad and I will try to answer part of it. In my opinion the move to the web, disabling of Flash and Java etc does not make the whole system safer. It just shifts the fragility and exploits to other kinds of attacks. While we currently have lots of attacks at the OS level  and application level (buffer overflows etc) we will have more logic and design problems in the future, which might be even cross-platform. And we can already see lots of these attacks today.

The current design of the web is insecure by default. Inside the web browser security contexts merge, that means it is possible to use the browser as a trampoline to attack internal sites from outside or similar (CSRF, DNS rebinding...). While newer features like WebSockets, WebRTC, CORS... where more designed with security in mind the insecurity of the basic design remains and the new features actually might attack add attack surface.

Attempts to harden the design focus on the transport of the data (HSTS, HPKP) or specific attacks vectors (XSS protection with CSP or some anti-XSS heuristics in the browser) and are mostly add-ones anyway, where the web application must specifically enable this protection on the server side. Content Security Policy (CSP) is actually a good example for this strategy, because it has to be explicitly added on the server side and the application has to be adapted. But at the end CSP just tries to add some security on top of the problem of merging data and code (i.e. JavaScript inline inside HTML) instead of tackling the underlying design problem. And attacks like CSRF also need to be explicitly accounted for in the application with CSRF tokens etc, because by default the application is insecure.

My prediction is that this insecurity by design will give us more of this kind of problems in the future. CSRF, XSS, SQL injection... are application layer attacks and cross-application attacks which all make use of this insecure design. And we will get more of these as long we don't tackle the underlying issues but instead expect all developers to know these problems and explicitly design their applications around the insecure basic design. Today it is easy to write insecure applications and very hard to write secure applications. It is easy to predict what you usually get.

We had such insecure design in the past in CP/M, DOS, Windows 3.1 etc where each application had very broad rights and could cause harm to other applications or even the underlying hardware. This was fixed by adding process isolation, user accounts with different permissions, DEP and lots of other techniques. These were changes to the underlying design and thus increased the security of all applications inside the OS. With the "Browser OS" we are currently at the same level of security as DOS or Windows 3.1. The only kind of (weak) isolation between web applications we have is the Same Origin Policy and this kind of protection can be easily by bypassed with XSS. Unfortunately today's "Browser OS" is exposed to a dangerous environment (the internet) much more than Windows 3.1 was. It will be a hard way to bake security into the design of the web without breaking too much but I see no other option and we should go this way fast.


Is window.history.back() safe to use? I am doing a penetration test on a web application and it is using window.history.back() to go back to the previous page. Is this safe to use?

For example, if I visit google.com and then go to the web application and then press back, it would present me with google.com again. Similarly, if an attacker could somehow simulate this in an iframe (if that gets stored in the window's history) or if the user visits the URL (but that would be pointless) or possibly alter some sort of caching mechanism. What real ways are there to exploit this?

Is this an actual issue or am I overthinking?

You can read about windows.history Mozilla website. Briefly it explains that history.back() is not different than clicking on the back button in your browser I think that you are overthinking about windows.history.back, but not about window.history object itself!.
If I explain in detail it would be out of the topic, however, I can shortly claim that window.history.pushState() or window.history.replaceState() methods are more worth to worry about. The browser history manipulation is possible. You can also check out about it from : Manipulating the browser history


Highly anonymous proxies vs anonymous proxies From this link about highly anonymous proxies:

  There’s another type of anonymous proxy called Highly Anonymous Proxy. The main difference with this one is the fact that aside from hiding your IP, it also hides its presence so that the destination wouldn’t know that you are hiding behind a proxy. To them, you’re just accessing their server directly, and the IP that shows up will look like a personal IP Address instead of the obviously proxy IPs provided by anonymous proxies.

Anonymous proxies work by removing X-Forwarded-For HTTP header but the server somehow can detect that the request is coming from a proxy by checking if the request is coming from an IP that is a known proxy (as stated here) but in case of highly anonymous proxy, it's stated that the proxy hides its presence so that the server cannot detect that the request is coming from a proxy. So what is the exact mechanism? Does it use IP ranges?

No technical mechanism is used to distinguish an anonymous proxy from a "high" anonymous proxy (sometimes called an "elite" proxy). The only difference is that the latter is not found on common blacklists such as the DNSBL. This is typically done by giving a unique IP address to each person, so spammers will not be using the same IP as you and getting it on a blacklist.

Non-anonymous proxy - Sometimes incorrectly called a transparent proxy, a non-anonymous proxy is one that transmits your IP address in X-Forwarded-For. These proxies are not usually on blacklists because your original IP address is known to any site you are connecting to, allowing them to blacklist based on this forwarded IP. These proxies forward your IP address specifically to allow destination sites to block any given proxy user's IP address, rather than the entire IP. This lets the proxy serve its primary function (e.g. caching).
Anonymous proxy - These proxies simply do not forward your IP address. They are usually abused by spammers, and because the destination server cannot distinguish a legitimate user from a spammer, it is forced to block the entire proxy, usually through public blacklists.
High anonymous proxy - These proxies are the same as anonymous proxies, but are not found on blacklists. This is usually accomplished by giving each person a different IP address or by retiring an IP address and using a new one as soon as it becomes listed on any popular IP blacklist. These proxies may or may not reveal that they are proxies via rDNS lookups.

Be aware that high anonymous proxies are designed only to prevent the IP address from being put on blacklists to make navigating the web less of a pain, not to hide the fact that you are using a proxy from anyone who actually wants to find out. There are countless ways to determine the fact that you are using a proxy which cannot be avoided. Furthermore, neither honest proxies, nor commercial VPNs provide particularly good anonymity due to traffic analysis attacks, among other things. Using a network such as Tor designed from the ground up for anonymity is required for strong anonymity, though they make no attempt to hide that you are using it from the destination.


What kind of redirect of websites is this? Some websites can redirect you, but they're not using http 301 or 302. After that the url will be changed and you can't go back to the previous page using your web browser's back button. For example, ign.com redirects me depending on my ip, the page automatically refreshes and its url becomes www.ign.(country name). In firefox's network console I never see http 302. It just changes to the new url and sets a cookie marking where I'm from. It's not exactly 'refresh' either because disabling auto refresh in about:config has no effect on this.

So what kind of web technology is this and how can I disable this behavior? It's quite annoying.

They are using HTTP 301 (Moved Permanently) and HTTP 302 (Found) like anyone else. When I type in the url bar http://ign.com it redirects me with HTTP 301 to http://www.ign.com/. Then it redirects me with HTTP 302 to http://[country subdomain].ign.com/. Finally it redirects me to HTTPS with HTTP 301 to https://[country subdomain].ign.com/ with HTTP status code 200.

To prevent the unnecessary redirects, you can install a proxy and strip out the redirects.


How can I protect my saved passwords in Chrome? I'm currently using WIN+L, and sometimes Kid-Key-Lock, to prevent anyone from checking my storaged passwords but if I forget doing it only once, all of them are vulnerable of theft.

How can I protect my passwords from this glitch or is it not possible?

This doesnt relate specifically to Chrome, but you could take a look at services like lastpass, or keepass.  I'm not very familiar with Keepass, but I know that Lastpass uses browser plugins to notice when you are creating new accounts or attempting to login and will fill in the username/password for you automatically.  Your credentials are then stored in an encrypted format (AES-256) and only accessible once you enter your master password.  The plugins also have features to automatically log out of the vault after a given time period so that if you forget to close your vault and walk away from the computer, it will close itself.  One of the other features is the ability to require the master password to be re-entered for specific sites even if your vault is open.  This can be used to protect sensitive sites (banking, online tax return, etc) even if you forget to close your vault and the inactivity timer hasnt closed the vault yet.

lastpass is a commercial offering which stores your vault on their servers.  If you are uncomfortable with that I'm sure keepass has very similar or identical features, but does so locally on your machine so that your vault doesnt go anywhere unless you copy it somewhere.


Potential insecurity in not sanitizing variables before INSERT with prepared statement in PDO I use PDO with prepared statement when connecting to my database, and I do this because it is considered a safe way to do so, but one thing I could not help but to wonder was, can submitted data from a form be harmful if you just declare it like:

$entered_email_adress = $_POST['email'];

before inserting the data into the database?
Should you sanitize the submitted data anyway, or is there no reason doing so?

Assuming you're putting the input data into a parameter in the query, it's secure against SQL injections. Anything you insert into a parameter is treated as data only, and cannot become part of the query syntax. String concatenation, however, is not safe.

So this is safe:

$pdo->query('select * from users where user_id = ?', $_POST['id']);

This is not:

$pdo->query('select * from users where user_id = ' . $_POST['id']);

Keep in mind that you'll need to do appropriate output escaping if you want to use the data in a web page later, in order to stop markup injection and cross-site scripting (XSS) attacks.


Is 3DES outdated for message authentication code computing? I am working in IT department of a bank, currently we use 3DES to compute MAC of packet, is that safe enough using 3DES? Should we use any other more modern algorithm?

3DES is a fine block cipher. The best known attack has academic cost 2112, which is way beyond the technologically feasible. The main issue with 3DES is that it works on too small blocks (8 bytes, instead of 16 like AES), but that is not necessarily a problem in a specific situation.

3DES is still an encryption system, so if it is used as MAC then this must be part of some sort of construction that provides a MAC out of a block cipher, e.g. CBC-MAC. 3DES is fine for CBC-MAC, as long as no stupid thing was done in the implementation (in particular, it is of paramount importance that the key used for 3DES in CBC-MAC is not used also for encrypting data). Short blocks imply that you would prefer not to try to process more than about 32 gigabytes of data with a given key -- probably not an issue in your case.

If 3DES is used in some other custom, homemade construction, then anything goes. Homemade schemes tend to be awfully weak, in some horribly creative ways. But note that the weakness would be the construction, not 3DES itself.


I work with a company and another developer posted this and wanted us all to run it. i'm noob with things like this I don't really trust the guy and i'm trying to take my time to learn everything about it, but what do you guys think?

generate_ssl.sh

#!/bin/bash

name=ourwebdomain.local
openssl req \
  -new \
  -newkey rsa:2048 \
  -sha256 \
  -days 3650 \
  -nodes \
  -x509 \
  -keyout $name.key \
  -out $name.crt \
  -config <(cat <<-EOF
  [req]
  distinguished_name = req_distinguished_name
  x509_extensions = v3_req
  prompt = no
  [req_distinguished_name]
  CN = $name
  [v3_req]
  keyUsage = keyEncipherment, dataEncipherment
  extendedKeyUsage = serverAuth
  subjectAltName = @alt_names
  [alt_names]
  DNS.1 = $name
  DNS.2 = *.$name
EOF

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ourwebsitdomain.local.crt

This was accompanied by two other files, so here

file ./*
generate_ssl:          ASCII text
ourdomain.local.crt: PEM certificate
ourdomain.local.key: ASCII text

I'm not that worried i'm more curious. oh then he added this file to our github repo a bit ago, he's just been acting very weird recently and i'd like to Understand what he's doing.

mynaems-MacBook-Pro% file dump.rdb
dump.rdb: data
myname-MacBook-Pro% ls -lh | grep rdb

-rwxr--r--   1 myname  staff    92B Aug 29 22:44 dump.rdb

The openssl req command creates a self-signed certificate, then the sudo security add-trusted-cert command adds the newly created self-signed certificate to your local store of trusted certificates.

Are you running a local web server on the host that your doing this on, and using this host to develop and/or test an application with the local web server?  If so, this would explain why your coworker is asking you to do this.


How can I secure my api to avoid copying? Im building an app which should receive data from my server. The Api should be a PHP based script which provides the data as JSON.
However I want to keep the data private and it should only be accessible by the app itself.
How can I prevent others from reengineering my app and find a way to access the API?
I thought about using a API key for the main access and SSL to prevent the data from being read while performing a man in the middle attack, but how can I hide the GET request itself or should I use some kind of PGP and encrypt the data itself?

The first thing you should do is to ensure that all communication between your app and the server uses HTTPS rather than HTTP. This should protect you from casual packet inspection. To make this setup more secure, you may also consider using certificate pinning to prevent any man-in-the middle attacks involving a forged certificate for your site.

If you are using SSL, the contents of the GET request will be encrypted (though the fact that you are making a connection to your server will be evident). Your real problem is that if you distribute the app to the general public, it can be reverse engineered and any API key you use can be extracted. You can obfuscate the binary, but this cannot totally eliminate the possibility of reverse engineering.

Depending on your app, and the nature of your data, you may want to worry more about authenticating the users of your app, rather than the application itself.


Strange file named Aview.exe - WinClient Today I've just discovered some strange files on my Win 7 PC.
I was browsing through the Windows Firewall Inbound Rules and saw two ACCEPT rules for a program, Aview.exe.
It is located in C:\Users\Administrator\TEMP and contains:
Data1.dat
AView.exe
DEFAULT.INI

I don't see it running in Task Manager and it isn't listed in msconfig / Startup. Also can't find any suspicious entry listed as a Service. I used Tcpview to monitor if it creates any new connection when I run it but it does not.

I have no idea how it got there and google searches yield no relevant results.
Antivirus says nothing about it. Earlier when I booted my PC, login screen didn't display my local users and when inputting my Administrator password it didn't do anything. I just rebooted and all was normal again, and I just thought it was another Win hiccup.
I've seen my share of viruses, trojans and roots and this is raising my alarm bar.

EDIT 05 Jan 2013:
VirusTotal scan
Jotti's malware scan

More info about files:
Aview.exe
Description: WinClient
Size: 9.00 KB (9,216 bytes)
Size on disk: 12.0 KB (12.288 bytes)
Created: Thursday 05, July 07, 2012, 20:44:01
Modified: Thursday 05, July 07, 2012, 20:44:30
Accessed: Thursday 05, July 07, 2012, 20:44:01

Data1.dat
Size: 205 KB (209,975 bytes)
Size on disk: 208 KB (212,992 bytes)
Created: Thursday 05, July 07, 2012, 20:44:02
Modified: Thursday 05, July 07, 2012, 20:44:02
Accessed: Thursday 05, July 07, 2012, 20:44:02

DEFAULT.INI
Size: 106 bytes (106 bytes)
Size on disk: 4.00 KB (4,096 bytes)
Created: Thursday 05, July 07, 2012, 20:44:02
Modified: Thursday 05, July 07, 2012, 20:53:25
Accessed: Thursday 05, July 07, 2012, 20:44:02
contains:
[Comm]
SoftkeyboardTrans=255
ToolBoxL=417
ToolBoxT=97
ToolBoxHideMode=2
ToolBoxDX=616
ToolBoxDY=72

Related files:
WinClient1.ocx
Size: 409 KB (419,168 bytes)
Size on disk: 412 KB (421,888 bytes)
Created: Thursday 05, July 07, 2012, 20:43:57
Modified: Thursday 05, July 07, 2012, 20:43:57
Accessed: Thursday 05, July 07, 2012, 20:43:57
contains traces of:

 http://ocsp.verisign.com http://crl.verisign.com/tss-ca.crl Western Cape10UDurbanville10UThawte10UThawte Certification10UThawte Timestamping UUS10UVeriSign, Inc.1+0)U"VeriSign Time Stamping Services CA0‚http://ocsp.verisign.com http://crl.verisign.com/ThawteTimestampingCA.crl VeriSign, Inc.1705U.Class 3 Public Primary Certification Authority0040716000000Z140715235959Z0´10UUS10UVeriSign, Inc.10UVeriSign Trust Network1;09U2Terms of use at https://www.verisign.com/rpa (c)041.0,U%VeriSign Class 3 Code Signing 2004 VeriSign, Inc.1705U.Class 3 Public Primary Certification Authority VeriSign, Inc.10UVeriSign Trust Network1;09U2Terms of use at https://www.verisign.com/rpa (c)041.0,U%VeriSign Class 3 Code Signing 2004 Taiwan10Uhijr/Taipei1#0!U ATEN INTERNATIONAL CO.,LTD1 Digital ID Class 3 - Microsoft Software Validation v210UR&D1#0!UATEN INTERNATIONAL CO.http://CSC3-2004-crl.verisign.com/CSC3-2004.crl https://www.verisign.com/rpa0U%0+0u+i0g0$+0†http://ocsp.verisign.com0 http://CSC3-2004-aia.verisign.com/CSC3-2004-aia.cerhttps://www.verisign.com/rpa (c)041.0,U%VeriSign Class 3 Code Signing 2004

I also made a trace using Procmon of what aview.exe does when executed. I've attached the log (aview-log.PML) to the whole archive. You must download Procmon to open the log.

Files are located at http://dl.transfer.ro/aview_files-transfer_ro-05jan-caf326.rar
(rename .ex to .exe)

From the VT and Jotti scans you provided, they were flagged as UPX packed executables. UPX is so common that most AVs contain unpacker routines, which allow them to scan the executable as if it weren't packed. The positive result you saw was from an AV that treats packed executables as highly suspicious, which is an arguable stance to take - some use UPX to protect intellectual property, some use it to hide malware. Considering it was detected as UPX by PEiD and various other tools on VT, I'd imagine the AVs would have flagged it up as malware if it was malicious.

However, that's not to say it's definitely something you want to run on your machine. It could be a browser toolbar or other junk that you would rather avoid, and an AV wouldn't flag it as anything worth blocking. My suggestion would be to install it in a virtual machine, and see what happens.


Signing data bigger than allowed RSA Block size? I've enountered a small problem while implementing a modified version of the
Station-to-Station protocol (STS). Say we have two principals A and B, where both of them knows the other's public key:

A->B: Ta (DH public value)
B->A: Tb, SigB(Tb,Ta,A)
A->B: SigA(Ta,Tb,B)

For the second protocol message, I want to encrypt (using my private key) some data using public key encryption (e.g. RSA); and as STS is a key agreement protocol used for establishing a secret key, symmetric encryption such as AES or 3DES cannot be used.

Furthermore, I thought of just hashing the data to some fixed size (using e.g. SHA-1) and then signing it; however that will not work either, since the other party must be able to extract the different parts of the signed message for some later verification check.

In case I was unclear: SigB(Tb,Ta,A) where SigB means signing using private key B, and I must be able to retrieve Ta, Tb and A.

Is there some other way besides chopping up the data into blocks and then signing each such block (ECB, which is vulnerable to crypto analysis)?

Here's the code that generates the DHparamspec.

protected AlgorithmParameterSpec generateParameters() {
    DHParameterSpec spec = null;
    try {
        AlgorithmParameterGenerator apg = AlgorithmParameterGenerator
                .getInstance("DH");
        apg.init(1024);
        AlgorithmParameters algParam = apg.generateParameters();
        spec = (DHParameterSpec)algParam
                .getParameterSpec(DHParameterSpec.class);

    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    } catch (InvalidParameterSpecException e) {
        e.printStackTrace();
    }
    return spec; // something went wrong
}

And the code that generates the DH pair.

kf = KeyFactory.getInstance("DH");
            keyGen = KeyPairGenerator.getInstance("DH", "BC");
            keyGen.initialize(paramSpec);

            keyPair = keyGen.generateKeyPair();

            kAgreement = KeyAgreement.getInstance("DH");
            kAgreement.init(keyPair.getPrivate());

Woah.  This is a bit of a mess.  Let's go through this a small step at a time.

First off: You should not be designing or implementing your own crypto protocol.  Please don't take this personally, but: you aren't qualified.  And, even those who are qualified try hard to avoid doing this, because it is so easy to make subtle mistakes.  Don't roll your own crypto.

Instead, you should be using TLS.  Just use it; it is well-vetted, there are many implementations widely available, and it solves your problem.  There's no good reason to implement something else, and every reason to avoid doing so.  It has taken many years, and countless person-decades of expert time, to iron out the wrinkles and security problems in TLS.  You simply cannot afford to do that for your own protocol and your own code.  You shouldn't even try: you should re-use the effort that's already been put into TLS.

Use TLS.  Problem solved.  Now you can spend your time on something more useful!

(To answer the question you actually asked, if you want to sign a long message, the standard method is to hash it first with a collision-resistant hash and sign the hash.  Indeed, this technique is already baked into every public-key signature scheme I've ever seen, so you don't actually need to do anything special: they already do the hashing.  [I certainly hope you aren't trying to do raw RSA signature without any padding; that's horribly insecure.]  I couldn't make any sense of your explanation you can't just use the standard digital signature algorithms; I suspect you may have confused yourself or gotten yourself twisted in knots or something.  But in any case, this is all irrelevant: you should not be designing or implementing crypto at this level of abstraction.  The best way to answer your question is to un-ask the question and point you in a different direction.)


How do you get the PE file hash of a signed file? I have a PE binary with a digital signature. I want to get the original PE hash (not the hash of the whole file).

I can't figure out how to read it from the file. The Authenticode spec suggests the PKCS#7 signature block (e.g. the Attribute Certificate Table) has a ContentInfo field that contains the original PE hash. Unfortunately, Microsoft doesn't define a ContentInfo structure. Nor does the PKCS#7 spec.

Recalculating the hash won't help if the file was tampered.

PKCS7 (aka CMS) most certainly does define the generic ContentInfo. See rfc2630 section 3 et succ, or rfc2315 section 7 (no anchor to link):

  ContentInfo ::= SEQUENCE {
        contentType ContentType,
        content [0] EXPLICIT ANY DEFINED BY contentType }

  ContentType ::= OBJECT IDENTIFIER

But this is deliberately so flexible as to be useless in processing the data: it can contain any type of data as long as there is an OID to identify that type of data.

You aren't clear on your source, but my first google hit for "Authenticode signature format" is download.microsoft.com/download/9/c/5/9c5b2167-8017.../Authenticode_PE.docx and that says on page 7 regarding the contentInfo of the SignedData used for Authenticode:

  • contentType must be set to SPC_INDIRECT_DATA_OBJID (1.3.6.1.4.1.311.2.1.4).
  • content must be set to an SpcIndirectDataContent structure, which is described later.

and from page 9 to 11 (which is indeed later) contains a detailed definition beginning with

SpcIndirectDataContent ::= SEQUENCE {
    data                    SpcAttributeTypeAndOptionalValue,
    messageDigest           DigestInfo
} --#public—

SpcAttributeTypeAndOptionalValue ::= SEQUENCE {
    type                    ObjectID,
    value                   [0] EXPLICIT ANY OPTIONAL
}

where the DigestInfo contains the AlgId and digest value for a canonical hash of the file computed using a process detailed starting on page 15.


Outgoing messages while under massive denial-of-service attack As I understand it, there is no internet protocol that provides true broadcast like in say a card game or a partially synchronous network assumption.  How close can internet protocols come though?
We've many parties playing some card game.  Alice has a "hairdresser" card she wishes to play, so she broadcasts "hairdresser".  Eve really does not want Alice to be the hairdresser right now.
We're playing over the internet though, so Alice's broadcast actually tells everyone in sequence, so Alice might tell Eve first.  In this case, Eve will massively DDoS Alice, say 30 million botnet nodes.  Eve might not necessarily have any bots in the same data center as Alice though.
We could solve this problem with a reliable broadcast protocol, in which erasure coding prevents Eve from learning before enough others, but that brings other complications, so my question is:  How can Alice ensure that many of her outgoing "hairdresser" messages survive Eve's DDoD?
Alice has previously established TLS connections with all other players, either TCP or UDP.  As I understand it, UDP survives DDoS somewhat better because lost TCP ACKs could block Alice's outgoing messages, not sure if QUIC suffers this too, yes?  Eve cannot DDoS all the other player because then the game makes no progress.

Any protocol that guarantees reliable delivery would suffer under a massive incoming DDoS. UDP per se won't, but QUIC, like TCP, would.
Some of this negative impact — under certain circumstances — could be handled with selective acknowledgment or different congestion control mechanisms, but in general, you'll need to drop acknowledgment completely.
In real gaming tournaments over the Internet a lot of effort is invested to make sure that the IP addresses of the competing teams don't leak to each other. A centralized server or a network of proxies are used to ensure that.
A fun story: there once was a bug in Skype that leaked the IP addresses of the Skype users. As a result, Skype was banned from most of the major gaming tournaments, and firing off a Skype window while in the game was enough to get you immediately disqualified from the competition.


Is there any security in locking down a router by MAC address for wired clients? At our office we have a router on the table, and the powers that be want to lock it down by MAC address to stop people from plugging in cables for other computers i.e. intruders.

Given that resetting the router to factory settings to bypass the password will wipe out all the configuration (it has to be manually entered static IP & DNS settings) it will prevent unauthorised use of the internet with it. Our live server can only be accessed from this IP which is the reason for the security.

Are there any inherent flaws in doing this from a security perspective?

In answer to 'is there any security in locking down by MAC address', yes there is, but it is limited to accidental misconnection of equipment and simple attempts at deliberate unauthorised access.

Provided the router is physically secured (as already mentioned in Daedalus Mythos's answer), MAC lockdown will help to provide defence in depth. I suspect that the following will not apply to your setup but nonetheless, if logging has been configured to identify connection of unauthorised devices, there is likely to be evidence of someone attempting to bypass the MAC controls, which could enable investigation prior to an actual compromise occurring (in this scenario it is a detective control rather than preventative control).


How many Stack Exchange logins should I have? On Stack Exchange's Add Login Credential page, one can add logins with Google, Facebook, Yahoo, etc. How many logins should I have to provide best combination of:

The least chance of a hacker gaining access to my Stack Exchange account.
The best recovery in case they do.

One? As many as possible? My possibly incorrect assumption is that I should have two. That way, there are fewer sites that can be hacked into to gain access to my Stack Exchange account; but if one of the two does get hacked, and, for example, its password is changed, I'll still be able to regain control of my Stack Exchange account with the other site's non-compromised account.

Adding logins means adding alternative methods to access your account; see this page for details.

Thus, additional logins cannot reduce the risk of hostile hijack; in fact, they can only increase the risk since they provide additional entry routes for the attacker. If you have several logins, then your "security level", formally, is no more than that provided by the weakest of the involved authentication systems.

Additional logins are meant to avoid being locked out if an authentication provider fails (e.g. ceases to operate). This can be viewed as extra "security", not against attackers, but against disasters.


Detection and monitoring of important events on OpenVPN server If an attacker can establish a VPN connection to the company network and have access to internal resources (by getting various certificates and credentials used to authenticate to the VPN server), which is quite dangerous, how can we detect and monitor such events properly?

What should be the criteria for detecting such attackers on vpn level?

Which tool should be used for such type of monitoring?

And , I would also like the monitoring tool to generate the geographical information of attacker on a map.

(Environment , its openvpn running on centos linux , a machine with both public and private interfaces)

properly monitoring will depend on your network configuration and the environment where you feel comfortable.
following the scenario and as a quick answer you probably want to do a deep study of this concepts and how apply because tool recommendation will be really specific to your network and you didn't give much info about your network and services.

IDS from wikipedia

  An intrusion detection system (IDS) is a device or software application that monitors network or system activities for malicious activities or policy violations and produces reports to a management station

IPS from wikipedia

  Intrusion prevention systems (IPS), also known as intrusion detection and prevention systems (IDPS), are network security appliances that monitor network and/or system activities for malicious activity. The main functions of intrusion prevention systems are to identify malicious activity, log information about this activity, attempt to block/stop it, and report it

the use of honeypots is really recommended,

  In computer terminology, a honeypot is a computer security mechanism set to detect, deflect, or, in some manner, counteract attempts at unauthorized use of information systems. Generally, a honeypot consists of data (for example, in a network site) that appears to be a legitimate part of the site but is actually isolated and monitored, and that seems to contain information or a resource of value to attackers, which are then blocked. This is similar to the police baiting a criminal and then conducting undercover surveillance, and finally punishing the criminal.

The SNMP protocol from wikipedia

  SNMP is widely used in network management systems to monitor network-attached devices for conditions that warrant administrative attention. SNMP exposes management data in the form of variables on the managed systems, which describe the system configuration. These variables can then be queried (and sometimes set) by managing applications.


How does my unused e-mail address get spoofed? I have 2 e-mail accounts - one on GMail and other one on a popular mail provider in my country (O2). GMail has a secondary e-mail set for security - that is the O2. I started getting e-mails from GMail -> O2 a while ago, their content was a regular spam. Now comes the thing that makes me puzzle:

O2 is my daily/primary account
GMail I use really seldom, I would say 3 times a year (job-seeking purpose) but I check it from time to time

Therefore there is (should be) no place on the internet where my GMail address is written, neither stored (only safe (?) companies). I also have never input this one into any Internet forms/subscriptions etc. But spoofing itself is understandable. What's not is how did someone connect these two accounts? GMail has literally 5 contacts, from which 2 are my other accounts, 3 other are companies. I haven't experienced spoofing in any other of my e-mail accounts.

NOTE: In the context of network security, a spoofing attack is a situation in which one person or program successfully masquerades as another by falsifying data, thereby gaining an illegitimate advantage.

How you can you get your emailed spoofed (the easy way):

The sender information shown in e-mails (the "From" field) can be spoofed easily. This technique is commonly used by spammers to hide the origin of their e-mails and leads to problems such as misdirected bounces (i.e. e-mail spam backscatter).
E-mail address spoofing is done in quite the same way as writing a forged return address using snail mail. As long as the letter fits the protocol, (i.e. stamp, postal code) the SMTP protocol will send the message. It can be done using a mail server with telnet.
Getting actively on website compromised by Beef framework or other  malicious JavaScript.(not your case I think)
Getting your email spoofed once will get it spoofed again.
Adding your email in a form or in a service that can be easly compromised or that can post or share your data as he wants.
Many companies in this world keep a browser at a lower version (to bypass HSTS) in order to fake certificate the connection. Yes the connection is still secure but they have the keys ... and how has the keys .. has the data.
Humans... maybe the like your email and they want to use it and use it and use it again.


What issues are there with Google's "Suggest Password" feature in Chrome? I have for a long time used a fairly insecure method of having a series of different passwords - where I would use the same password on many sites. I would change between one of the series of passwords for random(ish) reasons and I would store which password I was using at which site in a text file by using a cipher to tell me which of the 6 or so passwords this particular site used.  One additional slight positive movement towards being more secure - I use a unique email address at each website I register on.

I am wanting to improve my password security - after all I do have a LinkedIN account, and some others that at times have been compromised, according to pwned

I started by choosing a new set of passwords and began changing some of my accounts. Then realised this would just take me back to where I had been.  So I thought about it for a little bit, and have now started using the Chrome "suggest passwords" feature.  I have since done a bit more thinking - and figured I should actually evaluate if the Chrome/ Google Password Management is adequate.

This seems fairly secure - and I can't see any password until I enter a password for the device I am using. That gives me some degree of confidence about how secure the Chrome platform is.

My basic requirements for a p/w manager are:

Secure
Online Sync (I use more than 3 devices Every. Single. Day. sigh)
Able to view the passwords at my discretion.  This can be done on my phone. (I will sometimes be at a new device and NEED to use a specific password.  This can be up to 2 -3 times per week)
Ideally Free (Open or Closed Source is fine)

So while advice is welcomed, my specific question is this: "Is Chrome's password management a reasonably level of security, assuming that I protect all of my devices that have Chrome installed and synched to my account?"

I have seen these 2 answers here:

How Secure is Googles Saved Password feature?

Retreiving Google Chrome passwords

The 1st seems to indicate if someone gets into your gmail account - your passwords are an open book.

The 2nd seems to indicate if someone obtains physical access to your windows or macos or linux device, they have a reasonably good chance of being able to brute force their way in to your store.

Are both of these concerns correct?

And what other concerns should I have about using Chrome as a password manager?

First of all, StackExchange is not a place for product recommendations. There are plenty of password managers, both free and paid, that can be found on the internet. I want to focus specifically on the password storage functionality of Google as you asked.

I want to give a compliment to you recognizing your security can be improved, which is also core to your question: The Google password storage is better then your current method (based on the CIA triad) because of the following:

Your passwords are encrypted (confidentiality)
You have online access and synchronized access to your passwords (availability)
Google Password Storage has better options to monitor changes to your passwords (integrity)

The Google password storage has everything you were looking for in the first place. It is secure, it is able to synchronize between devices, you can view passwords at your own discretion and the functionality is completely free. I think your question is more about how secure it actually is, maybe even in comparison to other password managers.

Just like with 'regular' password managers, you need a master key to access your password storage. In this case you will need access to your Google account. I would strongly advice you to use 2FA and a strong master password (length is most important) to secure your account. When you turn synchronization on, your passwords will be saved to your Google account. When you do not have synchronization on, your passwords will be saved locally.

Let me get one thing straight from one of the questions you linked: A password in a password manager is not hashed but encrypted, because of the very nature of the functionality of a password manager. You need to be able to see and use a password and therefor it cannot be hashed. This is the same for all password managers, including the Google password storage.

The other question you linked is only applicable to passwords being saved locally, something you don't have to worry about because your passwords will be saved in your Google account as mentioned above.

Although the risks explained in the answer of ShayanKM are true, your critical risk is your Google account. as long as you protect your account well enough there should not be a lot of risk in using the Google password storage compared to other password managers. The only real difference might be that you could want to prefer open source password managers, which Google password storage is not. I will leave it up to you to decide if this is important.

There are other issues that are not specific to Google, such as vulnerabilities being found in the software or not securing your device. Remember that password managers don't have to be perfect, they have to be better then not having one.


How is fingerprint authentication integrated with a backend server? If a fingerprint authentication mechanism, such as iOS's Touch Id, informs an app that it has been successful, how does one securely call back to a web server such that a security ticket can be authorised? Surely, something verifiable must be submitted along with the request otherwise anyone could call the service directly.

Secure enclave doesn't really do any call back to web servers since Touch ID's a replacement for local passcode, and not directly tied with any third-party service. I think in order to enable using touch ID inside an app like Paypal, you need to have already logged into Paypal using your ID and password. Then enabling touch ID basically ties this token with touch ID. So it goes touch ID -> secure enclave -> yes Paypal, a positive match -> Paypal goes and now uses stored token or cookie (or whatever the mechanism is) made from the initial login using the password to do Paypal stuff on its own.


Is there a list of phone numbers Facebook uses to send auth tokens? Up to a few days ago, I always received Facebook auth tokens from numbers +181338477XX, except a few times from +85294985XXX.

Problem is that lately I've been receiving codes directly from Italian numbers, which wouldn't be strange since I'm located in Italy, but there are two odd things:

1.
they are much much slower than before, i.e. may take easily 2~15 minutes, while before they were instant

2.
they are badly formatted, not exactly with spelling mistakes like the typical phishing mail, but oddly they add random characters in the text (examples follow)

Regular message:

Il tuo codice di sicurezza di Facebook: XXXXXX

Odd messages:

+393460286641 Il,tuo codice'di sicurezza di Facebook: XXXXXX
+393774919485 Il tuo codice di,sicurezza_di Facebook: XXXXXX'
+393428446457 Il tuo codice,di sicurezza di Facebook: XXXXXX,
+393385643500 Il tuo,codice di sicurezza_di Facebook: XXXXXX.
+393806332520 Il,tuo codice,di sicurezza di Facebook: XXXXXX

edit for some new SMS:

+393455720151 Usa 033985'come_password per Facebook Messenger for.Android.
+393402647316 Usa 033985 come password'per Facebook Messenger for Android._
+393456388686 Usa 808589 come password per Facebook for Android.'
+393484224323 Usa 808589 come password per.Facebook for.Android.

(these are different because it's not the web login but the Android app logins, but still weird characters appear)

I have two phone numbers bound to that FB account. Previously I logged only the message of one of those phones. Now instead o logged them on both phones, and it is interesting to notice how even the "same" message was corrupted in different ways.

The first odd thing is those random characters (so far ,,',_,.) either between two words or at the end of the string, and the second odd thing is that the phone numbers are always totally different, while before they were using only two "main" numbers, with many "sub" numbers (pardon the made-up terms).

I'm totally clueless about who could do such a thing such as hijacking SMSs, why corrupt the messages this way, and why do that and not use it: i.e. looking at the logins, authorised devices, etc. there wasn't anything unusual.

A final oddity has happened the first time we received such a message: there are two phones bound for these auth tokens, and only one of those received the strange message, while the other one received the correct one (both were delayed, though).

The sms vulnerability reported to Facebook was something else as far as I saw, it uses the Facebook's response to unregistered numbers to receive an unused confirmation code to reset password of other users...

If you are using an Android device, I strongly suggest you should check your mobile for any malicious applications. While I was doing some research on Mobile security, I came across some applications that could steal information from device. This happens when you install application from third-party sites other than Google Play. Some of them are really strong that, they are capable of even updating themselves while an upgrade of OS is made (eg: JB-KitKat)

I am not sure about the possibility of MITM, because, who in the hell want to intercept a response code and add weirdness to the message? And even if someone is intercepting you, they wont just send those messages to you because from my belief, once a token is used it expires, so if they use it, you wont be able to use it.

My opinion is that, every now or then FB makes roll outs , try new features, They might had tried some kind of localization on the sms/login-token features.

If only one of your phone numbers have only this problem, you may also have to consider the possibility of a fault from service provider.


Can a website be used for targeted attacks? I asked a question before about how you can tell that a website is safe to visit (to prevent yourself from getting hacked) and I was told that it can not be done. A virus scan with virustotal will not be proof that a website is not malicious. It can tell you about threats but even if it says that a website is safe, it might not be. Is this correct?

Assuming that is correct, if someone visits a website that is trusted by millions or billions of users like Facebook, Twitter or YouTube, is it possible for the people running the website to hack into the computer of specific user secretly?

If it is possible then how do organisations like ISIS (enemy of USA) or foreign governments with bad relations to USA, make accounts on Twitter and YouTube?

Aren't they afraid of getting hacked? What  precautions do they take?

Your misunderstanding is here:

  is it possible for the people running the website to hack into the
  computer of specific user secretly?

As a general rule of thumb, you can't just "hack" into a specific person's computer from a website.  In fact, browsers are typically one of the more difficult channels through which to attack a user's computer.  Doing so requires a zero-day vulnerability in the browser that the user is using.  Such vulnerabilities do exist but are rare and quickly patched.  Targeting someone in particular also means targeting their particular browser, and if they are using a browser without a known zero-day vulnerability then it is quite literally impossible.

This can be made slightly easier though if you find a zero-day in a common library or browser plugin.  This was a common way of attacking browsers back in the days when Adobe Flash was more common, but like browsers themselves, this is becoming harder to do - Flash in particular is on its way out due to its long history of security vulnerabilities.

If the US government wanted to hack a particular person they have much better and more direct ways to doing it rather than convincing a third party (e.g. Youtube, Twitter) to do it on the government's behalf.  Especially if the government wanted to keep it a secret.  The best way to keep something a secret is by involving as few people as possible, so getting a third-party to do the work for you is usually a bad idea anyway.  Finally though you have a coherent question at the end which is answerable:

  What precautions do they take?

If you are worried about someone trying to hack you through your browser then you should take the same precautions that everyone is told to take: use a modern browser and keep it up-to-date.  This simple protection will keep you safe against 99% of the threats out there, most likely including any government attempts to hack you through your browser.


How long would it take a single Processor with the AES-NI Instruction Set to bruteforce an AES Key? I know that it seems like a stupid question - since it's note feasable to break AES without a quantum computer but I'm curious anyway.

I read on wikipedia that the best known attack on AES-128 takes 2^126 operations. How long would it take a modern processor to bruteforce the key?

I continiously lose my train of thoughts when I try to compare the 3.5 cycles per AES-bytes ( AES-NI instruction set ( see wikipedia) to the Ghz a modern processor delivers. Wolfram Alpha cannot convert those units.

How many operation can one high-end processors to per second?

To calculate this you need:

The block-size (16 bytes)
Cost per byte (1.30 cycles per byte)
Frequency of the CPU (3.8 GHz)
Number of cores (2)
Number of keys (2^128)

I'm using "amd64; Piledriver (610f01); 2012 AMD A10-5800K; 2 x 3800MHz; hydra9, supercop-20121016" from eBACS as my example CPU.

To calculate the keys tested per second you calculate:

(cpu-frequency * number-of-cores) / (block-size * cost-per-byte) =
(3.8E9 * 2) / (16*1.3) =
6.70E8 =
670 million

To get the keys tested per year you get:

 keys-per-second * seconds-per-year =
 6.70E8 * (365 * 24 * 3600) =
 2.11E16

This corresponds to breaking a 54 bit key in a year.

To get how long it takes, you divide half the number of total keys by the number of keys you try per-year, which gives you about 10^22 years, which is pretty much forever since the universe is only about 10^10 years old.

But no sane attacker would use such a CPU. He'd use specialized hardware that is much more efficient than a general purpose CPU. But even with such hardware, brute-forcing AES is far beyond what humanity can currently afford.


How to find the location of the device connected to router Someone is using my wifi other than my devices, so i checked the connected devices in the d-link and found the ip address of the user and saved it.
Now how do I find the location of the user?

Your approach is to this issue is wrong. If someone is accessing your WiFi without your consent, pinpointing their location will not necessarily help you.

Instead you should harden your access point so that your current "guest" and others cannot access it:

Set a strong password
Select a strong authentication/encryption mechanism
Enable MAC filtering
Change and hide your wireless network SSID name
Turn off guest networking

This will not only solve your current problem but protect you against similar problems in the future.


Captive portal DNS tunneling I recently had a meeting with a security researcher who told me about tunnelling over a captive portal using DNS.

I have done some research into this but I was wondering what is the simplest way to do this using a linux / unix system? and what prerequisites do I need? Am I to assume I need an end point to tunnel to?

There are various easy to find solutions for dns tunnel so it does not make sense to describe specific solutions in detail.

But, this does not mean that these solutions will work with captive portals. These work only for captive portals which let DNS traffic pass and only redirect traffic to port 80 to the portal until the system was authorized. But there are other captive portals which instead reply to the DNS questions themselves in order to direct the user to the portal. These will not work with DNS tunnels.

Apart from that some tunnel solutions need TXT records to pass the data but some portals will only pass DNS questions for address records.


How is hash used with AEAD-based ciphers in TLS? Look at this cipher: ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(128) Mac=AEAD

It uses AES-GCM for encryption and data origin authentication (according to RFC-5288), so no separate MAC is required. That is why OpenSSL reports it uses AEAD (Authenticated Encryption) for message authentication.

My question is: what does SHA256 mean here? Why do I need hash function if my MAC is already implemented as part of ENC?

The hash is used as part of the PRF, i.e. the function used to expand the shared secret (from the key exchange) into the encryption keys. After the handshake, it is no longer used.


Does it indicate a bad password system to disallow certain characters in passwords? When creating an account to the game League of Legends, the user's password must comply to a few rules.

The one I'm concerned about is the "Must not contain slashes or spaces" one. The others are sane password requirements (well, except the maximum length), but disallowing slashes or spaces seems weird.

I can't come up with any other explanation than the passwords being sent or saved in plaintext with said characters messing up the format, as in a hash such characters would disappear. It also seems weird to only disallow these to prevent e.g. SQL injection or other such things, especially as they should be handled normally with all data.

So, in addition to reducing the entropy by reducing the character set available, this might indicate a deeper problem. What do you think?

Forbidding certain characters doesn't in itself indicate that the password system is broken, but it's a bad sign, and it suggests that the developer has low confidence or a bad understanding of their data processing system. The most likely explanation is that the developer fears some kind of injection attack — SQL injection, or cross-site scripting, or something of that kind. Slashes and spaces are the most likely characters here though, but maybe ', < and > are also forbidden, or maybe they're reencoded (but then why not reencode / and space?).

The password has to be sent in cleartext to the server and hashed there, or at least some encoding of the password has to be hashed on the server (if the password was hashed on the client, the password hash would effectively be the password, which would be no good if an eavesdropper obtained it).

It could be the case that the web infrastructure is bad (full of SQL injection, XSS, etc.) but the password hashing code happens to invoke the right library function and stores a salted, slow hash of the password. Or it could be the case that the password is stored in some weird format pseudo-database and that's why certain characters are forbidden.

It could also be the case that this is some user experience requirement, which may or may not have been interpreted as intended by the developer. Some sites restrict special characters in passwords so as to prevent users from choosing passwords that they won't be able to type easily on some devices. Since this is for a game, maybe there's an in-game interface that requires the user to enter their password, but doesn't allow spaces or slashes (or backslashes, which are also forbidden). If that's the case, they should probably forbid non-ASCII characters as well.

Looking at League of Legends's password recovery instructions, it appears that they do not store the password in cleartext, but to provide an industry-standard password reset link sent to the email address associated with the account. A security announcement mentions that they password database contains “salted password hashes”, so they appear to know how to do things correctly. At least they have some of the basics right — the page they link to explains salt but doesn't mention that a password hash must be slow. Still, given these clues, I'm not overly worried: they're probably not doing something extremely bad (at worst, they're using a fast but salted hash). I suspect that the explanation for the restrictions is a restricted interface to type a password in some version of the game.


Should I email contents of a https form submission I am building an online registration form for a voluntary organisation in the UK and am considering data security measures.

The form will be served up over https and there may be an optional payment fee involved. We are using Stripe.js to handle PCI compliance so we never see credit card details.

One thing I would like to do from an end user point of view is to provide a copy of the submitted application form to the user for their own records. However, with email being an inherently insecure protocol, I am wondering if I should be  doing this even though it is common place.

The form itself will take basic personal details, name, email ,address and date of birth details as well as some checkboxes where they agree to conditions of membership. This is a one time submission to the user so we will not be asking for or storing a user name or password.

Is it 'appropriate', considering data protection principle 7 to send the complete submission details (minus credit card details obviously) back to the user, in a formatted PDF file by email?

I'd advice against sending all that information in an email.  Mail-storage is probably not the problem, but SMTP is terribly insecure (not encrypted, usually easily MITMed even if there is TLS support available).

If you are set on sending a confirmation mail, leave out sensitive information like the person's date of birth.  IANAL (nor do I live in Britain), but I'd argue that, while all of this is personal data, the date of birth is the most sensitive as it can be used to cause actual harm.  It is frequently used as in security questions.

Re-display all details on the confirmation page visible after the form has been submitted and allow the user to download it in PDF format.

Ignore regulations for a moment and look at it from a user point-of-view: entering private data requires a certain amount of trust into the entity receiving the data.  Users are more likely to trust you if they have reason to believe that their data is kept save. Offering a form over https is a decent indicator that data won't carelessly be flung around the internet.  Sending the same data back to the user through an potentially unencrypted connection (i.e. email), allowing for passive eavesdropping, immediately breaks that trust.  I've seen instances of this happening and users were not happy about it.


Scapy capturing Dot11 headers windows Is it at all possible to capture Dot11 headers under Scapy in Windows? I'm thinking Winpcap, but I'm not sure how I'm supposed to do that. Any clues?

WinPcap does not have this ability, but its successor Npcap can capture raw 802.11 frames. When installing, select "Support raw 802.11 traffic (and monitor mode) for wireless adapters." There are more directions in the Npcap User's Guide, but they may not apply to Scapy.

When the network adapter is put into NetMon (monitor) mode, captured packets will have a Radiotap pseudo-header with any available information such as channel, timestamp, signal strength, etc. Not all wireless adapters support this mode; a preliminary list of adapters and their level of support is available on SecWiki.org.


About the codification in your URL :"/~!@#$%^&()+~!@#$%^&()+~!@#$%^&*()+~!@#$%^&()+~!@#$%^&()+~!@#$%^&()+~!@#$%^&()_+~!@#$%^&()+~!@#$%^&()+~!@#$%^&()+~!@#$%^&()+~!@#$%^&*()+~!@#$%^&()+~!@#$%^&()+~!@#$%^&()+~!@#$%^&()_+~!@#$%^&()+~!@#$%^&()+~!@#$%^&*()_+/" I think that it is formed part of the path of the file suspected.

I think that this maybe is Phishing, I shearch the URL and finded this site:

https://urlquery.net/report/284aaf9f-1419-462f-86b3-392532e12237

It say that was report for a firewall because find a suspected trafic data.

You can test the host in virustotal for read the reports and have a major know of what happen and assurance if is malicious URL (the more probability is yes).


Guidance for implementors of HTTPS-only sites (Server side) The recent trend in HTTPS attacks is to attack the HTTP protocol.  What should I do to increase my site's security if the only protocol I want is HTTPS?

Some easy to implement ideas are

Implement HTTPS Strict Transport Security
Issue the authentication page over SSL
Use HTML Form-posts for the login page's submit button not CSS DIV's

... why? the user can't see the target URL when they hover

Permit the client to cache the navigation page, as this will deter certain MITM attacks
Use SSL-Only cookies
Use an I-Frame Buster and the X-Frames-Options header
Edit the cipher list to only use RC4, AES or PFS

More advanced/technical options may include

Use DNSSec to protect vulnerable users
Use SSL Only Cookies everywhere
Use HTTPS padding on all AJAX data
Only issue the "session key" over HTTPS
Send off-site links to an intermediate page

Options that may break things (such as the user experience)

Disallow web browsers that:

...don't clearly indicate the TLS status in the URL
...are subject to IDN attacks
...are unpatched

Disallow port 80
Only allow redirects from a whitelisted set of domains.  Don't permit someone to link to your site, and force the user to type in the HTTPS URL
Use a private certificate for all operations for that site.  Issue the thumbprint (or RootCA) over a SSL connection

  What are your thoughts on a website that implements some or all of these techniques?

  What  additional techniques would you recommend?  (e.g. Use / Don't use OpenID, certain HTTP header directives, etc)

The main ones are:

Use SSL sitewide. Don't offer anything over http.  Instead, any connection via http should immediately redirect to the main site's landing page via https.
Use HTTPS Strict Transport Security. This will tell users' browsers: please, only connect to me over https.  This defends against sslstrip and similar man-in-the-middle attacks.
Set the secure flag on all cookies.  This will ensure that the cookies will only be sent over a https channel, never over an insecure http link.
Avoid third-party active content served over http.  Don't load external active content over http.  Make sure that any CSS, Javascript, widgets, analytics, or ads that you load from third-party sources are loaded over https.

Potentially better yet, you can consider making your own copy and serving these resources from your own server if possible, so you don't need to load them from a third-party source.  In many cases you can avoid loading CSS, Javascript libraries, or widgets from third-party sources simply by storing a copy on your own server.
For analytics, note that Google Analytics does support https.
Ads are the hardest part.  If you use ads, you may not have any choice but to accept third-party ads over http, which is a security risk.  If you do, serve the ads in an iframe (do not use SCRIPT SRC to integrate the ads into your page).

It is OK to load images hosted on a third-party host as long as they are loaded over HTTPS (to avoid mixed-content warnings).

I think if you do these four things, you'll cover most of the issues.  The rest are details that can be evaluated on a site-specific basis, but they are probably secondary in importance (in my opinion).

If you want to get fancy, you can look at certificate pinning and similar emerging technology, but starting with the above four is already a significant enough project.


Can Jasper files be used as shells to attack java web apps? JasperReports is an open source Java reporting tool that can write to a variety of targets, such as: screen, a printer, into PDF, HTML, Microsoft Excel, RTF, ODT, Comma-separated values or XML files. It can be used in Java-enabled applications, including Java EE or web applications, to generate dynamic content. It reads its instructions from an XML or .jasper file. ~wikipedia

Can you tell me of a scenario in which a malicious jasper file is uploaded and converted to actual java code (jsp shell) and give an attacker shell access?

Why limit yourself to this attack vector? Being able to write XML which is in turn parsed by another application is often enough to execute code, read or write arbitrary files (XXE attack) through xml, xpath or xslt injection, depending on the configuration of the parser.

I would imagine the most likely attack to take place would be upload jasper that writes a malicious XML file which reads /etc/passwd, if any password hashes are stored in /etc/password these can be cracked to gain authorized access to the server.


Is changing pitch enough for anonymizing a person's voice? In every TV program where there's a person that wants to remain anonymous, they change their voice in a way that to me sounds like a simple increase or decrease in pitch (frequencies). What I'm wondering is:

is the usual anonymizing method actually based on a simple change in pitch, or is it a more complex transformation that most TVs / media / etc. are using?
is a simple change in pitch enough to make it impossible, or very hard anyway, to recover the original voice? I would think that if a voice has been changed to have a higher pitch, by lowering the pitch I might try to get the original voice, but I'm not sure how hard or reliable it could be.

Note that I'm just talking about the voice quality, not about other features that of course could immediately deanonymize a person (like accent, dialect, personal vocabulary and slang, etc.)

A simple pitch change is insufficient to mask a voice, as an adversary could simply pitch the audio back to recover the original audio.

Most voice modulators use a vocoder, not a simple pitch change. The term "vocoder" is unfortunately rather heavily overloaded these days, so to clarify I mean the type that is most generally used in music, rather than a phase vocoder, pitch remapper, or voice codec.

The way this works is as follows:

The voice input audio (called the modulation signal) is split into time slices, and its spectral content is analysed. In DSP this is usually implemented using an FFT, which effectively translates a signal from the time domain - a sequence of amplitudes over time - into the frequency domain - a collection of signals of increasing frequency that, if combined, represent the signal. In practice implementations output a magnitude and phase value for each of a fixed number of "buckets", where each bucket represents a frequency. If you were to generate a sine wave for each bucket, at the amplitude and phase offset output by the FFT, then add all of those sine waves together, you'd get a very close approximation of the original signal.
A carrier signal is generated. This is whatever synthesised sound you want to have your voice modulator sound like, but a general rule of thumb is that it should be fairly wideband. A common approach is to use synth types with lots of harmonics (e.g. sawtooth or square waves) and add noise and distortion.
The carrier signal is passed through a bank of filters whose center frequencies match that of the FFT buckets. Each filter's parameters are driven by its associated bucket's value. For example, one might apply a notch filter with a high Q factor and modulate the filter's gain with the FFT output.
The resulting modulated signal is the output.

A rather crude diagram of an analog approach is as follows:

The audio input is split into a number of frequency bands using band pass filters, which each pass through only a narrow frequency range. The "process" blocks take the results and perform some sort of amplitude detection, which then becomes a control signal to the voltage controlled amplifiers (VCAs). The path at the top generates the carrier waveform, usually by performing envelope detection on the input and using it to drive a voltage controlled oscillator (VCO). The carrier is then filtered into individual frequency bands by the bandpass filters on the right, which are then driven through the VCAs and combined into the output signal. The whole approach is very similar to the DSP approach described above.

Additional effects may be applied as well, such as pre- and post-filtering, noise and distortion, LFO, etc., in order to get the desired effect.

The reason this is difficult to invert is that the original audio is never actually passed through to the output. Instead, information is extracted from the original audio, then used to generate a new signal. The process is inherently lossy enough to make it fairly prohibitive to reverse.


Is it secure if I only encrypt a small part of a file I'm writting a script that can encrypt files in a folder. It takes like 30s to encrypt a 1GB file, so I wondering if it's safe when I encrypt some bits of a file and leave the rest unencrypted? I want the script to run as fast as possible.

That fully depends on the contents of the file. If this is encrypted text where the key for decryption is placed at the beginning of the file it might be enough to encrypt only this information since it is essential to interpret the rest of the data. But in most other cases it would probably be a bad idea to encrypt only a part.

For example imagine that this is a document containing passwords in plain text. In this case it is obvious that encrypting only part of it would be a bad idea because it would only protect a small number of passwords and leave the rest exposed. But also with most video or audio files it is possible to recover the majority of the content even if some parts are corrupt (or encrypted).


ISP security compared to enterprise I've just started reading IT Security, and found some interesting reads on man-in-the-middle and different types of "attacks" that could be used by an enterprise to intercept communications on their network.

This got me thinking. What things are ISPs capable of seeing/intercepting and what could one do to lessen this?

All of your internet traffic goes through the ISP, so there's a lot they can see. Basically all plain-text transmissions can be viewed by your ISP. There are a few things you can do to prevent this:

Use HTTPS whenever possible. ISPs won't be able to read the contents of HTTPS messages, but they can interpret HTTP messages. This is generally true for any party that can perform MITM attacks, not just your ISP.
Even if you use HTTPS, your ISP will still know who you are sending traffic to. If you want to prevent this, you can use anonymous browsing software(ex. Tor) to prevent your ISP from knowing who you're talking to (although they will know that you are using this software)
If you are using BitTorrent, your ISP can generally detect that you are doing this. You can encrypt this data as well (depending on your BitTorrent client), but your ISP can generally still deduce that you are running a BitTorrent client (though they won't know what you are downloading).