Skip to main content
replaced http://security.stackexchange.com/ with https://security.stackexchange.com/
Source Link

Load time verification is very expensive and not fool proof.

Are there any OSes that verify program signatures before executing them?

EDIT: As pointed out in comments, such operating systems. ChromeOS for e.g.

If so, what are these OSes? Are they specially crafted? How difficult is it to apply this kind of program verification to the everyday OSes we use?

It is fairly difficult to verify a program at loading time. Plus even if you successfully do it, once a program has been started the attacker can still give malformed input and cause havoc(buffer overflows). Having said that, there are software modules that verify their signatures at load time (Software attestation e.g.FIPS compliant OpenSSL). Having an operating system do it for each and every process is very very expensive.

As the focus shifts towards cloud computing, you would want to ensure that you are able to run high assurance software on even untrusted systems. I would say that not a lot of research would be done on protecting the system from the software that is running on it. Instead the focus will be more on doing trusted computation even in untrusted environment. You can have a basic chain of trust like system or software attestation (refer the bottom link) if you want at load time. The important thing would be ensuring that the software isn't compromised at run-time.

Look at this discussion: Can a running interpreted program cryptographically prove it is the same as as a published source code version?Can a running interpreted program cryptographically prove it is the same as as a published source code version?

Load time verification is very expensive and not fool proof.

Are there any OSes that verify program signatures before executing them?

EDIT: As pointed out in comments, such operating systems. ChromeOS for e.g.

If so, what are these OSes? Are they specially crafted? How difficult is it to apply this kind of program verification to the everyday OSes we use?

It is fairly difficult to verify a program at loading time. Plus even if you successfully do it, once a program has been started the attacker can still give malformed input and cause havoc(buffer overflows). Having said that, there are software modules that verify their signatures at load time (Software attestation e.g.FIPS compliant OpenSSL). Having an operating system do it for each and every process is very very expensive.

As the focus shifts towards cloud computing, you would want to ensure that you are able to run high assurance software on even untrusted systems. I would say that not a lot of research would be done on protecting the system from the software that is running on it. Instead the focus will be more on doing trusted computation even in untrusted environment. You can have a basic chain of trust like system or software attestation (refer the bottom link) if you want at load time. The important thing would be ensuring that the software isn't compromised at run-time.

Look at this discussion: Can a running interpreted program cryptographically prove it is the same as as a published source code version?

Load time verification is very expensive and not fool proof.

Are there any OSes that verify program signatures before executing them?

EDIT: As pointed out in comments, such operating systems. ChromeOS for e.g.

If so, what are these OSes? Are they specially crafted? How difficult is it to apply this kind of program verification to the everyday OSes we use?

It is fairly difficult to verify a program at loading time. Plus even if you successfully do it, once a program has been started the attacker can still give malformed input and cause havoc(buffer overflows). Having said that, there are software modules that verify their signatures at load time (Software attestation e.g.FIPS compliant OpenSSL). Having an operating system do it for each and every process is very very expensive.

As the focus shifts towards cloud computing, you would want to ensure that you are able to run high assurance software on even untrusted systems. I would say that not a lot of research would be done on protecting the system from the software that is running on it. Instead the focus will be more on doing trusted computation even in untrusted environment. You can have a basic chain of trust like system or software attestation (refer the bottom link) if you want at load time. The important thing would be ensuring that the software isn't compromised at run-time.

Look at this discussion: Can a running interpreted program cryptographically prove it is the same as as a published source code version?

Correcting my answer
Source Link
Limit
  • 3.3k
  • 1
  • 19
  • 36

Load time verification is very expensive and not fool proof.

Are there any OSes that verify program signatures before executing them?

If you mean every program that is run on the OSEDIT: As pointed out in comments, then I'd say it's highly unlikelysuch operating systems. If you mean specific programs, then even Windows does verification of drivers before executing themChromeOS for e.g.

If so, what are these OSes? Are they specially crafted? How difficult is it to apply this kind of program verification to the everyday OSes we use?

It is fairly difficult to verify a program at loading time. Like Schroder said, the program can change itself. Plus even if you successfully do it, once a program has been started the attacker can still give malformed input and cause havoc(buffer overflows). Having said that, there are software modules that verify their signatures at load time (Software attestation e.g.FIPS compliant OpenSSL). Having an operating system do it for each and every process is very very expensive.

As the focus shifts towards cloud computing, you would want to ensure that you are able to run high assurance software on even untrusted systems. I would say that not a lot of research would be done on protecting the system from the software that is running on it. Instead the focus will be more on doing trusted computation even in untrusted environment. You can have a basic chain of trust like system or software attestation (refer the bottom link) if you want at load time. The important thing would be ensuring that the software isn't compromised at run-time.

Look at this discussion: Can a running interpreted program cryptographically prove it is the same as as a published source code version?

Load time verification is very expensive and not fool proof.

Are there any OSes that verify program signatures before executing them?

If you mean every program that is run on the OS, then I'd say it's highly unlikely. If you mean specific programs, then even Windows does verification of drivers before executing them.

If so, what are these OSes? Are they specially crafted? How difficult is it to apply this kind of program verification to the everyday OSes we use?

It is fairly difficult to verify a program at loading time. Like Schroder said, the program can change itself. Plus even if you successfully do it, once a program has been started the attacker can still give malformed input and cause havoc(buffer overflows). Having said that, there are software modules that verify their signatures at load time (Software attestation e.g.FIPS compliant OpenSSL). Having an operating system do it for each and every process is very very expensive.

As the focus shifts towards cloud computing, you would want to ensure that you are able to run high assurance software on even untrusted systems. I would say that not a lot of research would be done on protecting the system from the software that is running on it. Instead the focus will be more on doing trusted computation even in untrusted environment. You can have a basic chain of trust like system or software attestation (refer the bottom link) if you want at load time. The important thing would be ensuring that the software isn't compromised at run-time.

Look at this discussion: Can a running interpreted program cryptographically prove it is the same as as a published source code version?

Load time verification is very expensive and not fool proof.

Are there any OSes that verify program signatures before executing them?

EDIT: As pointed out in comments, such operating systems. ChromeOS for e.g.

If so, what are these OSes? Are they specially crafted? How difficult is it to apply this kind of program verification to the everyday OSes we use?

It is fairly difficult to verify a program at loading time. Plus even if you successfully do it, once a program has been started the attacker can still give malformed input and cause havoc(buffer overflows). Having said that, there are software modules that verify their signatures at load time (Software attestation e.g.FIPS compliant OpenSSL). Having an operating system do it for each and every process is very very expensive.

As the focus shifts towards cloud computing, you would want to ensure that you are able to run high assurance software on even untrusted systems. I would say that not a lot of research would be done on protecting the system from the software that is running on it. Instead the focus will be more on doing trusted computation even in untrusted environment. You can have a basic chain of trust like system or software attestation (refer the bottom link) if you want at load time. The important thing would be ensuring that the software isn't compromised at run-time.

Look at this discussion: Can a running interpreted program cryptographically prove it is the same as as a published source code version?

Source Link
Limit
  • 3.3k
  • 1
  • 19
  • 36

Load time verification is very expensive and not fool proof.

Are there any OSes that verify program signatures before executing them?

If you mean every program that is run on the OS, then I'd say it's highly unlikely. If you mean specific programs, then even Windows does verification of drivers before executing them.

If so, what are these OSes? Are they specially crafted? How difficult is it to apply this kind of program verification to the everyday OSes we use?

It is fairly difficult to verify a program at loading time. Like Schroder said, the program can change itself. Plus even if you successfully do it, once a program has been started the attacker can still give malformed input and cause havoc(buffer overflows). Having said that, there are software modules that verify their signatures at load time (Software attestation e.g.FIPS compliant OpenSSL). Having an operating system do it for each and every process is very very expensive.

As the focus shifts towards cloud computing, you would want to ensure that you are able to run high assurance software on even untrusted systems. I would say that not a lot of research would be done on protecting the system from the software that is running on it. Instead the focus will be more on doing trusted computation even in untrusted environment. You can have a basic chain of trust like system or software attestation (refer the bottom link) if you want at load time. The important thing would be ensuring that the software isn't compromised at run-time.

Look at this discussion: Can a running interpreted program cryptographically prove it is the same as as a published source code version?